From 9cc063430a973084b88d1d076f49d7135cbc6b61 Mon Sep 17 00:00:00 2001 From: Erik Ziegler Date: Thu, 17 Jan 2019 17:44:26 +0100 Subject: [PATCH] Fix ROOT_URL for Standalone Viewer --- Packages-react/ohif-viewer/dist/index.es.js | 9 +-------- Packages-react/ohif-viewer/dist/index.es.js.map | 2 +- Packages-react/ohif-viewer/dist/index.js | 9 +-------- Packages-react/ohif-viewer/dist/index.js.map | 2 +- Packages-react/ohif-viewer/dist/index.umd.js | 9 +-------- Packages-react/ohif-viewer/dist/index.umd.js.map | 2 +- Packages-react/ohif-viewer/package.json | 2 +- Packages-react/ohif-viewer/src/config.js | 7 ------- 8 files changed, 7 insertions(+), 35 deletions(-) diff --git a/Packages-react/ohif-viewer/dist/index.es.js b/Packages-react/ohif-viewer/dist/index.es.js index 51c8e0f63..fb2f2b7e7 100644 --- a/Packages-react/ohif-viewer/dist/index.es.js +++ b/Packages-react/ohif-viewer/dist/index.es.js @@ -20379,14 +20379,7 @@ OHIF$1.external.cornerstoneTools = cornerstoneTools$1; OHIF$1.external.cornerstoneMath = cornerstoneMath$1; OHIF$1.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader$1; // TODO: Is there a better way to guess ROOT_URL? -var ROOT_URL = window.location.pathname; // If the page we are on is not a subset of the expected homepage -// provided in the package.json file, we might be doing local development. -// In this case, set the base URL to the current location's origin. - -if (homepage.includes(window.location.origin) === false) { - ROOT_URL = window.location.origin; -} - +var ROOT_URL = window.location.pathname; var config = { maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1), startWebWorkersOnDemand: true, diff --git a/Packages-react/ohif-viewer/dist/index.es.js.map b/Packages-react/ohif-viewer/dist/index.es.js.map index c135fccaa..89fab093d 100644 --- a/Packages-react/ohif-viewer/dist/index.es.js.map +++ b/Packages-react/ohif-viewer/dist/index.es.js.map @@ -1 +1 @@ -{"version":3,"file":"index.es.js","sources":["../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router-dom/node_modules/warning/warning.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/warning/warning.js","../node_modules/invariant/invariant.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/history/es/PathUtils.js","../node_modules/history/es/LocationUtils.js","../node_modules/history/es/createTransitionManager.js","../node_modules/history/es/DOMUtils.js","../node_modules/history/es/createBrowserHistory.js","../node_modules/history/es/createHashHistory.js","../node_modules/history/es/createMemoryHistory.js","../node_modules/react-router/node_modules/warning/warning.js","../node_modules/react-router/es/Router.js","../node_modules/react-router-dom/es/Router.js","../node_modules/react-router-dom/es/BrowserRouter.js","../node_modules/react-router-dom/es/HashRouter.js","../node_modules/react-router-dom/es/Link.js","../node_modules/react-router/es/MemoryRouter.js","../node_modules/react-router-dom/es/MemoryRouter.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/path-to-regexp/index.js","../node_modules/react-router/es/matchPath.js","../node_modules/react-router/es/Route.js","../node_modules/react-router-dom/es/Route.js","../node_modules/react-router-dom/es/NavLink.js","../node_modules/react-router/es/Prompt.js","../node_modules/react-router-dom/es/Prompt.js","../node_modules/react-router/es/generatePath.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router-dom/es/Redirect.js","../node_modules/react-router/es/StaticRouter.js","../node_modules/react-router-dom/es/StaticRouter.js","../node_modules/react-router/es/Switch.js","../node_modules/react-router-dom/es/Switch.js","../node_modules/react-router-dom/es/generatePath.js","../node_modules/react-router-dom/es/matchPath.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router-dom/es/withRouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/utils/isPlainObject.js","../node_modules/react-redux/es/utils/warning.js","../node_modules/react-redux/es/utils/verifyPlainObject.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/verifySubselectors.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../../ohif-core/dist/index.es.js","../node_modules/dicom-parser/dist/dicomParser.min.js","../node_modules/cornerstone-core/dist/cornerstone.js","../node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js","../node_modules/cornerstone-math/dist/cornerstoneMath.min.js","../node_modules/cornerstone-tools/dist/cornerstoneTools.min.js","../node_modules/hammerjs/hammer.js","../src/config.js","../src/redux/ui.js","../../react-viewerbase/dist/index.es.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/Header/Header.js","../node_modules/lodash.clonedeep/index.js","../src/connectedComponents/ConnectedStudyBrowser.js","../src/connectedComponents/ConnectedLayoutManager.js","../src/connectedComponents/ViewerMain.js","../src/connectedComponents/FlexboxLayout.js","../src/connectedComponents/ConnectedFlexboxLayout.js","../src/connectedComponents/ConnectedToolbarSection.js","../src/connectedComponents/ConnectedLayoutButton.js","../src/connectedComponents/ConnectedCineDialog.js","../src/connectedComponents/ToolbarRow.js","../src/redux/actions.js","../src/connectedComponents/ConnectedToolbarRow.js","../src/components/StudyLoadingMonitor.js","../src/connectedComponents/ConnectedStudyLoadingMonitor.js","../src/components/StudyPrefetcher.js","../src/connectedComponents/Viewer.js","../src/connectedComponents/ViewerRetrieveStudyData.js","../src/connectedComponents/ConnectedViewerRetrieveStudyData.js","../src/routes/ViewerRouting.js","../node_modules/strict-uri-encode/index.js","../node_modules/query-string/index.js","../src/routes/StandaloneRouting.js","../src/routes/IHEInvokeImageDisplay.js","../src/OHIFStandaloneViewer.js","../../react-cornerstone-viewport/dist/index.es.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/ConnectedCornerstoneViewport.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFComponentPlugin.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js","../src/App.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createHashHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n _inherits(HashRouter, _React$Component);\n\n function HashRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, HashRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n HashRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\");\n };\n\n HashRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n basename: PropTypes.string,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"]),\n children: PropTypes.node\n};\n\n\nexport default HashRouter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware .\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use outside a \");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n _inherits(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MemoryRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\");\n };\n\n MemoryRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default MemoryRouter;","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from \"react-router/es/MemoryRouter\";\n\nexport default MemoryRouter;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // already computed the match for us\n\n invariant(router, \"You should not use or withRouter() outside a \");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from \n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n _inherits(Prompt, _React$Component);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Prompt.prototype.enable = function enable(message) {\n if (this.unblock) this.unblock();\n\n this.unblock = this.context.router.history.block(message);\n };\n\n Prompt.prototype.disable = function disable() {\n if (this.unblock) {\n this.unblock();\n this.unblock = null;\n }\n };\n\n Prompt.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.props.when) this.enable(this.props.message);\n };\n\n Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.when) {\n if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n } else {\n this.disable();\n }\n };\n\n Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n this.disable();\n };\n\n Prompt.prototype.render = function render() {\n return null;\n };\n\n return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n when: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n when: true\n};\nPrompt.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n block: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Prompt;","// Written in this round about way for babel-transform-imports\nimport Prompt from \"react-router/es/Prompt\";\n\nexport default Prompt;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var compiledGenerator = pathToRegexp.compile(pattern);\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n\n this.perform();\n };\n\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n\n return to;\n };\n\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n\n var to = this.computeTo(this.props);\n\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n\n Redirect.prototype.render = function render() {\n return null;\n };\n\n return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n computedMatch: PropTypes.object, // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport Router from \"./Router\";\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n};\n\nvar addBasename = function addBasename(basename, location) {\n if (!basename) return location;\n\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n if (!basename) return location;\n\n var base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n};\n\nvar createURL = function createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n return function () {\n invariant(false, \"You cannot %s with \", methodName);\n };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = function (_React$Component) {\n _inherits(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, StaticRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n return addLeadingSlash(_this.props.basename + createURL(path));\n }, _this.handlePush = function (location) {\n var _this$props = _this.props,\n basename = _this$props.basename,\n context = _this$props.context;\n\n context.action = \"PUSH\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleReplace = function (location) {\n var _this$props2 = _this.props,\n basename = _this$props2.basename,\n context = _this$props2.context;\n\n context.action = \"REPLACE\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleListen = function () {\n return noop;\n }, _this.handleBlock = function () {\n return noop;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n StaticRouter.prototype.getChildContext = function getChildContext() {\n return {\n router: {\n staticContext: this.props.context\n }\n };\n };\n\n StaticRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\");\n };\n\n StaticRouter.prototype.render = function render() {\n var _props = this.props,\n basename = _props.basename,\n context = _props.context,\n location = _props.location,\n props = _objectWithoutProperties(_props, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: this.createHref,\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return React.createElement(Router, _extends({}, props, { history: history }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object.isRequired,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n basename: \"\",\n location: \"/\"\n};\nStaticRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;","// Written in this round about way for babel-transform-imports\nimport StaticRouter from \"react-router/es/StaticRouter\";\n\nexport default StaticRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport generatePath from \"react-router/es/generatePath\";\n\nexport default generatePath;","// Written in this round about way for babel-transform-imports\nimport matchPath from \"react-router/es/matchPath\";\n\nexport default matchPath;","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.state = {\n storeState: store.getState(),\n store: store\n };\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.subscribe();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n if (this.unsubscribe) this.unsubscribe();\n this.subscribe();\n }\n };\n\n _proto.subscribe = function subscribe() {\n var _this2 = this;\n\n var store = this.props.store;\n this.unsubscribe = store.subscribe(function () {\n var newStoreState = store.getState();\n\n if (!_this2._isMounted) {\n return;\n }\n\n _this2.setState(function (providerState) {\n // If the value is the same, skip the unnecessary state update.\n if (providerState.storeState === newStoreState) {\n return null;\n }\n\n return {\n storeState: newStoreState\n };\n });\n }); // Actions might have been dispatched between render and mount - handle those\n\n var postMountStoreState = store.getState();\n\n if (postMountStoreState !== this.state.storeState) {\n this.setState({\n storeState: postMountStoreState\n });\n }\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.7.0\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, PureComponent } from 'react';\nimport { isValidElementType } from 'react-is';\nimport { ReactReduxContext } from './Context';\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React-Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n var OuterBaseComponent = Component;\n var FinalWrappedComponent = WrappedComponent;\n\n if (pure) {\n OuterBaseComponent = PureComponent;\n }\n\n function makeDerivedPropsSelector() {\n var lastProps;\n var lastState;\n var lastDerivedProps;\n var lastStore;\n var sourceSelector;\n return function selectDerivedProps(state, props, store) {\n if (pure && lastProps === props && lastState === state) {\n return lastDerivedProps;\n }\n\n if (store !== lastStore) {\n lastStore = store;\n sourceSelector = selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n\n lastProps = props;\n lastState = state;\n var nextProps = sourceSelector(state, props);\n\n if (lastDerivedProps === nextProps) {\n return lastDerivedProps;\n }\n\n lastDerivedProps = nextProps;\n return lastDerivedProps;\n };\n }\n\n function makeChildElementSelector() {\n var lastChildProps, lastForwardRef, lastChildElement;\n return function selectChildElement(childProps, forwardRef) {\n if (childProps !== lastChildProps || forwardRef !== lastForwardRef) {\n lastChildProps = childProps;\n lastForwardRef = forwardRef;\n lastChildElement = React.createElement(FinalWrappedComponent, _extends({}, childProps, {\n ref: forwardRef\n }));\n }\n\n return lastChildElement;\n };\n }\n\n var Connect =\n /*#__PURE__*/\n function (_OuterBaseComponent) {\n _inheritsLoose(Connect, _OuterBaseComponent);\n\n function Connect(props) {\n var _this;\n\n _this = _OuterBaseComponent.call(this, props) || this;\n invariant(forwardRef ? !props.wrapperProps[storeKey] : !props[storeKey], 'Passing redux store in props has been removed and does not do anything. ' + customStoreWarningMessage);\n _this.selectDerivedProps = makeDerivedPropsSelector();\n _this.selectChildElement = makeChildElementSelector();\n _this.renderWrappedComponent = _this.renderWrappedComponent.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.renderWrappedComponent = function renderWrappedComponent(value) {\n invariant(value, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var storeState = value.storeState,\n store = value.store;\n var wrapperProps = this.props;\n var forwardedRef;\n\n if (forwardRef) {\n wrapperProps = this.props.wrapperProps;\n forwardedRef = this.props.forwardedRef;\n }\n\n var derivedProps = this.selectDerivedProps(storeState, wrapperProps, store);\n return this.selectChildElement(derivedProps, forwardedRef);\n };\n\n _proto.render = function render() {\n var ContextToUse = this.props.context || Context;\n return React.createElement(ContextToUse.Consumer, null, this.renderWrappedComponent);\n };\n\n return Connect;\n }(OuterBaseComponent);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, {\n wrapperProps: props,\n forwardedRef: ref\n });\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar cornerstone = window.cornerstone;\nvar cornerstoneTools = window.cornerstoneTools;\nvar cornerstoneWADOImageLoader = window.cornerstoneWADOImageLoader;\nvar cornerstoneMath = window.cornerstoneMath;\nvar external = {\n set cornerstone(cs) {\n cornerstone = cs;\n },\n\n get cornerstone() {\n return cornerstone;\n },\n\n set cornerstoneTools(tools) {\n cornerstoneTools = tools;\n },\n\n get cornerstoneTools() {\n return cornerstoneTools;\n },\n\n set cornerstoneWADOImageLoader(wado) {\n cornerstoneWADOImageLoader = wado;\n },\n\n get cornerstoneWADOImageLoader() {\n return cornerstoneWADOImageLoader;\n },\n\n set cornerstoneMath(math) {\n cornerstoneMath = math;\n },\n\n get cornerstoneMath() {\n return cornerstoneMath;\n }\n\n};\n\nfunction getBoundingBox(context, textLines, x, y, options) {\n var cornerstoneTools = external.cornerstoneTools;\n\n if (Object.prototype.toString.call(textLines) !== '[object Array]') {\n textLines = [textLines];\n }\n\n var padding = 5;\n var font = cornerstoneTools.textStyle.getFont();\n var fontSize = cornerstoneTools.textStyle.getFontSize();\n context.save();\n context.font = font;\n context.textBaseline = 'top'; // Find the longest text width in the array of text data\n\n var maxWidth = 0;\n textLines.forEach(function (text) {\n // Get the text width in the current font\n var width = context.measureText(text).width; // Find the maximum with for all the text rows;\n\n maxWidth = Math.max(maxWidth, width);\n }); // Calculate the bounding box for this text box\n\n var boundingBox = {\n width: maxWidth + padding * 2,\n height: padding + textLines.length * (fontSize + padding)\n };\n\n if (options && options.centering && options.centering.x === true) {\n x -= boundingBox.width / 2;\n }\n\n if (options && options.centering && options.centering.y === true) {\n y -= boundingBox.height / 2;\n }\n\n boundingBox.left = x;\n boundingBox.top = y;\n context.restore(); // Return the bounding box so it can be used for pointNearHandle\n\n return boundingBox;\n}\n\nfunction pixelToPage(element, position) {\n var cornerstone = external.cornerstone;\n var enabledElement = cornerstone.getEnabledElement(element);\n var result = {\n x: 0,\n y: 0\n }; // Stop here if the cornerstone element is not enabled or position is not an object\n\n if (!enabledElement || _typeof(position) !== 'object') {\n return result;\n }\n\n var canvas = enabledElement.canvas;\n var canvasOffset = $(canvas).offset();\n result.x += canvasOffset.left;\n result.y += canvasOffset.top;\n var canvasPosition = cornerstone.pixelToCanvas(element, position);\n result.x += canvasPosition.x;\n result.y += canvasPosition.y;\n return result;\n}\n\nfunction repositionTextBox(eventData, measurementData, config) {\n var cornerstone = external.cornerstone; // Stop here if it's not a measurement creating\n\n if (!measurementData.isCreating) {\n return;\n }\n\n var element = eventData.element;\n var enabledElement = cornerstone.getEnabledElement(element);\n var image = enabledElement.image;\n var allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;\n var allow = {\n T: !allowedBorders || allowedBorders.includes('T'),\n R: !allowedBorders || allowedBorders.includes('R'),\n B: !allowedBorders || allowedBorders.includes('B'),\n L: !allowedBorders || allowedBorders.includes('L')\n };\n\n var getAvailableBlankAreas = function getAvailableBlankAreas(enabledElement, labelWidth, labelHeight) {\n var element = enabledElement.element,\n canvas = enabledElement.canvas,\n image = enabledElement.image;\n var topLeft = cornerstone.pixelToCanvas(element, {\n x: 0,\n y: 0\n });\n var bottomRight = cornerstone.pixelToCanvas(element, {\n x: image.width,\n y: image.height\n });\n var $canvas = $(canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var result = {};\n result['x-1'] = allow.L && topLeft.x > labelWidth;\n result['y-1'] = allow.T && topLeft.y > labelHeight;\n result.x1 = allow.R && canvasWidth - bottomRight.x > labelWidth;\n result.y1 = allow.B && canvasHeight - bottomRight.y > labelHeight;\n return result;\n };\n\n var getRenderingInformation = function getRenderingInformation(limits, tool) {\n var mid = {};\n mid.x = limits.x / 2;\n mid.y = limits.y / 2;\n var directions = {};\n directions.x = tool.x < mid.x ? -1 : 1;\n directions.y = tool.y < mid.y ? -1 : 1;\n var diffX = directions.x < 0 ? tool.x : limits.x - tool.x;\n var diffY = directions.y < 0 ? tool.y : limits.y - tool.y;\n var cornerAxis = diffY < diffX ? 'y' : 'x';\n var map = {\n 'x-1': 'L',\n 'y-1': 'T',\n x1: 'R',\n y1: 'B'\n };\n var current = 0;\n\n while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {\n // Invert the direction for the next iteration\n directions[cornerAxis] *= -1; // Invert the tempCornerAxis\n\n cornerAxis = cornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n return {\n directions: directions,\n cornerAxis: cornerAxis\n };\n };\n\n var calculateAxisCenter = function calculateAxisCenter(axis, start, end) {\n var a = start[axis];\n var b = end[axis];\n var lowest = Math.min(a, b);\n var highest = Math.max(a, b);\n return lowest + (highest - lowest) / 2;\n };\n\n var getTextBoxSizeInPixels = function getTextBoxSizeInPixels(element, bounds) {\n var topLeft = cornerstone.pageToPixel(element, 0, 0);\n var bottomRight = cornerstone.pageToPixel(element, bounds.x, bounds.y);\n return {\n x: bottomRight.x - topLeft.x,\n y: bottomRight.y - topLeft.y\n };\n };\n\n function getTextBoxOffset(config, cornerAxis, toolAxis, boxSize) {\n config = config || {};\n var centering = config.centering || {};\n var centerX = !!centering.x;\n var centerY = !!centering.y;\n var halfBoxSizeX = boxSize.x / 2;\n var halfBoxSizeY = boxSize.y / 2;\n var offset = {\n x: [],\n y: []\n };\n\n if (cornerAxis === 'x') {\n var offsetY = centerY ? 0 : halfBoxSizeY;\n offset.x[-1] = centerX ? halfBoxSizeX : 0;\n offset.x[1] = centerX ? -halfBoxSizeX : -boxSize.x;\n offset.y[-1] = offsetY;\n offset.y[1] = offsetY;\n } else {\n var offsetX = centerX ? 0 : halfBoxSizeX;\n offset.x[-1] = offsetX;\n offset.x[1] = offsetX;\n offset.y[-1] = centerY ? halfBoxSizeY : 0;\n offset.y[1] = centerY ? -halfBoxSizeY : -boxSize.y;\n }\n\n return offset;\n }\n\n var handles = measurementData.handles;\n var textBox = handles.textBox;\n var $canvas = $(enabledElement.canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var offset = $canvas.offset();\n var canvasDimensions = {\n x: canvasWidth,\n y: canvasHeight\n };\n var bounds = {};\n bounds.x = textBox.boundingBox.width;\n bounds.y = textBox.boundingBox.height;\n\n var getHandlePosition = function getHandlePosition(key) {\n var _handles$key = handles[key],\n x = _handles$key.x,\n y = _handles$key.y;\n return {\n x: x,\n y: y\n };\n };\n\n var start = getHandlePosition('start');\n var end = getHandlePosition('end');\n var tool = {};\n tool.x = calculateAxisCenter('x', start, end);\n tool.y = calculateAxisCenter('y', start, end);\n var limits = {};\n limits.x = image.width;\n limits.y = image.height;\n\n var _getRenderingInformat = getRenderingInformation(limits, tool),\n directions = _getRenderingInformat.directions,\n cornerAxis = _getRenderingInformat.cornerAxis;\n\n var availableAreas = getAvailableBlankAreas(enabledElement, bounds.x, bounds.y);\n var tempDirections = Object.assign({}, directions);\n var tempCornerAxis = cornerAxis;\n var foundPlace = false;\n var current = 0;\n\n while (current < 4) {\n if (availableAreas[tempCornerAxis + tempDirections[tempCornerAxis]]) {\n foundPlace = true;\n break;\n } // Invert the direction for the next iteration\n\n\n tempDirections[tempCornerAxis] *= -1; // Invert the tempCornerAxis\n\n tempCornerAxis = tempCornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n var cornerAxisPosition;\n\n if (foundPlace) {\n directions = Object.assign({}, directions, tempDirections);\n cornerAxis = tempCornerAxis;\n cornerAxisPosition = directions[cornerAxis] < 0 ? 0 : limits[cornerAxis];\n } else {\n limits = Object.assign({}, limits, canvasDimensions);\n var toolPositionOnCanvas = cornerstone.pixelToCanvas(element, tool);\n var renderingInformation = getRenderingInformation(limits, toolPositionOnCanvas);\n directions = renderingInformation.directions;\n cornerAxis = renderingInformation.cornerAxis;\n var position = {\n x: directions.x < 0 ? offset.left : offset.left + canvasWidth,\n y: directions.y < 0 ? offset.top : offset.top + canvasHeight\n };\n var pixelPosition = cornerstone.pageToPixel(element, position.x, position.y);\n cornerAxisPosition = pixelPosition[cornerAxis];\n }\n\n var toolAxis = cornerAxis === 'x' ? 'y' : 'x';\n var boxSize = getTextBoxSizeInPixels(element, bounds);\n textBox[cornerAxis] = cornerAxisPosition;\n textBox[toolAxis] = tool[toolAxis]; // Adjust the text box position reducing its size from the corner axis\n\n var textBoxOffset = getTextBoxOffset(config, cornerAxis, toolAxis, boxSize);\n textBox[cornerAxis] += textBoxOffset[cornerAxis][directions[cornerAxis]]; // Preventing the text box from partially going outside the canvas area\n\n var topLeft = cornerstone.pixelToCanvas(element, textBox);\n var bottomRight = {\n x: topLeft.x + bounds.x,\n y: topLeft.y + bounds.y\n };\n var canvasBorders = {\n x0: offset.left,\n y0: offset.top,\n x1: offset.left + canvasWidth,\n y1: offset.top + canvasHeight\n };\n\n if (topLeft[toolAxis] < 0) {\n var x = canvasBorders.x0;\n var y = canvasBorders.y0;\n\n var _pixelPosition = cornerstone.pageToPixel(element, x, y);\n\n textBox[toolAxis] = _pixelPosition[toolAxis];\n } else if (bottomRight[toolAxis] > canvasDimensions[toolAxis]) {\n var _x = canvasBorders.x1 - bounds.x;\n\n var _y = canvasBorders.y1 - bounds.y;\n\n var _pixelPosition2 = cornerstone.pageToPixel(element, _x, _y);\n\n textBox[toolAxis] = _pixelPosition2[toolAxis];\n }\n}\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar REGEX_TAG = /^x[0-9a-fx]{8}$/;\nvar DICOMTagDescriptions = Object.create(Object.prototype, {\n _descriptions: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n },\n tagNumberToString: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function tagNumberToString(tag) {\n var string; // by default, undefined is returned...\n\n if (this.isValidTagNumber(tag)) {\n // if it's a number, build its hexadecimal representation...\n string = 'x' + ('00000000' + tag.toString(16)).substr(-8);\n }\n\n return string;\n }\n },\n isValidTagNumber: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTagNumber(tag) {\n return _typeof(tag) === NUMBER && tag >= 0 && tag <= 0xffffffff;\n }\n },\n isValidTag: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTag(tag) {\n return _typeof(tag) === STRING ? REGEX_TAG.test(tag) : this.isValidTagNumber(tag);\n }\n },\n find: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function find(name) {\n var description; // by default, undefined is returned...\n\n if (_typeof(name) !== STRING) {\n // if it's a number, a tag string will be returned...\n name = this.tagNumberToString(name);\n }\n\n if (_typeof(name) === STRING) {\n description = this._descriptions[name];\n }\n\n return description;\n }\n },\n init: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function init(descriptionMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _descriptions = this._descriptions;\n\n for (var tag in descriptionMap) {\n if (_hasOwn.call(descriptionMap, tag)) {\n if (!this.isValidTag(tag)) {\n // Skip in case tag is not valid...\n console.info(\"DICOMTagDescriptions: Invalid tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n }\n\n if (tag in _descriptions) {\n // Skip in case the tag is duplicated...\n console.info(\"DICOMTagDescriptions: Duplicated tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n } // Save keyword...\n\n\n var keyword = descriptionMap[tag]; // Create a description entry and freeze it...\n\n var entry = Object.create(null);\n entry.tag = tag;\n entry.keyword = keyword;\n Object.freeze(entry); // Add tag references to entry...\n\n _descriptions[tag] = entry; // Add keyword references to entry (if not present already)...\n\n if (keyword in _descriptions) {\n var currentEntry = _descriptions[keyword];\n console.info(\"DICOMTagDescriptions: Using <\".concat(currentEntry.tag, \",\").concat(currentEntry.keyword, \"> instead of <\").concat(entry.tag, \",\").concat(entry.keyword, \"> for keyword \\\"\").concat(keyword, \"\\\"...\"));\n } else {\n _descriptions[keyword] = entry;\n }\n }\n } // Freeze internal description map...\n\n\n Object.freeze(_descriptions); // Freeze itself...\n\n Object.freeze(this);\n }\n }\n});\n/**\n * Map with DICOM Tag Descriptions\n */\n\nvar initialTagDescriptionMap = {\n x00020000: 'FileMetaInfoGroupLength',\n x00020001: 'FileMetaInfoVersion',\n x00020002: 'MediaStorageSOPClassUID',\n x00020003: 'MediaStorageSOPInstanceUID',\n x00020010: 'TransferSyntaxUID',\n x00020012: 'ImplementationClassUID',\n x00020013: 'ImplementationVersionName',\n x00020016: 'SourceApplicationEntityTitle',\n x00020100: 'PrivateInformationCreatorUID',\n x00020102: 'PrivateInformation',\n x00041130: 'FileSetID',\n x00041141: 'FileSetDescriptorFileID',\n x00041142: 'SpecificCharacterSetOfFile',\n x00041200: 'FirstDirectoryRecordOffset',\n x00041202: 'LastDirectoryRecordOffset',\n x00041212: 'FileSetConsistencyFlag',\n x00041220: 'DirectoryRecordSequence',\n x00041400: 'OffsetOfNextDirectoryRecord',\n x00041410: 'RecordInUseFlag',\n x00041420: 'LowerLevelDirectoryEntityOffset',\n x00041430: 'DirectoryRecordType',\n x00041432: 'PrivateRecordUID',\n x00041500: 'ReferencedFileID',\n x00041504: 'MRDRDirectoryRecordOffset',\n x00041510: 'ReferencedSOPClassUIDInFile',\n x00041511: 'ReferencedSOPInstanceUIDInFile',\n x00041512: 'ReferencedTransferSyntaxUIDInFile',\n x0004151a: 'ReferencedRelatedSOPClassUIDInFile',\n x00041600: 'NumberOfReferences',\n x00080000: 'IdentifyingGroupLength',\n x00080001: 'LengthToEnd',\n x00080005: 'SpecificCharacterSet',\n x00080006: 'LanguageCodeSequence',\n x00080008: 'ImageType',\n x00080010: 'RecognitionCode',\n x00080012: 'InstanceCreationDate',\n x00080013: 'InstanceCreationTime',\n x00080014: 'InstanceCreatorUID',\n x00080016: 'SOPClassUID',\n x00080018: 'SOPInstanceUID',\n x0008001a: 'RelatedGeneralSOPClassUID',\n x0008001b: 'OriginalSpecializedSOPClassUID',\n x00080020: 'StudyDate',\n x00080021: 'SeriesDate',\n x00080022: 'AcquisitionDate',\n x00080023: 'ContentDate',\n x00080024: 'OverlayDate',\n x00080025: 'CurveDate',\n x0008002a: 'AcquisitionDateTime',\n x00080030: 'StudyTime',\n x00080031: 'SeriesTime',\n x00080032: 'AcquisitionTime',\n x00080033: 'ContentTime',\n x00080034: 'OverlayTime',\n x00080035: 'CurveTime',\n x00080040: 'DataSetType',\n x00080041: 'DataSetSubtype',\n x00080042: 'NuclearMedicineSeriesType',\n x00080050: 'AccessionNumber',\n x00080052: 'QueryRetrieveLevel',\n x00080054: 'RetrieveAETitle',\n x00080056: 'InstanceAvailability',\n x00080058: 'FailedSOPInstanceUIDList',\n x00080060: 'Modality',\n x00080061: 'ModalitiesInStudy',\n x00080062: 'SOPClassesInStudy',\n x00080064: 'ConversionType',\n x00080068: 'PresentationIntentType',\n x00080070: 'Manufacturer',\n x00080080: 'InstitutionName',\n x00080081: 'InstitutionAddress',\n x00080082: 'InstitutionCodeSequence',\n x00080090: 'ReferringPhysicianName',\n x00080092: 'ReferringPhysicianAddress',\n x00080094: 'ReferringPhysicianTelephoneNumber',\n x00080096: 'ReferringPhysicianIDSequence',\n x00080100: 'CodeValue',\n x00080102: 'CodingSchemeDesignator',\n x00080103: 'CodingSchemeVersion',\n x00080104: 'CodeMeaning',\n x00080105: 'MappingResource',\n x00080106: 'ContextGroupVersion',\n x00080107: 'ContextGroupLocalVersion',\n x0008010b: 'ContextGroupExtensionFlag',\n x0008010c: 'CodingSchemeUID',\n x0008010d: 'ContextGroupExtensionCreatorUID',\n x0008010f: 'ContextIdentifier',\n x00080110: 'CodingSchemeIDSequence',\n x00080112: 'CodingSchemeRegistry',\n x00080114: 'CodingSchemeExternalID',\n x00080115: 'CodingSchemeName',\n x00080116: 'CodingSchemeResponsibleOrganization',\n x00080117: 'ContextUID',\n x00080201: 'TimezoneOffsetFromUTC',\n x00081000: 'NetworkID',\n x00081010: 'StationName',\n x00081030: 'StudyDescription',\n x00081032: 'ProcedureCodeSequence',\n x0008103e: 'SeriesDescription',\n x00081040: 'InstitutionalDepartmentName',\n x00081048: 'PhysiciansOfRecord',\n x00081049: 'PhysiciansOfRecordIDSequence',\n x00081050: 'PerformingPhysicianName',\n x00081052: 'PerformingPhysicianIDSequence',\n x00081060: 'NameOfPhysicianReadingStudy',\n x00081062: 'PhysicianReadingStudyIDSequence',\n x00081070: 'OperatorsName',\n x00081072: 'OperatorIDSequence',\n x00081080: 'AdmittingDiagnosesDescription',\n x00081084: 'AdmittingDiagnosesCodeSequence',\n x00081090: 'ManufacturersModelName',\n x00081100: 'ReferencedResultsSequence',\n x00081110: 'ReferencedStudySequence',\n x00081111: 'ReferencedPerformedProcedureStepSequence',\n x00081115: 'ReferencedSeriesSequence',\n x00081120: 'ReferencedPatientSequence',\n x00081125: 'ReferencedVisitSequence',\n x00081130: 'ReferencedOverlaySequence',\n x0008113a: 'ReferencedWaveformSequence',\n x00081140: 'ReferencedImageSequence',\n x00081145: 'ReferencedCurveSequence',\n x0008114a: 'ReferencedInstanceSequence',\n x00081150: 'ReferencedSOPClassUID',\n x00081155: 'ReferencedSOPInstanceUID',\n x0008115a: 'SOPClassesSupported',\n x00081160: 'ReferencedFrameNumber',\n x00081161: 'SimpleFrameList',\n x00081162: 'CalculatedFrameList',\n x00081163: 'TimeRange',\n x00081164: 'FrameExtractionSequence',\n x00081195: 'TransactionUID',\n x00081197: 'FailureReason',\n x00081198: 'FailedSOPSequence',\n x00081199: 'ReferencedSOPSequence',\n x00081200: 'OtherReferencedStudiesSequence',\n x00081250: 'RelatedSeriesSequence',\n x00082110: 'LossyImageCompressionRetired',\n x00082111: 'DerivationDescription',\n x00082112: 'SourceImageSequence',\n x00082120: 'StageName',\n x00082122: 'StageNumber',\n x00082124: 'NumberOfStages',\n x00082127: 'ViewName',\n x00082128: 'ViewNumber',\n x00082129: 'NumberOfEventTimers',\n x0008212a: 'NumberOfViewsInStage',\n x00082130: 'EventElapsedTimes',\n x00082132: 'EventTimerNames',\n x00082133: 'EventTimerSequence',\n x00082134: 'EventTimeOffset',\n x00082135: 'EventCodeSequence',\n x00082142: 'StartTrim',\n x00082143: 'StopTrim',\n x00082144: 'RecommendedDisplayFrameRate',\n x00082200: 'TransducerPosition',\n x00082204: 'TransducerOrientation',\n x00082208: 'AnatomicStructure',\n x00082218: 'AnatomicRegionSequence',\n x00082220: 'AnatomicRegionModifierSequence',\n x00082228: 'PrimaryAnatomicStructureSequence',\n x00082229: 'AnatomicStructureOrRegionSequence',\n x00082230: 'AnatomicStructureModifierSequence',\n x00082240: 'TransducerPositionSequence',\n x00082242: 'TransducerPositionModifierSequence',\n x00082244: 'TransducerOrientationSequence',\n x00082246: 'TransducerOrientationModifierSeq',\n x00082253: 'AnatomicEntrancePortalCodeSeqTrial',\n x00082255: 'AnatomicApproachDirCodeSeqTrial',\n x00082256: 'AnatomicPerspectiveDescrTrial',\n x00082257: 'AnatomicPerspectiveCodeSeqTrial',\n x00083001: 'AlternateRepresentationSequence',\n x00083010: 'IrradiationEventUID',\n x00084000: 'IdentifyingComments',\n x00089007: 'FrameType',\n x00089092: 'ReferencedImageEvidenceSequence',\n x00089121: 'ReferencedRawDataSequence',\n x00089123: 'CreatorVersionUID',\n x00089124: 'DerivationImageSequence',\n x00089154: 'SourceImageEvidenceSequence',\n x00089205: 'PixelPresentation',\n x00089206: 'VolumetricProperties',\n x00089207: 'VolumeBasedCalculationTechnique',\n x00089208: 'ComplexImageComponent',\n x00089209: 'AcquisitionContrast',\n x00089215: 'DerivationCodeSequence',\n x00089237: 'GrayscalePresentationStateSequence',\n x00089410: 'ReferencedOtherPlaneSequence',\n x00089458: 'FrameDisplaySequence',\n x00089459: 'RecommendedDisplayFrameRateInFloat',\n x00089460: 'SkipFrameRangeFlag',\n // x00091001: 'FullFidelity',\n // x00091002: 'SuiteID',\n // x00091004: 'ProductID',\n // x00091027: 'ImageActualDate',\n // x00091030: 'ServiceID',\n // x00091031: 'MobileLocationNumber',\n // x000910e3: 'EquipmentUID',\n // x000910e6: 'GenesisVersionNow',\n // x000910e7: 'ExamRecordChecksum',\n // x000910e9: 'ActualSeriesDataTimeStamp',\n x00100000: 'PatientGroupLength',\n x00100010: 'PatientName',\n x00100020: 'PatientID',\n x00100021: 'IssuerOfPatientID',\n x00100022: 'TypeOfPatientID',\n x00100030: 'PatientBirthDate',\n x00100032: 'PatientBirthTime',\n x00100040: 'PatientSex',\n x00100050: 'PatientInsurancePlanCodeSequence',\n x00100101: 'PatientPrimaryLanguageCodeSeq',\n x00100102: 'PatientPrimaryLanguageCodeModSeq',\n x00101000: 'OtherPatientIDs',\n x00101001: 'OtherPatientNames',\n x00101002: 'OtherPatientIDsSequence',\n x00101005: 'PatientBirthName',\n x00101010: 'PatientAge',\n x00101020: 'PatientSize',\n x00101030: 'PatientWeight',\n x00101040: 'PatientAddress',\n x00101050: 'InsurancePlanIdentification',\n x00101060: 'PatientMotherBirthName',\n x00101080: 'MilitaryRank',\n x00101081: 'BranchOfService',\n x00101090: 'MedicalRecordLocator',\n x00102000: 'MedicalAlerts',\n x00102110: 'Allergies',\n x00102150: 'CountryOfResidence',\n x00102152: 'RegionOfResidence',\n x00102154: 'PatientTelephoneNumbers',\n x00102160: 'EthnicGroup',\n x00102180: 'Occupation',\n x001021a0: 'SmokingStatus',\n x001021b0: 'AdditionalPatientHistory',\n x001021c0: 'PregnancyStatus',\n x001021d0: 'LastMenstrualDate',\n x001021f0: 'PatientReligiousPreference',\n x00102201: 'PatientSpeciesDescription',\n x00102202: 'PatientSpeciesCodeSequence',\n x00102203: 'PatientSexNeutered',\n x00102210: 'AnatomicalOrientationType',\n x00102292: 'PatientBreedDescription',\n x00102293: 'PatientBreedCodeSequence',\n x00102294: 'BreedRegistrationSequence',\n x00102295: 'BreedRegistrationNumber',\n x00102296: 'BreedRegistryCodeSequence',\n x00102297: 'ResponsiblePerson',\n x00102298: 'ResponsiblePersonRole',\n x00102299: 'ResponsibleOrganization',\n x00104000: 'PatientComments',\n x00109431: 'ExaminedBodyThickness',\n x00111010: 'PatientStatus',\n x00120010: 'ClinicalTrialSponsorName',\n x00120020: 'ClinicalTrialProtocolID',\n x00120021: 'ClinicalTrialProtocolName',\n x00120030: 'ClinicalTrialSiteID',\n x00120031: 'ClinicalTrialSiteName',\n x00120040: 'ClinicalTrialSubjectID',\n x00120042: 'ClinicalTrialSubjectReadingID',\n x00120050: 'ClinicalTrialTimePointID',\n x00120051: 'ClinicalTrialTimePointDescription',\n x00120060: 'ClinicalTrialCoordinatingCenter',\n x00120062: 'PatientIdentityRemoved',\n x00120063: 'DeidentificationMethod',\n x00120064: 'DeidentificationMethodCodeSequence',\n x00120071: 'ClinicalTrialSeriesID',\n x00120072: 'ClinicalTrialSeriesDescription',\n x00120084: 'DistributionType',\n x00120085: 'ConsentForDistributionFlag',\n x00180000: 'AcquisitionGroupLength',\n x00180010: 'ContrastBolusAgent',\n x00180012: 'ContrastBolusAgentSequence',\n x00180014: 'ContrastBolusAdministrationRoute',\n x00180015: 'BodyPartExamined',\n x00180020: 'ScanningSequence',\n x00180021: 'SequenceVariant',\n x00180022: 'ScanOptions',\n x00180023: 'MRAcquisitionType',\n x00180024: 'SequenceName',\n x00180025: 'AngioFlag',\n x00180026: 'InterventionDrugInformationSeq',\n x00180027: 'InterventionDrugStopTime',\n x00180028: 'InterventionDrugDose',\n x00180029: 'InterventionDrugSequence',\n x0018002a: 'AdditionalDrugSequence',\n x00180030: 'Radionuclide',\n x00180031: 'Radiopharmaceutical',\n x00180032: 'EnergyWindowCenterline',\n x00180033: 'EnergyWindowTotalWidth',\n x00180034: 'InterventionDrugName',\n x00180035: 'InterventionDrugStartTime',\n x00180036: 'InterventionSequence',\n x00180037: 'TherapyType',\n x00180038: 'InterventionStatus',\n x00180039: 'TherapyDescription',\n x0018003a: 'InterventionDescription',\n x00180040: 'CineRate',\n x00180042: 'InitialCineRunState',\n x00180050: 'SliceThickness',\n x00180060: 'KVP',\n x00180070: 'CountsAccumulated',\n x00180071: 'AcquisitionTerminationCondition',\n x00180072: 'EffectiveDuration',\n x00180073: 'AcquisitionStartCondition',\n x00180074: 'AcquisitionStartConditionData',\n x00180075: 'AcquisitionEndConditionData',\n x00180080: 'RepetitionTime',\n x00180081: 'EchoTime',\n x00180082: 'InversionTime',\n x00180083: 'NumberOfAverages',\n x00180084: 'ImagingFrequency',\n x00180085: 'ImagedNucleus',\n x00180086: 'EchoNumber',\n x00180087: 'MagneticFieldStrength',\n x00180088: 'SpacingBetweenSlices',\n x00180089: 'NumberOfPhaseEncodingSteps',\n x00180090: 'DataCollectionDiameter',\n x00180091: 'EchoTrainLength',\n x00180093: 'PercentSampling',\n x00180094: 'PercentPhaseFieldOfView',\n x00180095: 'PixelBandwidth',\n x00181000: 'DeviceSerialNumber',\n x00181002: 'DeviceUID',\n x00181003: 'DeviceID',\n x00181004: 'PlateID',\n x00181005: 'GeneratorID',\n x00181006: 'GridID',\n x00181007: 'CassetteID',\n x00181008: 'GantryID',\n x00181010: 'SecondaryCaptureDeviceID',\n x00181011: 'HardcopyCreationDeviceID',\n x00181012: 'DateOfSecondaryCapture',\n x00181014: 'TimeOfSecondaryCapture',\n x00181016: 'SecondaryCaptureDeviceManufacturer',\n x00181017: 'HardcopyDeviceManufacturer',\n x00181018: 'SecondaryCaptureDeviceModelName',\n x00181019: 'SecondaryCaptureDeviceSoftwareVers',\n x0018101a: 'HardcopyDeviceSoftwareVersion',\n x0018101b: 'HardcopyDeviceModelName',\n x00181020: 'SoftwareVersion',\n x00181022: 'VideoImageFormatAcquired',\n x00181023: 'DigitalImageFormatAcquired',\n x00181030: 'ProtocolName',\n x00181040: 'ContrastBolusRoute',\n x00181041: 'ContrastBolusVolume',\n x00181042: 'ContrastBolusStartTime',\n x00181043: 'ContrastBolusStopTime',\n x00181044: 'ContrastBolusTotalDose',\n x00181045: 'SyringeCounts',\n x00181046: 'ContrastFlowRate',\n x00181047: 'ContrastFlowDuration',\n x00181048: 'ContrastBolusIngredient',\n x00181049: 'ContrastBolusConcentration',\n x00181050: 'SpatialResolution',\n x00181060: 'TriggerTime',\n x00181061: 'TriggerSourceOrType',\n x00181062: 'NominalInterval',\n x00181063: 'FrameTime',\n x00181064: 'CardiacFramingType',\n x00181065: 'FrameTimeVector',\n x00181066: 'FrameDelay',\n x00181067: 'ImageTriggerDelay',\n x00181068: 'MultiplexGroupTimeOffset',\n x00181069: 'TriggerTimeOffset',\n x0018106a: 'SynchronizationTrigger',\n x0018106c: 'SynchronizationChannel',\n x0018106e: 'TriggerSamplePosition',\n x00181070: 'RadiopharmaceuticalRoute',\n x00181071: 'RadiopharmaceuticalVolume',\n x00181072: 'RadiopharmaceuticalStartTime',\n x00181073: 'RadiopharmaceuticalStopTime',\n x00181074: 'RadionuclideTotalDose',\n x00181075: 'RadionuclideHalfLife',\n x00181076: 'RadionuclidePositronFraction',\n x00181077: 'RadiopharmaceuticalSpecActivity',\n x00181078: 'RadiopharmaceuticalStartDateTime',\n x00181079: 'RadiopharmaceuticalStopDateTime',\n x00181080: 'BeatRejectionFlag',\n x00181081: 'LowRRValue',\n x00181082: 'HighRRValue',\n x00181083: 'IntervalsAcquired',\n x00181084: 'IntervalsRejected',\n x00181085: 'PVCRejection',\n x00181086: 'SkipBeats',\n x00181088: 'HeartRate',\n x00181090: 'CardiacNumberOfImages',\n x00181094: 'TriggerWindow',\n x00181100: 'ReconstructionDiameter',\n x00181110: 'DistanceSourceToDetector',\n x00181111: 'DistanceSourceToPatient',\n x00181114: 'EstimatedRadiographicMagnification',\n x00181120: 'GantryDetectorTilt',\n x00181121: 'GantryDetectorSlew',\n x00181130: 'TableHeight',\n x00181131: 'TableTraverse',\n x00181134: 'TableMotion',\n x00181135: 'TableVerticalIncrement',\n x00181136: 'TableLateralIncrement',\n x00181137: 'TableLongitudinalIncrement',\n x00181138: 'TableAngle',\n x0018113a: 'TableType',\n x00181140: 'RotationDirection',\n x00181141: 'AngularPosition',\n x00181142: 'RadialPosition',\n x00181143: 'ScanArc',\n x00181144: 'AngularStep',\n x00181145: 'CenterOfRotationOffset',\n x00181146: 'RotationOffset',\n x00181147: 'FieldOfViewShape',\n x00181149: 'FieldOfViewDimensions',\n x00181150: 'ExposureTime',\n x00181151: 'XRayTubeCurrent',\n x00181152: 'Exposure',\n x00181153: 'ExposureInMicroAmpSec',\n x00181154: 'AveragePulseWidth',\n x00181155: 'RadiationSetting',\n x00181156: 'RectificationType',\n x0018115a: 'RadiationMode',\n x0018115e: 'ImageAreaDoseProduct',\n x00181160: 'FilterType',\n x00181161: 'TypeOfFilters',\n x00181162: 'IntensifierSize',\n x00181164: 'ImagerPixelSpacing',\n x00181166: 'Grid',\n x00181170: 'GeneratorPower',\n x00181180: 'CollimatorGridName',\n x00181181: 'CollimatorType',\n x00181182: 'FocalDistance',\n x00181183: 'XFocusCenter',\n x00181184: 'YFocusCenter',\n x00181190: 'FocalSpots',\n x00181191: 'AnodeTargetMaterial',\n x001811a0: 'BodyPartThickness',\n x001811a2: 'CompressionForce',\n x00181200: 'DateOfLastCalibration',\n x00181201: 'TimeOfLastCalibration',\n x00181210: 'ConvolutionKernel',\n x00181240: 'UpperLowerPixelValues',\n x00181242: 'ActualFrameDuration',\n x00181243: 'CountRate',\n x00181244: 'PreferredPlaybackSequencing',\n x00181250: 'ReceiveCoilName',\n x00181251: 'TransmitCoilName',\n x00181260: 'PlateType',\n x00181261: 'PhosphorType',\n x00181300: 'ScanVelocity',\n x00181301: 'WholeBodyTechnique',\n x00181302: 'ScanLength',\n x00181310: 'AcquisitionMatrix',\n x00181312: 'InPlanePhaseEncodingDirection',\n x00181314: 'FlipAngle',\n x00181315: 'VariableFlipAngleFlag',\n x00181316: 'SAR',\n x00181318: 'DB-Dt',\n x00181400: 'AcquisitionDeviceProcessingDescr',\n x00181401: 'AcquisitionDeviceProcessingCode',\n x00181402: 'CassetteOrientation',\n x00181403: 'CassetteSize',\n x00181404: 'ExposuresOnPlate',\n x00181405: 'RelativeXRayExposure',\n x00181450: 'ColumnAngulation',\n x00181460: 'TomoLayerHeight',\n x00181470: 'TomoAngle',\n x00181480: 'TomoTime',\n x00181490: 'TomoType',\n x00181491: 'TomoClass',\n x00181495: 'NumberOfTomosynthesisSourceImages',\n x00181500: 'PositionerMotion',\n x00181508: 'PositionerType',\n x00181510: 'PositionerPrimaryAngle',\n x00181511: 'PositionerSecondaryAngle',\n x00181520: 'PositionerPrimaryAngleIncrement',\n x00181521: 'PositionerSecondaryAngleIncrement',\n x00181530: 'DetectorPrimaryAngle',\n x00181531: 'DetectorSecondaryAngle',\n x00181600: 'ShutterShape',\n x00181602: 'ShutterLeftVerticalEdge',\n x00181604: 'ShutterRightVerticalEdge',\n x00181606: 'ShutterUpperHorizontalEdge',\n x00181608: 'ShutterLowerHorizontalEdge',\n x00181610: 'CenterOfCircularShutter',\n x00181612: 'RadiusOfCircularShutter',\n x00181620: 'VerticesOfPolygonalShutter',\n x00181622: 'ShutterPresentationValue',\n x00181623: 'ShutterOverlayGroup',\n x00181624: 'ShutterPresentationColorCIELabVal',\n x00181700: 'CollimatorShape',\n x00181702: 'CollimatorLeftVerticalEdge',\n x00181704: 'CollimatorRightVerticalEdge',\n x00181706: 'CollimatorUpperHorizontalEdge',\n x00181708: 'CollimatorLowerHorizontalEdge',\n x00181710: 'CenterOfCircularCollimator',\n x00181712: 'RadiusOfCircularCollimator',\n x00181720: 'VerticesOfPolygonalCollimator',\n x00181800: 'AcquisitionTimeSynchronized',\n x00181801: 'TimeSource',\n x00181802: 'TimeDistributionProtocol',\n x00181803: 'NTPSourceAddress',\n x00182001: 'PageNumberVector',\n x00182002: 'FrameLabelVector',\n x00182003: 'FramePrimaryAngleVector',\n x00182004: 'FrameSecondaryAngleVector',\n x00182005: 'SliceLocationVector',\n x00182006: 'DisplayWindowLabelVector',\n x00182010: 'NominalScannedPixelSpacing',\n x00182020: 'DigitizingDeviceTransportDirection',\n x00182030: 'RotationOfScannedFilm',\n x00183100: 'IVUSAcquisition',\n x00183101: 'IVUSPullbackRate',\n x00183102: 'IVUSGatedRate',\n x00183103: 'IVUSPullbackStartFrameNumber',\n x00183104: 'IVUSPullbackStopFrameNumber',\n x00183105: 'LesionNumber',\n x00184000: 'AcquisitionComments',\n x00185000: 'OutputPower',\n x00185010: 'TransducerData',\n x00185012: 'FocusDepth',\n x00185020: 'ProcessingFunction',\n x00185021: 'PostprocessingFunction',\n x00185022: 'MechanicalIndex',\n x00185024: 'BoneThermalIndex',\n x00185026: 'CranialThermalIndex',\n x00185027: 'SoftTissueThermalIndex',\n x00185028: 'SoftTissueFocusThermalIndex',\n x00185029: 'SoftTissueSurfaceThermalIndex',\n x00185030: 'DynamicRange',\n x00185040: 'TotalGain',\n x00185050: 'DepthOfScanField',\n x00185100: 'PatientPosition',\n x00185101: 'ViewPosition',\n x00185104: 'ProjectionEponymousNameCodeSeq',\n x00185210: 'ImageTransformationMatrix',\n x00185212: 'ImageTranslationVector',\n x00186000: 'Sensitivity',\n x00186011: 'SequenceOfUltrasoundRegions',\n x00186012: 'RegionSpatialFormat',\n x00186014: 'RegionDataType',\n x00186016: 'RegionFlags',\n x00186018: 'RegionLocationMinX0',\n x0018601a: 'RegionLocationMinY0',\n x0018601c: 'RegionLocationMaxX1',\n x0018601e: 'RegionLocationMaxY1',\n x00186020: 'ReferencePixelX0',\n x00186022: 'ReferencePixelY0',\n x00186024: 'PhysicalUnitsXDirection',\n x00186026: 'PhysicalUnitsYDirection',\n x00186028: 'ReferencePixelPhysicalValueX',\n x0018602a: 'ReferencePixelPhysicalValueY',\n x0018602c: 'PhysicalDeltaX',\n x0018602e: 'PhysicalDeltaY',\n x00186030: 'TransducerFrequency',\n x00186031: 'TransducerType',\n x00186032: 'PulseRepetitionFrequency',\n x00186034: 'DopplerCorrectionAngle',\n x00186036: 'SteeringAngle',\n x00186038: 'DopplerSampleVolumeXPosRetired',\n x00186039: 'DopplerSampleVolumeXPosition',\n x0018603a: 'DopplerSampleVolumeYPosRetired',\n x0018603b: 'DopplerSampleVolumeYPosition',\n x0018603c: 'TMLinePositionX0Retired',\n x0018603d: 'TMLinePositionX0',\n x0018603e: 'TMLinePositionY0Retired',\n x0018603f: 'TMLinePositionY0',\n x00186040: 'TMLinePositionX1Retired',\n x00186041: 'TMLinePositionX1',\n x00186042: 'TMLinePositionY1Retired',\n x00186043: 'TMLinePositionY1',\n x00186044: 'PixelComponentOrganization',\n x00186046: 'PixelComponentMask',\n x00186048: 'PixelComponentRangeStart',\n x0018604a: 'PixelComponentRangeStop',\n x0018604c: 'PixelComponentPhysicalUnits',\n x0018604e: 'PixelComponentDataType',\n x00186050: 'NumberOfTableBreakPoints',\n x00186052: 'TableOfXBreakPoints',\n x00186054: 'TableOfYBreakPoints',\n x00186056: 'NumberOfTableEntries',\n x00186058: 'TableOfPixelValues',\n x0018605a: 'TableOfParameterValues',\n x00186060: 'RWaveTimeVector',\n x00187000: 'DetectorConditionsNominalFlag',\n x00187001: 'DetectorTemperature',\n x00187004: 'DetectorType',\n x00187005: 'DetectorConfiguration',\n x00187006: 'DetectorDescription',\n x00187008: 'DetectorMode',\n x0018700a: 'DetectorID',\n x0018700c: 'DateOfLastDetectorCalibration',\n x0018700e: 'TimeOfLastDetectorCalibration',\n x00187010: 'DetectorExposuresSinceCalibration',\n x00187011: 'DetectorExposuresSinceManufactured',\n x00187012: 'DetectorTimeSinceLastExposure',\n x00187014: 'DetectorActiveTime',\n x00187016: 'DetectorActiveOffsetFromExposure',\n x0018701a: 'DetectorBinning',\n x00187020: 'DetectorElementPhysicalSize',\n x00187022: 'DetectorElementSpacing',\n x00187024: 'DetectorActiveShape',\n x00187026: 'DetectorActiveDimensions',\n x00187028: 'DetectorActiveOrigin',\n x0018702a: 'DetectorManufacturerName',\n x0018702b: 'DetectorManufacturersModelName',\n x00187030: 'FieldOfViewOrigin',\n x00187032: 'FieldOfViewRotation',\n x00187034: 'FieldOfViewHorizontalFlip',\n x00187040: 'GridAbsorbingMaterial',\n x00187041: 'GridSpacingMaterial',\n x00187042: 'GridThickness',\n x00187044: 'GridPitch',\n x00187046: 'GridAspectRatio',\n x00187048: 'GridPeriod',\n x0018704c: 'GridFocalDistance',\n x00187050: 'FilterMaterial',\n x00187052: 'FilterThicknessMinimum',\n x00187054: 'FilterThicknessMaximum',\n x00187060: 'ExposureControlMode',\n x00187062: 'ExposureControlModeDescription',\n x00187064: 'ExposureStatus',\n x00187065: 'PhototimerSetting',\n x00188150: 'ExposureTimeInMicroSec',\n x00188151: 'XRayTubeCurrentInMicroAmps',\n x00189004: 'ContentQualification',\n x00189005: 'PulseSequenceName',\n x00189006: 'MRImagingModifierSequence',\n x00189008: 'EchoPulseSequence',\n x00189009: 'InversionRecovery',\n x00189010: 'FlowCompensation',\n x00189011: 'MultipleSpinEcho',\n x00189012: 'MultiPlanarExcitation',\n x00189014: 'PhaseContrast',\n x00189015: 'TimeOfFlightContrast',\n x00189016: 'Spoiling',\n x00189017: 'SteadyStatePulseSequence',\n x00189018: 'EchoPlanarPulseSequence',\n x00189019: 'TagAngleFirstAxis',\n x00189020: 'MagnetizationTransfer',\n x00189021: 'T2Preparation',\n x00189022: 'BloodSignalNulling',\n x00189024: 'SaturationRecovery',\n x00189025: 'SpectrallySelectedSuppression',\n x00189026: 'SpectrallySelectedExcitation',\n x00189027: 'SpatialPresaturation',\n x00189028: 'Tagging',\n x00189029: 'OversamplingPhase',\n x00189030: 'TagSpacingFirstDimension',\n x00189032: 'GeometryOfKSpaceTraversal',\n x00189033: 'SegmentedKSpaceTraversal',\n x00189034: 'RectilinearPhaseEncodeReordering',\n x00189035: 'TagThickness',\n x00189036: 'PartialFourierDirection',\n x00189037: 'CardiacSynchronizationTechnique',\n x00189041: 'ReceiveCoilManufacturerName',\n x00189042: 'MRReceiveCoilSequence',\n x00189043: 'ReceiveCoilType',\n x00189044: 'QuadratureReceiveCoil',\n x00189045: 'MultiCoilDefinitionSequence',\n x00189046: 'MultiCoilConfiguration',\n x00189047: 'MultiCoilElementName',\n x00189048: 'MultiCoilElementUsed',\n x00189049: 'MRTransmitCoilSequence',\n x00189050: 'TransmitCoilManufacturerName',\n x00189051: 'TransmitCoilType',\n x00189052: 'SpectralWidth',\n x00189053: 'ChemicalShiftReference',\n x00189054: 'VolumeLocalizationTechnique',\n x00189058: 'MRAcquisitionFrequencyEncodeSteps',\n x00189059: 'Decoupling',\n x00189060: 'DecoupledNucleus',\n x00189061: 'DecouplingFrequency',\n x00189062: 'DecouplingMethod',\n x00189063: 'DecouplingChemicalShiftReference',\n x00189064: 'KSpaceFiltering',\n x00189065: 'TimeDomainFiltering',\n x00189066: 'NumberOfZeroFills',\n x00189067: 'BaselineCorrection',\n x00189069: 'ParallelReductionFactorInPlane',\n x00189070: 'CardiacRRIntervalSpecified',\n x00189073: 'AcquisitionDuration',\n x00189074: 'FrameAcquisitionDateTime',\n x00189075: 'DiffusionDirectionality',\n x00189076: 'DiffusionGradientDirectionSequence',\n x00189077: 'ParallelAcquisition',\n x00189078: 'ParallelAcquisitionTechnique',\n x00189079: 'InversionTimes',\n x00189080: 'MetaboliteMapDescription',\n x00189081: 'PartialFourier',\n x00189082: 'EffectiveEchoTime',\n x00189083: 'MetaboliteMapCodeSequence',\n x00189084: 'ChemicalShiftSequence',\n x00189085: 'CardiacSignalSource',\n x00189087: 'DiffusionBValue',\n x00189089: 'DiffusionGradientOrientation',\n x00189090: 'VelocityEncodingDirection',\n x00189091: 'VelocityEncodingMinimumValue',\n x00189093: 'NumberOfKSpaceTrajectories',\n x00189094: 'CoverageOfKSpace',\n x00189095: 'SpectroscopyAcquisitionPhaseRows',\n x00189096: 'ParallelReductFactorInPlaneRetired',\n x00189098: 'TransmitterFrequency',\n x00189100: 'ResonantNucleus',\n x00189101: 'FrequencyCorrection',\n x00189103: 'MRSpectroscopyFOV-GeometrySequence',\n x00189104: 'SlabThickness',\n x00189105: 'SlabOrientation',\n x00189106: 'MidSlabPosition',\n x00189107: 'MRSpatialSaturationSequence',\n x00189112: 'MRTimingAndRelatedParametersSeq',\n x00189114: 'MREchoSequence',\n x00189115: 'MRModifierSequence',\n x00189117: 'MRDiffusionSequence',\n x00189118: 'CardiacTriggerSequence',\n x00189119: 'MRAveragesSequence',\n x00189125: 'MRFOV-GeometrySequence',\n x00189126: 'VolumeLocalizationSequence',\n x00189127: 'SpectroscopyAcquisitionDataColumns',\n x00189147: 'DiffusionAnisotropyType',\n x00189151: 'FrameReferenceDateTime',\n x00189152: 'MRMetaboliteMapSequence',\n x00189155: 'ParallelReductionFactorOutOfPlane',\n x00189159: 'SpectroscopyOutOfPlanePhaseSteps',\n x00189166: 'BulkMotionStatus',\n x00189168: 'ParallelReductionFactSecondInPlane',\n x00189169: 'CardiacBeatRejectionTechnique',\n x00189170: 'RespiratoryMotionCompTechnique',\n x00189171: 'RespiratorySignalSource',\n x00189172: 'BulkMotionCompensationTechnique',\n x00189173: 'BulkMotionSignalSource',\n x00189174: 'ApplicableSafetyStandardAgency',\n x00189175: 'ApplicableSafetyStandardDescr',\n x00189176: 'OperatingModeSequence',\n x00189177: 'OperatingModeType',\n x00189178: 'OperatingMode',\n x00189179: 'SpecificAbsorptionRateDefinition',\n x00189180: 'GradientOutputType',\n x00189181: 'SpecificAbsorptionRateValue',\n x00189182: 'GradientOutput',\n x00189183: 'FlowCompensationDirection',\n x00189184: 'TaggingDelay',\n x00189185: 'RespiratoryMotionCompTechDescr',\n x00189186: 'RespiratorySignalSourceID',\n x00189195: 'ChemicalShiftsMinIntegrateLimitHz',\n x00189196: 'ChemicalShiftsMaxIntegrateLimitHz',\n x00189197: 'MRVelocityEncodingSequence',\n x00189198: 'FirstOrderPhaseCorrection',\n x00189199: 'WaterReferencedPhaseCorrection',\n x00189200: 'MRSpectroscopyAcquisitionType',\n x00189214: 'RespiratoryCyclePosition',\n x00189217: 'VelocityEncodingMaximumValue',\n x00189218: 'TagSpacingSecondDimension',\n x00189219: 'TagAngleSecondAxis',\n x00189220: 'FrameAcquisitionDuration',\n x00189226: 'MRImageFrameTypeSequence',\n x00189227: 'MRSpectroscopyFrameTypeSequence',\n x00189231: 'MRAcqPhaseEncodingStepsInPlane',\n x00189232: 'MRAcqPhaseEncodingStepsOutOfPlane',\n x00189234: 'SpectroscopyAcqPhaseColumns',\n x00189236: 'CardiacCyclePosition',\n x00189239: 'SpecificAbsorptionRateSequence',\n x00189240: 'RFEchoTrainLength',\n x00189241: 'GradientEchoTrainLength',\n x00189295: 'ChemicalShiftsMinIntegrateLimitPPM',\n x00189296: 'ChemicalShiftsMaxIntegrateLimitPPM',\n x00189301: 'CTAcquisitionTypeSequence',\n x00189302: 'AcquisitionType',\n x00189303: 'TubeAngle',\n x00189304: 'CTAcquisitionDetailsSequence',\n x00189305: 'RevolutionTime',\n x00189306: 'SingleCollimationWidth',\n x00189307: 'TotalCollimationWidth',\n x00189308: 'CTTableDynamicsSequence',\n x00189309: 'TableSpeed',\n x00189310: 'TableFeedPerRotation',\n x00189311: 'SpiralPitchFactor',\n x00189312: 'CTGeometrySequence',\n x00189313: 'DataCollectionCenterPatient',\n x00189314: 'CTReconstructionSequence',\n x00189315: 'ReconstructionAlgorithm',\n x00189316: 'ConvolutionKernelGroup',\n x00189317: 'ReconstructionFieldOfView',\n x00189318: 'ReconstructionTargetCenterPatient',\n x00189319: 'ReconstructionAngle',\n x00189320: 'ImageFilter',\n x00189321: 'CTExposureSequence',\n x00189322: 'ReconstructionPixelSpacing',\n x00189323: 'ExposureModulationType',\n x00189324: 'EstimatedDoseSaving',\n x00189325: 'CTXRayDetailsSequence',\n x00189326: 'CTPositionSequence',\n x00189327: 'TablePosition',\n x00189328: 'ExposureTimeInMilliSec',\n x00189329: 'CTImageFrameTypeSequence',\n x00189330: 'XRayTubeCurrentInMilliAmps',\n x00189332: 'ExposureInMilliAmpSec',\n x00189333: 'ConstantVolumeFlag',\n x00189334: 'FluoroscopyFlag',\n x00189335: 'SourceToDataCollectionCenterDist',\n x00189337: 'ContrastBolusAgentNumber',\n x00189338: 'ContrastBolusIngredientCodeSeq',\n x00189340: 'ContrastAdministrationProfileSeq',\n x00189341: 'ContrastBolusUsageSequence',\n x00189342: 'ContrastBolusAgentAdministered',\n x00189343: 'ContrastBolusAgentDetected',\n x00189344: 'ContrastBolusAgentPhase',\n x00189345: 'CTDIvol',\n x00189346: 'CTDIPhantomTypeCodeSequence',\n x00189351: 'CalciumScoringMassFactorPatient',\n x00189352: 'CalciumScoringMassFactorDevice',\n x00189353: 'EnergyWeightingFactor',\n x00189360: 'CTAdditionalXRaySourceSequence',\n x00189401: 'ProjectionPixelCalibrationSequence',\n x00189402: 'DistanceSourceToIsocenter',\n x00189403: 'DistanceObjectToTableTop',\n x00189404: 'ObjectPixelSpacingInCenterOfBeam',\n x00189405: 'PositionerPositionSequence',\n x00189406: 'TablePositionSequence',\n x00189407: 'CollimatorShapeSequence',\n x00189412: 'XA-XRFFrameCharacteristicsSequence',\n x00189417: 'FrameAcquisitionSequence',\n x00189420: 'XRayReceptorType',\n x00189423: 'AcquisitionProtocolName',\n x00189424: 'AcquisitionProtocolDescription',\n x00189425: 'ContrastBolusIngredientOpaque',\n x00189426: 'DistanceReceptorPlaneToDetHousing',\n x00189427: 'IntensifierActiveShape',\n x00189428: 'IntensifierActiveDimensions',\n x00189429: 'PhysicalDetectorSize',\n x00189430: 'PositionOfIsocenterProjection',\n x00189432: 'FieldOfViewSequence',\n x00189433: 'FieldOfViewDescription',\n x00189434: 'ExposureControlSensingRegionsSeq',\n x00189435: 'ExposureControlSensingRegionShape',\n x00189436: 'ExposureControlSensRegionLeftEdge',\n x00189437: 'ExposureControlSensRegionRightEdge',\n x00189440: 'CenterOfCircExposControlSensRegion',\n x00189441: 'RadiusOfCircExposControlSensRegion',\n x00189447: 'ColumnAngulationPatient',\n x00189449: 'BeamAngle',\n x00189451: 'FrameDetectorParametersSequence',\n x00189452: 'CalculatedAnatomyThickness',\n x00189455: 'CalibrationSequence',\n x00189456: 'ObjectThicknessSequence',\n x00189457: 'PlaneIdentification',\n x00189461: 'FieldOfViewDimensionsInFloat',\n x00189462: 'IsocenterReferenceSystemSequence',\n x00189463: 'PositionerIsocenterPrimaryAngle',\n x00189464: 'PositionerIsocenterSecondaryAngle',\n x00189465: 'PositionerIsocenterDetRotAngle',\n x00189466: 'TableXPositionToIsocenter',\n x00189467: 'TableYPositionToIsocenter',\n x00189468: 'TableZPositionToIsocenter',\n x00189469: 'TableHorizontalRotationAngle',\n x00189470: 'TableHeadTiltAngle',\n x00189471: 'TableCradleTiltAngle',\n x00189472: 'FrameDisplayShutterSequence',\n x00189473: 'AcquiredImageAreaDoseProduct',\n x00189474: 'CArmPositionerTabletopRelationship',\n x00189476: 'XRayGeometrySequence',\n x00189477: 'IrradiationEventIDSequence',\n x00189504: 'XRay3DFrameTypeSequence',\n x00189506: 'ContributingSourcesSequence',\n x00189507: 'XRay3DAcquisitionSequence',\n x00189508: 'PrimaryPositionerScanArc',\n x00189509: 'SecondaryPositionerScanArc',\n x00189510: 'PrimaryPositionerScanStartAngle',\n x00189511: 'SecondaryPositionerScanStartAngle',\n x00189514: 'PrimaryPositionerIncrement',\n x00189515: 'SecondaryPositionerIncrement',\n x00189516: 'StartAcquisitionDateTime',\n x00189517: 'EndAcquisitionDateTime',\n x00189524: 'ApplicationName',\n x00189525: 'ApplicationVersion',\n x00189526: 'ApplicationManufacturer',\n x00189527: 'AlgorithmType',\n x00189528: 'AlgorithmDescription',\n x00189530: 'XRay3DReconstructionSequence',\n x00189531: 'ReconstructionDescription',\n x00189538: 'PerProjectionAcquisitionSequence',\n x00189601: 'DiffusionBMatrixSequence',\n x00189602: 'DiffusionBValueXX',\n x00189603: 'DiffusionBValueXY',\n x00189604: 'DiffusionBValueXZ',\n x00189605: 'DiffusionBValueYY',\n x00189606: 'DiffusionBValueYZ',\n x00189607: 'DiffusionBValueZZ',\n x00189701: 'DecayCorrectionDateTime',\n x00189715: 'StartDensityThreshold',\n x00189722: 'TerminationTimeThreshold',\n x00189725: 'DetectorGeometry',\n x00189727: 'AxialDetectorDimension',\n x00189735: 'PETPositionSequence',\n x00189739: 'NumberOfIterations',\n x00189740: 'NumberOfSubsets',\n x00189751: 'PETFrameTypeSequence',\n x00189756: 'ReconstructionType',\n x00189758: 'DecayCorrected',\n x00189759: 'AttenuationCorrected',\n x00189760: 'ScatterCorrected',\n x00189761: 'DeadTimeCorrected',\n x00189762: 'GantryMotionCorrected',\n x00189763: 'PatientMotionCorrected',\n x00189765: 'RandomsCorrected',\n x00189767: 'SensitivityCalibrated',\n x00189801: 'DepthsOfFocus',\n x00189804: 'ExclusionStartDatetime',\n x00189805: 'ExclusionDuration',\n x00189807: 'ImageDataTypeSequence',\n x00189808: 'DataType',\n x0018980b: 'AliasedDataType',\n x0018a001: 'ContributingEquipmentSequence',\n x0018a002: 'ContributionDateTime',\n x0018a003: 'ContributionDescription',\n // x00191002: 'NumberOfCellsIInDetector',\n // x00191003: 'CellNumberAtTheta',\n // x00191004: 'CellSpacing',\n // x0019100f: 'HorizFrameOfRef',\n // x00191011: 'SeriesContrast',\n // x00191012: 'LastPseq',\n // x00191013: 'StartNumberForBaseline',\n // x00191014: 'EndNumberForBaseline',\n // x00191015: 'StartNumberForEnhancedScans',\n // x00191016: 'EndNumberForEnhancedScans',\n // x00191017: 'SeriesPlane',\n // x00191018: 'FirstScanRas',\n // x00191019: 'FirstScanLocation',\n // x0019101a: 'LastScanRas',\n // x0019101b: 'LastScanLoc',\n // x0019101e: 'DisplayFieldOfView',\n // x00191023: 'TableSpeed',\n // x00191024: 'MidScanTime',\n // x00191025: 'MidScanFlag',\n // x00191026: 'DegreesOfAzimuth',\n // x00191027: 'GantryPeriod',\n // x0019102a: 'XRayOnPosition',\n // x0019102b: 'XRayOffPosition',\n // x0019102c: 'NumberOfTriggers',\n // x0019102e: 'AngleOfFirstView',\n // x0019102f: 'TriggerFrequency',\n // x00191039: 'ScanFOVType',\n // x00191040: 'StatReconFlag',\n // x00191041: 'ComputeType',\n // x00191042: 'SegmentNumber',\n // x00191043: 'TotalSegmentsRequested',\n // x00191044: 'InterscanDelay',\n // x00191047: 'ViewCompressionFactor',\n // x0019104a: 'TotalNoOfRefChannels',\n // x0019104b: 'DataSizeForScanData',\n // x00191052: 'ReconPostProcflag',\n // x00191057: 'CTWaterNumber',\n // x00191058: 'CTBoneNumber',\n // x0019105a: 'AcquisitionDuration',\n // x0019105e: 'NumberOfChannels',\n // x0019105f: 'IncrementBetweenChannels',\n // x00191060: 'StartingView',\n // x00191061: 'NumberOfViews',\n // x00191062: 'IncrementBetweenViews',\n // x0019106a: 'DependantOnNoViewsProcessed',\n // x0019106b: 'FieldOfViewInDetectorCells',\n // x00191070: 'ValueOfBackProjectionButton',\n // x00191071: 'SetIfFatqEstimatesWereUsed',\n // x00191072: 'ZChanAvgOverViews',\n // x00191073: 'AvgOfLeftRefChansOverViews',\n // x00191074: 'MaxLeftChanOverViews',\n // x00191075: 'AvgOfRightRefChansOverViews',\n // x00191076: 'MaxRightChanOverViews',\n // x0019107d: 'SecondEcho',\n // x0019107e: 'NumberOfEchoes',\n // x0019107f: 'TableDelta',\n // x00191081: 'Contiguous',\n // x00191084: 'PeakSAR',\n // x00191085: 'MonitorSAR',\n // x00191087: 'CardiacRepetitionTime',\n // x00191088: 'ImagesPerCardiacCycle',\n // x0019108a: 'ActualReceiveGainAnalog',\n // x0019108b: 'ActualReceiveGainDigital',\n // x0019108d: 'DelayAfterTrigger',\n // x0019108f: 'Swappf',\n // x00191090: 'PauseInterval',\n // x00191091: 'PulseTime',\n // x00191092: 'SliceOffsetOnFreqAxis',\n // x00191093: 'CenterFrequency',\n // x00191094: 'TransmitGain',\n // x00191095: 'AnalogReceiverGain',\n // x00191096: 'DigitalReceiverGain',\n // x00191097: 'BitmapDefiningCVs',\n // x00191098: 'CenterFreqMethod',\n // x0019109b: 'PulseSeqMode',\n // x0019109c: 'PulseSeqName',\n // x0019109d: 'PulseSeqDate',\n // x0019109e: 'InternalPulseSeqName',\n // x0019109f: 'TransmittingCoil',\n // x001910a0: 'SurfaceCoilType',\n // x001910a1: 'ExtremityCoilFlag',\n // x001910a2: 'RawDataRunNumber',\n // x001910a3: 'CalibratedFieldStrength',\n // x001910a4: 'SATFatWaterBone',\n // x001910a5: 'ReceiveBandwidth',\n // x001910a7: 'UserData01',\n // x001910a8: 'UserData02',\n // x001910a9: 'UserData03',\n // x001910aa: 'UserData04',\n // x001910ab: 'UserData05',\n // x001910ac: 'UserData06',\n // x001910ad: 'UserData07',\n // x001910ae: 'UserData08',\n // x001910af: 'UserData09',\n // x001910b0: 'UserData10',\n // x001910b1: 'UserData11',\n // x001910b2: 'UserData12',\n // x001910b3: 'UserData13',\n // x001910b4: 'UserData14',\n // x001910b5: 'UserData15',\n // x001910b6: 'UserData16',\n // x001910b7: 'UserData17',\n // x001910b8: 'UserData18',\n // x001910b9: 'UserData19',\n // x001910ba: 'UserData20',\n // x001910bb: 'UserData21',\n // x001910bc: 'UserData22',\n // x001910bd: 'UserData23',\n // x001910be: 'ProjectionAngle',\n // x001910c0: 'SaturationPlanes',\n // x001910c1: 'SurfaceCoilIntensity',\n // x001910c2: 'SATLocationR',\n // x001910c3: 'SATLocationL',\n // x001910c4: 'SATLocationA',\n // x001910c5: 'SATLocationP',\n // x001910c6: 'SATLocationH',\n // x001910c7: 'SATLocationF',\n // x001910c8: 'SATThicknessR-L',\n // x001910c9: 'SATThicknessA-P',\n // x001910ca: 'SATThicknessH-F',\n // x001910cb: 'PrescribedFlowAxis',\n // x001910cc: 'VelocityEncoding',\n // x001910cd: 'ThicknessDisclaimer',\n // x001910ce: 'PrescanType',\n // x001910cf: 'PrescanStatus',\n // x001910d0: 'RawDataType',\n // x001910d2: 'ProjectionAlgorithm',\n // x001910d3: 'ProjectionAlgorithm',\n // x001910d5: 'FractionalEcho',\n // x001910d6: 'PrepPulse',\n // x001910d7: 'CardiacPhases',\n // x001910d8: 'VariableEchoflag',\n // x001910d9: 'ConcatenatedSAT',\n // x001910da: 'ReferenceChannelUsed',\n // x001910db: 'BackProjectorCoefficient',\n // x001910dc: 'PrimarySpeedCorrectionUsed',\n // x001910dd: 'OverrangeCorrectionUsed',\n // x001910de: 'DynamicZAlphaValue',\n // x001910df: 'UserData',\n // x001910e0: 'UserData',\n // x001910e2: 'VelocityEncodeScale',\n // x001910f2: 'FastPhases',\n // x001910f9: 'TransmissionGain',\n x00200000: 'RelationshipGroupLength',\n x0020000d: 'StudyInstanceUID',\n x0020000e: 'SeriesInstanceUID',\n x00200010: 'StudyID',\n x00200011: 'SeriesNumber',\n x00200012: 'AcquisitionNumber',\n x00200013: 'InstanceNumber',\n x00200014: 'IsotopeNumber',\n x00200015: 'PhaseNumber',\n x00200016: 'IntervalNumber',\n x00200017: 'TimeSlotNumber',\n x00200018: 'AngleNumber',\n x00200019: 'ItemNumber',\n x00200020: 'PatientOrientation',\n x00200022: 'OverlayNumber',\n x00200024: 'CurveNumber',\n x00200026: 'LookupTableNumber',\n x00200030: 'ImagePosition',\n x00200032: 'ImagePositionPatient',\n x00200035: 'ImageOrientation',\n x00200037: 'ImageOrientationPatient',\n x00200050: 'Location',\n x00200052: 'FrameOfReferenceUID',\n x00200060: 'Laterality',\n x00200062: 'ImageLaterality',\n x00200070: 'ImageGeometryType',\n x00200080: 'MaskingImage',\n x00200100: 'TemporalPositionIdentifier',\n x00200105: 'NumberOfTemporalPositions',\n x00200110: 'TemporalResolution',\n x00200200: 'SynchronizationFrameOfReferenceUID',\n x00201000: 'SeriesInStudy',\n x00201001: 'AcquisitionsInSeries',\n x00201002: 'ImagesInAcquisition',\n x00201003: 'ImagesInSeries',\n x00201004: 'AcquisitionsInStudy',\n x00201005: 'ImagesInStudy',\n x00201020: 'Reference',\n x00201040: 'PositionReferenceIndicator',\n x00201041: 'SliceLocation',\n x00201070: 'OtherStudyNumbers',\n x00201200: 'NumberOfPatientRelatedStudies',\n x00201202: 'NumberOfPatientRelatedSeries',\n x00201204: 'NumberOfPatientRelatedInstances',\n x00201206: 'NumberOfStudyRelatedSeries',\n x00201208: 'NumberOfStudyRelatedInstances',\n x00201209: 'NumberOfSeriesRelatedInstances',\n x002031xx: 'SourceImageIDs',\n x00203401: 'ModifyingDeviceID',\n x00203402: 'ModifiedImageID',\n x00203403: 'ModifiedImageDate',\n x00203404: 'ModifyingDeviceManufacturer',\n x00203405: 'ModifiedImageTime',\n x00203406: 'ModifiedImageDescription',\n x00204000: 'ImageComments',\n x00205000: 'OriginalImageIdentification',\n x00205002: 'OriginalImageIdentNomenclature',\n x00209056: 'StackID',\n x00209057: 'InStackPositionNumber',\n x00209071: 'FrameAnatomySequence',\n x00209072: 'FrameLaterality',\n x00209111: 'FrameContentSequence',\n x00209113: 'PlanePositionSequence',\n x00209116: 'PlaneOrientationSequence',\n x00209128: 'TemporalPositionIndex',\n x00209153: 'TriggerDelayTime',\n x00209156: 'FrameAcquisitionNumber',\n x00209157: 'DimensionIndexValues',\n x00209158: 'FrameComments',\n x00209161: 'ConcatenationUID',\n x00209162: 'InConcatenationNumber',\n x00209163: 'InConcatenationTotalNumber',\n x00209164: 'DimensionOrganizationUID',\n x00209165: 'DimensionIndexPointer',\n x00209167: 'FunctionalGroupPointer',\n x00209213: 'DimensionIndexPrivateCreator',\n x00209221: 'DimensionOrganizationSequence',\n x00209222: 'DimensionIndexSequence',\n x00209228: 'ConcatenationFrameOffsetNumber',\n x00209238: 'FunctionalGroupPrivateCreator',\n x00209241: 'NominalPercentageOfCardiacPhase',\n x00209245: 'NominalPercentOfRespiratoryPhase',\n x00209246: 'StartingRespiratoryAmplitude',\n x00209247: 'StartingRespiratoryPhase',\n x00209248: 'EndingRespiratoryAmplitude',\n x00209249: 'EndingRespiratoryPhase',\n x00209250: 'RespiratoryTriggerType',\n x00209251: 'RRIntervalTimeNominal',\n x00209252: 'ActualCardiacTriggerDelayTime',\n x00209253: 'RespiratorySynchronizationSequence',\n x00209254: 'RespiratoryIntervalTime',\n x00209255: 'NominalRespiratoryTriggerDelayTime',\n x00209256: 'RespiratoryTriggerDelayThreshold',\n x00209257: 'ActualRespiratoryTriggerDelayTime',\n x00209301: 'ImagePositionVolume',\n x00209302: 'ImageOrientationVolume',\n x00209308: 'ApexPosition',\n x00209421: 'DimensionDescriptionLabel',\n x00209450: 'PatientOrientationInFrameSequence',\n x00209453: 'FrameLabel',\n x00209518: 'AcquisitionIndex',\n x00209529: 'ContributingSOPInstancesRefSeq',\n x00209536: 'ReconstructionIndex',\n // x00211003: 'SeriesFromWhichPrescribed',\n // x00211005: 'GenesisVersionNow',\n // x00211007: 'SeriesRecordChecksum',\n // x00211018: 'GenesisVersionNow',\n // x00211019: 'AcqreconRecordChecksum',\n // x00211020: 'TableStartLocation',\n // x00211035: 'SeriesFromWhichPrescribed',\n // x00211036: 'ImageFromWhichPrescribed',\n // x00211037: 'ScreenFormat',\n // x0021104a: 'AnatomicalReferenceForScout',\n // x0021104f: 'LocationsInAcquisition',\n // x00211050: 'GraphicallyPrescribed',\n // x00211051: 'RotationFromSourceXRot',\n // x00211052: 'RotationFromSourceYRot',\n // x00211053: 'RotationFromSourceZRot',\n // x00211054: 'ImagePosition',\n // x00211055: 'ImageOrientation',\n // x00211056: 'IntegerSlop',\n // x00211057: 'IntegerSlop',\n // x00211058: 'IntegerSlop',\n // x00211059: 'IntegerSlop',\n // x0021105a: 'IntegerSlop',\n // x0021105b: 'FloatSlop',\n // x0021105c: 'FloatSlop',\n // x0021105d: 'FloatSlop',\n // x0021105e: 'FloatSlop',\n // x0021105f: 'FloatSlop',\n // x00211081: 'AutoWindowLevelAlpha',\n // x00211082: 'AutoWindowLevelBeta',\n // x00211083: 'AutoWindowLevelWindow',\n // x00211084: 'ToWindowLevelLevel',\n // x00211090: 'TubeFocalSpotPosition',\n // x00211091: 'BiopsyPosition',\n // x00211092: 'BiopsyTLocation',\n // x00211093: 'BiopsyRefLocation',\n x00220001: 'LightPathFilterPassThroughWavelen',\n x00220002: 'LightPathFilterPassBand',\n x00220003: 'ImagePathFilterPassThroughWavelen',\n x00220004: 'ImagePathFilterPassBand',\n x00220005: 'PatientEyeMovementCommanded',\n x00220006: 'PatientEyeMovementCommandCodeSeq',\n x00220007: 'SphericalLensPower',\n x00220008: 'CylinderLensPower',\n x00220009: 'CylinderAxis',\n x0022000a: 'EmmetropicMagnification',\n x0022000b: 'IntraOcularPressure',\n x0022000c: 'HorizontalFieldOfView',\n x0022000d: 'PupilDilated',\n x0022000e: 'DegreeOfDilation',\n x00220010: 'StereoBaselineAngle',\n x00220011: 'StereoBaselineDisplacement',\n x00220012: 'StereoHorizontalPixelOffset',\n x00220013: 'StereoVerticalPixelOffset',\n x00220014: 'StereoRotation',\n x00220015: 'AcquisitionDeviceTypeCodeSequence',\n x00220016: 'IlluminationTypeCodeSequence',\n x00220017: 'LightPathFilterTypeStackCodeSeq',\n x00220018: 'ImagePathFilterTypeStackCodeSeq',\n x00220019: 'LensesCodeSequence',\n x0022001a: 'ChannelDescriptionCodeSequence',\n x0022001b: 'RefractiveStateSequence',\n x0022001c: 'MydriaticAgentCodeSequence',\n x0022001d: 'RelativeImagePositionCodeSequence',\n x00220020: 'StereoPairsSequence',\n x00220021: 'LeftImageSequence',\n x00220022: 'RightImageSequence',\n x00220030: 'AxialLengthOfTheEye',\n x00220031: 'OphthalmicFrameLocationSequence',\n x00220032: 'ReferenceCoordinates',\n x00220035: 'DepthSpatialResolution',\n x00220036: 'MaximumDepthDistortion',\n x00220037: 'AlongScanSpatialResolution',\n x00220038: 'MaximumAlongScanDistortion',\n x00220039: 'OphthalmicImageOrientation',\n x00220041: 'DepthOfTransverseImage',\n x00220042: 'MydriaticAgentConcUnitsSeq',\n x00220048: 'AcrossScanSpatialResolution',\n x00220049: 'MaximumAcrossScanDistortion',\n x0022004e: 'MydriaticAgentConcentration',\n x00220055: 'IlluminationWaveLength',\n x00220056: 'IlluminationPower',\n x00220057: 'IlluminationBandwidth',\n x00220058: 'MydriaticAgentSequence',\n // x00231001: 'NumberOfSeriesInStudy',\n // x00231002: 'NumberOfUnarchivedSeries',\n // x00231010: 'ReferenceImageField',\n // x00231050: 'SummaryImage',\n // x00231070: 'StartTimeSecsInFirstAxial',\n // x00231074: 'NoofUpdatesToHeader',\n // x0023107d: 'IndicatesIfTheStudyHasCompleteInfo',\n // x00251006: 'LastPulseSequenceUsed',\n // x00251007: 'ImagesInSeries',\n // x00251010: 'LandmarkCounter',\n // x00251011: 'NumberOfAcquisitions',\n // x00251014: 'IndicatesNoofUpdatesToHeader',\n // x00251017: 'SeriesCompleteFlag',\n // x00251018: 'NumberOfImagesArchived',\n // x00251019: 'LastImageNumberUsed',\n // x0025101a: 'PrimaryReceiverSuiteAndHost',\n // x00271006: 'ImageArchiveFlag',\n // x00271010: 'ScoutType',\n // x0027101c: 'VmaMamp',\n // x0027101d: 'VmaPhase',\n // x0027101e: 'VmaMod',\n // x0027101f: 'VmaClip',\n // x00271020: 'SmartScanOnOffFlag',\n // x00271030: 'ForeignImageRevision',\n // x00271031: 'ImagingMode',\n // x00271032: 'PulseSequence',\n // x00271033: 'ImagingOptions',\n // x00271035: 'PlaneType',\n // x00271036: 'ObliquePlane',\n // x00271040: 'RASLetterOfImageLocation',\n // x00271041: 'ImageLocation',\n // x00271042: 'CenterRCoordOfPlaneImage',\n // x00271043: 'CenterACoordOfPlaneImage',\n // x00271044: 'CenterSCoordOfPlaneImage',\n // x00271045: 'NormalRCoord',\n // x00271046: 'NormalACoord',\n // x00271047: 'NormalSCoord',\n // x00271048: 'RCoordOfTopRightCorner',\n // x00271049: 'ACoordOfTopRightCorner',\n // x0027104a: 'SCoordOfTopRightCorner',\n // x0027104b: 'RCoordOfBottomRightCorner',\n // x0027104c: 'ACoordOfBottomRightCorner',\n // x0027104d: 'SCoordOfBottomRightCorner',\n // x00271050: 'TableStartLocation',\n // x00271051: 'TableEndLocation',\n // x00271052: 'RASLetterForSideOfImage',\n // x00271053: 'RASLetterForAnteriorPosterior',\n // x00271054: 'RASLetterForScoutStartLoc',\n // x00271055: 'RASLetterForScoutEndLoc',\n // x00271060: 'ImageDimensionX',\n // x00271061: 'ImageDimensionY',\n // x00271062: 'NumberOfExcitations',\n x00280000: 'ImagePresentationGroupLength',\n x00280002: 'SamplesPerPixel',\n x00280003: 'SamplesPerPixelUsed',\n x00280004: 'PhotometricInterpretation',\n x00280005: 'ImageDimensions',\n x00280006: 'PlanarConfiguration',\n x00280008: 'NumberOfFrames',\n x00280009: 'FrameIncrementPointer',\n x0028000a: 'FrameDimensionPointer',\n x00280010: 'Rows',\n x00280011: 'Columns',\n x00280012: 'Planes',\n x00280014: 'UltrasoundColorDataPresent',\n x00280030: 'PixelSpacing',\n x00280031: 'ZoomFactor',\n x00280032: 'ZoomCenter',\n x00280034: 'PixelAspectRatio',\n x00280040: 'ImageFormat',\n x00280050: 'ManipulatedImage',\n x00280051: 'CorrectedImage',\n x0028005f: 'CompressionRecognitionCode',\n x00280060: 'CompressionCode',\n x00280061: 'CompressionOriginator',\n x00280062: 'CompressionLabel',\n x00280063: 'CompressionDescription',\n x00280065: 'CompressionSequence',\n x00280066: 'CompressionStepPointers',\n x00280068: 'RepeatInterval',\n x00280069: 'BitsGrouped',\n x00280070: 'PerimeterTable',\n x00280071: 'PerimeterValue',\n x00280080: 'PredictorRows',\n x00280081: 'PredictorColumns',\n x00280082: 'PredictorConstants',\n x00280090: 'BlockedPixels',\n x00280091: 'BlockRows',\n x00280092: 'BlockColumns',\n x00280093: 'RowOverlap',\n x00280094: 'ColumnOverlap',\n x00280100: 'BitsAllocated',\n x00280101: 'BitsStored',\n x00280102: 'HighBit',\n x00280103: 'PixelRepresentation',\n x00280104: 'SmallestValidPixelValue',\n x00280105: 'LargestValidPixelValue',\n x00280106: 'SmallestImagePixelValue',\n x00280107: 'LargestImagePixelValue',\n x00280108: 'SmallestPixelValueInSeries',\n x00280109: 'LargestPixelValueInSeries',\n x00280110: 'SmallestImagePixelValueInPlane',\n x00280111: 'LargestImagePixelValueInPlane',\n x00280120: 'PixelPaddingValue',\n x00280121: 'PixelPaddingRangeLimit',\n x00280200: 'ImageLocation',\n x00280300: 'QualityControlImage',\n x00280301: 'BurnedInAnnotation',\n x00280400: 'TransformLabel',\n x00280401: 'TransformVersionNumber',\n x00280402: 'NumberOfTransformSteps',\n x00280403: 'SequenceOfCompressedData',\n x00280404: 'DetailsOfCoefficients',\n x002804x2: 'CoefficientCoding',\n x002804x3: 'CoefficientCodingPointers',\n x00280700: 'DCTLabel',\n x00280701: 'DataBlockDescription',\n x00280702: 'DataBlock',\n x00280710: 'NormalizationFactorFormat',\n x00280720: 'ZonalMapNumberFormat',\n x00280721: 'ZonalMapLocation',\n x00280722: 'ZonalMapFormat',\n x00280730: 'AdaptiveMapFormat',\n x00280740: 'CodeNumberFormat',\n x002808x0: 'CodeLabel',\n x002808x2: 'NumberOfTables',\n x002808x3: 'CodeTableLocation',\n x002808x4: 'BitsForCodeWord',\n x002808x8: 'ImageDataLocation',\n x00280a02: 'PixelSpacingCalibrationType',\n x00280a04: 'PixelSpacingCalibrationDescription',\n x00281040: 'PixelIntensityRelationship',\n x00281041: 'PixelIntensityRelationshipSign',\n x00281050: 'WindowCenter',\n x00281051: 'WindowWidth',\n x00281052: 'RescaleIntercept',\n x00281053: 'RescaleSlope',\n x00281054: 'RescaleType',\n x00281055: 'WindowCenterAndWidthExplanation',\n x00281056: 'VOI_LUTFunction',\n x00281080: 'GrayScale',\n x00281090: 'RecommendedViewingMode',\n x00281100: 'GrayLookupTableDescriptor',\n x00281101: 'RedPaletteColorTableDescriptor',\n x00281102: 'GreenPaletteColorTableDescriptor',\n x00281103: 'BluePaletteColorTableDescriptor',\n x00281111: 'LargeRedPaletteColorTableDescr',\n x00281112: 'LargeGreenPaletteColorTableDescr',\n x00281113: 'LargeBluePaletteColorTableDescr',\n x00281199: 'PaletteColorTableUID',\n x00281200: 'GrayLookupTableData',\n x00281201: 'RedPaletteColorTableData',\n x00281202: 'GreenPaletteColorTableData',\n x00281203: 'BluePaletteColorTableData',\n x00281211: 'LargeRedPaletteColorTableData',\n x00281212: 'LargeGreenPaletteColorTableData',\n x00281213: 'LargeBluePaletteColorTableData',\n x00281214: 'LargePaletteColorLookupTableUID',\n x00281221: 'SegmentedRedColorTableData',\n x00281222: 'SegmentedGreenColorTableData',\n x00281223: 'SegmentedBlueColorTableData',\n x00281300: 'BreastImplantPresent',\n x00281350: 'PartialView',\n x00281351: 'PartialViewDescription',\n x00281352: 'PartialViewCodeSequence',\n x0028135a: 'SpatialLocationsPreserved',\n x00281402: 'DataPathAssignment',\n x00281404: 'BlendingLUT1Sequence',\n x00281406: 'BlendingWeightConstant',\n x00281408: 'BlendingLookupTableData',\n x0028140c: 'BlendingLUT2Sequence',\n x0028140e: 'DataPathID',\n x0028140f: 'RGBLUTTransferFunction',\n x00281410: 'AlphaLUTTransferFunction',\n x00282000: 'ICCProfile',\n x00282110: 'LossyImageCompression',\n x00282112: 'LossyImageCompressionRatio',\n x00282114: 'LossyImageCompressionMethod',\n x00283000: 'ModalityLUTSequence',\n x00283002: 'LUTDescriptor',\n x00283003: 'LUTExplanation',\n x00283004: 'ModalityLUTType',\n x00283006: 'LUTData',\n x00283010: 'VOILUTSequence',\n x00283110: 'SoftcopyVOILUTSequence',\n x00284000: 'ImagePresentationComments',\n x00285000: 'BiPlaneAcquisitionSequence',\n x00286010: 'RepresentativeFrameNumber',\n x00286020: 'FrameNumbersOfInterest',\n x00286022: 'FrameOfInterestDescription',\n x00286023: 'FrameOfInterestType',\n x00286030: 'MaskPointers',\n x00286040: 'RWavePointer',\n x00286100: 'MaskSubtractionSequence',\n x00286101: 'MaskOperation',\n x00286102: 'ApplicableFrameRange',\n x00286110: 'MaskFrameNumbers',\n x00286112: 'ContrastFrameAveraging',\n x00286114: 'MaskSubPixelShift',\n x00286120: 'TIDOffset',\n x00286190: 'MaskOperationExplanation',\n x00287fe0: 'PixelDataProviderURL',\n x00289001: 'DataPointRows',\n x00289002: 'DataPointColumns',\n x00289003: 'SignalDomainColumns',\n x00289099: 'LargestMonochromePixelValue',\n x00289108: 'DataRepresentation',\n x00289110: 'PixelMeasuresSequence',\n x00289132: 'FrameVOILUTSequence',\n x00289145: 'PixelValueTransformationSequence',\n x00289235: 'SignalDomainRows',\n x00289411: 'DisplayFilterPercentage',\n x00289415: 'FramePixelShiftSequence',\n x00289416: 'SubtractionItemID',\n x00289422: 'PixelIntensityRelationshipLUTSeq',\n x00289443: 'FramePixelDataPropertiesSequence',\n x00289444: 'GeometricalProperties',\n x00289445: 'GeometricMaximumDistortion',\n x00289446: 'ImageProcessingApplied',\n x00289454: 'MaskSelectionMode',\n x00289474: 'LUTFunction',\n x00289478: 'MaskVisibilityPercentage',\n x00289501: 'PixelShiftSequence',\n x00289502: 'RegionPixelShiftSequence',\n x00289503: 'VerticesOfTheRegion',\n x00289506: 'PixelShiftFrameRange',\n x00289507: 'LUTFrameRange',\n x00289520: 'ImageToEquipmentMappingMatrix',\n x00289537: 'EquipmentCoordinateSystemID',\n // x00291004: 'LowerRangeOfPixels1a',\n // x00291005: 'LowerRangeOfPixels1b',\n // x00291006: 'LowerRangeOfPixels1c',\n // x00291007: 'LowerRangeOfPixels1d',\n // x00291008: 'LowerRangeOfPixels1e',\n // x00291009: 'LowerRangeOfPixels1f',\n // x0029100a: 'LowerRangeOfPixels1g',\n // x00291015: 'LowerRangeOfPixels1h',\n // x00291016: 'LowerRangeOfPixels1i',\n // x00291017: 'LowerRangeOfPixels2',\n // x00291018: 'UpperRangeOfPixels2',\n // x0029101a: 'LenOfTotHdrInBytes',\n // x00291026: 'VersionOfTheHdrStruct',\n // x00291034: 'AdvantageCompOverflow',\n // x00291035: 'AdvantageCompUnderflow',\n x00320000: 'StudyGroupLength',\n x0032000a: 'StudyStatusID',\n x0032000c: 'StudyPriorityID',\n x00320012: 'StudyIDIssuer',\n x00320032: 'StudyVerifiedDate',\n x00320033: 'StudyVerifiedTime',\n x00320034: 'StudyReadDate',\n x00320035: 'StudyReadTime',\n x00321000: 'ScheduledStudyStartDate',\n x00321001: 'ScheduledStudyStartTime',\n x00321010: 'ScheduledStudyStopDate',\n x00321011: 'ScheduledStudyStopTime',\n x00321020: 'ScheduledStudyLocation',\n x00321021: 'ScheduledStudyLocationAETitle',\n x00321030: 'ReasonForStudy',\n x00321031: 'RequestingPhysicianIDSequence',\n x00321032: 'RequestingPhysician',\n x00321033: 'RequestingService',\n x00321040: 'StudyArrivalDate',\n x00321041: 'StudyArrivalTime',\n x00321050: 'StudyCompletionDate',\n x00321051: 'StudyCompletionTime',\n x00321055: 'StudyComponentStatusID',\n x00321060: 'RequestedProcedureDescription',\n x00321064: 'RequestedProcedureCodeSequence',\n x00321070: 'RequestedContrastAgent',\n x00324000: 'StudyComments',\n x00380004: 'ReferencedPatientAliasSequence',\n x00380008: 'VisitStatusID',\n x00380010: 'AdmissionID',\n x00380011: 'IssuerOfAdmissionID',\n x00380016: 'RouteOfAdmissions',\n x0038001a: 'ScheduledAdmissionDate',\n x0038001b: 'ScheduledAdmissionTime',\n x0038001c: 'ScheduledDischargeDate',\n x0038001d: 'ScheduledDischargeTime',\n x0038001e: 'ScheduledPatientInstitResidence',\n x00380020: 'AdmittingDate',\n x00380021: 'AdmittingTime',\n x00380030: 'DischargeDate',\n x00380032: 'DischargeTime',\n x00380040: 'DischargeDiagnosisDescription',\n x00380044: 'DischargeDiagnosisCodeSequence',\n x00380050: 'SpecialNeeds',\n x00380060: 'ServiceEpisodeID',\n x00380061: 'IssuerOfServiceEpisodeID',\n x00380062: 'ServiceEpisodeDescription',\n x00380100: 'PertinentDocumentsSequence',\n x00380300: 'CurrentPatientLocation',\n x00380400: 'PatientInstitutionResidence',\n x00380500: 'PatientState',\n x00380502: 'PatientClinicalTrialParticipSeq',\n x00384000: 'VisitComments',\n x003a0004: 'WaveformOriginality',\n x003a0005: 'NumberOfWaveformChannels',\n x003a0010: 'NumberOfWaveformSamples',\n x003a001a: 'SamplingFrequency',\n x003a0020: 'MultiplexGroupLabel',\n x003a0200: 'ChannelDefinitionSequence',\n x003a0202: 'WaveformChannelNumber',\n x003a0203: 'ChannelLabel',\n x003a0205: 'ChannelStatus',\n x003a0208: 'ChannelSourceSequence',\n x003a0209: 'ChannelSourceModifiersSequence',\n x003a020a: 'SourceWaveformSequence',\n x003a020c: 'ChannelDerivationDescription',\n x003a0210: 'ChannelSensitivity',\n x003a0211: 'ChannelSensitivityUnitsSequence',\n x003a0212: 'ChannelSensitivityCorrectionFactor',\n x003a0213: 'ChannelBaseline',\n x003a0214: 'ChannelTimeSkew',\n x003a0215: 'ChannelSampleSkew',\n x003a0218: 'ChannelOffset',\n x003a021a: 'WaveformBitsStored',\n x003a0220: 'FilterLowFrequency',\n x003a0221: 'FilterHighFrequency',\n x003a0222: 'NotchFilterFrequency',\n x003a0223: 'NotchFilterBandwidth',\n x003a0230: 'WaveformDataDisplayScale',\n x003a0231: 'WaveformDisplayBkgCIELabValue',\n x003a0240: 'WaveformPresentationGroupSequence',\n x003a0241: 'PresentationGroupNumber',\n x003a0242: 'ChannelDisplaySequence',\n x003a0244: 'ChannelRecommendDisplayCIELabValue',\n x003a0245: 'ChannelPosition',\n x003a0246: 'DisplayShadingFlag',\n x003a0247: 'FractionalChannelDisplayScale',\n x003a0248: 'AbsoluteChannelDisplayScale',\n x003a0300: 'MultiplexAudioChannelsDescrCodeSeq',\n x003a0301: 'ChannelIdentificationCode',\n x003a0302: 'ChannelMode',\n x00400001: 'ScheduledStationAETitle',\n x00400002: 'ScheduledProcedureStepStartDate',\n x00400003: 'ScheduledProcedureStepStartTime',\n x00400004: 'ScheduledProcedureStepEndDate',\n x00400005: 'ScheduledProcedureStepEndTime',\n x00400006: 'ScheduledPerformingPhysiciansName',\n x00400007: 'ScheduledProcedureStepDescription',\n x00400008: 'ScheduledProtocolCodeSequence',\n x00400009: 'ScheduledProcedureStepID',\n x0040000a: 'StageCodeSequence',\n x0040000b: 'ScheduledPerformingPhysicianIDSeq',\n x00400010: 'ScheduledStationName',\n x00400011: 'ScheduledProcedureStepLocation',\n x00400012: 'PreMedication',\n x00400020: 'ScheduledProcedureStepStatus',\n x00400031: 'LocalNamespaceEntityID',\n x00400032: 'UniversalEntityID',\n x00400033: 'UniversalEntityIDType',\n x00400035: 'IdentifierTypeCode',\n x00400036: 'AssigningFacilitySequence',\n x00400100: 'ScheduledProcedureStepSequence',\n x00400220: 'ReferencedNonImageCompositeSOPSeq',\n x00400241: 'PerformedStationAETitle',\n x00400242: 'PerformedStationName',\n x00400243: 'PerformedLocation',\n x00400244: 'PerformedProcedureStepStartDate',\n x00400245: 'PerformedProcedureStepStartTime',\n x00400250: 'PerformedProcedureStepEndDate',\n x00400251: 'PerformedProcedureStepEndTime',\n x00400252: 'PerformedProcedureStepStatus',\n x00400253: 'PerformedProcedureStepID',\n x00400254: 'PerformedProcedureStepDescription',\n x00400255: 'PerformedProcedureTypeDescription',\n x00400260: 'PerformedProtocolCodeSequence',\n x00400261: 'PerformedProtocolType',\n x00400270: 'ScheduledStepAttributesSequence',\n x00400275: 'RequestAttributesSequence',\n x00400280: 'CommentsOnPerformedProcedureStep',\n x00400281: 'ProcStepDiscontinueReasonCodeSeq',\n x00400293: 'QuantitySequence',\n x00400294: 'Quantity',\n x00400295: 'MeasuringUnitsSequence',\n x00400296: 'BillingItemSequence',\n x00400300: 'TotalTimeOfFluoroscopy',\n x00400301: 'TotalNumberOfExposures',\n x00400302: 'EntranceDose',\n x00400303: 'ExposedArea',\n x00400306: 'DistanceSourceToEntrance',\n x00400307: 'DistanceSourceToSupport',\n x0040030e: 'ExposureDoseSequence',\n x00400310: 'CommentsOnRadiationDose',\n x00400312: 'XRayOutput',\n x00400314: 'HalfValueLayer',\n x00400316: 'OrganDose',\n x00400318: 'OrganExposed',\n x00400320: 'BillingProcedureStepSequence',\n x00400321: 'FilmConsumptionSequence',\n x00400324: 'BillingSuppliesAndDevicesSequence',\n x00400330: 'ReferencedProcedureStepSequence',\n x00400340: 'PerformedSeriesSequence',\n x00400400: 'CommentsOnScheduledProcedureStep',\n x00400440: 'ProtocolContextSequence',\n x00400441: 'ContentItemModifierSequence',\n x0040050a: 'SpecimenAccessionNumber',\n x00400512: 'ContainerIdentifier',\n x0040051a: 'ContainerDescription',\n x00400550: 'SpecimenSequence',\n x00400551: 'SpecimenIdentifier',\n x00400552: 'SpecimenDescriptionSequenceTrial',\n x00400553: 'SpecimenDescriptionTrial',\n x00400554: 'SpecimenUID',\n x00400555: 'AcquisitionContextSequence',\n x00400556: 'AcquisitionContextDescription',\n x0040059a: 'SpecimenTypeCodeSequence',\n x00400600: 'SpecimenShortDescription',\n x004006fa: 'SlideIdentifier',\n x0040071a: 'ImageCenterPointCoordinatesSeq',\n x0040072a: 'XOffsetInSlideCoordinateSystem',\n x0040073a: 'YOffsetInSlideCoordinateSystem',\n x0040074a: 'ZOffsetInSlideCoordinateSystem',\n x004008d8: 'PixelSpacingSequence',\n x004008da: 'CoordinateSystemAxisCodeSequence',\n x004008ea: 'MeasurementUnitsCodeSequence',\n x004009f8: 'VitalStainCodeSequenceTrial',\n x00401001: 'RequestedProcedureID',\n x00401002: 'ReasonForRequestedProcedure',\n x00401003: 'RequestedProcedurePriority',\n x00401004: 'PatientTransportArrangements',\n x00401005: 'RequestedProcedureLocation',\n x00401006: 'PlacerOrderNumber-Procedure',\n x00401007: 'FillerOrderNumber-Procedure',\n x00401008: 'ConfidentialityCode',\n x00401009: 'ReportingPriority',\n x0040100a: 'ReasonForRequestedProcedureCodeSeq',\n x00401010: 'NamesOfIntendedRecipientsOfResults',\n x00401011: 'IntendedRecipientsOfResultsIDSeq',\n x00401101: 'PersonIdentificationCodeSequence',\n x00401102: 'PersonAddress',\n x00401103: 'PersonTelephoneNumbers',\n x00401400: 'RequestedProcedureComments',\n x00402001: 'ReasonForImagingServiceRequest',\n x00402004: 'IssueDateOfImagingServiceRequest',\n x00402005: 'IssueTimeOfImagingServiceRequest',\n x00402006: 'PlacerOrderNumberImagingServiceRequestRetired',\n x00402007: 'FillerOrderNumberImagingServiceRequestRetired',\n x00402008: 'OrderEnteredBy',\n x00402009: 'OrderEntererLocation',\n x00402010: 'OrderCallbackPhoneNumber',\n x00402016: 'PlacerOrderNum-ImagingServiceReq',\n x00402017: 'FillerOrderNum-ImagingServiceReq',\n x00402400: 'ImagingServiceRequestComments',\n x00403001: 'ConfidentialityOnPatientDataDescr',\n x00404001: 'GenPurposeScheduledProcStepStatus',\n x00404002: 'GenPurposePerformedProcStepStatus',\n x00404003: 'GenPurposeSchedProcStepPriority',\n x00404004: 'SchedProcessingApplicationsCodeSeq',\n x00404005: 'SchedProcedureStepStartDateAndTime',\n x00404006: 'MultipleCopiesFlag',\n x00404007: 'PerformedProcessingAppsCodeSeq',\n x00404009: 'HumanPerformerCodeSequence',\n x00404010: 'SchedProcStepModificationDateTime',\n x00404011: 'ExpectedCompletionDateAndTime',\n x00404015: 'ResultingGenPurposePerfProcStepSeq',\n x00404016: 'RefGenPurposeSchedProcStepSeq',\n x00404018: 'ScheduledWorkitemCodeSequence',\n x00404019: 'PerformedWorkitemCodeSequence',\n x00404020: 'InputAvailabilityFlag',\n x00404021: 'InputInformationSequence',\n x00404022: 'RelevantInformationSequence',\n x00404023: 'RefGenPurSchedProcStepTransUID',\n x00404025: 'ScheduledStationNameCodeSequence',\n x00404026: 'ScheduledStationClassCodeSequence',\n x00404027: 'SchedStationGeographicLocCodeSeq',\n x00404028: 'PerformedStationNameCodeSequence',\n x00404029: 'PerformedStationClassCodeSequence',\n x00404030: 'PerformedStationGeogLocCodeSeq',\n x00404031: 'RequestedSubsequentWorkItemCodeSeq',\n x00404032: 'NonDICOMOutputCodeSequence',\n x00404033: 'OutputInformationSequence',\n x00404034: 'ScheduledHumanPerformersSequence',\n x00404035: 'ActualHumanPerformersSequence',\n x00404036: 'HumanPerformersOrganization',\n x00404037: 'HumanPerformerName',\n x00404040: 'RawDataHandling',\n x00408302: 'EntranceDoseInMilliGy',\n x00409094: 'RefImageRealWorldValueMappingSeq',\n x00409096: 'RealWorldValueMappingSequence',\n x00409098: 'PixelValueMappingCodeSequence',\n x00409210: 'LUTLabel',\n x00409211: 'RealWorldValueLastValueMapped',\n x00409212: 'RealWorldValueLUTData',\n x00409216: 'RealWorldValueFirstValueMapped',\n x00409224: 'RealWorldValueIntercept',\n x00409225: 'RealWorldValueSlope',\n x0040a010: 'RelationshipType',\n x0040a027: 'VerifyingOrganization',\n x0040a030: 'VerificationDateTime',\n x0040a032: 'ObservationDateTime',\n x0040a040: 'ValueType',\n x0040a043: 'ConceptNameCodeSequence',\n x0040a050: 'ContinuityOfContent',\n x0040a073: 'VerifyingObserverSequence',\n x0040a075: 'VerifyingObserverName',\n x0040a078: 'AuthorObserverSequence',\n x0040a07a: 'ParticipantSequence',\n x0040a07c: 'CustodialOrganizationSequence',\n x0040a080: 'ParticipationType',\n x0040a082: 'ParticipationDateTime',\n x0040a084: 'ObserverType',\n x0040a088: 'VerifyingObserverIdentCodeSequence',\n x0040a090: 'EquivalentCDADocumentSequence',\n x0040a0b0: 'ReferencedWaveformChannels',\n x0040a120: 'DateTime',\n x0040a121: 'Date',\n x0040a122: 'Time',\n x0040a123: 'PersonName',\n x0040a124: 'UID',\n x0040a130: 'TemporalRangeType',\n x0040a132: 'ReferencedSamplePositions',\n x0040a136: 'ReferencedFrameNumbers',\n x0040a138: 'ReferencedTimeOffsets',\n x0040a13a: 'ReferencedDateTime',\n x0040a160: 'TextValue',\n x0040a168: 'ConceptCodeSequence',\n x0040a170: 'PurposeOfReferenceCodeSequence',\n x0040a180: 'AnnotationGroupNumber',\n x0040a195: 'ModifierCodeSequence',\n x0040a300: 'MeasuredValueSequence',\n x0040a301: 'NumericValueQualifierCodeSequence',\n x0040a30a: 'NumericValue',\n x0040a353: 'AddressTrial',\n x0040a354: 'TelephoneNumberTrial',\n x0040a360: 'PredecessorDocumentsSequence',\n x0040a370: 'ReferencedRequestSequence',\n x0040a372: 'PerformedProcedureCodeSequence',\n x0040a375: 'CurrentRequestedProcEvidenceSeq',\n x0040a385: 'PertinentOtherEvidenceSequence',\n x0040a390: 'HL7StructuredDocumentRefSeq',\n x0040a491: 'CompletionFlag',\n x0040a492: 'CompletionFlagDescription',\n x0040a493: 'VerificationFlag',\n x0040a494: 'ArchiveRequested',\n x0040a496: 'PreliminaryFlag',\n x0040a504: 'ContentTemplateSequence',\n x0040a525: 'IdenticalDocumentsSequence',\n x0040a730: 'ContentSequence',\n x0040b020: 'AnnotationSequence',\n x0040db00: 'TemplateIdentifier',\n x0040db06: 'TemplateVersion',\n x0040db07: 'TemplateLocalVersion',\n x0040db0b: 'TemplateExtensionFlag',\n x0040db0c: 'TemplateExtensionOrganizationUID',\n x0040db0d: 'TemplateExtensionCreatorUID',\n x0040db73: 'ReferencedContentItemIdentifier',\n x0040e001: 'HL7InstanceIdentifier',\n x0040e004: 'HL7DocumentEffectiveTime',\n x0040e006: 'HL7DocumentTypeCodeSequence',\n x0040e010: 'RetrieveURI',\n x0040e011: 'RetrieveLocationUID',\n x00420010: 'DocumentTitle',\n x00420011: 'EncapsulatedDocument',\n x00420012: 'MIMETypeOfEncapsulatedDocument',\n x00420013: 'SourceInstanceSequence',\n x00420014: 'ListOfMIMETypes',\n // x00431001: 'BitmapOfPrescanOptions',\n // x00431002: 'GradientOffsetInX',\n // x00431003: 'GradientOffsetInY',\n // x00431004: 'GradientOffsetInZ',\n // x00431005: 'ImgIsOriginalOrUnoriginal',\n // x00431006: 'NumberOfEPIShots',\n // x00431007: 'ViewsPerSegment',\n // x00431008: 'RespiratoryRateBpm',\n // x00431009: 'RespiratoryTriggerPoint',\n // x0043100a: 'TypeOfReceiverUsed',\n // x0043100b: 'PeakRateOfChangeOfGradientField',\n // x0043100c: 'LimitsInUnitsOfPercent',\n // x0043100d: 'PSDEstimatedLimit',\n // x0043100e: 'PSDEstimatedLimitInTeslaPerSecond',\n // x0043100f: 'Saravghead',\n // x00431010: 'WindowValue',\n // x00431011: 'TotalInputViews',\n // x00431012: 'X-RayChain',\n // x00431013: 'DeconKernelParameters',\n // x00431014: 'CalibrationParameters',\n // x00431015: 'TotalOutputViews',\n // x00431016: 'NumberOfOverranges',\n // x00431017: 'IBHImageScaleFactors',\n // x00431018: 'BBHCoefficients',\n // x00431019: 'NumberOfBBHChainsToBlend',\n // x0043101a: 'StartingChannelNumber',\n // x0043101b: 'PpscanParameters',\n // x0043101c: 'GEImageIntegrity',\n // x0043101d: 'LevelValue',\n // x0043101e: 'DeltaStartTime',\n // x0043101f: 'MaxOverrangesInAView',\n // x00431020: 'AvgOverrangesAllViews',\n // x00431021: 'CorrectedAfterGlowTerms',\n // x00431025: 'ReferenceChannels',\n // x00431026: 'NoViewsRefChansBlocked',\n // x00431027: 'ScanPitchRatio',\n // x00431028: 'UniqueImageIden',\n // x00431029: 'HistogramTables',\n // x0043102a: 'UserDefinedData',\n // x0043102b: 'PrivateScanOptions',\n // x0043102c: 'EffectiveEchoSpacing',\n // x0043102d: 'StringSlopField1',\n // x0043102e: 'StringSlopField2',\n // x0043102f: 'RawDataType',\n // x00431030: 'RawDataType',\n // x00431031: 'RACordOfTargetReconCenter',\n // x00431032: 'RawDataType',\n // x00431033: 'NegScanspacing',\n // x00431034: 'OffsetFrequency',\n // x00431035: 'UserUsageTag',\n // x00431036: 'UserFillMapMSW',\n // x00431037: 'UserFillMapLSW',\n // x00431038: 'User25-48',\n // x00431039: 'SlopInt6-9',\n // x00431040: 'TriggerOnPosition',\n // x00431041: 'DegreeOfRotation',\n // x00431042: 'DASTriggerSource',\n // x00431043: 'DASFpaGain',\n // x00431044: 'DASOutputSource',\n // x00431045: 'DASAdInput',\n // x00431046: 'DASCalMode',\n // x00431047: 'DASCalFrequency',\n // x00431048: 'DASRegXm',\n // x00431049: 'DASAutoZero',\n // x0043104a: 'StartingChannelOfView',\n // x0043104b: 'DASXmPattern',\n // x0043104c: 'TGGCTriggerMode',\n // x0043104d: 'StartScanToXrayOnDelay',\n // x0043104e: 'DurationOfXrayOn',\n // x00431060: 'SlopInt10-17',\n // x00431061: 'ScannerStudyEntityUID',\n // x00431062: 'ScannerStudyID',\n // x0043106f: 'ScannerTableEntry',\n x00440001: 'ProductPackageIdentifier',\n x00440002: 'SubstanceAdministrationApproval',\n x00440003: 'ApprovalStatusFurtherDescription',\n x00440004: 'ApprovalStatusDateTime',\n x00440007: 'ProductTypeCodeSequence',\n x00440008: 'ProductName',\n x00440009: 'ProductDescription',\n x0044000a: 'ProductLotIdentifier',\n x0044000b: 'ProductExpirationDateTime',\n x00440010: 'SubstanceAdministrationDateTime',\n x00440011: 'SubstanceAdministrationNotes',\n x00440012: 'SubstanceAdministrationDeviceID',\n x00440013: 'ProductParameterSequence',\n x00440019: 'SubstanceAdminParameterSeq',\n // x00451001: 'NumberOfMacroRowsInDetector',\n // x00451002: 'MacroWidthAtISOCenter',\n // x00451003: 'DASType',\n // x00451004: 'DASGain',\n // x00451005: 'DASTemperature',\n // x00451006: 'TableDirectionInOrOut',\n // x00451007: 'ZSmoothingFactor',\n // x00451008: 'ViewWeightingMode',\n // x00451009: 'SigmaRowNumberWhichRowsWereUsed',\n // x0045100a: 'MinimumDasValueFoundInTheScanData',\n // x0045100b: 'MaximumOffsetShiftValueUsed',\n // x0045100c: 'NumberOfViewsShifted',\n // x0045100d: 'ZTrackingFlag',\n // x0045100e: 'MeanZError',\n // x0045100f: 'ZTrackingMaximumError',\n // x00451010: 'StartingViewForRow2a',\n // x00451011: 'NumberOfViewsInRow2a',\n // x00451012: 'StartingViewForRow1a',\n // x00451013: 'SigmaMode',\n // x00451014: 'NumberOfViewsInRow1a',\n // x00451015: 'StartingViewForRow2b',\n // x00451016: 'NumberOfViewsInRow2b',\n // x00451017: 'StartingViewForRow1b',\n // x00451018: 'NumberOfViewsInRow1b',\n // x00451019: 'AirFilterCalibrationDate',\n // x0045101a: 'AirFilterCalibrationTime',\n // x0045101b: 'PhantomCalibrationDate',\n // x0045101c: 'PhantomCalibrationTime',\n // x0045101d: 'ZSlopeCalibrationDate',\n // x0045101e: 'ZSlopeCalibrationTime',\n // x0045101f: 'CrosstalkCalibrationDate',\n // x00451020: 'CrosstalkCalibrationTime',\n // x00451021: 'IterboneOptionFlag',\n // x00451022: 'PeristalticFlagOption',\n x00460012: 'LensDescription',\n x00460014: 'RightLensSequence',\n x00460015: 'LeftLensSequence',\n x00460018: 'CylinderSequence',\n x00460028: 'PrismSequence',\n x00460030: 'HorizontalPrismPower',\n x00460032: 'HorizontalPrismBase',\n x00460034: 'VerticalPrismPower',\n x00460036: 'VerticalPrismBase',\n x00460038: 'LensSegmentType',\n x00460040: 'OpticalTransmittance',\n x00460042: 'ChannelWidth',\n x00460044: 'PupilSize',\n x00460046: 'CornealSize',\n x00460060: 'DistancePupillaryDistance',\n x00460062: 'NearPupillaryDistance',\n x00460064: 'OtherPupillaryDistance',\n x00460075: 'RadiusOfCurvature',\n x00460076: 'KeratometricPower',\n x00460077: 'KeratometricAxis',\n x00460092: 'BackgroundColor',\n x00460094: 'Optotype',\n x00460095: 'OptotypePresentation',\n x00460100: 'AddNearSequence',\n x00460101: 'AddIntermediateSequence',\n x00460102: 'AddOtherSequence',\n x00460104: 'AddPower',\n x00460106: 'ViewingDistance',\n x00460125: 'ViewingDistanceType',\n x00460135: 'VisualAcuityModifiers',\n x00460137: 'DecimalVisualAcuity',\n x00460139: 'OptotypeDetailedDefinition',\n x00460146: 'SpherePower',\n x00460147: 'CylinderPower',\n x00500004: 'CalibrationImage',\n x00500010: 'DeviceSequence',\n x00500014: 'DeviceLength',\n x00500015: 'ContainerComponentWidth',\n x00500016: 'DeviceDiameter',\n x00500017: 'DeviceDiameterUnits',\n x00500018: 'DeviceVolume',\n x00500019: 'InterMarkerDistance',\n x0050001b: 'ContainerComponentID',\n x00500020: 'DeviceDescription',\n x00540010: 'EnergyWindowVector',\n x00540011: 'NumberOfEnergyWindows',\n x00540012: 'EnergyWindowInformationSequence',\n x00540013: 'EnergyWindowRangeSequence',\n x00540014: 'EnergyWindowLowerLimit',\n x00540015: 'EnergyWindowUpperLimit',\n x00540016: 'RadiopharmaceuticalInformationSeq',\n x00540017: 'ResidualSyringeCounts',\n x00540018: 'EnergyWindowName',\n x00540020: 'DetectorVector',\n x00540021: 'NumberOfDetectors',\n x00540022: 'DetectorInformationSequence',\n x00540030: 'PhaseVector',\n x00540031: 'NumberOfPhases',\n x00540032: 'PhaseInformationSequence',\n x00540033: 'NumberOfFramesInPhase',\n x00540036: 'PhaseDelay',\n x00540038: 'PauseBetweenFrames',\n x00540039: 'PhaseDescription',\n x00540050: 'RotationVector',\n x00540051: 'NumberOfRotations',\n x00540052: 'RotationInformationSequence',\n x00540053: 'NumberOfFramesInRotation',\n x00540060: 'RRIntervalVector',\n x00540061: 'NumberOfRRIntervals',\n x00540062: 'GatedInformationSequence',\n x00540063: 'DataInformationSequence',\n x00540070: 'TimeSlotVector',\n x00540071: 'NumberOfTimeSlots',\n x00540072: 'TimeSlotInformationSequence',\n x00540073: 'TimeSlotTime',\n x00540080: 'SliceVector',\n x00540081: 'NumberOfSlices',\n x00540090: 'AngularViewVector',\n x00540100: 'TimeSliceVector',\n x00540101: 'NumberOfTimeSlices',\n x00540200: 'StartAngle',\n x00540202: 'TypeOfDetectorMotion',\n x00540210: 'TriggerVector',\n x00540211: 'NumberOfTriggersInPhase',\n x00540220: 'ViewCodeSequence',\n x00540222: 'ViewModifierCodeSequence',\n x00540300: 'RadionuclideCodeSequence',\n x00540302: 'AdministrationRouteCodeSequence',\n x00540304: 'RadiopharmaceuticalCodeSequence',\n x00540306: 'CalibrationDataSequence',\n x00540308: 'EnergyWindowNumber',\n x00540400: 'ImageID',\n x00540410: 'PatientOrientationCodeSequence',\n x00540412: 'PatientOrientationModifierCodeSeq',\n x00540414: 'PatientGantryRelationshipCodeSeq',\n x00540500: 'SliceProgressionDirection',\n x00541000: 'SeriesType',\n x00541001: 'Units',\n x00541002: 'CountsSource',\n x00541004: 'ReprojectionMethod',\n x00541100: 'RandomsCorrectionMethod',\n x00541101: 'AttenuationCorrectionMethod',\n x00541102: 'DecayCorrection',\n x00541103: 'ReconstructionMethod',\n x00541104: 'DetectorLinesOfResponseUsed',\n x00541105: 'ScatterCorrectionMethod',\n x00541200: 'AxialAcceptance',\n x00541201: 'AxialMash',\n x00541202: 'TransverseMash',\n x00541203: 'DetectorElementSize',\n x00541210: 'CoincidenceWindowWidth',\n x00541220: 'SecondaryCountsType',\n x00541300: 'FrameReferenceTime',\n x00541310: 'PrimaryCountsAccumulated',\n x00541311: 'SecondaryCountsAccumulated',\n x00541320: 'SliceSensitivityFactor',\n x00541321: 'DecayFactor',\n x00541322: 'DoseCalibrationFactor',\n x00541323: 'ScatterFractionFactor',\n x00541324: 'DeadTimeFactor',\n x00541330: 'ImageIndex',\n x00541400: 'CountsIncluded',\n x00541401: 'DeadTimeCorrectionFlag',\n x00603000: 'HistogramSequence',\n x00603002: 'HistogramNumberOfBins',\n x00603004: 'HistogramFirstBinValue',\n x00603006: 'HistogramLastBinValue',\n x00603008: 'HistogramBinWidth',\n x00603010: 'HistogramExplanation',\n x00603020: 'HistogramData',\n x00620001: 'SegmentationType',\n x00620002: 'SegmentSequence',\n x00620003: 'SegmentedPropertyCategoryCodeSeq',\n x00620004: 'SegmentNumber',\n x00620005: 'SegmentLabel',\n x00620006: 'SegmentDescription',\n x00620008: 'SegmentAlgorithmType',\n x00620009: 'SegmentAlgorithmName',\n x0062000a: 'SegmentIdentificationSequence',\n x0062000b: 'ReferencedSegmentNumber',\n x0062000c: 'RecommendedDisplayGrayscaleValue',\n x0062000d: 'RecommendedDisplayCIELabValue',\n x0062000e: 'MaximumFractionalValue',\n x0062000f: 'SegmentedPropertyTypeCodeSequence',\n x00620010: 'SegmentationFractionalType',\n x00640002: 'DeformableRegistrationSequence',\n x00640003: 'SourceFrameOfReferenceUID',\n x00640005: 'DeformableRegistrationGridSequence',\n x00640007: 'GridDimensions',\n x00640008: 'GridResolution',\n x00640009: 'VectorGridData',\n x0064000f: 'PreDeformationMatrixRegistSeq',\n x00640010: 'PostDeformationMatrixRegistSeq',\n x00660001: 'NumberOfSurfaces',\n x00660002: 'SurfaceSequence',\n x00660003: 'SurfaceNumber',\n x00660004: 'SurfaceComments',\n x00660009: 'SurfaceProcessing',\n x0066000a: 'SurfaceProcessingRatio',\n x0066000e: 'FiniteVolume',\n x00660010: 'Manifold',\n x00660011: 'SurfacePointsSequence',\n x00660015: 'NumberOfSurfacePoints',\n x00660016: 'PointCoordinatesData',\n x00660017: 'PointPositionAccuracy',\n x00660018: 'MeanPointDistance',\n x00660019: 'MaximumPointDistance',\n x0066001b: 'AxisOfRotation',\n x0066001c: 'CenterOfRotation',\n x0066001e: 'NumberOfVectors',\n x0066001f: 'VectorDimensionality',\n x00660020: 'VectorAccuracy',\n x00660021: 'VectorCoordinateData',\n x00660023: 'TrianglePointIndexList',\n x00660024: 'EdgePointIndexList',\n x00660025: 'VertexPointIndexList',\n x00660026: 'TriangleStripSequence',\n x00660027: 'TriangleFanSequence',\n x00660028: 'LineSequence',\n x00660029: 'PrimitivePointIndexList',\n x0066002a: 'SurfaceCount',\n x0066002f: 'AlgorithmFamilyCodeSequ',\n x00660031: 'AlgorithmVersion',\n x00660032: 'AlgorithmParameters',\n x00660034: 'FacetSequence',\n x00660036: 'AlgorithmName',\n x00700001: 'GraphicAnnotationSequence',\n x00700002: 'GraphicLayer',\n x00700003: 'BoundingBoxAnnotationUnits',\n x00700004: 'AnchorPointAnnotationUnits',\n x00700005: 'GraphicAnnotationUnits',\n x00700006: 'UnformattedTextValue',\n x00700008: 'TextObjectSequence',\n x00700009: 'GraphicObjectSequence',\n x00700010: 'BoundingBoxTopLeftHandCorner',\n x00700011: 'BoundingBoxBottomRightHandCorner',\n x00700012: 'BoundingBoxTextHorizJustification',\n x00700014: 'AnchorPoint',\n x00700015: 'AnchorPointVisibility',\n x00700020: 'GraphicDimensions',\n x00700021: 'NumberOfGraphicPoints',\n x00700022: 'GraphicData',\n x00700023: 'GraphicType',\n x00700024: 'GraphicFilled',\n x00700040: 'ImageRotationRetired',\n x00700041: 'ImageHorizontalFlip',\n x00700042: 'ImageRotation',\n x00700050: 'DisplayedAreaTopLeftTrial',\n x00700051: 'DisplayedAreaBottomRightTrial',\n x00700052: 'DisplayedAreaTopLeft',\n x00700053: 'DisplayedAreaBottomRight',\n x0070005a: 'DisplayedAreaSelectionSequence',\n x00700060: 'GraphicLayerSequence',\n x00700062: 'GraphicLayerOrder',\n x00700066: 'GraphicLayerRecDisplayGraysclValue',\n x00700067: 'GraphicLayerRecDisplayRGBValue',\n x00700068: 'GraphicLayerDescription',\n x00700080: 'ContentLabel',\n x00700081: 'ContentDescription',\n x00700082: 'PresentationCreationDate',\n x00700083: 'PresentationCreationTime',\n x00700084: 'ContentCreatorName',\n x00700086: 'ContentCreatorIDCodeSequence',\n x00700100: 'PresentationSizeMode',\n x00700101: 'PresentationPixelSpacing',\n x00700102: 'PresentationPixelAspectRatio',\n x00700103: 'PresentationPixelMagRatio',\n x00700306: 'ShapeType',\n x00700308: 'RegistrationSequence',\n x00700309: 'MatrixRegistrationSequence',\n x0070030a: 'MatrixSequence',\n x0070030c: 'FrameOfRefTransformationMatrixType',\n x0070030d: 'RegistrationTypeCodeSequence',\n x0070030f: 'FiducialDescription',\n x00700310: 'FiducialIdentifier',\n x00700311: 'FiducialIdentifierCodeSequence',\n x00700312: 'ContourUncertaintyRadius',\n x00700314: 'UsedFiducialsSequence',\n x00700318: 'GraphicCoordinatesDataSequence',\n x0070031a: 'FiducialUID',\n x0070031c: 'FiducialSetSequence',\n x0070031e: 'FiducialSequence',\n x00700401: 'GraphicLayerRecomDisplayCIELabVal',\n x00700402: 'BlendingSequence',\n x00700403: 'RelativeOpacity',\n x00700404: 'ReferencedSpatialRegistrationSeq',\n x00700405: 'BlendingPosition',\n x00720002: 'HangingProtocolName',\n x00720004: 'HangingProtocolDescription',\n x00720006: 'HangingProtocolLevel',\n x00720008: 'HangingProtocolCreator',\n x0072000a: 'HangingProtocolCreationDateTime',\n x0072000c: 'HangingProtocolDefinitionSequence',\n x0072000e: 'HangingProtocolUserIDCodeSequence',\n x00720010: 'HangingProtocolUserGroupName',\n x00720012: 'SourceHangingProtocolSequence',\n x00720014: 'NumberOfPriorsReferenced',\n x00720020: 'ImageSetsSequence',\n x00720022: 'ImageSetSelectorSequence',\n x00720024: 'ImageSetSelectorUsageFlag',\n x00720026: 'SelectorAttribute',\n x00720028: 'SelectorValueNumber',\n x00720030: 'TimeBasedImageSetsSequence',\n x00720032: 'ImageSetNumber',\n x00720034: 'ImageSetSelectorCategory',\n x00720038: 'RelativeTime',\n x0072003a: 'RelativeTimeUnits',\n x0072003c: 'AbstractPriorValue',\n x0072003e: 'AbstractPriorCodeSequence',\n x00720040: 'ImageSetLabel',\n x00720050: 'SelectorAttributeVR',\n x00720052: 'SelectorSequencePointer',\n x00720054: 'SelectorSeqPointerPrivateCreator',\n x00720056: 'SelectorAttributePrivateCreator',\n x00720060: 'SelectorATValue',\n x00720062: 'SelectorCSValue',\n x00720064: 'SelectorISValue',\n x00720066: 'SelectorLOValue',\n x00720068: 'SelectorLTValue',\n x0072006a: 'SelectorPNValue',\n x0072006c: 'SelectorSHValue',\n x0072006e: 'SelectorSTValue',\n x00720070: 'SelectorUTValue',\n x00720072: 'SelectorDSValue',\n x00720074: 'SelectorFDValue',\n x00720076: 'SelectorFLValue',\n x00720078: 'SelectorULValue',\n x0072007a: 'SelectorUSValue',\n x0072007c: 'SelectorSLValue',\n x0072007e: 'SelectorSSValue',\n x00720080: 'SelectorCodeSequenceValue',\n x00720100: 'NumberOfScreens',\n x00720102: 'NominalScreenDefinitionSequence',\n x00720104: 'NumberOfVerticalPixels',\n x00720106: 'NumberOfHorizontalPixels',\n x00720108: 'DisplayEnvironmentSpatialPosition',\n x0072010a: 'ScreenMinimumGrayscaleBitDepth',\n x0072010c: 'ScreenMinimumColorBitDepth',\n x0072010e: 'ApplicationMaximumRepaintTime',\n x00720200: 'DisplaySetsSequence',\n x00720202: 'DisplaySetNumber',\n x00720203: 'DisplaySetLabel',\n x00720204: 'DisplaySetPresentationGroup',\n x00720206: 'DisplaySetPresentationGroupDescr',\n x00720208: 'PartialDataDisplayHandling',\n x00720210: 'SynchronizedScrollingSequence',\n x00720212: 'DisplaySetScrollingGroup',\n x00720214: 'NavigationIndicatorSequence',\n x00720216: 'NavigationDisplaySet',\n x00720218: 'ReferenceDisplaySets',\n x00720300: 'ImageBoxesSequence',\n x00720302: 'ImageBoxNumber',\n x00720304: 'ImageBoxLayoutType',\n x00720306: 'ImageBoxTileHorizontalDimension',\n x00720308: 'ImageBoxTileVerticalDimension',\n x00720310: 'ImageBoxScrollDirection',\n x00720312: 'ImageBoxSmallScrollType',\n x00720314: 'ImageBoxSmallScrollAmount',\n x00720316: 'ImageBoxLargeScrollType',\n x00720318: 'ImageBoxLargeScrollAmount',\n x00720320: 'ImageBoxOverlapPriority',\n x00720330: 'CineRelativeToRealTime',\n x00720400: 'FilterOperationsSequence',\n x00720402: 'FilterByCategory',\n x00720404: 'FilterByAttributePresence',\n x00720406: 'FilterByOperator',\n x00720432: 'SynchronizedImageBoxList',\n x00720434: 'TypeOfSynchronization',\n x00720500: 'BlendingOperationType',\n x00720510: 'ReformattingOperationType',\n x00720512: 'ReformattingThickness',\n x00720514: 'ReformattingInterval',\n x00720516: 'ReformattingOpInitialViewDir',\n x00720520: 'RenderingType3D',\n x00720600: 'SortingOperationsSequence',\n x00720602: 'SortByCategory',\n x00720604: 'SortingDirection',\n x00720700: 'DisplaySetPatientOrientation',\n x00720702: 'VOIType',\n x00720704: 'PseudoColorType',\n x00720706: 'ShowGrayscaleInverted',\n x00720710: 'ShowImageTrueSizeFlag',\n x00720712: 'ShowGraphicAnnotationFlag',\n x00720714: 'ShowPatientDemographicsFlag',\n x00720716: 'ShowAcquisitionTechniquesFlag',\n x00720717: 'DisplaySetHorizontalJustification',\n x00720718: 'DisplaySetVerticalJustification',\n x00741000: 'UnifiedProcedureStepState',\n x00741002: 'UPSProgressInformationSequence',\n x00741004: 'UnifiedProcedureStepProgress',\n x00741006: 'UnifiedProcedureStepProgressDescr',\n x00741008: 'UnifiedProcedureStepComURISeq',\n x0074100a: 'ContactURI',\n x0074100c: 'ContactDisplayName',\n x00741020: 'BeamTaskSequence',\n x00741022: 'BeamTaskType',\n x00741024: 'BeamOrderIndex',\n x00741030: 'DeliveryVerificationImageSequence',\n x00741032: 'VerificationImageTiming',\n x00741034: 'DoubleExposureFlag',\n x00741036: 'DoubleExposureOrdering',\n x00741038: 'DoubleExposureMeterset',\n x0074103a: 'DoubleExposureFieldDelta',\n x00741040: 'RelatedReferenceRTImageSequence',\n x00741042: 'GeneralMachineVerificationSequence',\n x00741044: 'ConventionalMachineVerificationSeq',\n x00741046: 'IonMachineVerificationSequence',\n x00741048: 'FailedAttributesSequence',\n x0074104a: 'OverriddenAttributesSequence',\n x0074104c: 'ConventionalControlPointVerifySeq',\n x0074104e: 'IonControlPointVerificationSeq',\n x00741050: 'AttributeOccurrenceSequence',\n x00741052: 'AttributeOccurrencePointer',\n x00741054: 'AttributeItemSelector',\n x00741056: 'AttributeOccurrencePrivateCreator',\n x00741200: 'ScheduledProcedureStepPriority',\n x00741202: 'StudyListLabel',\n x00741204: 'ProcedureStepLabel',\n x00741210: 'ScheduledProcessingParametersSeq',\n x00741212: 'PerformedProcessingParametersSeq',\n x00741216: 'UPSPerformedProcedureSequence',\n x00741220: 'RelatedProcedureStepSequence',\n x00741222: 'ProcedureStepRelationshipType',\n x00741230: 'DeletionLock',\n x00741234: 'ReceivingAE',\n x00741236: 'RequestingAE',\n x00741238: 'ReasonForCancellation',\n x00741242: 'SCPStatus',\n x00741244: 'SubscriptionListStatus',\n x00741246: 'UPSListStatus',\n x00880130: 'StorageMediaFileSetID',\n x00880140: 'StorageMediaFileSetUID',\n x00880200: 'IconImageSequence',\n x00880904: 'TopicTitle',\n x00880906: 'TopicSubject',\n x00880910: 'TopicAuthor',\n x00880912: 'TopicKeywords',\n x01000410: 'SOPInstanceStatus',\n x01000420: 'SOPAuthorizationDateAndTime',\n x01000424: 'SOPAuthorizationComment',\n x01000426: 'AuthorizationEquipmentCertNumber',\n x04000005: 'MACIDNumber',\n x04000010: 'MACCalculationTransferSyntaxUID',\n x04000015: 'MACAlgorithm',\n x04000020: 'DataElementsSigned',\n x04000100: 'DigitalSignatureUID',\n x04000105: 'DigitalSignatureDateTime',\n x04000110: 'CertificateType',\n x04000115: 'CertificateOfSigner',\n x04000120: 'Signature',\n x04000305: 'CertifiedTimestampType',\n x04000310: 'CertifiedTimestamp',\n x04000401: 'DigitalSignaturePurposeCodeSeq',\n x04000402: 'ReferencedDigitalSignatureSeq',\n x04000403: 'ReferencedSOPInstanceMACSeq',\n x04000404: 'MAC',\n x04000500: 'EncryptedAttributesSequence',\n x04000510: 'EncryptedContentTransferSyntaxUID',\n x04000520: 'EncryptedContent',\n x04000550: 'ModifiedAttributesSequence',\n x04000561: 'OriginalAttributesSequence',\n x04000562: 'AttributeModificationDateTime',\n x04000563: 'ModifyingSystem',\n x04000564: 'SourceOfPreviousValues',\n x04000565: 'ReasonForTheAttributeModification',\n x1000xxx0: 'EscapeTriplet',\n x1000xxx1: 'RunLengthTriplet',\n x1000xxx2: 'HuffmanTableSize',\n x1000xxx3: 'HuffmanTableTriplet',\n x1000xxx4: 'ShiftTableSize',\n x1000xxx5: 'ShiftTableTriplet',\n x1010xxxx: 'ZonalMap',\n x20000010: 'NumberOfCopies',\n x2000001e: 'PrinterConfigurationSequence',\n x20000020: 'PrintPriority',\n x20000030: 'MediumType',\n x20000040: 'FilmDestination',\n x20000050: 'FilmSessionLabel',\n x20000060: 'MemoryAllocation',\n x20000061: 'MaximumMemoryAllocation',\n x20000062: 'ColorImagePrintingFlag',\n x20000063: 'CollationFlag',\n x20000065: 'AnnotationFlag',\n x20000067: 'ImageOverlayFlag',\n x20000069: 'PresentationLUTFlag',\n x2000006a: 'ImageBoxPresentationLUTFlag',\n x200000a0: 'MemoryBitDepth',\n x200000a1: 'PrintingBitDepth',\n x200000a2: 'MediaInstalledSequence',\n x200000a4: 'OtherMediaAvailableSequence',\n x200000a8: 'SupportedImageDisplayFormatSeq',\n x20000500: 'ReferencedFilmBoxSequence',\n x20000510: 'ReferencedStoredPrintSequence',\n x20100010: 'ImageDisplayFormat',\n x20100030: 'AnnotationDisplayFormatID',\n x20100040: 'FilmOrientation',\n x20100050: 'FilmSizeID',\n x20100052: 'PrinterResolutionID',\n x20100054: 'DefaultPrinterResolutionID',\n x20100060: 'MagnificationType',\n x20100080: 'SmoothingType',\n x201000a6: 'DefaultMagnificationType',\n x201000a7: 'OtherMagnificationTypesAvailable',\n x201000a8: 'DefaultSmoothingType',\n x201000a9: 'OtherSmoothingTypesAvailable',\n x20100100: 'BorderDensity',\n x20100110: 'EmptyImageDensity',\n x20100120: 'MinDensity',\n x20100130: 'MaxDensity',\n x20100140: 'Trim',\n x20100150: 'ConfigurationInformation',\n x20100152: 'ConfigurationInformationDescr',\n x20100154: 'MaximumCollatedFilms',\n x2010015e: 'Illumination',\n x20100160: 'ReflectedAmbientLight',\n x20100376: 'PrinterPixelSpacing',\n x20100500: 'ReferencedFilmSessionSequence',\n x20100510: 'ReferencedImageBoxSequence',\n x20100520: 'ReferencedBasicAnnotationBoxSeq',\n x20200010: 'ImageBoxPosition',\n x20200020: 'Polarity',\n x20200030: 'RequestedImageSize',\n x20200040: 'RequestedDecimate-CropBehavior',\n x20200050: 'RequestedResolutionID',\n x202000a0: 'RequestedImageSizeFlag',\n x202000a2: 'DecimateCropResult',\n x20200110: 'BasicGrayscaleImageSequence',\n x20200111: 'BasicColorImageSequence',\n x20200130: 'ReferencedImageOverlayBoxSequence',\n x20200140: 'ReferencedVOILUTBoxSequence',\n x20300010: 'AnnotationPosition',\n x20300020: 'TextString',\n x20400010: 'ReferencedOverlayPlaneSequence',\n x20400011: 'ReferencedOverlayPlaneGroups',\n x20400020: 'OverlayPixelDataSequence',\n x20400060: 'OverlayMagnificationType',\n x20400070: 'OverlaySmoothingType',\n x20400072: 'OverlayOrImageMagnification',\n x20400074: 'MagnifyToNumberOfColumns',\n x20400080: 'OverlayForegroundDensity',\n x20400082: 'OverlayBackgroundDensity',\n x20400090: 'OverlayMode',\n x20400100: 'ThresholdDensity',\n x20400500: 'ReferencedImageBoxSequenceRetired',\n x20500010: 'PresentationLUTSequence',\n x20500020: 'PresentationLUTShape',\n x20500500: 'ReferencedPresentationLUTSequence',\n x21000010: 'PrintJobID',\n x21000020: 'ExecutionStatus',\n x21000030: 'ExecutionStatusInfo',\n x21000040: 'CreationDate',\n x21000050: 'CreationTime',\n x21000070: 'Originator',\n x21000140: 'DestinationAE',\n x21000160: 'OwnerID',\n x21000170: 'NumberOfFilms',\n x21000500: 'ReferencedPrintJobSequencePullStoredPrint',\n x21100010: 'PrinterStatus',\n x21100020: 'PrinterStatusInfo',\n x21100030: 'PrinterName',\n x21100099: 'PrintQueueID',\n x21200010: 'QueueStatus',\n x21200050: 'PrintJobDescriptionSequence',\n x21200070: 'ReferencedPrintJobSequence',\n x21300010: 'PrintManagementCapabilitiesSeq',\n x21300015: 'PrinterCharacteristicsSequence',\n x21300030: 'FilmBoxContentSequence',\n x21300040: 'ImageBoxContentSequence',\n x21300050: 'AnnotationContentSequence',\n x21300060: 'ImageOverlayBoxContentSequence',\n x21300080: 'PresentationLUTContentSequence',\n x213000a0: 'ProposedStudySequence',\n x213000c0: 'OriginalImageSequence',\n x22000001: 'LabelFromInfoExtractedFromInstance',\n x22000002: 'LabelText',\n x22000003: 'LabelStyleSelection',\n x22000004: 'MediaDisposition',\n x22000005: 'BarcodeValue',\n x22000006: 'BarcodeSymbology',\n x22000007: 'AllowMediaSplitting',\n x22000008: 'IncludeNonDICOMObjects',\n x22000009: 'IncludeDisplayApplication',\n x2200000a: 'SaveCompInstancesAfterMediaCreate',\n x2200000b: 'TotalNumberMediaPiecesCreated',\n x2200000c: 'RequestedMediaApplicationProfile',\n x2200000d: 'ReferencedStorageMediaSequence',\n x2200000e: 'FailureAttributes',\n x2200000f: 'AllowLossyCompression',\n x22000020: 'RequestPriority',\n x30020002: 'RTImageLabel',\n x30020003: 'RTImageName',\n x30020004: 'RTImageDescription',\n x3002000a: 'ReportedValuesOrigin',\n x3002000c: 'RTImagePlane',\n x3002000d: 'XRayImageReceptorTranslation',\n x3002000e: 'XRayImageReceptorAngle',\n x30020010: 'RTImageOrientation',\n x30020011: 'ImagePlanePixelSpacing',\n x30020012: 'RTImagePosition',\n x30020020: 'RadiationMachineName',\n x30020022: 'RadiationMachineSAD',\n x30020024: 'RadiationMachineSSD',\n x30020026: 'RTImageSID',\n x30020028: 'SourceToReferenceObjectDistance',\n x30020029: 'FractionNumber',\n x30020030: 'ExposureSequence',\n x30020032: 'MetersetExposure',\n x30020034: 'DiaphragmPosition',\n x30020040: 'FluenceMapSequence',\n x30020041: 'FluenceDataSource',\n x30020042: 'FluenceDataScale',\n x30020051: 'FluenceMode',\n x30020052: 'FluenceModeID',\n x30040001: 'DVHType',\n x30040002: 'DoseUnits',\n x30040004: 'DoseType',\n x30040006: 'DoseComment',\n x30040008: 'NormalizationPoint',\n x3004000a: 'DoseSummationType',\n x3004000c: 'GridFrameOffsetVector',\n x3004000e: 'DoseGridScaling',\n x30040010: 'RTDoseROISequence',\n x30040012: 'DoseValue',\n x30040014: 'TissueHeterogeneityCorrection',\n x30040040: 'DVHNormalizationPoint',\n x30040042: 'DVHNormalizationDoseValue',\n x30040050: 'DVHSequence',\n x30040052: 'DVHDoseScaling',\n x30040054: 'DVHVolumeUnits',\n x30040056: 'DVHNumberOfBins',\n x30040058: 'DVHData',\n x30040060: 'DVHReferencedROISequence',\n x30040062: 'DVHROIContributionType',\n x30040070: 'DVHMinimumDose',\n x30040072: 'DVHMaximumDose',\n x30040074: 'DVHMeanDose',\n x30060002: 'StructureSetLabel',\n x30060004: 'StructureSetName',\n x30060006: 'StructureSetDescription',\n x30060008: 'StructureSetDate',\n x30060009: 'StructureSetTime',\n x30060010: 'ReferencedFrameOfReferenceSequence',\n x30060012: 'RTReferencedStudySequence',\n x30060014: 'RTReferencedSeriesSequence',\n x30060016: 'ContourImageSequence',\n x30060020: 'StructureSetROISequence',\n x30060022: 'ROINumber',\n x30060024: 'ReferencedFrameOfReferenceUID',\n x30060026: 'ROIName',\n x30060028: 'ROIDescription',\n x3006002a: 'ROIDisplayColor',\n x3006002c: 'ROIVolume',\n x30060030: 'RTRelatedROISequence',\n x30060033: 'RTROIRelationship',\n x30060036: 'ROIGenerationAlgorithm',\n x30060038: 'ROIGenerationDescription',\n x30060039: 'ROIContourSequence',\n x30060040: 'ContourSequence',\n x30060042: 'ContourGeometricType',\n x30060044: 'ContourSlabThickness',\n x30060045: 'ContourOffsetVector',\n x30060046: 'NumberOfContourPoints',\n x30060048: 'ContourNumber',\n x30060049: 'AttachedContours',\n x30060050: 'ContourData',\n x30060080: 'RTROIObservationsSequence',\n x30060082: 'ObservationNumber',\n x30060084: 'ReferencedROINumber',\n x30060085: 'ROIObservationLabel',\n x30060086: 'RTROIIdentificationCodeSequence',\n x30060088: 'ROIObservationDescription',\n x300600a0: 'RelatedRTROIObservationsSequence',\n x300600a4: 'RTROIInterpretedType',\n x300600a6: 'ROIInterpreter',\n x300600b0: 'ROIPhysicalPropertiesSequence',\n x300600b2: 'ROIPhysicalProperty',\n x300600b4: 'ROIPhysicalPropertyValue',\n x300600b6: 'ROIElementalCompositionSequence',\n x300600b7: 'ROIElementalCompAtomicNumber',\n x300600b8: 'ROIElementalCompAtomicMassFraction',\n x300600c0: 'FrameOfReferenceRelationshipSeq',\n x300600c2: 'RelatedFrameOfReferenceUID',\n x300600c4: 'FrameOfReferenceTransformType',\n x300600c6: 'FrameOfReferenceTransformMatrix',\n x300600c8: 'FrameOfReferenceTransformComment',\n x30080010: 'MeasuredDoseReferenceSequence',\n x30080012: 'MeasuredDoseDescription',\n x30080014: 'MeasuredDoseType',\n x30080016: 'MeasuredDoseValue',\n x30080020: 'TreatmentSessionBeamSequence',\n x30080021: 'TreatmentSessionIonBeamSequence',\n x30080022: 'CurrentFractionNumber',\n x30080024: 'TreatmentControlPointDate',\n x30080025: 'TreatmentControlPointTime',\n x3008002a: 'TreatmentTerminationStatus',\n x3008002b: 'TreatmentTerminationCode',\n x3008002c: 'TreatmentVerificationStatus',\n x30080030: 'ReferencedTreatmentRecordSequence',\n x30080032: 'SpecifiedPrimaryMeterset',\n x30080033: 'SpecifiedSecondaryMeterset',\n x30080036: 'DeliveredPrimaryMeterset',\n x30080037: 'DeliveredSecondaryMeterset',\n x3008003a: 'SpecifiedTreatmentTime',\n x3008003b: 'DeliveredTreatmentTime',\n x30080040: 'ControlPointDeliverySequence',\n x30080041: 'IonControlPointDeliverySequence',\n x30080042: 'SpecifiedMeterset',\n x30080044: 'DeliveredMeterset',\n x30080045: 'MetersetRateSet',\n x30080046: 'MetersetRateDelivered',\n x30080047: 'ScanSpotMetersetsDelivered',\n x30080048: 'DoseRateDelivered',\n x30080050: 'TreatmentSummaryCalcDoseRefSeq',\n x30080052: 'CumulativeDoseToDoseReference',\n x30080054: 'FirstTreatmentDate',\n x30080056: 'MostRecentTreatmentDate',\n x3008005a: 'NumberOfFractionsDelivered',\n x30080060: 'OverrideSequence',\n x30080061: 'ParameterSequencePointer',\n x30080062: 'OverrideParameterPointer',\n x30080063: 'ParameterItemIndex',\n x30080064: 'MeasuredDoseReferenceNumber',\n x30080065: 'ParameterPointer',\n x30080066: 'OverrideReason',\n x30080068: 'CorrectedParameterSequence',\n x3008006a: 'CorrectionValue',\n x30080070: 'CalculatedDoseReferenceSequence',\n x30080072: 'CalculatedDoseReferenceNumber',\n x30080074: 'CalculatedDoseReferenceDescription',\n x30080076: 'CalculatedDoseReferenceDoseValue',\n x30080078: 'StartMeterset',\n x3008007a: 'EndMeterset',\n x30080080: 'ReferencedMeasuredDoseReferenceSeq',\n x30080082: 'ReferencedMeasuredDoseReferenceNum',\n x30080090: 'ReferencedCalculatedDoseRefSeq',\n x30080092: 'ReferencedCalculatedDoseRefNumber',\n x300800a0: 'BeamLimitingDeviceLeafPairsSeq',\n x300800b0: 'RecordedWedgeSequence',\n x300800c0: 'RecordedCompensatorSequence',\n x300800d0: 'RecordedBlockSequence',\n x300800e0: 'TreatmentSummaryMeasuredDoseRefSeq',\n x300800f0: 'RecordedSnoutSequence',\n x300800f2: 'RecordedRangeShifterSequence',\n x300800f4: 'RecordedLateralSpreadingDeviceSeq',\n x300800f6: 'RecordedRangeModulatorSequence',\n x30080100: 'RecordedSourceSequence',\n x30080105: 'SourceSerialNumber',\n x30080110: 'TreatmentSessionAppSetupSeq',\n x30080116: 'ApplicationSetupCheck',\n x30080120: 'RecordedBrachyAccessoryDeviceSeq',\n x30080122: 'ReferencedBrachyAccessoryDeviceNum',\n x30080130: 'RecordedChannelSequence',\n x30080132: 'SpecifiedChannelTotalTime',\n x30080134: 'DeliveredChannelTotalTime',\n x30080136: 'SpecifiedNumberOfPulses',\n x30080138: 'DeliveredNumberOfPulses',\n x3008013a: 'SpecifiedPulseRepetitionInterval',\n x3008013c: 'DeliveredPulseRepetitionInterval',\n x30080140: 'RecordedSourceApplicatorSequence',\n x30080142: 'ReferencedSourceApplicatorNumber',\n x30080150: 'RecordedChannelShieldSequence',\n x30080152: 'ReferencedChannelShieldNumber',\n x30080160: 'BrachyControlPointDeliveredSeq',\n x30080162: 'SafePositionExitDate',\n x30080164: 'SafePositionExitTime',\n x30080166: 'SafePositionReturnDate',\n x30080168: 'SafePositionReturnTime',\n x30080200: 'CurrentTreatmentStatus',\n x30080202: 'TreatmentStatusComment',\n x30080220: 'FractionGroupSummarySequence',\n x30080223: 'ReferencedFractionNumber',\n x30080224: 'FractionGroupType',\n x30080230: 'BeamStopperPosition',\n x30080240: 'FractionStatusSummarySequence',\n x30080250: 'TreatmentDate',\n x30080251: 'TreatmentTime',\n x300a0002: 'RTPlanLabel',\n x300a0003: 'RTPlanName',\n x300a0004: 'RTPlanDescription',\n x300a0006: 'RTPlanDate',\n x300a0007: 'RTPlanTime',\n x300a0009: 'TreatmentProtocols',\n x300a000a: 'PlanIntent',\n x300a000b: 'TreatmentSites',\n x300a000c: 'RTPlanGeometry',\n x300a000e: 'PrescriptionDescription',\n x300a0010: 'DoseReferenceSequence',\n x300a0012: 'DoseReferenceNumber',\n x300a0013: 'DoseReferenceUID',\n x300a0014: 'DoseReferenceStructureType',\n x300a0015: 'NominalBeamEnergyUnit',\n x300a0016: 'DoseReferenceDescription',\n x300a0018: 'DoseReferencePointCoordinates',\n x300a001a: 'NominalPriorDose',\n x300a0020: 'DoseReferenceType',\n x300a0021: 'ConstraintWeight',\n x300a0022: 'DeliveryWarningDose',\n x300a0023: 'DeliveryMaximumDose',\n x300a0025: 'TargetMinimumDose',\n x300a0026: 'TargetPrescriptionDose',\n x300a0027: 'TargetMaximumDose',\n x300a0028: 'TargetUnderdoseVolumeFraction',\n x300a002a: 'OrganAtRiskFullVolumeDose',\n x300a002b: 'OrganAtRiskLimitDose',\n x300a002c: 'OrganAtRiskMaximumDose',\n x300a002d: 'OrganAtRiskOverdoseVolumeFraction',\n x300a0040: 'ToleranceTableSequence',\n x300a0042: 'ToleranceTableNumber',\n x300a0043: 'ToleranceTableLabel',\n x300a0044: 'GantryAngleTolerance',\n x300a0046: 'BeamLimitingDeviceAngleTolerance',\n x300a0048: 'BeamLimitingDeviceToleranceSeq',\n x300a004a: 'BeamLimitingDevicePositionTol',\n x300a004b: 'SnoutPositionTolerance',\n x300a004c: 'PatientSupportAngleTolerance',\n x300a004e: 'TableTopEccentricAngleTolerance',\n x300a004f: 'TableTopPitchAngleTolerance',\n x300a0050: 'TableTopRollAngleTolerance',\n x300a0051: 'TableTopVerticalPositionTolerance',\n x300a0052: 'TableTopLongitudinalPositionTol',\n x300a0053: 'TableTopLateralPositionTolerance',\n x300a0055: 'RTPlanRelationship',\n x300a0070: 'FractionGroupSequence',\n x300a0071: 'FractionGroupNumber',\n x300a0072: 'FractionGroupDescription',\n x300a0078: 'NumberOfFractionsPlanned',\n x300a0079: 'NumberFractionPatternDigitsPerDay',\n x300a007a: 'RepeatFractionCycleLength',\n x300a007b: 'FractionPattern',\n x300a0080: 'NumberOfBeams',\n x300a0082: 'BeamDoseSpecificationPoint',\n x300a0084: 'BeamDose',\n x300a0086: 'BeamMeterset',\n x300a0088: 'BeamDosePointDepth',\n x300a0089: 'BeamDosePointEquivalentDepth',\n x300a008a: 'BeamDosePointSSD',\n x300a00a0: 'NumberOfBrachyApplicationSetups',\n x300a00a2: 'BrachyAppSetupDoseSpecPoint',\n x300a00a4: 'BrachyApplicationSetupDose',\n x300a00b0: 'BeamSequence',\n x300a00b2: 'TreatmentMachineName',\n x300a00b3: 'PrimaryDosimeterUnit',\n x300a00b4: 'SourceAxisDistance',\n x300a00b6: 'BeamLimitingDeviceSequence',\n x300a00b8: 'RTBeamLimitingDeviceType',\n x300a00ba: 'SourceToBeamLimitingDeviceDistance',\n x300a00bb: 'IsocenterToBeamLimitingDeviceDist',\n x300a00bc: 'NumberOfLeafJawPairs',\n x300a00be: 'LeafPositionBoundaries',\n x300a00c0: 'BeamNumber',\n x300a00c2: 'BeamName',\n x300a00c3: 'BeamDescription',\n x300a00c4: 'BeamType',\n x300a00c6: 'RadiationType',\n x300a00c7: 'HighDoseTechniqueType',\n x300a00c8: 'ReferenceImageNumber',\n x300a00ca: 'PlannedVerificationImageSequence',\n x300a00cc: 'ImagingDeviceSpecificAcqParams',\n x300a00ce: 'TreatmentDeliveryType',\n x300a00d0: 'NumberOfWedges',\n x300a00d1: 'WedgeSequence',\n x300a00d2: 'WedgeNumber',\n x300a00d3: 'WedgeType',\n x300a00d4: 'WedgeID',\n x300a00d5: 'WedgeAngle',\n x300a00d6: 'WedgeFactor',\n x300a00d7: 'TotalWedgeTrayWaterEquivThickness',\n x300a00d8: 'WedgeOrientation',\n x300a00d9: 'IsocenterToWedgeTrayDistance',\n x300a00da: 'SourceToWedgeTrayDistance',\n x300a00db: 'WedgeThinEdgePosition',\n x300a00dc: 'BolusID',\n x300a00dd: 'BolusDescription',\n x300a00e0: 'NumberOfCompensators',\n x300a00e1: 'MaterialID',\n x300a00e2: 'TotalCompensatorTrayFactor',\n x300a00e3: 'CompensatorSequence',\n x300a00e4: 'CompensatorNumber',\n x300a00e5: 'CompensatorID',\n x300a00e6: 'SourceToCompensatorTrayDistance',\n x300a00e7: 'CompensatorRows',\n x300a00e8: 'CompensatorColumns',\n x300a00e9: 'CompensatorPixelSpacing',\n x300a00ea: 'CompensatorPosition',\n x300a00eb: 'CompensatorTransmissionData',\n x300a00ec: 'CompensatorThicknessData',\n x300a00ed: 'NumberOfBoli',\n x300a00ee: 'CompensatorType',\n x300a00f0: 'NumberOfBlocks',\n x300a00f2: 'TotalBlockTrayFactor',\n x300a00f3: 'TotalBlockTrayWaterEquivThickness',\n x300a00f4: 'BlockSequence',\n x300a00f5: 'BlockTrayID',\n x300a00f6: 'SourceToBlockTrayDistance',\n x300a00f7: 'IsocenterToBlockTrayDistance',\n x300a00f8: 'BlockType',\n x300a00f9: 'AccessoryCode',\n x300a00fa: 'BlockDivergence',\n x300a00fb: 'BlockMountingPosition',\n x300a00fc: 'BlockNumber',\n x300a00fe: 'BlockName',\n x300a0100: 'BlockThickness',\n x300a0102: 'BlockTransmission',\n x300a0104: 'BlockNumberOfPoints',\n x300a0106: 'BlockData',\n x300a0107: 'ApplicatorSequence',\n x300a0108: 'ApplicatorID',\n x300a0109: 'ApplicatorType',\n x300a010a: 'ApplicatorDescription',\n x300a010c: 'CumulativeDoseReferenceCoefficient',\n x300a010e: 'FinalCumulativeMetersetWeight',\n x300a0110: 'NumberOfControlPoints',\n x300a0111: 'ControlPointSequence',\n x300a0112: 'ControlPointIndex',\n x300a0114: 'NominalBeamEnergy',\n x300a0115: 'DoseRateSet',\n x300a0116: 'WedgePositionSequence',\n x300a0118: 'WedgePosition',\n x300a011a: 'BeamLimitingDevicePositionSequence',\n x300a011c: 'LeafJawPositions',\n x300a011e: 'GantryAngle',\n x300a011f: 'GantryRotationDirection',\n x300a0120: 'BeamLimitingDeviceAngle',\n x300a0121: 'BeamLimitingDeviceRotateDirection',\n x300a0122: 'PatientSupportAngle',\n x300a0123: 'PatientSupportRotationDirection',\n x300a0124: 'TableTopEccentricAxisDistance',\n x300a0125: 'TableTopEccentricAngle',\n x300a0126: 'TableTopEccentricRotateDirection',\n x300a0128: 'TableTopVerticalPosition',\n x300a0129: 'TableTopLongitudinalPosition',\n x300a012a: 'TableTopLateralPosition',\n x300a012c: 'IsocenterPosition',\n x300a012e: 'SurfaceEntryPoint',\n x300a0130: 'SourceToSurfaceDistance',\n x300a0134: 'CumulativeMetersetWeight',\n x300a0140: 'TableTopPitchAngle',\n x300a0142: 'TableTopPitchRotationDirection',\n x300a0144: 'TableTopRollAngle',\n x300a0146: 'TableTopRollRotationDirection',\n x300a0148: 'HeadFixationAngle',\n x300a014a: 'GantryPitchAngle',\n x300a014c: 'GantryPitchRotationDirection',\n x300a014e: 'GantryPitchAngleTolerance',\n x300a0180: 'PatientSetupSequence',\n x300a0182: 'PatientSetupNumber',\n x300a0183: 'PatientSetupLabel',\n x300a0184: 'PatientAdditionalPosition',\n x300a0190: 'FixationDeviceSequence',\n x300a0192: 'FixationDeviceType',\n x300a0194: 'FixationDeviceLabel',\n x300a0196: 'FixationDeviceDescription',\n x300a0198: 'FixationDevicePosition',\n x300a0199: 'FixationDevicePitchAngle',\n x300a019a: 'FixationDeviceRollAngle',\n x300a01a0: 'ShieldingDeviceSequence',\n x300a01a2: 'ShieldingDeviceType',\n x300a01a4: 'ShieldingDeviceLabel',\n x300a01a6: 'ShieldingDeviceDescription',\n x300a01a8: 'ShieldingDevicePosition',\n x300a01b0: 'SetupTechnique',\n x300a01b2: 'SetupTechniqueDescription',\n x300a01b4: 'SetupDeviceSequence',\n x300a01b6: 'SetupDeviceType',\n x300a01b8: 'SetupDeviceLabel',\n x300a01ba: 'SetupDeviceDescription',\n x300a01bc: 'SetupDeviceParameter',\n x300a01d0: 'SetupReferenceDescription',\n x300a01d2: 'TableTopVerticalSetupDisplacement',\n x300a01d4: 'TableTopLongitudinalSetupDisplace',\n x300a01d6: 'TableTopLateralSetupDisplacement',\n x300a0200: 'BrachyTreatmentTechnique',\n x300a0202: 'BrachyTreatmentType',\n x300a0206: 'TreatmentMachineSequence',\n x300a0210: 'SourceSequence',\n x300a0212: 'SourceNumber',\n x300a0214: 'SourceType',\n x300a0216: 'SourceManufacturer',\n x300a0218: 'ActiveSourceDiameter',\n x300a021a: 'ActiveSourceLength',\n x300a0222: 'SourceEncapsulationNomThickness',\n x300a0224: 'SourceEncapsulationNomTransmission',\n x300a0226: 'SourceIsotopeName',\n x300a0228: 'SourceIsotopeHalfLife',\n x300a0229: 'SourceStrengthUnits',\n x300a022a: 'ReferenceAirKermaRate',\n x300a022b: 'SourceStrength',\n x300a022c: 'SourceStrengthReferenceDate',\n x300a022e: 'SourceStrengthReferenceTime',\n x300a0230: 'ApplicationSetupSequence',\n x300a0232: 'ApplicationSetupType',\n x300a0234: 'ApplicationSetupNumber',\n x300a0236: 'ApplicationSetupName',\n x300a0238: 'ApplicationSetupManufacturer',\n x300a0240: 'TemplateNumber',\n x300a0242: 'TemplateType',\n x300a0244: 'TemplateName',\n x300a0250: 'TotalReferenceAirKerma',\n x300a0260: 'BrachyAccessoryDeviceSequence',\n x300a0262: 'BrachyAccessoryDeviceNumber',\n x300a0263: 'BrachyAccessoryDeviceID',\n x300a0264: 'BrachyAccessoryDeviceType',\n x300a0266: 'BrachyAccessoryDeviceName',\n x300a026a: 'BrachyAccessoryDeviceNomThickness',\n x300a026c: 'BrachyAccessoryDevNomTransmission',\n x300a0280: 'ChannelSequence',\n x300a0282: 'ChannelNumber',\n x300a0284: 'ChannelLength',\n x300a0286: 'ChannelTotalTime',\n x300a0288: 'SourceMovementType',\n x300a028a: 'NumberOfPulses',\n x300a028c: 'PulseRepetitionInterval',\n x300a0290: 'SourceApplicatorNumber',\n x300a0291: 'SourceApplicatorID',\n x300a0292: 'SourceApplicatorType',\n x300a0294: 'SourceApplicatorName',\n x300a0296: 'SourceApplicatorLength',\n x300a0298: 'SourceApplicatorManufacturer',\n x300a029c: 'SourceApplicatorWallNomThickness',\n x300a029e: 'SourceApplicatorWallNomTrans',\n x300a02a0: 'SourceApplicatorStepSize',\n x300a02a2: 'TransferTubeNumber',\n x300a02a4: 'TransferTubeLength',\n x300a02b0: 'ChannelShieldSequence',\n x300a02b2: 'ChannelShieldNumber',\n x300a02b3: 'ChannelShieldID',\n x300a02b4: 'ChannelShieldName',\n x300a02b8: 'ChannelShieldNominalThickness',\n x300a02ba: 'ChannelShieldNominalTransmission',\n x300a02c8: 'FinalCumulativeTimeWeight',\n x300a02d0: 'BrachyControlPointSequence',\n x300a02d2: 'ControlPointRelativePosition',\n x300a02d4: 'ControlPoint3DPosition',\n x300a02d6: 'CumulativeTimeWeight',\n x300a02e0: 'CompensatorDivergence',\n x300a02e1: 'CompensatorMountingPosition',\n x300a02e2: 'SourceToCompensatorDistance',\n x300a02e3: 'TotalCompTrayWaterEquivThickness',\n x300a02e4: 'IsocenterToCompensatorTrayDistance',\n x300a02e5: 'CompensatorColumnOffset',\n x300a02e6: 'IsocenterToCompensatorDistances',\n x300a02e7: 'CompensatorRelStoppingPowerRatio',\n x300a02e8: 'CompensatorMillingToolDiameter',\n x300a02ea: 'IonRangeCompensatorSequence',\n x300a02eb: 'CompensatorDescription',\n x300a0302: 'RadiationMassNumber',\n x300a0304: 'RadiationAtomicNumber',\n x300a0306: 'RadiationChargeState',\n x300a0308: 'ScanMode',\n x300a030a: 'VirtualSourceAxisDistances',\n x300a030c: 'SnoutSequence',\n x300a030d: 'SnoutPosition',\n x300a030f: 'SnoutID',\n x300a0312: 'NumberOfRangeShifters',\n x300a0314: 'RangeShifterSequence',\n x300a0316: 'RangeShifterNumber',\n x300a0318: 'RangeShifterID',\n x300a0320: 'RangeShifterType',\n x300a0322: 'RangeShifterDescription',\n x300a0330: 'NumberOfLateralSpreadingDevices',\n x300a0332: 'LateralSpreadingDeviceSequence',\n x300a0334: 'LateralSpreadingDeviceNumber',\n x300a0336: 'LateralSpreadingDeviceID',\n x300a0338: 'LateralSpreadingDeviceType',\n x300a033a: 'LateralSpreadingDeviceDescription',\n x300a033c: 'LateralSpreadingDevWaterEquivThick',\n x300a0340: 'NumberOfRangeModulators',\n x300a0342: 'RangeModulatorSequence',\n x300a0344: 'RangeModulatorNumber',\n x300a0346: 'RangeModulatorID',\n x300a0348: 'RangeModulatorType',\n x300a034a: 'RangeModulatorDescription',\n x300a034c: 'BeamCurrentModulationID',\n x300a0350: 'PatientSupportType',\n x300a0352: 'PatientSupportID',\n x300a0354: 'PatientSupportAccessoryCode',\n x300a0356: 'FixationLightAzimuthalAngle',\n x300a0358: 'FixationLightPolarAngle',\n x300a035a: 'MetersetRate',\n x300a0360: 'RangeShifterSettingsSequence',\n x300a0362: 'RangeShifterSetting',\n x300a0364: 'IsocenterToRangeShifterDistance',\n x300a0366: 'RangeShifterWaterEquivThickness',\n x300a0370: 'LateralSpreadingDeviceSettingsSeq',\n x300a0372: 'LateralSpreadingDeviceSetting',\n x300a0374: 'IsocenterToLateralSpreadingDevDist',\n x300a0380: 'RangeModulatorSettingsSequence',\n x300a0382: 'RangeModulatorGatingStartValue',\n x300a0384: 'RangeModulatorGatingStopValue',\n x300a038a: 'IsocenterToRangeModulatorDistance',\n x300a0390: 'ScanSpotTuneID',\n x300a0392: 'NumberOfScanSpotPositions',\n x300a0394: 'ScanSpotPositionMap',\n x300a0396: 'ScanSpotMetersetWeights',\n x300a0398: 'ScanningSpotSize',\n x300a039a: 'NumberOfPaintings',\n x300a03a0: 'IonToleranceTableSequence',\n x300a03a2: 'IonBeamSequence',\n x300a03a4: 'IonBeamLimitingDeviceSequence',\n x300a03a6: 'IonBlockSequence',\n x300a03a8: 'IonControlPointSequence',\n x300a03aa: 'IonWedgeSequence',\n x300a03ac: 'IonWedgePositionSequence',\n x300a0401: 'ReferencedSetupImageSequence',\n x300a0402: 'SetupImageComment',\n x300a0410: 'MotionSynchronizationSequence',\n x300a0412: 'ControlPointOrientation',\n x300a0420: 'GeneralAccessorySequence',\n x300a0421: 'GeneralAccessoryID',\n x300a0422: 'GeneralAccessoryDescription',\n x300a0423: 'GeneralAccessoryType',\n x300a0424: 'GeneralAccessoryNumber',\n x300c0002: 'ReferencedRTPlanSequence',\n x300c0004: 'ReferencedBeamSequence',\n x300c0006: 'ReferencedBeamNumber',\n x300c0007: 'ReferencedReferenceImageNumber',\n x300c0008: 'StartCumulativeMetersetWeight',\n x300c0009: 'EndCumulativeMetersetWeight',\n x300c000a: 'ReferencedBrachyAppSetupSeq',\n x300c000c: 'ReferencedBrachyAppSetupNumber',\n x300c000e: 'ReferencedSourceNumber',\n x300c0020: 'ReferencedFractionGroupSequence',\n x300c0022: 'ReferencedFractionGroupNumber',\n x300c0040: 'ReferencedVerificationImageSeq',\n x300c0042: 'ReferencedReferenceImageSequence',\n x300c0050: 'ReferencedDoseReferenceSequence',\n x300c0051: 'ReferencedDoseReferenceNumber',\n x300c0055: 'BrachyReferencedDoseReferenceSeq',\n x300c0060: 'ReferencedStructureSetSequence',\n x300c006a: 'ReferencedPatientSetupNumber',\n x300c0080: 'ReferencedDoseSequence',\n x300c00a0: 'ReferencedToleranceTableNumber',\n x300c00b0: 'ReferencedBolusSequence',\n x300c00c0: 'ReferencedWedgeNumber',\n x300c00d0: 'ReferencedCompensatorNumber',\n x300c00e0: 'ReferencedBlockNumber',\n x300c00f0: 'ReferencedControlPointIndex',\n x300c00f2: 'ReferencedControlPointSequence',\n x300c00f4: 'ReferencedStartControlPointIndex',\n x300c00f6: 'ReferencedStopControlPointIndex',\n x300c0100: 'ReferencedRangeShifterNumber',\n x300c0102: 'ReferencedLateralSpreadingDevNum',\n x300c0104: 'ReferencedRangeModulatorNumber',\n x300e0002: 'ApprovalStatus',\n x300e0004: 'ReviewDate',\n x300e0005: 'ReviewTime',\n x300e0008: 'ReviewerName',\n x40000000: 'TextGroupLength',\n x40000010: 'Arbitrary',\n x40004000: 'TextComments',\n x40080040: 'ResultsID',\n x40080042: 'ResultsIDIssuer',\n x40080050: 'ReferencedInterpretationSequence',\n x40080100: 'InterpretationRecordedDate',\n x40080101: 'InterpretationRecordedTime',\n x40080102: 'InterpretationRecorder',\n x40080103: 'ReferenceToRecordedSound',\n x40080108: 'InterpretationTranscriptionDate',\n x40080109: 'InterpretationTranscriptionTime',\n x4008010a: 'InterpretationTranscriber',\n x4008010b: 'InterpretationText',\n x4008010c: 'InterpretationAuthor',\n x40080111: 'InterpretationApproverSequence',\n x40080112: 'InterpretationApprovalDate',\n x40080113: 'InterpretationApprovalTime',\n x40080114: 'PhysicianApprovingInterpretation',\n x40080115: 'InterpretationDiagnosisDescription',\n x40080117: 'InterpretationDiagnosisCodeSeq',\n x40080118: 'ResultsDistributionListSequence',\n x40080119: 'DistributionName',\n x4008011a: 'DistributionAddress',\n x40080200: 'InterpretationID',\n x40080202: 'InterpretationIDIssuer',\n x40080210: 'InterpretationTypeID',\n x40080212: 'InterpretationStatusID',\n x40080300: 'Impressions',\n x40084000: 'ResultsComments',\n x4ffe0001: 'MACParametersSequence',\n x50xx0005: 'CurveDimensions',\n x50xx0010: 'NumberOfPoints',\n x50xx0020: 'TypeOfData',\n x50xx0022: 'CurveDescription',\n x50xx0030: 'AxisUnits',\n x50xx0040: 'AxisLabels',\n x50xx0103: 'DataValueRepresentation',\n x50xx0104: 'MinimumCoordinateValue',\n x50xx0105: 'MaximumCoordinateValue',\n x50xx0106: 'CurveRange',\n x50xx0110: 'CurveDataDescriptor',\n x50xx0112: 'CoordinateStartValue',\n x50xx0114: 'CoordinateStepValue',\n x50xx1001: 'CurveActivationLayer',\n x50xx2000: 'AudioType',\n x50xx2002: 'AudioSampleFormat',\n x50xx2004: 'NumberOfChannels',\n x50xx2006: 'NumberOfSamples',\n x50xx2008: 'SampleRate',\n x50xx200a: 'TotalTime',\n x50xx200c: 'AudioSampleData',\n x50xx200e: 'AudioComments',\n x50xx2500: 'CurveLabel',\n x50xx2600: 'CurveReferencedOverlaySequence',\n x50xx2610: 'ReferencedOverlayGroup',\n x50xx3000: 'CurveData',\n x52009229: 'SharedFunctionalGroupsSequence',\n x52009230: 'PerFrameFunctionalGroupsSequence',\n x54000100: 'WaveformSequence',\n x54000110: 'ChannelMinimumValue',\n x54000112: 'ChannelMaximumValue',\n x54001004: 'WaveformBitsAllocated',\n x54001006: 'WaveformSampleInterpretation',\n x5400100a: 'WaveformPaddingValue',\n x54001010: 'WaveformData',\n x56000010: 'FirstOrderPhaseCorrectionAngle',\n x56000020: 'SpectroscopyData',\n x60000000: 'OverlayGroupLength',\n x60xx0010: 'OverlayRows',\n x60xx0011: 'OverlayColumns',\n x60xx0012: 'OverlayPlanes',\n x60xx0015: 'NumberOfFramesInOverlay',\n x60xx0022: 'OverlayDescription',\n x60xx0040: 'OverlayType',\n x60xx0045: 'OverlaySubtype',\n x60xx0050: 'OverlayOrigin',\n x60xx0051: 'ImageFrameOrigin',\n x60xx0052: 'OverlayPlaneOrigin',\n x60xx0060: 'OverlayCompressionCode',\n x60xx0061: 'OverlayCompressionOriginator',\n x60xx0062: 'OverlayCompressionLabel',\n x60xx0063: 'OverlayCompressionDescription',\n x60xx0066: 'OverlayCompressionStepPointers',\n x60xx0068: 'OverlayRepeatInterval',\n x60xx0069: 'OverlayBitsGrouped',\n x60xx0100: 'OverlayBitsAllocated',\n x60xx0102: 'OverlayBitPosition',\n x60xx0110: 'OverlayFormat',\n x60xx0200: 'OverlayLocation',\n x60xx0800: 'OverlayCodeLabel',\n x60xx0802: 'OverlayNumberOfTables',\n x60xx0803: 'OverlayCodeTableLocation',\n x60xx0804: 'OverlayBitsForCodeWord',\n x60xx1001: 'OverlayActivationLayer',\n x60xx1100: 'OverlayDescriptorGray',\n x60xx1101: 'OverlayDescriptorRed',\n x60xx1102: 'OverlayDescriptorGreen',\n x60xx1103: 'OverlayDescriptorBlue',\n x60xx1200: 'OverlaysGray',\n x60xx1201: 'OverlaysRed',\n x60xx1202: 'OverlaysGreen',\n x60xx1203: 'OverlaysBlue',\n x60xx1301: 'ROIArea',\n x60xx1302: 'ROIMean',\n x60xx1303: 'ROIStandardDeviation',\n x60xx1500: 'OverlayLabel',\n x60xx3000: 'OverlayData',\n x60xx4000: 'OverlayComments',\n x7fxx0000: 'PixelDataGroupLength',\n x7fxx0010: 'PixelData',\n x7fxx0011: 'VariableNextDataGroup',\n x7fxx0020: 'VariableCoefficientsSDVN',\n x7fxx0030: 'VariableCoefficientsSDHN',\n x7fxx0040: 'VariableCoefficientsSDDN',\n xfffafffa: 'DigitalSignaturesSequence',\n xfffcfffc: 'DataSetTrailingPadding',\n xfffee000: 'StartOfItem',\n xfffee00d: 'EndOfItems',\n xfffee0dd: 'EndOfSequence'\n};\nDICOMTagDescriptions.init(initialTagDescriptionMap); // Discard original map...\n\ninitialTagDescriptionMap = null;\n\n/**\n * A small set of utilities to help parsing DICOM element values.\n * In the future the functionality provided by this library might\n * be incorporated into dicomParser library.\n */\n\nvar parsingUtils = {\n /**\n * Check if supplied argument is a valid instance of the dicomParser.DataSet class.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @returns {Boolean} Returns true if data is a valid instance of the dicomParser.DataSet class.\n */\n isValidDataSet: function isValidDataSet(data) {\n var dicomParser = external.dicomParser;\n return data instanceof dicomParser.DataSet;\n },\n\n /**\n * Parses an element tag according to the 'AT' VR definition.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {String} A string representation of a data element tag or null if the field is not present or data is not long enough.\n */\n attributeTag: function attributeTag(data, tag) {\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length === 4) {\n var parser = data.byteArrayParser.readUint16,\n bytes = data.byteArray,\n offset = element.dataOffset;\n return 'x' + ('00000000' + (parser(bytes, offset) * 256 * 256 + parser(bytes, offset + 2)).toString(16)).substr(-8);\n }\n }\n\n return null;\n },\n\n /**\n * Parses the string representation of a multi-valued element into an array of strings. If the parser\n * parameter is passed and is a function, it will be applied to each element of the resulting array.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @param parser {Function} An optional parser function that can be applied to each element of the array.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n multiValue: function multiValue(data, tag, parser) {\n var dicomParser = external.dicomParser;\n\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length > 0) {\n var string = dicomParser.readFixedString(data.byteArray, element.dataOffset, element.length);\n\n if (typeof string === 'string' && string.length > 0) {\n if (typeof parser !== 'function') {\n parser = null;\n }\n\n return string.split('\\\\').map(function (value) {\n value = value.trim();\n return parser !== null ? parser(value) : value;\n });\n }\n }\n }\n\n return null;\n },\n\n /**\n * Parses a string to an array of floats for a multi-valued element.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n floatArray: function floatArray(data, tag) {\n return this.multiValue(data, tag, parseFloat);\n }\n};\n\n/**\n * Returns the specified element as a dicom attribute group/element.\n *\n * @param element - The group/element of the element (e.g. '00280009')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getAttribute(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return convertToInt(element.Value);\n}\n\nfunction convertToInt(input) {\n function padFour(input) {\n var l = input.length;\n if (l == 0) return '0000';\n if (l == 1) return '000' + input;\n if (l == 2) return '00' + input;\n if (l == 3) return '0' + input;\n return input;\n }\n\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n for (var j = 0; j < input[i].length; j++) {\n output += padFour(input[i].charCodeAt(j).toString(16));\n }\n }\n\n return parseInt(output, 16);\n}\n\nvar btoa = function btoa(val) {\n return new Buffer(val).toString('base64');\n};\n\n// These should be overridden by the implementation\nvar user = {\n userLoggedIn: function userLoggedIn() {\n return false;\n },\n getUserId: function getUserId() {\n return null;\n },\n getName: function getName() {\n return null;\n },\n getAccessToken: function getAccessToken() {\n return null;\n },\n login: function login() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n logout: function logout() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n getData: function getData(key) {\n return null;\n },\n setData: function setData(key, value) {\n return null;\n }\n};\n\n/**\n * Returns the Authorization header as part of an Object.\n *\n * @returns {Object}\n */\n\nfunction getAuthorizationHeader(server) {\n var headers = {}; // Check for OHIF.user since this can also be run on the server\n\n var accessToken = user && user.getAccessToken && user.getAccessToken();\n\n if (server && server.requestOptions && server.requestOptions.auth) {\n // HTTP Basic Auth (user:password)\n headers.Authorization = \"Basic \".concat(btoa(server.requestOptions.auth));\n } else if (accessToken) {\n headers.Authorization = \"Bearer \".concat(accessToken);\n }\n\n return headers;\n}\n\nfunction getModalities(modality, modalitiesInStudy) {\n var modalities = {};\n\n if (modality) {\n modalities = modality;\n }\n\n if (modalitiesInStudy) {\n // Find vr in modalities\n if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {\n for (var i = 0; i < modalitiesInStudy.Value.length; i++) {\n var value = modalitiesInStudy.Value[i];\n\n if (modalities.Value.indexOf(value) === -1) {\n modalities.Value.push(value);\n }\n }\n } else {\n modalities = modalitiesInStudy;\n }\n }\n\n return modalities;\n}\n\n/**\n * Returns the Alphabetic version of a PN\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element is not found\n * @returns {*}\n */\nfunction getName(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Return the Alphabetic component group\n\n\n if (element.Value[0].Alphabetic) {\n return element.Value[0].Alphabetic;\n } // Orthanc does not return PN properly so this is a temporary workaround\n\n\n return element.Value[0];\n}\n\n/**\n * Returns the first string value as a Javascript Number\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element does not exist\n * @returns {*}\n */\nfunction getNumber(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return parseFloat(element.Value[0]);\n}\n\n/**\n * Returns the specified element as a string. Multi-valued elements will be separated by a backslash\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getString(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Join the array together separated by backslash\n // NOTE: Orthanc does not correctly split values into an array so the join is a no-op\n\n\n return element.Value.join('\\\\');\n}\n\nvar DICOMWeb = {\n getAttribute: getAttribute,\n getAuthorizationHeader: getAuthorizationHeader,\n getModalities: getModalities,\n getName: getName,\n getNumber: getNumber,\n getString: getString\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar dicomwebClient = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n factory(exports);\n}(commonjsGlobal, (function (exports) {\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Converts a Uint8Array to a String.\n * @param {Uint8Array} array that should be converted\n * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0)\n * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array)\n * @returns {String}\n */\n function uint8ArrayToString(arr, offset, limit) {\n offset = offset || 0;\n limit = limit || arr.length - offset;\n var str = '';\n\n for (var i = offset; i < offset + limit; i++) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n }\n /**\n * Converts a String to a Uint8Array.\n * @param {String} str string that should be converted\n * @returns {Uint8Array}\n */\n\n\n function stringToUint8Array(str) {\n var arr = new Uint8Array(str.length);\n\n for (var i = 0, j = str.length; i < j; i++) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n }\n /**\n * Identifies the boundary in a multipart/related message header.\n * @param {String} header message header\n * @returns {String} boundary\n */\n\n\n function identifyBoundary(header) {\n var parts = header.split('\\r\\n');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].substr(0, 2) === '--') {\n return parts[i];\n }\n }\n }\n /**\n * Checks whether a given token is contained by a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be present\n * @param {String} offset offset in message content from where search should start\n * @returns {Boolean} whether message contains token at offset\n */\n\n\n function containsToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (message + token.length > message.length) {\n return false;\n }\n\n var index = offset;\n\n for (var i = 0; i < token.length; i++) {\n if (token[i] !== message[index++]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Finds a given token in a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be found\n * @param {String} offset message body offset from where search should start\n * @returns {Boolean} whether message has a part at given offset or not\n */\n\n\n function findToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var messageLength = message.length;\n\n for (var i = offset; i < messageLength; i++) {\n // If the first value of the message matches\n // the first value of the token, check if\n // this is the full token.\n if (message[i] === token[0]) {\n if (containsToken(message, token, i)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n /**\n * @typedef {Object} MultipartEncodedData\n * @property {ArrayBuffer} data The encoded Multipart Data\n * @property {String} boundary The boundary used to divide pieces of the encoded data\n */\n\n /**\n * Encode one or more DICOM datasets into a single body so it can be\n * sent using the Multipart Content-Type.\n *\n * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers.\n * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated.\n * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it.\n */\n\n\n function multipartEncode(datasets) {\n var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid();\n var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'application/dicom';\n var contentTypeString = \"Content-Type: \".concat(contentType);\n var header = \"\\r\\n--\".concat(boundary, \"\\r\\n\").concat(contentTypeString, \"\\r\\n\\r\\n\");\n var footer = \"\\r\\n--\".concat(boundary, \"--\");\n var headerArray = stringToUint8Array(header);\n var footerArray = stringToUint8Array(footer);\n var headerLength = headerArray.length;\n var footerLength = footerArray.length;\n var length = 0; // Calculate the total length for the final array\n\n var contentArrays = datasets.map(function (datasetBuffer) {\n var contentArray = new Uint8Array(datasetBuffer);\n var contentLength = contentArray.length;\n length += headerLength + contentLength + footerLength;\n return contentArray;\n }); // Allocate the array\n\n var multipartArray = new Uint8Array(length); // Set the initial header\n\n multipartArray.set(headerArray, 0); // Write each dataset into the multipart array\n\n var position = 0;\n contentArrays.forEach(function (contentArray) {\n var contentLength = contentArray.length;\n multipartArray.set(headerArray, position);\n multipartArray.set(contentArray, position + headerLength);\n position += headerLength + contentArray.length;\n });\n multipartArray.set(footerArray, position);\n return {\n data: multipartArray.buffer,\n boundary: boundary\n };\n }\n /**\n * Decode a Multipart encoded ArrayBuffer and return the components as an Array.\n *\n * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message\n * @returns {Array} The content\n */\n\n function multipartDecode(response) {\n var message = new Uint8Array(response); // First look for the multipart mime header\n\n var separator = stringToUint8Array('\\r\\n\\r\\n');\n var headerIndex = findToken(message, separator);\n\n if (headerIndex === -1) {\n throw new Error('Response message has no multipart mime header');\n }\n\n var header = uint8ArrayToString(message, 0, headerIndex);\n var boundaryString = identifyBoundary(header);\n\n if (!boundaryString) {\n throw new Error('Header of response message does not specify boundary');\n }\n\n var boundary = stringToUint8Array(boundaryString);\n var boundaryLength = boundary.length;\n var components = [];\n var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries\n\n var boundaryIndex;\n\n while (boundaryIndex !== -1) {\n // Search for the next boundary in the message, starting\n // from the current offset position\n boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here.\n\n if (boundaryIndex === -1) {\n break;\n } // Extract data from response message, excluding \"\\r\\n\"\n\n\n var spacingLength = 2;\n var length = boundaryIndex - offset - spacingLength;\n var data = response.slice(offset, offset + length); // Add the data to the array of results\n\n components.push(data); // Move the offset to the end of the current section,\n // plus the identified boundary\n\n offset += length + spacingLength + boundaryLength;\n }\n\n return components;\n }\n /**\n * Create a random GUID\n *\n * @return {string}\n */\n\n\n function guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n function isEmptyObject(obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n }\n\n var getFirstResult = function getFirstResult(result) {\n return result[0];\n };\n\n var MIMETYPES = {\n DICOM: 'application/dicom',\n DICOM_JSON: 'application/dicom+json',\n OCTET_STREAM: 'application/octet-stream',\n JPEG: 'image/jpeg',\n PNG: 'image/png'\n };\n /**\n * Class for interacting with DICOMweb RESTful services.\n */\n\n var DICOMwebClient =\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {Object} options (choices: \"url\", \"username\", \"password\", \"headers\")\n */\n function DICOMwebClient(options) {\n _classCallCheck(this, DICOMwebClient);\n\n this.baseURL = options.url;\n\n if (!this.baseURL) {\n console.error('no DICOMweb base url provided - calls will fail');\n }\n\n if ('username' in options) {\n this.username = options.username;\n\n if (!('password' in options)) {\n console.error('no password provided to authenticate with DICOMweb service');\n }\n\n this.password = options.password;\n }\n\n if ('qidoURLPrefix' in options) {\n console.log(\"use URL prefix for QIDO-RS: \".concat(options.qidoURLPrefix));\n this.qidoURL = this.baseURL + '/' + options.qidoURLPrefix;\n } else {\n this.qidoURL = this.baseURL;\n }\n\n if ('wadoURLPrefix' in options) {\n console.log(\"use URL prefix for WADO-RS: \".concat(options.wadoURLPrefix));\n this.wadoURL = this.baseURL + '/' + options.wadoURLPrefix;\n } else {\n this.wadoURL = this.baseURL;\n }\n\n if ('stowURLPrefix' in options) {\n console.log(\"use URL prefix for STOW-RS: \".concat(options.stowURLPrefix));\n this.stowURL = this.baseURL + '/' + options.stowURLPrefix;\n } else {\n this.stowURL = this.baseURL;\n }\n\n this.headers = options.headers || {};\n }\n\n _createClass(DICOMwebClient, [{\n key: \"_httpRequest\",\n value: function _httpRequest(url, method, headers) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(method, url, true);\n\n if ('responseType' in options) {\n request.responseType = options.responseType;\n }\n\n if (_typeof(headers) === 'object') {\n Object.keys(headers).forEach(function (key) {\n request.setRequestHeader(key, headers[key]);\n });\n } // now add custom headers from the user\n // (e.g. access tokens)\n\n\n var userHeaders = _this.headers;\n Object.keys(userHeaders).forEach(function (key) {\n request.setRequestHeader(key, userHeaders[key]);\n }); // Event triggered when upload starts\n\n request.onloadstart = function (event) {//console.log('upload started: ', url)\n }; // Event triggered when upload ends\n\n\n request.onloadend = function (event) {//console.log('upload finished')\n }; // Handle response message\n\n\n request.onreadystatechange = function (event) {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.response);\n } else if (request.status === 202) {\n console.warn('some resources already existed: ', request);\n resolve(request.response);\n } else if (request.status === 204) {\n console.warn('empty response for request: ', request);\n resolve([]);\n } else {\n console.error('request failed: ', request);\n var error = new Error('request failed');\n error.request = request;\n error.response = request.response;\n error.status = request.status;\n console.error(error);\n console.error(error.response);\n reject(error);\n }\n }\n }; // Event triggered while download progresses\n\n\n if ('progressCallback' in options) {\n if (typeof options.progressCallback === 'function') {\n request.onprogress = options.progressCallback;\n }\n } // request.onprogress = function (event) {\n // const loaded = progress.loaded;\n // let total;\n // let percentComplete;\n // if (progress.lengthComputable) {\n // total = progress.total;\n // percentComplete = Math.round((loaded / total) * 100);\n // j\n // // console.log('download progress: ', percentComplete, ' %');\n // return(percentComplete);\n // };\n\n\n if ('data' in options) {\n request.send(options.data);\n } else {\n request.send();\n }\n });\n }\n }, {\n key: \"_httpGet\",\n value: function _httpGet(url, headers, responseType, progressCallback) {\n return this._httpRequest(url, 'get', headers, {\n responseType: responseType,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpGetApplicationJson\",\n value: function _httpGetApplicationJson(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var progressCallback = arguments.length > 2 ? arguments[2] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': MIMETYPES.DICOM_JSON\n };\n var responseType = 'json';\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpGetByMimeType\",\n value: function _httpGetByMimeType(url, mimeType, params) {\n var responseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'arraybuffer';\n var progressCallback = arguments.length > 4 ? arguments[4] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': \"multipart/related; type=\\\"\".concat(mimeType, \"\\\"\")\n };\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpPost\",\n value: function _httpPost(url, headers, data, progressCallback) {\n return this._httpRequest(url, 'post', headers, {\n data: data,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpPostApplicationJson\",\n value: function _httpPostApplicationJson(url, data, progressCallback) {\n var headers = {\n 'Content-Type': MIMETYPES.DICOM_JSON\n };\n return this._httpPost(url, headers, data, progressCallback);\n }\n /**\n * Searches for DICOM studies.\n * @param {Object} options options object\n * @return {Array} study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2)\n */\n\n }, {\n key: \"searchForStudies\",\n value: function searchForStudies() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.log('search for studies');\n var url = this.qidoURL + '/studies';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM study.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the study\n */\n\n }, {\n key: \"retrieveStudyMetadata\",\n value: function retrieveStudyMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of study metadata');\n }\n\n console.log(\"retrieve metadata of study \".concat(options.studyInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM series.\n * @param {Object} options options object\n * @returns {Array} series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a)\n */\n\n }, {\n key: \"searchForSeries\",\n value: function searchForSeries() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n console.log(\"search series of study \".concat(options.studyInstanceUID));\n url += '/studies/' + options.studyInstanceUID;\n }\n\n url += '/series';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM series.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the series\n */\n\n }, {\n key: \"retrieveSeriesMetadata\",\n value: function retrieveSeriesMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of series metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of series metadata');\n }\n\n console.log(\"retrieve metadata of series \".concat(options.seriesInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM instances.\n * @param {Object} options options object\n * @returns {Array} instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b)\n */\n\n }, {\n key: \"searchForInstances\",\n value: function searchForInstances() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n url += '/studies/' + options.studyInstanceUID;\n\n if ('seriesInstanceUID' in options) {\n console.log(\"search for instances of series \".concat(options.seriesInstanceUID));\n url += '/series/' + options.seriesInstanceUID;\n } else {\n console.log(\"search for instances of study \".concat(options.studyInstanceUID));\n }\n } else {\n console.log('search for instances');\n }\n\n url += '/instances';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /** Returns a WADO-URI URL for an instance\n * @param {Object} options options object\n * @returns {String} WADO-URI URL\n */\n\n }, {\n key: \"buildInstanceWadoURIUrl\",\n value: function buildInstanceWadoURIUrl(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required.');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required.');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required.');\n }\n\n var contentType = options.contentType || MIMETYPES.DICOM;\n var transferSyntax = options.transferSyntax || '*';\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(options.studyInstanceUID));\n params.push(\"seriesUID=\".concat(options.seriesInstanceUID));\n params.push(\"objectUID=\".concat(options.sopInstanceUID));\n params.push(\"contentType=\".concat(contentType));\n params.push(\"transferSyntax=\".concat(transferSyntax));\n var paramString = params.join('&');\n return \"\".concat(this.wadoURL, \"?\").concat(paramString);\n }\n /**\n * Retrieves metadata for a DICOM instance.\n *\n * @param {Object} options object\n * @returns {Object} metadata elements in DICOM JSON format\n */\n\n }, {\n key: \"retrieveInstanceMetadata\",\n value: function retrieveInstanceMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance metadata');\n }\n\n console.log(\"retrieve metadata of instance \".concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFrames\",\n value: function retrieveInstanceFrames(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of instance frames');\n }\n\n console.log(\"retrieve frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString();\n var mimeType = options.mimeType ? \"\".concat(options.mimeType) : MIMETYPES.OCTET_STREAM;\n return this._httpGetByMimeType(url, mimeType).then(multipartDecode);\n }\n /**\n * Retrieves rendered frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFramesRendered\",\n value: function retrieveInstanceFramesRendered(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of rendered instance frames');\n }\n\n console.log(\"retrieve rendered frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString() + '/rendered';\n var headers = {}; // The choice of an acceptable media type depends on a variety of things:\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/chapter_6.html#table_6.1.1-3\n\n if ('mimeType' in options) {\n headers['Accept'] = options.mimeType;\n }\n\n var responseType = 'arraybuffer';\n return this._httpGet(url, headers, responseType);\n }\n /**\n * Retrieves a DICOM instance.\n * @param {Object} options options object\n * @returns {Arraybuffer} DICOM Part 10 file as Arraybuffer\n */\n\n }, {\n key: \"retrieveInstance\",\n value: function retrieveInstance(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Retrieves a set of DICOM instance for a series.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveSeries\",\n value: function retrieveSeries(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves a set of DICOM instance for a study.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveStudy\",\n value: function retrieveStudy(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves and parses BulkData from a BulkDataURI location.\n * Decodes the multipart encoded data and returns the resulting data\n * as an ArrayBuffer.\n *\n * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html\n *\n * @param {Object} options options object\n * @return {Promise}\n */\n\n }, {\n key: \"retrieveBulkData\",\n value: function retrieveBulkData(options) {\n if (!('BulkDataURI' in options)) {\n throw new Error('BulkDataURI is required.');\n }\n\n return this._httpGetByMimeType(options.BulkDataURI, MIMETYPES.OCTET_STREAM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Stores DICOM instances.\n *\n * @param {Object} options options object\n */\n\n }, {\n key: \"storeInstances\",\n value: function storeInstances(options) {\n if (!('datasets' in options)) {\n throw new Error('datasets are required for storing');\n }\n\n var url = \"\".concat(this.stowURL, \"/studies\");\n\n if ('studyInstanceUID' in options) {\n url += \"/\".concat(options.studyInstanceUID);\n }\n\n var _multipartEncode = multipartEncode(options.datasets),\n data = _multipartEncode.data,\n boundary = _multipartEncode.boundary;\n\n var headers = {\n 'Content-Type': \"multipart/related; type=application/dicom; boundary=\".concat(boundary)\n };\n return this._httpPost(url, headers, data, options.progressCallback);\n }\n }], [{\n key: \"_parseQueryParameters\",\n value: function _parseQueryParameters() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var queryString = '?';\n Object.keys(params).forEach(function (key, index) {\n if (index !== 0) {\n queryString += '&';\n }\n\n queryString += key + '=' + encodeURIComponent(params[key]);\n });\n return queryString;\n }\n }]);\n\n return DICOMwebClient;\n }();\n\n function findSubstring(str, before, after) {\n var beforeIndex = str.lastIndexOf(before) + before.length;\n\n if (beforeIndex < before.length) {\n return null;\n }\n\n if (after !== undefined) {\n var afterIndex = str.lastIndexOf(after);\n\n if (afterIndex < 0) {\n return null;\n } else {\n return str.substring(beforeIndex, afterIndex);\n }\n }\n\n return str.substring(beforeIndex);\n }\n\n function getStudyInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"studies/\", \"/series\");\n\n if (!uid) {\n uid = findSubstring(uri, \"studies/\");\n }\n\n if (!uid) {\n console.debug('Study Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSeriesInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"series/\", \"/instances\");\n\n if (!uid) {\n uid = findSubstring(uri, \"series/\");\n }\n\n if (!uid) {\n console.debug('Series Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSOPInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"/instances/\", \"/frames\");\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\", \"/metadata\");\n }\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\");\n }\n\n if (!uid) {\n console.debug('SOP Instance UID could not be dertermined from URI\"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getFrameNumbersFromUri(uri) {\n var numbers = findSubstring(uri, \"/frames/\", \"/rendered\");\n\n if (!numbers) {\n numbers = findSubstring(uri, \"/frames/\");\n }\n\n if (numbers === undefined) {\n console.debug('Frames Numbers could not be dertermined from URI\"' + uri + '\"');\n }\n\n return numbers.split(',');\n }\n\n var version = '0.3.2';\n\n var api = {\n DICOMwebClient: DICOMwebClient\n };\n var utils = {\n getStudyInstanceUIDFromUri: getStudyInstanceUIDFromUri,\n getSeriesInstanceUIDFromUri: getSeriesInstanceUIDFromUri,\n getSOPInstanceUIDFromUri: getSOPInstanceUIDFromUri,\n getFrameNumbersFromUri: getFrameNumbersFromUri\n };\n\n exports.api = api;\n exports.utils = utils;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n});\n\nvar DICOMwebClient = unwrapExports(dicomwebClient);\n\n/**\n * Parses data returned from a QIDO search and transforms it into\n * an array of series that are present in the study\n *\n * @param server The DICOM server\n * @param studyInstanceUid\n * @param resultData\n * @returns {Array} Series List\n */\n\nfunction resultDataToStudyMetadata(server, studyInstanceUid, resultData) {\n var seriesMap = {};\n var seriesList = [];\n resultData.forEach(function (instance) {\n // Use seriesMap to cache series data\n // If the series instance UID has already been used to\n // process series data, continue using that series\n var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n var series = seriesMap[seriesInstanceUid]; // If no series data exists in the seriesMap cache variable,\n // process any available series data\n\n if (!series) {\n series = {\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getString(instance['00200011']),\n instances: []\n }; // Save this data in the seriesMap cache variable\n\n seriesMap[seriesInstanceUid] = series;\n seriesList.push(series);\n } // The uri for the dicomweb\n // NOTE: DCM4CHEE seems to return the data zipped\n // NOTE: Orthanc returns the data with multi-part mime which cornerstoneWADOImageLoader doesn't\n // know how to parse yet\n //var uri = DICOMWeb.getString(instance['00081190']);\n //uri = uri.replace('wado-rs', 'dicom-web');\n // manually create a WADO-URI from the UIDs\n // NOTE: Haven't been able to get Orthanc's WADO-URI to work yet - maybe its not configured?\n\n\n var sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n var uri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom'; // Add this instance to the current series\n\n series.instances.push({\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n sopInstanceUid: sopInstanceUid,\n uri: uri,\n instanceNumber: DICOMWeb.getString(instance['00200013'])\n });\n });\n return seriesList;\n}\n/**\n * Retrieve a set of instances using a QIDO call\n * @param server\n * @param studyInstanceUid\n * @throws ECONNREFUSED\n * @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}\n */\n\n\nfunction Instances(server, studyInstanceUid) {\n // TODO: Are we using this function anywhere?? Can we remove it?\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);\n var options = {\n studyInstanceUID: studyInstanceUid\n };\n return dicomWeb.searchForInstances(options).then(function (result) {\n return {\n wadoUriRoot: server.wadoUriRoot,\n studyInstanceUid: studyInstanceUid,\n seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)\n };\n });\n}\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$1(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString(new Date(filter.studyDateFrom));\n var dateTo = dateToString(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$1(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies);\n}\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar WADOProxy = {\n convertURL: function convertURL(url, server) {\n // TODO: Remove all WADOProxy stuff from this file\n return url;\n }\n};\n\nfunction parseFloatArray(obj) {\n var result = [];\n\n if (!obj) {\n return result;\n }\n\n var objs = obj.split('\\\\');\n\n for (var i = 0; i < objs.length; i++) {\n result.push(parseFloat(objs[i]));\n }\n\n return result;\n}\n/**\n * Simple cache schema for retrieved color palettes.\n */\n\n\nvar paletteColorCache = {\n count: 0,\n maxAge: 24 * 60 * 60 * 1000,\n // 24h cache?\n entries: {},\n isValidUID: function isValidUID(paletteUID) {\n return typeof paletteUID === 'string' && paletteUID.length > 0;\n },\n get: function get(paletteUID) {\n var entry = null;\n\n if (this.entries.hasOwnProperty(paletteUID)) {\n entry = this.entries[paletteUID]; // check how the entry is...\n\n if (Date.now() - entry.time > this.maxAge) {\n // entry is too old... remove entry.\n delete this.entries[paletteUID];\n this.count--;\n entry = null;\n }\n }\n\n return entry;\n },\n add: function add(entry) {\n if (this.isValidUID(entry.uid)) {\n var paletteUID = entry.uid;\n\n if (this.entries.hasOwnProperty(paletteUID) !== true) {\n this.count++; // increment cache entry count...\n }\n\n entry.time = Date.now();\n this.entries[paletteUID] = entry; // @TODO: Add logic to get rid of old entries and reduce memory usage...\n }\n }\n};\n/** Returns a WADO url for an instance\n *\n * @param studyInstanceUid\n * @param seriesInstanceUid\n * @param sopInstanceUid\n * @returns {string}\n */\n\nfunction buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(studyInstanceUid));\n params.push(\"seriesUID=\".concat(seriesInstanceUid));\n params.push(\"objectUID=\".concat(sopInstanceUid));\n params.push('contentType=application/dicom');\n params.push('transferSyntax=*');\n var paramString = params.join('&');\n return \"\".concat(server.wadoUriRoot, \"?\").concat(paramString);\n}\n\nfunction buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n return \"\".concat(server.wadoRoot, \"/studies/\").concat(studyInstanceUid, \"/series/\").concat(seriesInstanceUid, \"/instances/\").concat(sopInstanceUid);\n}\n\nfunction buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {\n var baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n frame = frame != null || 1;\n return \"\".concat(baseWadoRsUri, \"/frames/\").concat(frame);\n}\n/**\n * Parses the SourceImageSequence, if it exists, in order\n * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID\n * is used to refer to this image in any accompanying DICOM-SR documents.\n *\n * @param instance\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getSourceImageInstanceUid(instance) {\n // TODO= Parse the whole Source Image Sequence\n // This is a really poor workaround for now.\n // Later we should probably parse the whole sequence.\n var SourceImageSequence = instance['00082112'];\n\n if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) {\n return SourceImageSequence.Value[0]['00081155'].Value[0];\n }\n}\n\nfunction getPaletteColor(server, instance, tag, lutDescriptor) {\n var numLutEntries = lutDescriptor[0];\n var bits = lutDescriptor[2];\n var uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server); // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning\n // incorrect bulk data URIs\n\n if (server.wadoRoot.indexOf('https') === 0 && !uri.includes('https')) {\n uri = uri.replace('http', 'https');\n }\n\n var config = {\n url: server.wadoRoot,\n //BulkDataURI is absolute, so this isn't used\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var options = {\n BulkDataURI: uri\n };\n\n var readUInt16 = function readUInt16(byteArray, position) {\n return byteArray[position] + byteArray[position + 1] * 256;\n };\n\n var arrayBufferToPaletteColorLUT = function arrayBufferToPaletteColorLUT(arraybuffer) {\n var byteArray = new Uint8Array(arraybuffer);\n var lut = [];\n\n for (var i = 0; i < numLutEntries; i++) {\n if (bits === 16) {\n lut[i] = readUInt16(byteArray, i * 2);\n } else {\n lut[i] = byteArray[i];\n }\n }\n\n return lut;\n };\n\n return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT);\n}\n/**\n * Fetch palette colors for instances with \"PALETTE COLOR\" photometricInterpretation.\n *\n * @param server {Object} Current server;\n * @param instance {Object} The retrieved instance metadata;\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getPaletteColors(_x, _x2, _x3) {\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction _getPaletteColors() {\n _getPaletteColors = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(server, instance, lutDescriptor) {\n var paletteUID;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n paletteUID = DICOMWeb.getString(instance['00281199']);\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (paletteColorCache.isValidUID(paletteUID)) {\n var _entry = paletteColorCache.get(paletteUID);\n\n if (_entry) {\n return resolve(_entry);\n }\n } // no entry in cache... Fetch remote data.\n\n\n var r = getPaletteColor(server, instance, '00281201', lutDescriptor);\n var g = getPaletteColor(server, instance, '00281202', lutDescriptor);\n var b = getPaletteColor(server, instance, '00281203', lutDescriptor);\n var promises = [r, g, b];\n Promise.all(promises).then(function (args) {\n entry = {\n red: args[0],\n green: args[1],\n blue: args[2]\n }; // when paletteUID is present, the entry can be cached...\n\n entry.uid = paletteUID;\n paletteColorCache.add(entry);\n resolve(entry);\n });\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction getFrameIncrementPointer(element) {\n var frameIncrementPointerNames = {\n '00181065': 'frameTimeVector',\n '00181063': 'frameTime'\n };\n\n if (!element || !element.Value || !element.Value.length) {\n return;\n }\n\n var value = element.Value[0];\n return frameIncrementPointerNames[value];\n}\n\nfunction getRadiopharmaceuticalInfo(instance) {\n var modality = DICOMWeb.getString(instance['00080060']);\n\n if (modality !== 'PT') {\n return;\n }\n\n var radiopharmaceuticalInfo = instance['00540016'];\n\n if (radiopharmaceuticalInfo === undefined || !radiopharmaceuticalInfo.Value || !radiopharmaceuticalInfo.Value.length) {\n return;\n }\n\n var firstPetRadiopharmaceuticalInfo = radiopharmaceuticalInfo.Value[0];\n return {\n radiopharmaceuticalStartTime: DICOMWeb.getString(firstPetRadiopharmaceuticalInfo['00181072']),\n radionuclideTotalDose: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181074']),\n radionuclideHalfLife: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181075'])\n };\n}\n/**\n * Parses result data from a WADO search into Study MetaData\n * Returns an object populated with study metadata, including the\n * series list.\n *\n * @param server\n * @param studyInstanceUid\n * @param resultData\n * @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}\n */\n\n\nfunction resultDataToStudyMetadata$1(_x4, _x5, _x6) {\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n/**\n * Retrieve Study MetaData from a DICOM server using a WADO call\n *\n * @param server\n * @param studyInstanceUid\n * @returns {Promise}\n */\n\n\nfunction _resultDataToStudyMetadata() {\n _resultDataToStudyMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee3(server, studyInstanceUid, resultData) {\n var _studyData;\n\n var anInstance, studyData, seriesMap;\n return regenerator.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (resultData.length) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 2:\n anInstance = resultData[0];\n\n if (anInstance) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 5:\n studyData = (_studyData = {\n seriesList: [],\n studyInstanceUid: studyInstanceUid,\n wadoUriRoot: server.wadoUriRoot,\n patientName: DICOMWeb.getName(anInstance['00100010']),\n patientId: DICOMWeb.getString(anInstance['00100020']),\n patientAge: DICOMWeb.getNumber(anInstance['00101010']),\n patientSize: DICOMWeb.getNumber(anInstance['00101020']),\n patientWeight: DICOMWeb.getNumber(anInstance['00101030']),\n accessionNumber: DICOMWeb.getString(anInstance['00080050']),\n studyDate: DICOMWeb.getString(anInstance['00080020']),\n modalities: DICOMWeb.getString(anInstance['00080061']),\n studyDescription: DICOMWeb.getString(anInstance['00081030']),\n imageCount: DICOMWeb.getString(anInstance['00201208'])\n }, _defineProperty(_studyData, \"studyInstanceUid\", DICOMWeb.getString(anInstance['0020000D'])), _defineProperty(_studyData, \"institutionName\", DICOMWeb.getString(anInstance['00080080'])), _studyData);\n seriesMap = {};\n _context3.next = 9;\n return Promise.all(resultData.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2(instance) {\n var seriesInstanceUid, series, sopInstanceUid, wadouri, baseWadoRsUri, wadorsuri, instanceSummary, redPaletteColorLookupTableDescriptor, greenPaletteColorLookupTableDescriptor, bluePaletteColorLookupTableDescriptor, palettes;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n series = seriesMap[seriesInstanceUid];\n\n if (!series) {\n series = {\n seriesDescription: DICOMWeb.getString(instance['0008103E']),\n modality: DICOMWeb.getString(instance['00080060']),\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getNumber(instance['00200011']),\n seriesDate: DICOMWeb.getString(instance['00080021']),\n seriesTime: DICOMWeb.getString(instance['00080031']),\n instances: []\n };\n seriesMap[seriesInstanceUid] = series;\n studyData.seriesList.push(series);\n }\n\n sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n instanceSummary = {\n imageType: DICOMWeb.getString(instance['00080008']),\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n modality: DICOMWeb.getString(instance['00080060']),\n sopInstanceUid: sopInstanceUid,\n instanceNumber: DICOMWeb.getNumber(instance['00200013']),\n imagePositionPatient: DICOMWeb.getString(instance['00200032']),\n imageOrientationPatient: DICOMWeb.getString(instance['00200037']),\n frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),\n sliceLocation: DICOMWeb.getNumber(instance['00201041']),\n samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),\n photometricInterpretation: DICOMWeb.getString(instance['00280004']),\n planarConfiguration: DICOMWeb.getNumber(instance['00280006']),\n rows: DICOMWeb.getNumber(instance['00280010']),\n columns: DICOMWeb.getNumber(instance['00280011']),\n pixelSpacing: DICOMWeb.getString(instance['00280030']),\n pixelAspectRatio: DICOMWeb.getString(instance['00280034']),\n bitsAllocated: DICOMWeb.getNumber(instance['00280100']),\n bitsStored: DICOMWeb.getNumber(instance['00280101']),\n highBit: DICOMWeb.getNumber(instance['00280102']),\n pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),\n smallestPixelValue: DICOMWeb.getNumber(instance['00280106']),\n largestPixelValue: DICOMWeb.getNumber(instance['00280107']),\n windowCenter: DICOMWeb.getString(instance['00281050']),\n windowWidth: DICOMWeb.getString(instance['00281051']),\n rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),\n rescaleSlope: DICOMWeb.getNumber(instance['00281053']),\n rescaleType: DICOMWeb.getNumber(instance['00281054']),\n sourceImageInstanceUid: getSourceImageInstanceUid(instance),\n laterality: DICOMWeb.getString(instance['00200062']),\n viewPosition: DICOMWeb.getString(instance['00185101']),\n acquisitionDateTime: DICOMWeb.getString(instance['0008002A']),\n numberOfFrames: DICOMWeb.getNumber(instance['00280008']),\n frameIncrementPointer: getFrameIncrementPointer(instance['00280009']),\n frameTime: DICOMWeb.getNumber(instance['00181063']),\n frameTimeVector: parseFloatArray(DICOMWeb.getString(instance['00181065'])),\n sliceThickness: DICOMWeb.getNumber(instance['00180050']),\n lossyImageCompression: DICOMWeb.getString(instance['00282110']),\n derivationDescription: DICOMWeb.getString(instance['00282111']),\n lossyImageCompressionRatio: DICOMWeb.getString(instance['00282112']),\n lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),\n echoNumber: DICOMWeb.getString(instance['00180086']),\n contrastBolusAgent: DICOMWeb.getString(instance['00180010']),\n radiopharmaceuticalInfo: getRadiopharmaceuticalInfo(instance),\n baseWadoRsUri: baseWadoRsUri,\n wadouri: WADOProxy.convertURL(wadouri, server),\n wadorsuri: WADOProxy.convertURL(wadorsuri, server),\n imageRendering: server.imageRendering,\n thumbnailRendering: server.thumbnailRendering\n }; // Get additional information if the instance uses \"PALETTE COLOR\" photometric interpretation\n\n if (!(instanceSummary.photometricInterpretation === 'PALETTE COLOR')) {\n _context2.next = 16;\n break;\n }\n\n redPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281101']));\n greenPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281102']));\n bluePaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281103']));\n _context2.next = 14;\n return getPaletteColors(server, instance, redPaletteColorLookupTableDescriptor);\n\n case 14:\n palettes = _context2.sent;\n\n if (palettes) {\n if (palettes.uid) {\n instanceSummary.paletteColorLookupTableUID = palettes.uid;\n }\n\n instanceSummary.redPaletteColorLookupTableData = palettes.red;\n instanceSummary.greenPaletteColorLookupTableData = palettes.green;\n instanceSummary.bluePaletteColorLookupTableData = palettes.blue;\n instanceSummary.redPaletteColorLookupTableDescriptor = redPaletteColorLookupTableDescriptor;\n instanceSummary.greenPaletteColorLookupTableDescriptor = greenPaletteColorLookupTableDescriptor;\n instanceSummary.bluePaletteColorLookupTableDescriptor = bluePaletteColorLookupTableDescriptor;\n }\n\n case 16:\n series.instances.push(instanceSummary);\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x9) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n return _context3.abrupt(\"return\", studyData);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n\nfunction RetrieveMetadata(_x7, _x8) {\n return _RetrieveMetadata.apply(this, arguments);\n}\n\nfunction _RetrieveMetadata() {\n _RetrieveMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee4(server, studyInstanceUid) {\n var config, dicomWeb, options;\n return regenerator.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n config = {\n url: server.wadoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n options = {\n studyInstanceUID: studyInstanceUid\n };\n return _context4.abrupt(\"return\", dicomWeb.retrieveStudyMetadata(options).then(function (result) {\n return resultDataToStudyMetadata$1(server, studyInstanceUid, result);\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n return _RetrieveMetadata.apply(this, arguments);\n}\n\n// DICOMWeb instance, study, and metadata retrieval\nvar WADO = {\n RetrieveMetadata: RetrieveMetadata\n};\nvar QIDO = {\n Studies: Studies,\n Instances: Instances\n};\n\nvar log$1 = {\n error: console.error,\n warn: console.warn,\n info: console.log,\n debug: console.debug,\n time: console.time,\n timeEnd: console.timeEnd\n};\n\n// promises and prevent unnecessary subsequent calls to the server\n\nvar StudyMetaDataPromises = new Map();\n/**\n * Delete the cached study metadata retrieval promise to ensure that the browser will\n * re-retrieve the study metadata when it is next requested\n *\n * @param {String} studyInstanceUid The UID of the Study to be removed from cache\n *\n */\n\nfunction deleteStudyMetadataPromise(studyInstanceUid) {\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n StudyMetaDataPromises.delete(studyInstanceUid);\n }\n}\n/**\n * Retrieves study metadata using a server call\n *\n * @param {String} studyInstanceUid The UID of the Study to be retrieved\n * @returns {Promise} that will be resolved with the metadata or rejected with the error\n */\n\nfunction retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids) {\n // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all\n // and further requests for that metadata will always fail. On failure, we probably need to remove the\n // corresponding promise from the \"StudyMetaDataPromises\" map...\n // If the StudyMetaDataPromises cache already has a pending or resolved promise related to the\n // given studyInstanceUid, then that promise is returned\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n return StudyMetaDataPromises.get(studyInstanceUid);\n }\n\n var seriesKeys = Array.isArray(seriesInstanceUids) ? '|' + seriesInstanceUids.join('|') : '';\n var timingKey = \"retrieveStudyMetadata[\".concat(studyInstanceUid).concat(seriesKeys, \"]\");\n log$1.time(timingKey); // Create a promise to handle the data retrieval\n\n var promise = new Promise(function (resolve, reject) {\n // If no study metadata is in the cache variable, we need to retrieve it from\n // the server with a call.\n if (server.type === 'dicomWeb' && server.requestOptions.requestFromBrowser === true) {\n RetrieveMetadata(server, studyInstanceUid).then(function (data) {\n resolve(data);\n }, reject);\n }\n }); // Store the promise in cache\n\n StudyMetaDataPromises.set(studyInstanceUid, promise);\n return promise;\n}\n\n/**\n * Constants\n */\nvar STRING$1 = 'string';\nvar NUMBER$1 = 'number';\nvar FUNCTION = 'function';\nvar OBJECT = 'object';\n/**\n * Class Definition\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor and Instance Methods\n */\n function Metadata(data, uid) {\n _classCallCheck(this, Metadata);\n\n // Define the main \"_data\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n Object.defineProperty(this, '_data', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: data\n }); // Define the main \"_uid\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_uid', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: uid\n }); // Define \"_custom\" properties as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_custom', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n });\n }\n\n _createClass(Metadata, [{\n key: \"getData\",\n value: function getData() {\n return this._data;\n }\n }, {\n key: \"getDataProperty\",\n value: function getDataProperty(propertyName) {\n var propertyValue;\n var _data = this._data;\n\n if (_data instanceof Object || _typeof(_data) === OBJECT && _data !== null) {\n propertyValue = _data[propertyName];\n }\n\n return propertyValue;\n }\n /**\n * Get unique object ID\n */\n\n }, {\n key: \"getObjectID\",\n value: function getObjectID() {\n return this._uid;\n }\n /**\n * Set custom attribute value\n * @param {String} attribute Custom attribute name\n * @param {Any} value Custom attribute value\n */\n\n }, {\n key: \"setCustomAttribute\",\n value: function setCustomAttribute(attribute, value) {\n this._custom[attribute] = value;\n }\n /**\n * Get custom attribute value\n * @param {String} attribute Custom attribute name\n * @return {Any} Custom attribute value\n */\n\n }, {\n key: \"getCustomAttribute\",\n value: function getCustomAttribute(attribute) {\n return this._custom[attribute];\n }\n /**\n * Check if a custom attribute exists\n * @param {String} attribute Custom attribute name\n * @return {Boolean} True if custom attribute exists or false if not\n */\n\n }, {\n key: \"customAttributeExists\",\n value: function customAttributeExists(attribute) {\n return attribute in this._custom;\n }\n /**\n * Set custom attributes in batch mode.\n * @param {Object} attributeMap An object whose own properties will be used as custom attributes.\n */\n\n }, {\n key: \"setCustomAttributes\",\n value: function setCustomAttributes(attributeMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _custom = this._custom;\n\n for (var attribute in attributeMap) {\n if (_hasOwn.call(attributeMap, attribute)) {\n _custom[attribute] = attributeMap[attribute];\n }\n }\n }\n /**\n * Static Methods\n */\n\n }], [{\n key: \"isValidUID\",\n value: function isValidUID(uid) {\n return _typeof(uid) === STRING$1 && uid.length > 0;\n }\n }, {\n key: \"isValidIndex\",\n value: function isValidIndex(index) {\n return _typeof(index) === NUMBER$1 && index >= 0 && (index | 0) === index;\n }\n }, {\n key: \"isValidCallback\",\n value: function isValidCallback(callback) {\n return _typeof(callback) === FUNCTION;\n }\n }]);\n\n return Metadata;\n}();\n\n// @TODO: improve this object\n\n/**\n * Objects to be used to throw errors\n */\nvar OHIFError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(OHIFError, _Error);\n\n function OHIFError(message) {\n var _this;\n\n _classCallCheck(this, OHIFError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFError).call(this));\n _this.message = message;\n _this.stack = new Error().stack;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return OHIFError;\n}(_wrapNativeSuper(Error));\n\n/**\n * ATTENTION! This class should never depend on StudyMetadata or SeriesMetadata classes as this could\n * possibly cause circular dependency issues.\n */\n\nvar UNDEFINED = 'undefined';\nvar STRING$2 = 'string';\nvar STUDY_INSTANCE_UID = 'x0020000d';\nvar SERIES_INSTANCE_UID = 'x0020000e';\nvar InstanceMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(InstanceMetadata, _Metadata);\n\n function InstanceMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, InstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InstanceMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _sopInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _imageId: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(InstanceMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.sopInstanceUID\n * Same as this.getSOPInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * sopInstanceCollection.findBy({\n * sopInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'sopInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSOPInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the StudyInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this.getTagValue(STUDY_INSTANCE_UID, null);\n }\n /**\n * Returns the SeriesInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this.getTagValue(SERIES_INSTANCE_UID, null);\n }\n /**\n * Returns the SOPInstanceUID of the current instance.\n */\n\n }, {\n key: \"getSOPInstanceUID\",\n value: function getSOPInstanceUID() {\n return this._sopInstanceUID;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getStringValue\",\n value: function getStringValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n\n if (_typeof(value) !== STRING$2 && _typeof(value) !== UNDEFINED) {\n value = value.toString();\n }\n\n return InstanceMetadata.getIndexedValue(value, index, defaultValue);\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getFloatValue\",\n value: function getFloatValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseFloat(value) : value;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getIntValue\",\n value: function getIntValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseInt(value) : value;\n }\n /**\n * @deprecated Please use getTagValue instead.\n */\n\n }, {\n key: \"getRawValue\",\n value: function getRawValue(tagOrProperty, defaultValue) {\n return this.getTagValue(tagOrProperty, defaultValue);\n }\n /**\n * This function should be overriden by specialized classes in order to allow client libraries or viewers to take advantage of the Study Metadata API.\n */\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('InstanceMetadata::getTagValue is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Compares the current instance with another one.\n * @param {InstanceMetadata} instance An instance of the InstanceMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same instance.\n */\n\n }, {\n key: \"equals\",\n value: function equals(instance) {\n var self = this;\n return instance === self || instance instanceof InstanceMetadata && instance.getSOPInstanceUID() === self.getSOPInstanceUID();\n }\n /**\n * Check if the tagOrProperty exists\n * @param {String} tagOrProperty tag or property be checked\n * @return {Boolean} True if the tag or property exists or false if doesn't\n */\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::tagExists is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Get custom image id of a sop instance\n * @return {Any} sop instance image id\n */\n\n }, {\n key: \"getImageId\",\n value: function getImageId(frame) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::getImageId is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Static Methods\n */\n\n /**\n * Get an value based that can be index based. This function is called by all getters. See above functions.\n * - If value is a String and has indexes:\n * - If undefined index: returns an array of the split values.\n * - If defined index:\n * - If invalid: returns defaultValue\n * - If valid: returns the indexed value\n * - If value is not a String, returns default value.\n */\n\n }], [{\n key: \"getIndexedValue\",\n value: function getIndexedValue(value, index, defaultValue) {\n var result = defaultValue;\n\n if (_typeof(value) === STRING$2) {\n var hasIndexValues = value.indexOf('\\\\') !== -1;\n result = value;\n\n if (hasIndexValues) {\n var splitValues = value.split('\\\\');\n\n if (Metadata.isValidIndex(index)) {\n var indexedValue = splitValues[index];\n result = _typeof(indexedValue) !== STRING$2 ? defaultValue : indexedValue;\n } else {\n result = splitValues;\n }\n }\n }\n\n return result;\n }\n }]);\n\n return InstanceMetadata;\n}(Metadata);\n\nvar SeriesMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(SeriesMetadata, _Metadata);\n\n function SeriesMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, SeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SeriesMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _seriesInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _instances: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(SeriesMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.seriesInstanceUID\n * Same as this.getSeriesInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * seriesCollection.findBy({\n * seriesInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSeriesInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the SeriesInstanceUID of the current series.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n /**\n * Append an instance to the current series.\n * @param {InstanceMetadata} instance The instance to be added to the current series.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addInstance\",\n value: function addInstance(instance) {\n var result = false;\n\n if (instance instanceof InstanceMetadata && this.getInstanceByUID(instance.getSOPInstanceUID()) === void 0) {\n this._instances.push(instance);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Get the first instance of the current series retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var found = this.getInstanceByIndex(0);\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n\n return instance;\n }\n /**\n * Find an instance by index.\n * @param {number} index An integer representing a list index.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByIndex\",\n value: function getInstanceByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._instances[index];\n }\n\n return found;\n }\n /**\n * Find an instance by SOPInstanceUID.\n * @param {string} uid An UID string.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByUID\",\n value: function getInstanceByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._instances.find(function (instance) {\n return instance.getSOPInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of instances within the current series.\n * @returns {number} The number of instances in the current series.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._instances.length;\n }\n /**\n * Invokes the supplied callback for each instance in the current series passing\n * two arguments: instance (an InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance in the series.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachInstance\",\n value: function forEachInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._instances.forEach(function (instance, index) {\n callback.call(null, instance, index);\n });\n }\n }\n /**\n * Find the index of an instance inside the series.\n * @param {InstanceMetadata} instance An instance of the SeriesMetadata class.\n * @returns {number} The index of the instance inside the series or -1 if not found.\n */\n\n }, {\n key: \"indexOfInstance\",\n value: function indexOfInstance(instance) {\n return this._instances.indexOf(instance);\n }\n /**\n * Search the associated instances using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._instances.find(function (instance, index) {\n return callback.call(null, instance, index);\n });\n }\n }\n /**\n * Compares the current series with another one.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same series.\n */\n\n }, {\n key: \"equals\",\n value: function equals(series) {\n var self = this;\n return series === self || series instanceof SeriesMetadata && series.getSeriesInstanceUID() === self.getSeriesInstanceUID();\n }\n }]);\n\n return SeriesMetadata;\n}(Metadata);\n\n/**\n * Create a random GUID\n *\n * @return {string}\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nvar OBJECT$1 = 'object';\n/**\n * This class defines an ImageSet object which will be used across the viewer. This object represents\n * a list of images that are associated by any arbitrary criteria being thus content agnostic. Besides the\n * main attributes (images and uid) it allows additional attributes to be appended to it (currently\n * indiscriminately, but this should be changed).\n */\n\nvar ImageSet =\n/*#__PURE__*/\nfunction () {\n function ImageSet(images) {\n _classCallCheck(this, ImageSet);\n\n if (Array.isArray(images) !== true) {\n throw new OHIFError('ImageSet expects an array of images');\n } // @property \"images\"\n\n\n Object.defineProperty(this, 'images', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: images\n }); // @property \"uid\"\n\n Object.defineProperty(this, 'uid', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: guid() // Unique ID of the instance\n\n });\n }\n\n _createClass(ImageSet, [{\n key: \"getUID\",\n value: function getUID() {\n return this.uid;\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this[attribute] = value;\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this[attribute];\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n if (_typeof(attributes) === OBJECT$1 && attributes !== null) {\n var imageSet = this,\n hasOwn = Object.prototype.hasOwnProperty;\n\n for (var attribute in attributes) {\n if (hasOwn.call(attributes, attribute)) {\n imageSet[attribute] = attributes[attribute];\n }\n }\n }\n }\n }, {\n key: \"getImage\",\n value: function getImage(index) {\n return this.images[index];\n }\n }, {\n key: \"sortBy\",\n value: function sortBy(sortingCallback) {\n return this.images.sort(sortingCallback);\n }\n }]);\n\n return ImageSet;\n}();\n\nvar StudyMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(StudyMetadata, _Metadata);\n\n function StudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, StudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _studyInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _displaySets: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstSeries: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(StudyMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.studyInstanceUID\n * Same as this.getStudyInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * studyCollection.findBy({\n * studyInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'studyInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getStudyInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Getter for displaySets\n * @return {Array} Array of display set object\n */\n\n }, {\n key: \"getDisplaySets\",\n value: function getDisplaySets() {\n return this._displaySets.slice();\n }\n /**\n * Set display sets\n * @param {Array} displaySets Array of display sets (ImageSet[])\n */\n\n }, {\n key: \"setDisplaySets\",\n value: function setDisplaySets(displaySets) {\n var _this2 = this;\n\n displaySets.forEach(function (displaySet) {\n return _this2.addDisplaySet(displaySet);\n });\n }\n /**\n * Add a single display set to the list\n * @param {Object} displaySet Display set object\n * @returns {boolean} True on success, false on failure.\n */\n\n }, {\n key: \"addDisplaySet\",\n value: function addDisplaySet(displaySet) {\n if (displaySet instanceof ImageSet) {\n this._displaySets.push(displaySet);\n\n return true;\n }\n\n return false;\n }\n /**\n * Invokes the supplied callback for each display set in the current study passing\n * two arguments: display set (a ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachDisplaySet\",\n value: function forEachDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._displaySets.forEach(function (displaySet, index) {\n callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Search the associated display sets using the supplied callback as criteria. The callback is passed\n * two arguments: display set (an ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"findDisplaySet\",\n value: function findDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._displaySets.find(function (displaySet, index) {\n return callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Retrieve the number of display sets within the current study.\n * @returns {number} The number of display sets in the current study.\n */\n\n }, {\n key: \"getDisplaySetCount\",\n value: function getDisplaySetCount() {\n return this._displaySets.length;\n }\n /**\n * Returns the StudyInstanceUID of the current study.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this._studyInstanceUID;\n }\n /**\n * Getter for series\n * @return {Array} Array of SeriesMetadata object\n */\n\n }, {\n key: \"getSeries\",\n value: function getSeries() {\n return this._series.slice();\n }\n /**\n * Append a series to the current study.\n * @param {SeriesMetadata} series The series to be added to the current study.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addSeries\",\n value: function addSeries(series) {\n var result = false;\n\n if (series instanceof SeriesMetadata && this.getSeriesByUID(series.getSeriesInstanceUID()) === void 0) {\n this._series.push(series);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Find a series by index.\n * @param {number} index An integer representing a list index.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByIndex\",\n value: function getSeriesByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._series[index];\n }\n\n return found;\n }\n /**\n * Find a series by SeriesInstanceUID.\n * @param {string} uid An UID string.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByUID\",\n value: function getSeriesByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._series.find(function (series) {\n return series.getSeriesInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of series within the current study.\n * @returns {number} The number of series in the current study.\n */\n\n }, {\n key: \"getSeriesCount\",\n value: function getSeriesCount() {\n return this._series.length;\n }\n /**\n * Retrieve the number of instances within the current study.\n * @returns {number} The number of instances in the current study.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._series.reduce(function (sum, series) {\n return sum + series.getInstanceCount();\n }, 0);\n }\n /**\n * Invokes the supplied callback for each series in the current study passing\n * two arguments: series (a SeriesMetadata instance) and index (the integer\n * index of the series within the current study)\n * @param {function} callback The callback function which will be invoked for each series instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachSeries\",\n value: function forEachSeries(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._series.forEach(function (series, index) {\n callback.call(null, series, index);\n });\n }\n }\n /**\n * Find the index of a series inside the study.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {number} The index of the series inside the study or -1 if not found.\n */\n\n }, {\n key: \"indexOfSeries\",\n value: function indexOfSeries(series) {\n return this._series.indexOf(series);\n }\n /**\n * It sorts the series based on display sets order. Each series must be an instance\n * of SeriesMetadata and each display sets must be an instance of ImageSet.\n * Useful example of usage:\n * Study data provided by backend does not sort series at all and client-side\n * needs series sorted by the same criteria used for sorting display sets.\n */\n\n }, {\n key: \"sortSeriesByDisplaySets\",\n value: function sortSeriesByDisplaySets() {\n var _this3 = this;\n\n // Object for mapping display sets' index by seriesInstanceUid\n var displaySetsMapping = {}; // Loop through each display set to create the mapping\n\n this.forEachDisplaySet(function (displaySet, index) {\n if (!(displaySet instanceof ImageSet)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets display set at index \".concat(index, \" is not an instance of ImageSet\"));\n } // In case of multiframe studies, just get the first index occurence\n\n\n if (displaySetsMapping[displaySet.seriesInstanceUid] === void 0) {\n displaySetsMapping[displaySet.seriesInstanceUid] = index;\n }\n }); // Clone of actual series\n\n var actualSeries = this.getSeries();\n actualSeries.forEach(function (series, index) {\n if (!(series instanceof SeriesMetadata)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets series at index \".concat(index, \" is not an instance of SeriesMetadata\"));\n } // Get the new series index\n\n\n var seriesIndex = displaySetsMapping[series.getSeriesInstanceUID()]; // Update the series object with the new series position\n\n _this3._series[seriesIndex] = series;\n });\n }\n /**\n * Compares the current study instance with another one.\n * @param {StudyMetadata} study An instance of the StudyMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same study.\n */\n\n }, {\n key: \"equals\",\n value: function equals(study) {\n var self = this;\n return study === self || study instanceof StudyMetadata && study.getStudyInstanceUID() === self.getStudyInstanceUID();\n }\n /**\n * Get the first series of the current study retaining a consistent result across multiple calls.\n * @return {SeriesMetadata} An instance of the SeriesMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstSeries\",\n value: function getFirstSeries() {\n var series = this._firstSeries;\n\n if (!(series instanceof SeriesMetadata)) {\n series = null;\n var found = this.getSeriesByIndex(0);\n\n if (found instanceof SeriesMetadata) {\n this._firstSeries = found;\n series = found;\n }\n }\n\n return series;\n }\n /**\n * Get the first instance of the current study retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var firstSeries = this.getFirstSeries();\n\n if (firstSeries instanceof SeriesMetadata) {\n var found = firstSeries.getFirstInstance();\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n }\n\n return instance;\n }\n /**\n * Search the associated series to find an specific instance using the supplied callback as criteria.\n * The callback is passed two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance instance.\n * @returns {Object} Result object containing series (SeriesMetadata) and instance (InstanceMetadata)\n * objects or an empty object if not found.\n */\n\n }, {\n key: \"findSeriesAndInstanceByInstance\",\n value: function findSeriesAndInstanceByInstance(callback) {\n var result;\n\n if (Metadata.isValidCallback(callback)) {\n var instance;\n\n var series = this._series.find(function (series) {\n instance = series.findInstance(callback);\n return instance instanceof InstanceMetadata;\n }); // No series found\n\n\n if (series instanceof SeriesMetadata) {\n result = {\n series: series,\n instance: instance\n };\n }\n }\n\n return result || {};\n }\n /**\n * Find series by instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {SeriesMetadata|undefined} If a series is found based on callback criteria it\n * returns a SeriesMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findSeriesByInstance\",\n value: function findSeriesByInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.series;\n }\n /**\n * Find an instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.instance;\n }\n }]);\n\n return StudyMetadata;\n}(Metadata);\n\nvar WadoRsMetaDataBuilder =\n/*#__PURE__*/\nfunction () {\n function WadoRsMetaDataBuilder() {\n _classCallCheck(this, WadoRsMetaDataBuilder);\n\n this.tags = {};\n }\n\n _createClass(WadoRsMetaDataBuilder, [{\n key: \"addTag\",\n value: function addTag(tag, value, multi) {\n this.tags[tag] = {\n tag: tag,\n value: value,\n multi: multi\n };\n return this;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var _this = this;\n\n var json = {};\n var keys = Object.keys(this.tags);\n keys.forEach(function (key) {\n if (!_this.tags.hasOwnProperty(key)) {\n return;\n }\n\n var tag = _this.tags[key];\n var multi = !!tag.multi;\n var value = tag.value;\n\n if (value == null || value.length === 1 && value[0] == null) {\n return;\n }\n\n if (typeof value === 'string' && multi) {\n value = value.split('\\\\');\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n json[key] = {\n Value: value\n };\n });\n return json;\n }\n }]);\n\n return WadoRsMetaDataBuilder;\n}();\n\nfunction getWADORSImageUrl(instance, frame) {\n var wadorsuri = instance.wadorsuri;\n\n if (!wadorsuri) {\n return;\n } // We need to sum 1 because WADO-RS frame number is 1-based\n\n\n frame = (frame || 0) + 1; // Replaces /frame/1 by /frame/{frame}\n\n wadorsuri = wadorsuri.replace(/(%2Fframes%2F)(\\d+)/, \"$1\".concat(frame));\n return wadorsuri;\n}\n/**\n * Obtain an imageId for Cornerstone based on the WADO-RS scheme\n *\n * @param {object} instanceMetada metadata object (InstanceMetadata)\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getWADORSImageId(instance, frame) {\n var uri = getWADORSImageUrl(instance, frame);\n\n if (!uri) {\n return;\n }\n\n return \"wadors:\".concat(uri);\n}\n\nfunction getRadiopharmaceuticalInfoMetaData(instance) {\n var radiopharmaceuticalInfo = instance.radiopharmaceuticalInfo;\n\n if (instance.modality !== 'PT' || !radiopharmaceuticalInfo) {\n return;\n }\n\n return new WadoRsMetaDataBuilder().addTag('00181072', radiopharmaceuticalInfo.radiopharmaceuticalStartTime).addTag('00181074', radiopharmaceuticalInfo.radionuclideTotalDose).addTag('00181075', radiopharmaceuticalInfo.radionuclideHalfLife).toJSON();\n}\n\nvar getWadoRsInstanceMetaData = function getWadoRsInstanceMetaData(study, series, instance) {\n return new WadoRsMetaDataBuilder().addTag('00080016', instance.sopClassUid).addTag('00080018', instance.sopInstanceUid).addTag('00080021', series.seriesDate).addTag('00080031', series.seriesTime).addTag('00080060', instance.modality).addTag('00101010', study.patientAge).addTag('00101020', study.patientSize).addTag('00101030', study.patientWeight).addTag('00180050', instance.sliceThickness).addTag('0020000e', series.seriesInstanceUid).addTag('00200011', series.seriesNumber).addTag('0020000d', study.studyInstanceUid).addTag('00200013', instance.instanceNumber).addTag('00200032', instance.imagePositionPatient, true).addTag('00200037', instance.imageOrientationPatient, true).addTag('00200052', instance.frameOfReferenceUID).addTag('00201041', instance.sliceLocation).addTag('00280002', instance.samplesPerPixel).addTag('00280004', instance.photometricInterpretation).addTag('00280006', instance.planarConfiguration).addTag('00280010', instance.rows).addTag('00280011', instance.columns).addTag('00280030', instance.pixelSpacing, true).addTag('00280034', instance.pixelAspectRatio, true).addTag('00280100', instance.bitsAllocated).addTag('00280101', instance.bitsStored).addTag('00280102', instance.highBit).addTag('00280103', instance.pixelRepresentation).addTag('00280106', instance.smallestPixelValue).addTag('00280107', instance.largestPixelValue).addTag('00281050', instance.windowCenter, true).addTag('00281051', instance.windowWidth, true).addTag('00281052', instance.rescaleIntercept).addTag('00281053', instance.rescaleSlope).addTag('00281054', instance.rescaleType).addTag('00281101', instance.redPaletteColorLookupTableDescriptor).addTag('00281102', instance.greenPaletteColorLookupTableDescriptor).addTag('00281103', instance.bluePaletteColorLookupTableDescriptor).addTag('00281201', instance.redPaletteColorLookupTableData).addTag('00281202', instance.greenPaletteColorLookupTableData).addTag('00281203', instance.bluePaletteColorLookupTableData).addTag('00540016', getRadiopharmaceuticalInfoMetaData(instance)).toJSON();\n};\n\nfunction updateMetaDataManager(study) {\n study.seriesList.forEach(function (series) {\n series.instances.forEach(function (instance) {\n // Cache just images that are going to be loaded via WADO-RS\n if (instance.imageRendering !== 'wadors' && instance.thumbnailRendering !== 'wadors') {\n return;\n }\n\n var metaData = getWadoRsInstanceMetaData(study, series, instance);\n var numberOfFrames = instance.numberOfFrames || 1; // We can share the same metaData with all frames because it doesn't have\n // any frame specific data, such as frameNumber, pixelData, offset, etc.\n // WADO-RS frame number is 1-based\n\n for (var frameNumber = 0; frameNumber < numberOfFrames; frameNumber++) {\n var imageId = getWADORSImageId(instance, frameNumber); // TODO Drop dependency on this\n\n external.cornerstoneWADOImageLoader.wadors.metaDataManager.add(imageId, metaData);\n }\n });\n });\n}\n\n/**\n * Retrieves metaData for multiple studies at once.\n *\n * This function calls retrieveStudyMetadata several times, asynchronously,\n * and waits for all of the results to be returned.\n *\n * @param studyInstanceUids The UIDs of the Studies to be retrieved\n * @return Promise\n */\n\nfunction retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids) {\n // Create an empty array to store the Promises for each metaData retrieval call\n var promises = []; // Loop through the array of studyInstanceUids\n\n studyInstanceUids.forEach(function (studyInstanceUid) {\n // Send the call and resolve or reject the related promise based on its outcome\n var promise = retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids); // Add the current promise to the array of promises\n\n promises.push(promise);\n }); // When all of the promises are complete, this callback runs\n\n var promise = Promise.all(promises); // Warn the error on console if some retrieval failed\n\n promise.catch(function (error) {\n return log$1.warn(error);\n });\n return promise;\n}\n\n/**\n * Overridable namespace to allow getting study boxes data externally.\n *\n * The function must handle the first parameter as a studyInformation object containing at least the\n * studyInstanceUid attribute.\n *\n * Shall return a promise that will be resolved with an object containing those attributes:\n * - studyInstanceUid {String}: copy of studyInformation.studyInstanceUid\n * - modalities {String}: 2 uppercase letters for each modality split by any non-alphabetical char(s)\n * - studyDate {String}: date formatted as YYYYMMDD\n * - studyDescription {String}: study description string\n */\n// TODO: What is this for?\nvar getStudyBoxData = false;\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString$1(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$2(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString$1(new Date(filter.studyDateFrom));\n var dateTo = dateToString$1(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies$1(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies$1(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$2(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies$1);\n}\n\nvar studySearchPromises = new Map();\n/**\n * Search for studies information by the given filter\n *\n * @param {Object} filter Filter that will be used on search\n * @returns {Promise} resolved with an array of studies information or rejected with an error\n */\n\nfunction searchStudies(server, filter) {\n var promiseKey = JSON.stringify(filter);\n\n if (studySearchPromises.has(promiseKey)) {\n return studySearchPromises.get(promiseKey);\n } else {\n var promise = Studies$1(server, filter);\n studySearchPromises.set(promiseKey, promise);\n return promise;\n }\n}\n\nvar studies = {\n services: {\n QIDO: QIDO,\n WADO: WADO\n },\n loadingDict: {},\n retrieveStudyMetadata: retrieveStudyMetadata,\n deleteStudyMetadataPromise: deleteStudyMetadataPromise,\n retrieveStudiesMetadata: retrieveStudiesMetadata,\n getStudyBoxData: getStudyBoxData,\n searchStudies: searchStudies\n};\n\nfunction isFunction(subject) {\n return typeof subject === 'function';\n}\n\nvar CommandsManager =\n/*#__PURE__*/\nfunction () {\n function CommandsManager() {\n _classCallCheck(this, CommandsManager);\n\n this.contexts = {}; // Enable reactivity by storing the last executed command\n //this.last = new ReactiveVar('');\n }\n\n _createClass(CommandsManager, [{\n key: \"getContext\",\n value: function getContext(contextName) {\n var context = this.contexts[contextName];\n\n if (!context) {\n return log$1.warn(\"No context found with name \\\"\".concat(contextName, \"\\\"\"));\n }\n\n return context;\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n var contextName = OHIF.context.get();\n\n if (!contextName) {\n return log$1.warn('There is no selected context');\n }\n\n return this.getContext(contextName);\n }\n }, {\n key: \"createContext\",\n value: function createContext(contextName) {\n if (!contextName) return;\n\n if (this.contexts[contextName]) {\n return this.clear(contextName);\n }\n\n this.contexts[contextName] = {};\n }\n }, {\n key: \"set\",\n value: function set(contextName, definitions) {\n var extend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (_typeof(definitions) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n\n if (!extend) {\n this.clear(contextName);\n }\n\n Object.keys(definitions).forEach(function (command) {\n return context[command] = definitions[command];\n });\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, definition) {\n if (_typeof(definition) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n context[command] = definition;\n }\n }, {\n key: \"setDisabledFunction\",\n value: function setDisabledFunction(contextName, command, func) {\n if (!command || typeof func !== 'function') return;\n var context = this.getContext(contextName);\n if (!context) return;\n var definition = context[command];\n\n if (!definition) {\n return log$1.warn(\"Trying to set a disabled function to a command \\\"\".concat(command, \"\\\" that was not yet defined\"));\n }\n\n definition.disabled = func;\n }\n }, {\n key: \"clear\",\n value: function clear(contextName) {\n if (!contextName) return;\n this.contexts[contextName] = {};\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition(command) {\n var context = this.getCurrentContext();\n if (!context) return;\n return context[command];\n }\n }, {\n key: \"isDisabled\",\n value: function isDisabled(command) {\n var definition = this.getDefinition(command);\n if (!definition) return false;\n var disabled = definition.disabled;\n if (isFunction(disabled) && disabled()) return true;\n if (!isFunction(disabled) && disabled) return true;\n return false;\n }\n }, {\n key: \"run\",\n value: function run(command) {\n var definition = this.getDefinition(command);\n\n if (!definition) {\n return log$1.warn(\"Command \\\"\".concat(command, \"\\\" not found in current context\"));\n }\n\n var action = definition.action,\n params = definition.params;\n if (this.isDisabled(command)) return;\n\n if (typeof action !== 'function') {\n return log$1.warn(\"No action was defined for command \\\"\".concat(command, \"\\\"\"));\n } else {\n var result = action(params);\n /*if (this.last.get() === command) {\n this.last.dep.changed();\n } else {\n this.last.set(command);\n }*/\n\n return result;\n }\n }\n }]);\n\n return CommandsManager;\n}();\n\nvar commands = new CommandsManager(); // Export relevant objects\n\nvar HotkeysContext =\n/*#__PURE__*/\nfunction () {\n function HotkeysContext(name, definitions, enabled) {\n _classCallCheck(this, HotkeysContext);\n\n this.name = name;\n this.definitions = Object.assign({}, definitions);\n this.enabled = enabled;\n }\n\n _createClass(HotkeysContext, [{\n key: \"extend\",\n value: function extend() {\n var _this = this;\n\n var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_typeof(definitions) !== 'object') return;\n this.definitions = Object.assign({}, definitions);\n Object.keys(definitions).forEach(function (command) {\n var hotkey = definitions[command];\n\n _this.unregister(command);\n\n if (hotkey) {\n _this.register(command, hotkey);\n }\n\n _this.definitions[command] = hotkey;\n });\n }\n }, {\n key: \"register\",\n value: function register(command, hotkey) {\n var _this2 = this;\n\n if (!hotkey) {\n return;\n }\n\n if (!command) {\n return log$1.warn(\"No command was defined for hotkey \\\"\".concat(hotkey, \"\\\"\"));\n }\n\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n var bind = function bind(hotkey) {\n return $(document).bind(bindingKey, hotkey, function (event) {\n if (!_this2.enabled.get()) return;\n OHIF.commands.run(command);\n event.preventDefault();\n });\n };\n\n if (hotkey instanceof Array) {\n hotkey.forEach(function (hotkey) {\n return bind(hotkey);\n });\n } else {\n bind(hotkey);\n }\n }\n }, {\n key: \"unregister\",\n value: function unregister(command) {\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n if (this.definitions[command]) {\n $(document).unbind(bindingKey);\n delete this.definitions[command];\n }\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n var _this3 = this;\n\n Object.keys(this.definitions).forEach(function (command) {\n var hotkey = _this3.definitions[command];\n\n _this3.register(command, hotkey);\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n $(document).unbind(\"keydown.hotkey.\".concat(this.name));\n }\n }]);\n\n return HotkeysContext;\n}();\n\nvar HotkeysManager =\n/*#__PURE__*/\nfunction () {\n function HotkeysManager() {\n _classCallCheck(this, HotkeysManager);\n\n this.contexts = {};\n this.defaults = {};\n this.currentContextName = null;\n this.enabled = true;\n this.retrieveFunction = null;\n this.storeFunction = null;\n }\n\n _createClass(HotkeysManager, [{\n key: \"setRetrieveFunction\",\n value: function setRetrieveFunction(retrieveFunction) {\n this.retrieveFunction = retrieveFunction;\n }\n }, {\n key: \"setStoreFunction\",\n value: function setStoreFunction(storeFunction) {\n this.storeFunction = storeFunction;\n }\n }, {\n key: \"store\",\n value: function store(contextName, definitions) {\n var _this = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this.storeFunction) {\n _this.storeFunction.call(_this, storageKey, definitions).then(resolve).catch(reject); //} else if (OHIF.user.userLoggedIn()) {\n // OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);\n\n } else {\n var definitionsJSON = JSON.stringify(definitions);\n localStorage.setItem(storageKey, definitionsJSON);\n resolve();\n }\n });\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(contextName) {\n var _this2 = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this2.retrieveFunction) {\n _this2.retrieveFunction(contextName).then(resolve).catch(reject);\n } else if (OHIF.user.userLoggedIn()) {\n try {\n resolve(OHIF.user.getData(storageKey));\n } catch (error) {\n reject(error);\n }\n } else {\n var definitionsJSON = localStorage.getItem(storageKey) || '';\n var definitions = JSON.parse(definitionsJSON) || undefined;\n resolve(definitions);\n }\n });\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled.set(false);\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.enabled.set(true);\n }\n }, {\n key: \"getContext\",\n value: function getContext(contextName) {\n return this.contexts[contextName];\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n return this.getContext(this.currentContextName);\n }\n }, {\n key: \"load\",\n value: function load(contextName) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var context = _this3.getContext(contextName);\n\n if (!context) return reject();\n\n _this3.retrieve(contextName).then(function (defs) {\n var definitions = defs || _this3.defaults[contextName];\n\n if (!definitions) {\n _this3.changeObserver.changed();\n\n return reject();\n }\n\n context.destroy();\n context.definitions = definitions;\n context.initialize();\n\n _this3.changeObserver.changed();\n\n resolve(definitions);\n }).catch(reject);\n });\n }\n }, {\n key: \"set\",\n value: function set(contextName, contextDefinitions) {\n var isDefaultDefinitions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var enabled = this.enabled;\n var context = new HotkeysContext(contextName, contextDefinitions, enabled);\n var currentContext = this.getCurrentContext();\n\n if (currentContext && currentContext.name === contextName) {\n currentContext.destroy();\n context.initialize();\n }\n\n this.contexts[contextName] = context;\n\n if (isDefaultDefinitions) {\n this.defaults[contextName] = contextDefinitions;\n }\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, hotkey) {\n if (!command || !hotkey) return;\n var context = this.getContext(contextName);\n\n if (!context) {\n this.set(contextName, {});\n }\n\n context.register(command, hotkey);\n }\n }, {\n key: \"unsetContext\",\n value: function unsetContext(contextName) {\n if (contextName === this.currentContextName) {\n this.getCurrentContext().destroy();\n }\n\n delete this.contexts[contextName];\n delete this.defaults[contextName];\n }\n }, {\n key: \"resetDefaults\",\n value: function resetDefaults(contextName) {\n var context = this.getContext(contextName);\n var definitions = this.defaults[contextName];\n if (!context || !definitions) return;\n context.extend(definitions);\n return this.store(contextName, definitions);\n }\n }, {\n key: \"switchToContext\",\n value: function switchToContext(contextName) {\n var currentContext = this.getCurrentContext();\n\n if (currentContext) {\n currentContext.destroy();\n }\n\n var newContext = this.contexts[contextName];\n if (!newContext) return;\n this.currentContextName = contextName;\n newContext.initialize();\n this.load(contextName).catch(function () {});\n }\n }]);\n\n return HotkeysManager;\n}();\n\n//import 'jquery.hotkeys';\n// Create hotkeys namespace using a HotkeysManager class instance\n\nvar hotkeys = new HotkeysManager(); // Export relevant objects\n\nvar FUNCTION$1 = 'function';\nvar STRING$3 = 'string';\nvar WILDCARD = '*'; // \"*\" is a special name which means \"all children\".\n\nvar SEPARATOR = '.';\n/**\n * Main Namespace Component Class\n */\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n function Node() {\n _classCallCheck(this, Node);\n\n this.value = 0;\n this.children = {};\n this.handlers = {};\n }\n\n _createClass(Node, [{\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return _typeof(path) === STRING$3 ? path.split(SEPARATOR) : null;\n }\n }, {\n key: \"getNodeUpToIndex\",\n value: function getNodeUpToIndex(path, index) {\n var node = this;\n\n for (var i = 0; i < index; ++i) {\n var item = path[i];\n\n if (node.children.hasOwnProperty(item)) {\n node = node.children[item];\n } else {\n node = null;\n break;\n }\n }\n\n return node;\n }\n }, {\n key: \"append\",\n value: function append(name, value) {\n var children = this.children;\n var node = null;\n\n if (children.hasOwnProperty(name)) {\n node = children[name];\n } else if (_typeof(name) === STRING$3 && name !== WILDCARD) {\n node = new Node();\n children[name] = node;\n }\n\n if (node !== null) {\n node.value += value > 0 ? parseInt(value) : 0;\n }\n\n return node;\n }\n }, {\n key: \"probe\",\n value: function probe(recursively) {\n var value = this.value; // Calculate entire tree value recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"clear\",\n value: function clear(recursively) {\n this.value = 0; // Clear entire tree recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n }\n }\n }, {\n key: \"appendPath\",\n value: function appendPath(path, value) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this;\n\n for (var i = 0; i < last; ++i) {\n node = node.append(path[i], 0);\n\n if (node === null) {\n return false;\n }\n }\n\n return node.append(path[last], value) !== null;\n }\n\n return false;\n }\n }, {\n key: \"clearPath\",\n value: function clearPath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n node.children[item].clear(recursively);\n return true;\n }\n } else {\n var children = node.children;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"probePath\",\n value: function probePath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n return node.children[item].probe(recursively);\n }\n } else {\n var children = node.children;\n var value = 0;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n\n return value;\n }\n }\n }\n\n return 0;\n }\n }, {\n key: \"attachHandler\",\n value: function attachHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n var list = handlers.hasOwnProperty(type) ? handlers[type] : handlers[type] = [];\n var length = list.length;\n var notFound = true;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n notFound = false;\n break;\n }\n }\n\n if (notFound) {\n list[length] = handler;\n result = true;\n }\n }\n\n return result;\n }\n }, {\n key: \"removeHandler\",\n value: function removeHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n list.splice(i, 1);\n result = true;\n break;\n }\n }\n }\n }\n\n return result;\n }\n }, {\n key: \"trigger\",\n value: function trigger(type, nonRecursively) {\n if (_typeof(type) === STRING$3) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n list[i].call(null);\n }\n }\n\n if (nonRecursively !== true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].trigger(type);\n }\n }\n }\n }\n }\n }, {\n key: \"attachHandlerForPath\",\n value: function attachHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.attachHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"removeHandlerForPath\",\n value: function removeHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.removeHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"triggerHandlersForPath\",\n value: function triggerHandlersForPath(path, type, nonRecursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n node.trigger(type, nonRecursively);\n }\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * Root Namespace Node and API\n */\n\n\nvar rootNode = new Node();\n\nfunction handleError(error) {\n var title = error.title,\n message = error.message;\n\n if (!title) {\n if (error instanceof Error) {\n title = error.name;\n }\n }\n\n if (!message) {\n if (error instanceof Error) {\n message = error.message;\n }\n }\n\n var data = Object.assign({\n title: title,\n message: message,\n class: 'themed',\n hideConfirm: true,\n cancelLabel: 'Dismiss',\n cancelClass: 'btn-secondary'\n }, error || {});\n log$1.error(error); // TODO: Find a better way to handle errors instead of displaying a dialog for all of them.\n // OHIF.ui.showDialog('dialogForm', data);\n}\n\n/**\n * Check if the pressed key combination will result in a character input\n * Got from https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n *\n * @returns {Boolean} Whether the pressed key combination will input a character or not\n */\nfunction isCharacterKeyPress(event) {\n if (typeof event.which === 'undefined') {\n // This is IE, which only fires keypress events for printable keys\n return true;\n } else if (typeof event.which === 'number' && event.which > 0) {\n // In other browsers except old versions of WebKit, event.which is\n // only greater than zero if the keypress is a printable key.\n // We need to filter out backspace and ctrl/alt/meta key combinations\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8;\n }\n\n return false;\n}\n\n/**\n * Get the offset for the given element\n *\n * @param {Object} element DOM element which will have the offser calculated\n * @returns {Object} Object containing the top and left offset\n */\nfunction getOffset(element) {\n var top = 0;\n var left = 0;\n\n if (element.offsetParent) {\n do {\n left += element.offsetLeft;\n top += element.offsetTop;\n } while (element = element.offsetParent);\n }\n\n return {\n left: left,\n top: top\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar ui = {\n getScrollbarSize: getScrollbarSize,\n getOffset: getOffset,\n isCharacterKeyPress: isCharacterKeyPress,\n handleError: handleError\n};\n\n//import Dropdown from './ui/dropdown/class.js';\n\n/*\n * Defines the base OHIF header object\n */\n//const dropdown = new OHIF.ui.Dropdown();\nvar header = {};\n\nvar ObjectPath =\n/*#__PURE__*/\nfunction () {\n function ObjectPath() {\n _classCallCheck(this, ObjectPath);\n }\n\n _createClass(ObjectPath, null, [{\n key: \"set\",\n\n /**\n * Set an object property based on \"path\" (namespace) supplied creating\n * ... intermediary objects if they do not exist.\n * @param object {Object} An object where the properties specified on path should be set.\n * @param path {String} A string representing the property to be set, e.g. \"user.study.series.timepoint\".\n * @param value {Any} The value of the property that will be set.\n * @return {Boolean} Returns \"true\" on success, \"false\" if any intermediate component of the supplied path\n * ... is not a valid Object, in which case the property cannot be set. No excpetions are thrown.\n */\n value: function set(object, path, value) {\n var components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0,\n result = false;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n\n if (field in currentObject) {\n if (!ObjectPath.isValidObject(currentObject[field])) {\n break;\n }\n } else {\n currentObject[field] = {};\n }\n\n currentObject = currentObject[field];\n i++;\n }\n\n if (i === last) {\n currentObject[components[last]] = value;\n result = true;\n }\n }\n\n return result;\n }\n /**\n * Get an object property based on \"path\" (namespace) supplied traversing the object\n * ... tree as necessary.\n * @param object {Object} An object where the properties specified might exist.\n * @param path {String} A string representing the property to be searched for, e.g. \"user.study.series.timepoint\".\n * @return {Any} The value of the property if found. By default, returns the special type \"undefined\".\n */\n\n }, {\n key: \"get\",\n value: function get(object, path) {\n var found,\n // undefined by default\n components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n var isValid = ObjectPath.isValidObject(currentObject[field]);\n\n if (field in currentObject && isValid) {\n currentObject = currentObject[field];\n i++;\n } else {\n break;\n }\n }\n\n if (i === last && components[last] in currentObject) {\n found = currentObject[components[last]];\n }\n }\n\n return found;\n }\n /**\n * Check if the supplied argument is a real JavaScript Object instance.\n * @param object {Any} The subject to be tested.\n * @return {Boolean} Returns \"true\" if the object is a real Object instance and \"false\" otherwise.\n */\n\n }, {\n key: \"isValidObject\",\n value: function isValidObject(object) {\n return _typeof(object) === 'object' && object !== null && object instanceof Object;\n }\n }, {\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return typeof path === 'string' ? path.split('.') : null;\n }\n }]);\n\n return ObjectPath;\n}();\n\nfunction absoluteUrl(path) {\n var absolutePath = '/'; // TODO: Find another way to get root url\n\n var absoluteUrl = window.location.origin;\n var absoluteUrlParts = absoluteUrl.split('/');\n\n if (absoluteUrlParts.length > 4) {\n var rootUrlPrefixIndex = absoluteUrl.indexOf(absoluteUrlParts[3]);\n absolutePath += absoluteUrl.substring(rootUrlPrefixIndex) + path;\n } else {\n absolutePath += path;\n }\n\n return absolutePath.replace(/\\/\\/+/g, '/');\n}\n\n// TODO: figure out where else to put this function\nfunction addServers(servers, store) {\n Object.keys(servers).forEach(function (serverType) {\n var endpoints = servers[serverType];\n endpoints.forEach(function (endpoint) {\n var server = Object.assign({}, endpoint);\n server.type = serverType;\n store.dispatch({\n type: 'ADD_SERVER',\n server: server\n });\n });\n });\n}\n\n// Return the array sorting function for its object's properties\nfunction sortBy() {\n var fields = [].slice.call(arguments),\n n_fields = fields.length;\n return function (A, B) {\n var a, b, field, key, reverse, result, i;\n\n for (i = 0; i < n_fields; i++) {\n result = 0;\n field = fields[i];\n key = typeof field === 'string' ? field : field.name;\n a = A[key];\n b = B[key];\n\n if (typeof field.primer !== 'undefined') {\n a = field.primer(a);\n b = field.primer(b);\n }\n\n reverse = field.reverse ? -1 : 1;\n\n if (a < b) {\n result = reverse * -1;\n }\n\n if (a > b) {\n result = reverse * 1;\n }\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n };\n}\n\n/* jshint -W060 */\nfunction writeScript(fileName, callback) {\n var script = document.createElement('script');\n script.src = absoluteUrl(fileName);\n\n script.onload = function () {\n if (typeof callback === 'function') {\n callback(script);\n }\n };\n\n document.body.appendChild(script);\n}\n\nfunction updateQueryStringParameter(uri, key, value) {\n var regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n\n if (uri.match(regex)) {\n return uri.replace(regex, '$1' + key + '=' + value + '$2');\n } else {\n return uri + separator + key + '=' + value;\n }\n}\n/**\n * Obtain an imageId for Cornerstone from an image instance\n *\n * @param instance\n * @param frame\n * @param thumbnail\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getImageId(instance, frame) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!instance) {\n return;\n }\n\n if (typeof instance.getImageId === 'function') {\n return instance.getImageId();\n }\n\n if (instance.url) {\n if (frame !== undefined) {\n instance.url = updateQueryStringParameter(instance.url, 'frame', frame);\n }\n\n return instance.url;\n }\n\n var renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';\n\n if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {\n var imageId = 'dicomweb:' + instance.wadouri;\n\n if (frame !== undefined) {\n imageId += '&frame=' + frame;\n }\n\n return imageId;\n } else {\n return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame\n }\n}\n\nvar stackMap = {};\nvar configuration = {};\nvar stackManagerMetaDataProvider;\nvar stackUpdatedCallbacks = [];\n/**\n * Loop through the current series and add metadata to the\n * Cornerstone meta data provider. This will be used to fill information\n * into the viewport overlays, and to calculate reference lines and orientation markers\n * @param {Object} stackMap stackMap object\n * @param {Object} study Study object\n * @param {Object} displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n\nfunction createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, metadataProvider) {\n var numImages = displaySet.images.length;\n var imageIds = [];\n var imageId;\n displaySet.images.forEach(function (instance, imageIndex) {\n var image = instance.getData();\n var metaData = {\n instance: image,\n // in this context, instance will be the data of the InstanceMetadata object...\n series: displaySet,\n // TODO: Check this\n study: study,\n numImages: numImages,\n imageIndex: imageIndex + 1\n };\n var numberOfFrames = image.numberOfFrames;\n\n if (numberOfFrames > 1) {\n OHIF.log.info('Multiframe image detected');\n\n for (var i = 0; i < numberOfFrames; i++) {\n metaData.frameNumber = i;\n imageId = getImageId(image, i);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n } else {\n metaData.frameNumber = 1;\n imageId = getImageId(image);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n });\n var stack = {\n studyInstanceUid: study.studyInstanceUid,\n displaySetInstanceUid: displaySet.displaySetInstanceUid,\n imageIds: imageIds,\n frameRate: displaySet.frameRate,\n isClip: displaySet.isClip\n };\n stackMap[displaySet.displaySetInstanceUid] = stack;\n return stack;\n}\n\nconfiguration = {\n createAndAddStack: createAndAddStack\n};\n/**\n * This object contains all the functions needed for interacting with the stack manager.\n * Generally, findStack is the only function used. If you want to know when new stacks\n * come in, you can register a callback with addStackUpdatedCallback.\n */\n\nvar StackManager = {\n setMetadataProvider: function setMetadataProvider(provider) {\n stackManagerMetaDataProvider = provider;\n },\n\n /**\n * Removes all current stacks\n */\n clearStacks: function clearStacks() {\n stackMap = {};\n },\n\n /**\n * Create a stack from an image set, as well as add in the metadata on a per image bases.\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n makeAndAddStack: function makeAndAddStack(study, displaySet) {\n if (!stackManagerMetaDataProvider) {\n throw new Error('Please call StackManager.setMetadataProvider(provider) first.');\n }\n\n return configuration.createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, stackManagerMetaDataProvider);\n },\n\n /**\n * Find a stack from the currently created stacks.\n * @param displaySetInstanceUid The UID of the stack to find.\n * @returns {*} undefined if not found, otherwise the stack object is returned.\n */\n findStack: function findStack(displaySetInstanceUid) {\n return stackMap[displaySetInstanceUid];\n },\n\n /**\n * Find a stack or reate one if it has not been created yet\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n findOrCreateStack: function findOrCreateStack(study, displaySet) {\n var stack = this.findStack(displaySet.displaySetInstanceUid);\n\n if (!stack || !stack.imageIds) {\n stack = this.makeAndAddStack(study, displaySet);\n }\n\n return stack;\n },\n\n /**\n * Gets the underlying map of displaySetInstanceUid to stack object.\n * WARNING: Do not change this object. It directly affects the manager.\n * @returns {{}} map of displaySetInstanceUid -> stack.\n */\n getAllStacks: function getAllStacks() {\n return stackMap;\n },\n\n /**\n * Adds in a callback to be called on a stack being added / updated.\n * @param callback must accept at minimum one argument,\n * which is the stack that was added / updated.\n */\n addStackUpdatedCallback: function addStackUpdatedCallback(callback) {\n if (typeof callback !== 'function') {\n throw new OHIFError('callback must be provided as a function');\n }\n\n stackUpdatedCallbacks.push(callback);\n },\n\n /**\n * Return configuration\n */\n getConfiguration: function getConfiguration() {\n return configuration;\n },\n\n /**\n * Set configuration, in order to provide compatibility\n * with other systems by overriding this functions\n * @param {Object} config object with functions to be overrided\n *\n * For now, only makeAndAddStack can be overrided\n */\n setConfiguration: function setConfiguration(config) {\n configuration = config;\n }\n};\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar sopClassDictionary = {\n ComputedRadiographyImageStorage: '1.2.840.10008.5.1.4.1.1.1',\n DigitalXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.1',\n DigitalXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.1.1',\n DigitalMammographyXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.2',\n DigitalMammographyXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.2.1',\n DigitalIntraOralXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.3',\n DigitalIntraOralXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.3.1',\n CTImageStorage: '1.2.840.10008.5.1.4.1.1.2',\n EnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.1',\n LegacyConvertedEnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.2',\n UltrasoundMultiframeImageStorage: '1.2.840.10008.5.1.4.1.1.3.1',\n MRImageStorage: '1.2.840.10008.5.1.4.1.1.4',\n EnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.1',\n MRSpectroscopyStorage: '1.2.840.10008.5.1.4.1.1.4.2',\n EnhancedMRColorImageStorage: '1.2.840.10008.5.1.4.1.1.4.3',\n LegacyConvertedEnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.4',\n UltrasoundImageStorage: '1.2.840.10008.5.1.4.1.1.6.1',\n EnhancedUSVolumeStorage: '1.2.840.10008.5.1.4.1.1.6.2',\n SecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7',\n MultiframeSingleBitSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.1',\n MultiframeGrayscaleByteSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.2',\n MultiframeGrayscaleWordSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.3',\n MultiframeTrueColorSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.4',\n Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1',\n GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2',\n AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3',\n HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1',\n CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.3.1',\n BasicVoiceAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.1',\n GeneralAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.2',\n ArterialPulseWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.5.1',\n RespiratoryWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.6.1',\n GrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.1',\n ColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.2',\n PseudoColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.3',\n BlendingSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.4',\n XAXRFGrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.5',\n XRayAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.12.1',\n EnhancedXAImageStorage: '1.2.840.10008.5.1.4.1.1.12.1.1',\n XRayRadiofluoroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.12.2',\n EnhancedXRFImageStorage: '1.2.840.10008.5.1.4.1.1.12.2.1',\n XRay3DAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.1',\n XRay3DCraniofacialImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.2',\n BreastTomosynthesisImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.3',\n BreastProjectionXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.13.1.4',\n BreastProjectionXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.13.1.5',\n IntravascularOpticalCoherenceTomographyImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.14.1',\n IntravascularOpticalCoherenceTomographyImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.14.2',\n NuclearMedicineImageStorage: '1.2.840.10008.5.1.4.1.1.20',\n RawDataStorage: '1.2.840.10008.5.1.4.1.1.66',\n SpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.1',\n SpatialFiducialsStorage: '1.2.840.10008.5.1.4.1.1.66.2',\n DeformableSpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.3',\n SegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.4',\n SurfaceSegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.5',\n RealWorldValueMappingStorage: '1.2.840.10008.5.1.4.1.1.67',\n SurfaceScanMeshStorage: '1.2.840.10008.5.1.4.1.1.68.1',\n SurfaceScanPointCloudStorage: '1.2.840.10008.5.1.4.1.1.68.2',\n VLEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1',\n VideoEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1.1',\n VLMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2',\n VideoMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2.1',\n VLSlideCoordinatesMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.3',\n VLPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4',\n VideoPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4.1',\n OphthalmicPhotography8BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.1',\n OphthalmicPhotography16BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.2',\n StereometricRelationshipStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.3',\n OphthalmicTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.4',\n VLWholeSlideMicroscopyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.6',\n LensometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.1',\n AutorefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.2',\n KeratometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.3',\n SubjectiveRefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.4',\n VisualAcuityMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.5',\n SpectaclePrescriptionReportStorage: '1.2.840.10008.5.1.4.1.1.78.6',\n OphthalmicAxialMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.7',\n IntraocularLensCalculationsStorage: '1.2.840.10008.5.1.4.1.1.78.8',\n MacularGridThicknessandVolumeReport: '1.2.840.10008.5.1.4.1.1.79.1',\n OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.80.1',\n OphthalmicThicknessMapStorage: '1.2.840.10008.5.1.4.1.1.81.1',\n CornealTopographyMapStorage: '1.2.840.10008.5.1.4.1.1.82.1',\n BasicTextSR: '1.2.840.10008.5.1.4.1.1.88.11',\n EnhancedSR: '1.2.840.10008.5.1.4.1.1.88.22',\n ComprehensiveSR: '1.2.840.10008.5.1.4.1.1.88.33',\n Comprehensive3DSR: '1.2.840.10008.5.1.4.1.1.88.34',\n ProcedureLog: '1.2.840.10008.5.1.4.1.1.88.40',\n MammographyCADSR: '1.2.840.10008.5.1.4.1.1.88.50',\n KeyObjectSelection: '1.2.840.10008.5.1.4.1.1.88.59',\n ChestCADSR: '1.2.840.10008.5.1.4.1.1.88.65',\n XRayRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.67',\n RadiopharmaceuticalRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.68',\n ColonCADSR: '1.2.840.10008.5.1.4.1.1.88.69',\n ImplantationPlanSRDocumentStorage: '1.2.840.10008.5.1.4.1.1.88.70',\n EncapsulatedPDFStorage: '1.2.840.10008.5.1.4.1.1.104.1',\n EncapsulatedCDAStorage: '1.2.840.10008.5.1.4.1.1.104.2',\n PositronEmissionTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.128',\n EnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.130',\n LegacyConvertedEnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.128.1',\n BasicStructuredDisplayStorage: '1.2.840.10008.5.1.4.1.1.131',\n RTImageStorage: '1.2.840.10008.5.1.4.1.1.481.1',\n RTDoseStorage: '1.2.840.10008.5.1.4.1.1.481.2',\n RTStructureSetStorage: '1.2.840.10008.5.1.4.1.1.481.3',\n RTBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.4',\n RTPlanStorage: '1.2.840.10008.5.1.4.1.1.481.5',\n RTBrachyTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.6',\n RTTreatmentSummaryRecordStorage: '1.2.840.10008.5.1.4.1.1.481.7',\n RTIonPlanStorage: '1.2.840.10008.5.1.4.1.1.481.8',\n RTIonBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.9',\n RTBeamsDeliveryInstructionStorage: '1.2.840.10008.5.1.4.34.7',\n GenericImplantTemplateStorage: '1.2.840.10008.5.1.4.43.1',\n ImplantAssemblyTemplateStorage: '1.2.840.10008.5.1.4.44.1',\n ImplantTemplateGroupStorage: '1.2.840.10008.5.1.4.45.1'\n};\n\n/**\n * Checks whether dicom files with specified SOP Class UID have image data\n * @param {string} sopClassUid - SOP Class UID to be checked\n * @returns {boolean} - true if it has image data\n */\n\nfunction isImage(sopClassUid) {\n if (sopClassUid === sopClassDictionary.ComputedRadiographyImageStorage || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.CTImageStorage || sopClassUid === sopClassDictionary.EnhancedCTImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedCTImageStorage || sopClassUid === sopClassDictionary.UltrasoundMultiframeImageStorage || sopClassUid === sopClassDictionary.MRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRColorImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedMRImageStorage || sopClassUid === sopClassDictionary.UltrasoundImageStorage || sopClassUid === sopClassDictionary.SecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.XRayAngiographicImageStorage || sopClassUid === sopClassDictionary.EnhancedXAImageStorage || sopClassUid === sopClassDictionary.XRayRadiofluoroscopicImageStorage || sopClassUid === sopClassDictionary.EnhancedXRFImageStorage || sopClassUid === sopClassDictionary.XRay3DAngiographicImageStorage || sopClassUid === sopClassDictionary.XRay3DCraniofacialImageStorage || sopClassUid === sopClassDictionary.BreastTomosynthesisImageStorage || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing || sopClassUid === sopClassDictionary.NuclearMedicineImageStorage || sopClassUid === sopClassDictionary.VLEndoscopicImageStorage || sopClassUid === sopClassDictionary.VideoEndoscopicImageStorage || sopClassUid === sopClassDictionary.VLMicroscopicImageStorage || sopClassUid === sopClassDictionary.VideoMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLPhotographicImageStorage || sopClassUid === sopClassDictionary.VideoPhotographicImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography8BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography16BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicTomographyImageStorage || sopClassUid === sopClassDictionary.VLWholeSlideMicroscopyImageStorage || sopClassUid === sopClassDictionary.PositronEmissionTomographyImageStorage || sopClassUid === sopClassDictionary.EnhancedPETImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedPETImageStorage || sopClassUid === sopClassDictionary.RTImageStorage) {\n return true;\n }\n\n return false;\n}\n\nvar isMultiFrame = function isMultiFrame(instance) {\n // NumberOfFrames (0028,0008)\n return instance.getRawValue('x00280008') > 1;\n};\n\nvar makeDisplaySet = function makeDisplaySet(series, instances) {\n var instance = instances[0];\n var imageSet = new ImageSet(instances);\n var seriesData = series.getData(); // set appropriate attributes to image set...\n\n imageSet.setAttributes({\n displaySetInstanceUid: imageSet.uid,\n // create a local alias for the imageSet UID\n seriesDate: seriesData.seriesDate,\n seriesTime: seriesData.seriesTime,\n seriesInstanceUid: series.getSeriesInstanceUID(),\n seriesNumber: instance.getRawValue('x00200011'),\n seriesDescription: instance.getRawValue('x0008103e'),\n numImageFrames: instances.length,\n frameRate: instance.getRawValue('x00181063'),\n modality: instance.getRawValue('x00080060'),\n isMultiFrame: isMultiFrame(instance)\n }); // Sort the images in this series if needed\n\n {\n imageSet.sortBy(function (a, b) {\n // Sort by InstanceNumber (0020,0013)\n return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0);\n });\n } // Include the first image instance number (after sorted)\n\n\n imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));\n return imageSet;\n};\n\nvar isSingleImageModality = function isSingleImageModality(modality) {\n return modality === 'CR' || modality === 'MG' || modality === 'DX';\n};\n/**\n * Creates a set of series to be placed in the Study Metadata\n * The series that appear in the Study Metadata must represent\n * imaging modalities.\n *\n * Furthermore, for drag/drop functionality,\n * it is easiest if the stack objects also contain information about\n * which study they are linked to.\n *\n * @param study The study instance metadata to be used\n * @returns {Array} An array of series to be placed in the Study Metadata\n */\n\n\nfunction createStacks(study) {\n // Define an empty array of display sets\n var displaySets = [];\n\n if (!study || !study.getSeriesCount()) {\n return displaySets;\n } // Loop through the series (SeriesMetadata)\n\n\n study.forEachSeries(function (series) {\n // If the series has no instances, skip it\n if (!series.getInstanceCount()) {\n return;\n } // Search through the instances (InstanceMetadata object) of this series\n // Split Multi-frame instances and Single-image modalities\n // into their own specific display sets. Place the rest of each\n // series into another display set.\n\n\n var stackableInstances = [];\n series.forEachInstance(function (instance) {\n // All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)\n if (!isImage(instance.getRawValue('x00080016')) && !instance.getRawValue('x00280010')) {\n return;\n }\n\n var displaySet;\n\n if (isMultiFrame(instance)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n isClip: true,\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid for drag/drop purposes\n numImageFrames: instance.getRawValue('x00280008'),\n // Override the default value of instances.length\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else if (isSingleImageModality(instance.modality)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else {\n stackableInstances.push(instance);\n }\n });\n\n if (stackableInstances.length) {\n var displaySet = makeDisplaySet(series, stackableInstances);\n displaySet.setAttribute('studyInstanceUid', study.getStudyInstanceUID());\n displaySets.push(displaySet);\n }\n });\n return displaySets;\n}\n\nvar OHIFInstanceMetadata =\n/*#__PURE__*/\nfunction (_InstanceMetadata) {\n _inherits(OHIFInstanceMetadata, _InstanceMetadata);\n\n /**\n * @param {Object} Instance object.\n */\n function OHIFInstanceMetadata(data, series, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFInstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFInstanceMetadata).call(this, data, uid));\n\n _this.init(series, study);\n\n return _this;\n }\n\n _createClass(OHIFInstanceMetadata, [{\n key: \"init\",\n value: function init(series, study) {\n var instance = this.getData(); // Initialize Private Properties\n\n Object.defineProperties(this, {\n _sopInstanceUID: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance.sopInstanceUid\n },\n _study: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series\n },\n _instance: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance\n },\n _cache: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n }\n });\n } // Override\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue, bypassCache) {\n // check if this property has been cached...\n if (tagOrProperty in this._cache && bypassCache !== true) {\n return this._cache[tagOrProperty];\n }\n\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty); // Search property value in the whole study metadata chain...\n\n var rawValue;\n\n if (propertyName in this._instance) {\n rawValue = this._instance[propertyName];\n } else if (propertyName in this._series) {\n rawValue = this._series[propertyName];\n } else if (propertyName in this._study) {\n rawValue = this._study[propertyName];\n }\n\n if (rawValue !== void 0) {\n // if rawValue value is not undefined, cache result...\n this._cache[tagOrProperty] = rawValue;\n return rawValue;\n }\n\n return defaultValue;\n } // Override\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty);\n return propertyName in this._instance || propertyName in this._series || propertyName in this._study;\n } // Override\n\n }, {\n key: \"getImageId\",\n value: function getImageId$$1(frame, thumbnail) {\n // If _imageID is not cached, create it\n if (this._imageId === null) {\n this._imageId = getImageId(this.getData(), frame, thumbnail);\n }\n\n return this._imageId;\n }\n /**\n * Static methods\n */\n // @TODO: The current mapping of standard DICOM property names to local property names is not optimal.\n // The inconsistency in property naming makes this function increasingly complex.\n // A possible solution to improve this would be adapt retriveMetadata names to use DICOM standard names as in dicomTagDescriptions.js\n\n }], [{\n key: \"getPropertyName\",\n value: function getPropertyName(tagOrProperty) {\n var propertyName;\n var tagInfo = DICOMTagDescriptions.find(tagOrProperty);\n\n if (tagInfo !== void 0) {\n // This function tries to translate standard DICOM property names into local naming convention.\n propertyName = tagInfo.keyword.replace(/^SOP/, 'sop').replace(/UID$/, 'Uid').replace(/ID$/, 'Id');\n propertyName = propertyName.charAt(0).toLowerCase() + propertyName.substr(1);\n }\n\n return propertyName;\n }\n }]);\n\n return OHIFInstanceMetadata;\n}(InstanceMetadata);\n\nvar OHIFSeriesMetadata =\n/*#__PURE__*/\nfunction (_SeriesMetadata) {\n _inherits(OHIFSeriesMetadata, _SeriesMetadata);\n\n /**\n * @param {Object} Series object.\n */\n function OHIFSeriesMetadata(data, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFSeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFSeriesMetadata).call(this, data, uid));\n\n _this.init(study);\n\n return _this;\n }\n\n _createClass(OHIFSeriesMetadata, [{\n key: \"init\",\n value: function init(study) {\n var _this2 = this;\n\n var series = this.getData(); // define \"_seriesInstanceUID\" protected property...\n\n Object.defineProperty(this, '_seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series.seriesInstanceUid\n }); // populate internal list of instances...\n\n series.instances.forEach(function (instance) {\n _this2.addInstance(new OHIFInstanceMetadata(instance, series, study));\n });\n }\n }]);\n\n return OHIFSeriesMetadata;\n}(SeriesMetadata);\n\nvar OHIFStudyMetadata =\n/*#__PURE__*/\nfunction (_StudyMetadata) {\n _inherits(OHIFStudyMetadata, _StudyMetadata);\n\n /**\n * @param {Object} Study object.\n */\n function OHIFStudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, OHIFStudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFStudyMetadata).call(this, data, uid));\n\n _this.init();\n\n return _this;\n }\n\n _createClass(OHIFStudyMetadata, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var study = this.getData(); // define \"_studyInstanceUID\" protected property\n\n Object.defineProperty(this, '_studyInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study.studyInstanceUid\n }); // populate internal list of series\n\n study.seriesList.forEach(function (series) {\n _this2.addSeries(new OHIFSeriesMetadata(series, study));\n });\n }\n }]);\n\n return OHIFStudyMetadata;\n}(StudyMetadata);\n\nvar getDisplaySets = function getDisplaySets(studyMetadata, seriesNumber, iteratorFunction) {\n var iteratorFn = typeof iteratorFunction !== 'function' ? createStacks : iteratorFunction;\n return iteratorFn(studyMetadata, seriesNumber);\n};\n\nvar sortingManager = {\n getDisplaySets: getDisplaySets\n};\n\nfunction createDisplaySets(studies) {\n // Define the OHIF.viewer.data global object\n // TODO: Save all data that is currently in OHIF.viewer in redux instead\n //OHIF.viewer.data = OHIF.viewer.data || {};\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n //OHIF.viewer.data.studyInstanceUids = [];\n var updatedStudies = studies.map(function (study) {\n var studyMetadata = new OHIFStudyMetadata(study, study.studyInstanceUid);\n var displaySets = study.displaySets;\n\n if (!study.displaySets) {\n displaySets = sortingManager.getDisplaySets(studyMetadata);\n study.displaySets = displaySets;\n }\n\n studyMetadata.setDisplaySets(displaySets); //OHIF.viewer.Studies.insert(study);\n //OHIF.viewer.StudyMetadataList.insert(studyMetadata);\n //OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);\n // Updates WADO-RS metaDataManager\n\n updateMetaDataManager(study);\n return study;\n });\n return updatedStudies;\n}\n\nvar utils = {\n guid: guid,\n ObjectPath: ObjectPath,\n absoluteUrl: absoluteUrl,\n addServers: addServers,\n sortBy: sortBy,\n writeScript: writeScript,\n StackManager: StackManager,\n createStacks: createStacks,\n createDisplaySets: createDisplaySets\n};\n\nvar metadata = {\n Metadata: Metadata,\n WadoRsMetaDataBuilder: WadoRsMetaDataBuilder,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n OHIFStudyMetadata: OHIFStudyMetadata,\n OHIFSeriesMetadata: OHIFSeriesMetadata,\n OHIFInstanceMetadata: OHIFInstanceMetadata\n};\n\nvar FUNCTION$2 = 'function';\n\nvar MetadataProvider =\n/*#__PURE__*/\nfunction () {\n function MetadataProvider() {\n _classCallCheck(this, MetadataProvider);\n\n // Define the main \"metadataLookup\" private property as an immutable property.\n Object.defineProperty(this, 'metadataLookup', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: new Map()\n }); // Local reference to provider function bound to current instance.\n\n Object.defineProperty(this, '_provider', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n }\n /**\n * Cornerstone Metadata provider to store image meta data\n * Data from instances, series, and studies are associated with\n * imageIds to facilitate usage of this information by Cornerstone's Tools\n *\n * e.g. the imagePlane metadata object contains instance information about\n * row/column pixel spacing, patient position, and patient orientation. It\n * is used in CornerstoneTools to position reference lines and orientation markers.\n *\n * @param {String} imageId The Cornerstone ImageId\n * @param {Object} data An object containing instance, series, and study metadata\n */\n\n\n _createClass(MetadataProvider, [{\n key: \"addMetadata\",\n value: function addMetadata(imageId, data) {\n var instanceMetadata = data.instance;\n var seriesMetadata = data.series;\n var studyMetadata = data.study;\n var numImages = data.numImages;\n var metadata = {};\n metadata.frameNumber = data.frameNumber;\n metadata.study = {\n accessionNumber: studyMetadata.accessionNumber,\n patientId: studyMetadata.patientId,\n studyInstanceUid: studyMetadata.studyInstanceUid,\n studyDate: studyMetadata.studyDate,\n studyTime: studyMetadata.studyTime,\n studyDescription: studyMetadata.studyDescription,\n institutionName: studyMetadata.institutionName,\n patientHistory: studyMetadata.patientHistory\n };\n metadata.series = {\n seriesDescription: seriesMetadata.seriesDescription,\n seriesNumber: seriesMetadata.seriesNumber,\n seriesDate: seriesMetadata.seriesDate,\n seriesTime: seriesMetadata.seriesTime,\n modality: seriesMetadata.modality,\n seriesInstanceUid: seriesMetadata.seriesInstanceUid,\n numImages: numImages\n };\n metadata.instance = instanceMetadata;\n metadata.patient = {\n name: studyMetadata.patientName,\n id: studyMetadata.patientId,\n birthDate: studyMetadata.patientBirthDate,\n sex: studyMetadata.patientSex,\n age: studyMetadata.patientAge\n }; // If there is sufficient information, populate\n // the imagePlane object for easier use in the Viewer\n\n metadata.imagePlane = this.getImagePlane(instanceMetadata); // Add the metadata to the imageId lookup object\n\n this.metadataLookup.set(imageId, metadata);\n }\n /**\n * Return the metadata for the given imageId\n * @param {String} imageId The Cornerstone ImageId\n * @returns image metadata\n */\n\n }, {\n key: \"getMetadata\",\n value: function getMetadata(imageId) {\n return this.metadataLookup.get(imageId);\n }\n /**\n * Adds a set of metadata to the Cornerstone metadata provider given a specific\n * imageId, type, and dataset\n *\n * @param imageId\n * @param type (e.g. series, instance, tagDisplay)\n * @param data\n */\n\n }, {\n key: \"addSpecificMetadata\",\n value: function addSpecificMetadata(imageId, type, data) {\n var metadata = {};\n metadata[type] = data;\n var oldMetadata = this.metadataLookup.get(imageId);\n this.metadataLookup.set(imageId, Object.assign(oldMetadata, metadata));\n }\n }, {\n key: \"getFromImage\",\n value: function getFromImage(image, type, tag, attrName, defaultValue) {\n var value;\n\n if (image.data) {\n value = this.getFromDataSet(image.data, type, tag);\n } else {\n value = image.instance[attrName];\n }\n\n return value === null ? defaultValue : value;\n }\n }, {\n key: \"getFromDataSet\",\n value: function getFromDataSet(dataSet, type, tag) {\n if (!dataSet) {\n return;\n }\n\n var fn = dataSet[type];\n\n if (!fn) {\n return;\n }\n\n return fn.call(dataSet, tag);\n }\n }, {\n key: \"getFrameIncrementPointer\",\n value: function getFrameIncrementPointer(image) {\n var dataSet = image.data;\n var frameInstancePointer = '';\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n var frameInstancePointerNames = {\n x00181063: 'frameTime',\n x00181065: 'frameTimeVector'\n }; // (0028,0009) = Frame Increment Pointer\n\n var frameInstancePointerTag = parsingUtils.attributeTag(dataSet, 'x00280009');\n frameInstancePointer = frameInstancePointerNames[frameInstancePointerTag];\n } else {\n frameInstancePointer = image.instance.frameIncrementPointer;\n }\n\n return frameInstancePointer || '';\n }\n }, {\n key: \"getFrameTimeVector\",\n value: function getFrameTimeVector(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n return parsingUtils.floatArray(dataSet, 'x00181065');\n }\n\n return image.instance.frameTimeVector;\n }\n }, {\n key: \"getFrameTime\",\n value: function getFrameTime(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time (0018,1063) field or is not defined (for addtional flexibility).\n // Yet another value is possible for this field (5200,9230 for Multi-frame Functional Groups)\n // but that case is currently not supported.\n return dataSet.floatString('x00181063', -1);\n }\n\n return image.instance.frameTime;\n }\n /**\n * Updates the related metadata for missing fields given a specified image\n *\n * @param image\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(image) {\n var imageMetadata = this.metadataLookup.get(image.imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n imageMetadata.patient.age = imageMetadata.patient.age || this.getFromDataSet(image.data, 'string', 'x00101010');\n imageMetadata.instance.rows = imageMetadata.instance.rows || image.rows;\n imageMetadata.instance.columns = imageMetadata.instance.columns || image.columns;\n imageMetadata.instance.sopClassUid = imageMetadata.instance.sopClassUid || this.getFromDataSet(image.data, 'string', 'x00080016');\n imageMetadata.instance.sopInstanceUid = imageMetadata.instance.sopInstanceUid || this.getFromDataSet(image.data, 'string', 'x00080018');\n imageMetadata.instance.pixelSpacing = imageMetadata.instance.pixelSpacing || this.getFromDataSet(image.data, 'string', 'x00280030');\n imageMetadata.instance.frameOfReferenceUID = imageMetadata.instance.frameOfReferenceUID || this.getFromDataSet(image.data, 'string', 'x00200052');\n imageMetadata.instance.imageOrientationPatient = imageMetadata.instance.imageOrientationPatient || this.getFromDataSet(image.data, 'string', 'x00200037');\n imageMetadata.instance.imagePositionPatient = imageMetadata.instance.imagePositionPatient || this.getFromDataSet(image.data, 'string', 'x00200032');\n imageMetadata.instance.sliceThickness = imageMetadata.instance.sliceThickness || this.getFromDataSet(image.data, 'string', 'x00180050');\n imageMetadata.instance.sliceLocation = imageMetadata.instance.sliceLocation || this.getFromDataSet(image.data, 'string', 'x00201041');\n imageMetadata.instance.tablePosition = imageMetadata.instance.tablePosition || this.getFromDataSet(image.data, 'string', 'x00189327');\n imageMetadata.instance.spacingBetweenSlices = imageMetadata.instance.spacingBetweenSlices || this.getFromDataSet(image.data, 'string', 'x00180088');\n imageMetadata.instance.lossyImageCompression = imageMetadata.instance.lossyImageCompression || this.getFromDataSet(image.data, 'string', 'x00282110');\n imageMetadata.instance.lossyImageCompressionRatio = imageMetadata.instance.lossyImageCompressionRatio || this.getFromDataSet(image.data, 'string', 'x00282112');\n imageMetadata.instance.frameIncrementPointer = imageMetadata.instance.frameIncrementPointer || this.getFromDataSet(image.data, 'string', 'x00280009');\n imageMetadata.instance.frameTime = imageMetadata.instance.frameTime || this.getFromDataSet(image.data, 'string', 'x00181063');\n imageMetadata.instance.frameTimeVector = imageMetadata.instance.frameTimeVector || this.getFromDataSet(image.data, 'string', 'x00181065');\n\n if ((image.data || image.instance) && !imageMetadata.instance.multiframeMetadata) {\n imageMetadata.instance.multiframeMetadata = this.getMultiframeModuleMetadata(image);\n }\n\n imageMetadata.imagePlane = imageMetadata.imagePlane || this.getImagePlane(imageMetadata.instance);\n }\n /**\n * Constructs and returns the imagePlane given the metadata instance\n *\n * @param metadataInstance The metadata instance (InstanceMetadata class) containing information to construct imagePlane\n * @returns imagePlane The constructed imagePlane to be used in viewer easily\n */\n\n }, {\n key: \"getImagePlane\",\n value: function getImagePlane(instance) {\n if (!instance.rows || !instance.columns || !instance.pixelSpacing || !instance.frameOfReferenceUID || !instance.imageOrientationPatient || !instance.imagePositionPatient) {\n return;\n }\n\n var imageOrientation = instance.imageOrientationPatient.split('\\\\');\n var imagePosition = instance.imagePositionPatient.split('\\\\');\n var columnPixelSpacing = 1.0;\n var rowPixelSpacing = 1.0;\n\n if (instance.pixelSpacing) {\n var split = instance.pixelSpacing.split('\\\\');\n rowPixelSpacing = parseFloat(split[0]);\n columnPixelSpacing = parseFloat(split[1]);\n }\n\n var cornerstoneMath = external.cornerstoneMath;\n return {\n frameOfReferenceUID: instance.frameOfReferenceUID,\n rows: instance.rows,\n columns: instance.columns,\n rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),\n columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),\n imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),\n rowPixelSpacing: rowPixelSpacing,\n columnPixelSpacing: columnPixelSpacing\n };\n }\n /**\n * This function extracts miltiframe information from a dicomParser.DataSet object.\n *\n * @param dataSet {Object} An instance of dicomParser.DataSet object where multiframe information can be found.\n * @return {Object} An object containing multiframe image metadata (frameIncrementPointer, frameTime, frameTimeVector, etc).\n */\n\n }, {\n key: \"getMultiframeModuleMetadata\",\n value: function getMultiframeModuleMetadata(image) {\n var imageInfo = {\n isMultiframeImage: false,\n frameIncrementPointer: null,\n numberOfFrames: 0,\n frameTime: 0,\n frameTimeVector: null,\n averageFrameRate: 0 // backwards compatibility only... it might be useless in the future\n\n };\n var frameTime;\n var numberOfFrames = this.getFromImage(image, 'intString', 'x00280008', 'numberOfFrames', -1);\n\n if (numberOfFrames > 0) {\n // set multi-frame image indicator\n imageInfo.isMultiframeImage = true;\n imageInfo.numberOfFrames = numberOfFrames; // (0028,0009) = Frame Increment Pointer\n\n var frameIncrementPointer = this.getFrameIncrementPointer(image);\n\n if (frameIncrementPointer === 'frameTimeVector') {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n var frameTimeVector = this.getFrameTimeVector(image);\n\n if (frameTimeVector instanceof Array && frameTimeVector.length > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTimeVector = frameTimeVector;\n frameTime = frameTimeVector.reduce(function (a, b) {\n return a + b;\n }) / frameTimeVector.length;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n } else if (frameIncrementPointer === 'frameTime' || frameIncrementPointer === '') {\n frameTime = this.getFrameTime(image);\n\n if (frameTime > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTime = frameTime;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n }\n }\n\n return imageInfo;\n }\n /**\n * Get a bound reference to the provider function.\n */\n\n }, {\n key: \"getProvider\",\n value: function getProvider() {\n var provider = this._provider;\n\n if (_typeof(this._provider) !== FUNCTION$2) {\n provider = this.provider.bind(this);\n this._provider = provider;\n }\n\n return provider;\n }\n /**\n * Looks up metadata for Cornerstone Tools given a specified type and imageId\n * A type may be, e.g. 'study', or 'patient', or 'imagePlane'. These types\n * are keys in the stored metadata objects.\n *\n * @param type\n * @param imageId\n * @returns {Object} Relevant metadata of the specified type\n */\n\n }, {\n key: \"provider\",\n value: function provider(type, imageId) {\n // TODO: Cornerstone Tools use 'imagePlaneModule', but OHIF use 'imagePlane'. It must be consistent.\n if (type === 'imagePlaneModule') {\n type = 'imagePlane';\n }\n\n var imageMetadata = this.metadataLookup.get(imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n if (imageMetadata.hasOwnProperty(type)) {\n return imageMetadata[type];\n }\n }\n }]);\n\n return MetadataProvider;\n}();\n\nvar cornerstone$1 = {\n MetadataProvider: MetadataProvider,\n getBoundingBox: getBoundingBox,\n pixelToPage: pixelToPage,\n repositionTextBox: repositionTextBox\n};\n\nvar StudyPrefetcher =\n/*#__PURE__*/\nfunction () {\n function StudyPrefetcher(studies) {\n var _this = this;\n\n _classCallCheck(this, StudyPrefetcher);\n\n _defineProperty(this, \"cacheFullHandler\", function () {\n log$1.warn('Cache full');\n\n _this.stopPrefetching();\n });\n\n this.studies = studies || [];\n this.prefetchDisplaySetsTimeout = 300;\n this.lastActiveViewportElement = null;\n external.cornerstone.events.addEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n\n _createClass(StudyPrefetcher, [{\n key: \"destroy\",\n value: function destroy() {\n this.stopPrefetching();\n external.cornerstone.events.removeEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n }, {\n key: \"setStudies\",\n value: function setStudies(studies) {\n this.stopPrefetching();\n this.studies = studies;\n }\n }, {\n key: \"prefetch\",\n value: function prefetch() {\n if (!this.studies || !this.studies.length) {\n return;\n }\n\n this.stopPrefetching();\n this.prefetchDisplaySets();\n }\n }, {\n key: \"stopPrefetching\",\n value: function stopPrefetching() {\n external.cornerstoneTools.requestPoolManager.clearRequestStack('prefetch');\n }\n }, {\n key: \"prefetchDisplaySetsAsync\",\n value: function prefetchDisplaySetsAsync(timeout) {\n var _this2 = this;\n\n timeout = timeout || this.prefetchDisplaySetsTimeout;\n clearTimeout(this.prefetchDisplaySetsHandler);\n this.prefetchDisplaySetsHandler = setTimeout(function () {\n _this2.prefetchDisplaySets();\n }, timeout);\n }\n }, {\n key: \"prefetchDisplaySets\",\n value: function prefetchDisplaySets() {\n // TODO: Allow passing in config\n var config = {\n order: 'closest',\n displaySetCount: 1\n };\n var displaySetsToPrefetch = this.getDisplaySetsToPrefetch(config);\n var imageIds = this.getImageIdsFromDisplaySets(displaySetsToPrefetch);\n this.prefetchImageIds(imageIds);\n }\n }, {\n key: \"prefetchImageIds\",\n value: function prefetchImageIds(imageIds) {\n var nonCachedImageIds = this.filterCachedImageIds(imageIds);\n var requestPoolManager = external.cornerstoneTools.requestPoolManager;\n var requestType = 'prefetch';\n var preventCache = false;\n\n var noop = function noop() {};\n\n nonCachedImageIds.forEach(function (imageId) {\n requestPoolManager.addRequest({}, imageId, requestType, preventCache, noop, noop);\n });\n requestPoolManager.startGrabbing();\n }\n }, {\n key: \"getStudy\",\n value: function getStudy(image) {\n var studyMetadata = external.cornerstone.metaData.get('study', image.imageId);\n return OHIF.viewer.Studies.find(function (study) {\n return study.studyInstanceUid === studyMetadata.studyInstanceUid;\n });\n }\n }, {\n key: \"getSeries\",\n value: function getSeries(study, image) {\n var seriesMetadata = external.cornerstone.metaData.get('series', image.imageId);\n var studyMetadata = OHIF.viewerbase.getStudyMetadata(study);\n return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);\n }\n }, {\n key: \"getInstance\",\n value: function getInstance(series, image) {\n var instanceMetadata = external.cornerstone.metaData.get('instance', image.imageId);\n return series.getInstanceByUID(instanceMetadata.sopInstanceUid);\n }\n }, {\n key: \"getActiveDisplaySet\",\n value: function getActiveDisplaySet(displaySets, instance) {\n return displaySets.find(function (displaySet) {\n return displaySet.images.some(function (displaySetImage) {\n return displaySetImage.sopInstanceUid === instance.sopInstanceUid;\n });\n });\n }\n }, {\n key: \"getDisplaySetsToPrefetch\",\n value: function getDisplaySetsToPrefetch(config) {\n var image = this.getActiveViewportImage();\n\n if (!image || !config || !config.displaySetCount) {\n return [];\n }\n /*const study = this.getStudy(image);\n const series = this.getSeries(study, image);\n const instance = this.getInstance(series, image);*/\n\n\n var displaySets = study.displaySets;\n var activeDisplaySet = null; //this.getActiveDisplaySet(displaySets, instance);\n\n var prefetchMethodMap = {\n topdown: 'getFirstDisplaySets',\n downward: 'getNextDisplaySets',\n closest: 'getClosestDisplaySets'\n };\n var prefetchOrder = config.order;\n var methodName = prefetchMethodMap[prefetchOrder];\n var getDisplaySets = this[methodName];\n\n if (!getDisplaySets) {\n if (prefetchOrder) {\n log$1.warn(\"Invalid prefetch order configuration (\".concat(prefetchOrder, \")\"));\n }\n\n return [];\n }\n\n return getDisplaySets.call(this, displaySets, activeDisplaySet, config.displaySetCount);\n }\n }, {\n key: \"getFirstDisplaySets\",\n value: function getFirstDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var length = displaySets.length;\n var selectedDisplaySets = [];\n\n for (var i = 0; i < length && displaySetCount; i++) {\n var displaySet = displaySets[i];\n\n if (displaySet !== activeDisplaySet) {\n selectedDisplaySets.push(displaySet);\n displaySetCount--;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getNextDisplaySets\",\n value: function getNextDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var begin = activeDisplaySetIndex + 1;\n var end = Math.min(begin + displaySetCount, displaySets.length);\n return displaySets.slice(begin, end);\n }\n }, {\n key: \"getClosestDisplaySets\",\n value: function getClosestDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var length = displaySets.length;\n var selectedDisplaySets = [];\n var left = activeDisplaySetIndex - 1;\n var right = activeDisplaySetIndex + 1;\n\n while ((left >= 0 || right < length) && displaySetCount) {\n if (left >= 0) {\n selectedDisplaySets.push(displaySets[left]);\n displaySetCount--;\n left--;\n }\n\n if (right < length && displaySetCount) {\n selectedDisplaySets.push(displaySets[right]);\n displaySetCount--;\n right++;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getImageIdsFromDisplaySets\",\n value: function getImageIdsFromDisplaySets(displaySets) {\n var _this3 = this;\n\n var imageIds = [];\n displaySets.forEach(function (displaySet) {\n imageIds = imageIds.concat(_this3.getImageIdsFromDisplaySet(displaySet));\n });\n return imageIds;\n }\n }, {\n key: \"getImageIdsFromDisplaySet\",\n value: function getImageIdsFromDisplaySet(displaySet) {\n var imageIds = []; // TODO: This duplicates work done by the stack manager\n\n displaySet.images.forEach(function (image) {\n var numFrames = image.numFrames;\n\n if (numFrames > 1) {\n for (var i = 0; i < numFrames; i++) {\n var imageId = getImageId(image, i);\n imageIds.push(imageId);\n }\n } else {\n var _imageId = getImageId(image);\n\n imageIds.push(_imageId);\n }\n });\n return imageIds;\n }\n }, {\n key: \"filterCachedImageIds\",\n value: function filterCachedImageIds(imageIds) {\n var _this4 = this;\n\n return imageIds.filter(function (imageId) {\n return !_this4.isImageCached(imageId);\n });\n }\n }, {\n key: \"isImageCached\",\n value: function isImageCached(imageId) {\n var image = external.cornerstone.imageCache.imageCache[imageId];\n return image && image.sizeInBytes;\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!StudyPrefetcher.instance) {\n StudyPrefetcher.instance = new StudyPrefetcher([]);\n }\n\n return StudyPrefetcher.instance;\n }\n }]);\n\n return StudyPrefetcher;\n}();\n\nvar setToolActive = function setToolActive(tool) {\n return {\n type: 'SET_TOOL_ACTIVE',\n tool: tool\n };\n};\nvar setViewportActive = function setViewportActive(viewportIndex) {\n return {\n type: 'SET_VIEWPORT_ACTIVE',\n viewportIndex: viewportIndex\n };\n};\nvar setLayout = function setLayout(layout) {\n return {\n type: 'SET_LAYOUT',\n layout: layout\n };\n};\nvar setStudyLoadingProgress = function setStudyLoadingProgress(progressId, progressData) {\n return {\n type: 'SET_STUDY_LOADING_PROGRESS',\n progressId: progressId,\n progressData: progressData\n };\n};\nvar clearStudyLoadingProgress = function clearStudyLoadingProgress(progressId) {\n return {\n type: 'CLEAR_STUDY_LOADING_PROGRESS',\n progressId: progressId\n };\n};\nvar setViewportSpecificData = function setViewportSpecificData(viewportIndex, data) {\n return {\n type: 'SET_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex,\n data: data\n };\n};\nvar clearViewportSpecificData = function clearViewportSpecificData(viewportIndex) {\n return {\n type: 'CLEAR_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex\n };\n};\nvar addPlugin = function addPlugin(plugin) {\n return {\n type: \"ADD_PLUGIN\",\n plugin: plugin\n };\n};\nvar setAvailableButtons = function setAvailableButtons(buttons) {\n return {\n type: 'SET_AVAILABLE_BUTTONS',\n buttons: buttons\n };\n};\nvar actions = {\n setToolActive: setToolActive,\n setViewportActive: setViewportActive,\n setLayout: setLayout,\n setStudyLoadingProgress: setStudyLoadingProgress,\n clearStudyLoadingProgress: clearStudyLoadingProgress,\n setViewportSpecificData: setViewportSpecificData,\n clearViewportSpecificData: clearViewportSpecificData,\n addPlugin: addPlugin,\n setAvailableButtons: setAvailableButtons\n};\n\nvar BaseLoadingListener =\n/*#__PURE__*/\nfunction () {\n function BaseLoadingListener(stack) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BaseLoadingListener);\n\n this.id = BaseLoadingListener.getNewId();\n this.stack = stack;\n this.startListening();\n this.statsItemsLimit = options.statsItemsLimit || 2;\n this.stats = {\n items: [],\n total: 0,\n elapsedTime: 0,\n speed: 0\n };\n this._setProgressData = options._setProgressData;\n this._clearProgressById = options._clearProgressById; // Register the start point to make it possible to calculate\n // bytes/s or frames/s when the first byte or frame is received\n\n this._addStatsData(0); // Update the progress before starting the download\n // to make it possible to update the UI\n\n\n this._updateProgress();\n }\n\n _createClass(BaseLoadingListener, [{\n key: \"_addStatsData\",\n value: function _addStatsData(value) {\n var date = new Date();\n var stats = this.stats;\n var items = stats.items;\n var newItem = {\n value: value,\n date: date\n };\n items.push(newItem);\n stats.total += newItem.value; // Remove items until it gets below the limit\n\n while (items.length > this.statsItemsLimit) {\n var item = items.shift();\n stats.total -= item.value;\n } // Update the elapsedTime (seconds) based on first and last\n // elements and recalculate the speed (bytes/s or frames/s)\n\n\n if (items.length > 1) {\n var oldestItem = items[0];\n stats.elapsedTime = (newItem.date.getTime() - oldestItem.date.getTime()) / 1000;\n stats.speed = (stats.total - oldestItem.value) / stats.elapsedTime;\n }\n }\n }, {\n key: \"_getProgressId\",\n value: function _getProgressId() {\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n return 'StackProgress:' + displaySetInstanceUid;\n }\n }, {\n key: \"_clearProgress\",\n value: function _clearProgress() {\n var progressId = this._getProgressId();\n\n this._clearProgressById(progressId);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n throw new Error('`startListening` must be implemented by child classes');\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n throw new Error('`stopListening` must be implemented by child classes');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stopListening();\n\n this._clearProgress();\n }\n }], [{\n key: \"getNewId\",\n value: function getNewId() {\n var timeSlice = new Date().getTime().toString().slice(-8);\n var randomNumber = parseInt(Math.random() * 1000000000);\n return timeSlice.toString() + randomNumber.toString();\n }\n }]);\n\n return BaseLoadingListener;\n}();\n\nvar DICOMFileLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener) {\n _inherits(DICOMFileLoadingListener, _BaseLoadingListener);\n\n function DICOMFileLoadingListener(stack, options) {\n var _this;\n\n _classCallCheck(this, DICOMFileLoadingListener);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DICOMFileLoadingListener).call(this, stack, options));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"_imageLoadProgressEventHandler\", function (e) {\n var eventData = e.detail;\n\n var dataSetUrl = _this._convertImageIdToDataSetUrl(eventData.imageId);\n\n var bytesDiff = eventData.loaded - _this._lastLoaded;\n\n if (!_this._dataSetUrl === dataSetUrl) {\n return;\n } // Add the bytes downloaded to the stats\n\n\n _this._addStatsData(bytesDiff); // Update the download progress\n\n\n _this._updateProgress(eventData); // Cache the last eventData.loaded value\n\n\n _this._lastLoaded = eventData.loaded;\n });\n\n _this._dataSetUrl = _this._getDataSetUrl(stack);\n _this._lastLoaded = 0; // Check how many instances has already been download (cached)\n\n _this._checkCachedData();\n\n return _this;\n }\n\n _createClass(DICOMFileLoadingListener, [{\n key: \"_checkCachedData\",\n value: function _checkCachedData() {\n var dataSet = external.cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(this._dataSetUrl);\n\n if (dataSet) {\n var dataSetLength = dataSet.byteArray.length;\n\n this._updateProgress({\n percentComplete: 100,\n loaded: dataSetLength,\n total: dataSetLength\n });\n }\n }\n }, {\n key: \"_getImageLoadProgressEventName\",\n value: function _getImageLoadProgressEventName() {\n // TODO: Add this event as a constant in Cornerstone\n return 'cornerstoneimageloadprogress.' + this.id;\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n this.imageLoadProgressEventHandler = this._imageLoadProgressEventHandle.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress(eventData) {\n var progressId = this._getProgressId();\n\n eventData = eventData || {};\n var progressData = {\n multiFrame: false,\n percentComplete: eventData.percentComplete,\n bytesLoaded: eventData.loaded,\n bytesTotal: eventData.total,\n bytesPerSecond: this.stats.speed\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_convertImageIdToDataSetUrl\",\n value: function _convertImageIdToDataSetUrl(imageId) {\n // Remove the prefix (\"dicomweb:\" or \"wadouri:\"\")\n imageId = imageId.replace(/^(dicomweb:|wadouri:)/i, ''); // Remove \"frame=999&\" from the imageId\n\n imageId = imageId.replace(/frame=\\d+&?/i, ''); // Remove the last \"&\" like in \"http://...?foo=1&bar=2&\"\n\n imageId = imageId.replace(/&$/, '');\n return imageId;\n }\n }, {\n key: \"_getDataSetUrl\",\n value: function _getDataSetUrl(stack) {\n var imageId = stack.imageIds[0];\n return this._convertImageIdToDataSetUrl(imageId);\n }\n }]);\n\n return DICOMFileLoadingListener;\n}(BaseLoadingListener);\n\nvar StackLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener2) {\n _inherits(StackLoadingListener, _BaseLoadingListener2);\n\n function StackLoadingListener(stack) {\n var _this2;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StackLoadingListener);\n\n options.statsItemsLimit = 20;\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(StackLoadingListener).call(this, stack, options));\n _this2.imageDataMap = _this2._convertImageIdsArrayToMap(stack.imageIds);\n _this2.framesStatus = _this2._createArray(stack.imageIds.length, false);\n _this2.loadedCount = 0; // Check how many instances has already been download (cached)\n\n _this2._checkCachedData();\n\n return _this2;\n }\n\n _createClass(StackLoadingListener, [{\n key: \"_convertImageIdsArrayToMap\",\n value: function _convertImageIdsArrayToMap(imageIds) {\n var imageIdsMap = new Map();\n\n for (var i = 0; i < imageIds.length; i++) {\n imageIdsMap.set(imageIds[i], {\n index: i,\n loaded: false\n });\n }\n\n return imageIdsMap;\n }\n }, {\n key: \"_createArray\",\n value: function _createArray(length, defaultValue) {\n // `new Array(length)` is an anti-pattern in javascript because its\n // funny API. Otherwise I would go for `new Array(length).fill(false)`\n var array = [];\n\n for (var i = 0; i < length; i++) {\n array[i] = defaultValue;\n }\n\n return array;\n }\n }, {\n key: \"_checkCachedData\",\n value: function _checkCachedData() {// const imageIds = this.stack.imageIds;\n // TODO: No way to check status of Promise.\n\n /*for(let i = 0; i < imageIds.length; i++) {\n const imageId = imageIds[i];\n const imagePromise = cornerstone.imageCache.getImageLoadObject(imageId).promise;\n if (imagePromise && (imagePromise.state() === 'resolved')) {\n this._updateFrameStatus(imageId, true);\n }\n }*/\n }\n }, {\n key: \"_getImageLoadedEventName\",\n value: function _getImageLoadedEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_LOADED, \".\").concat(this.id);\n }\n }, {\n key: \"_getImageCachePromiseRemoveEventName\",\n value: function _getImageCachePromiseRemoveEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, \".\").concat(this.id);\n }\n }, {\n key: \"_imageLoadedEventHandler\",\n value: function _imageLoadedEventHandler(e) {\n this._updateFrameStatus(e.detail.image.imageId, true);\n }\n }, {\n key: \"_imageCachePromiseRemovedEventHandler\",\n value: function _imageCachePromiseRemovedEventHandler(e) {\n this._updateFrameStatus(e.detail.imageId, false);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n this.imageLoadedEventHandler = this._imageLoadedEventHandler.bind(this);\n this.imageCachePromiseRemovedEventHandler = this._imageCachePromiseRemovedEventHandler.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.addEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.removeEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"_updateFrameStatus\",\n value: function _updateFrameStatus(imageId, loaded) {\n var imageData = this.imageDataMap.get(imageId);\n\n if (!imageData || imageData.loaded === loaded) {\n return;\n } // Add one more frame to the stats\n\n\n if (loaded) {\n this._addStatsData(1);\n }\n\n imageData.loaded = loaded;\n this.framesStatus[imageData.index] = loaded;\n this.loadedCount += loaded ? 1 : -1;\n\n this._updateProgress();\n }\n }, {\n key: \"_setProgressData\",\n value: function _setProgressData(progressId, progressData) {\n // TODO: This method (and _clearProgressById) need to access\n // the Redux store and should therefore be provided from the\n // application. I've added a workaround to pass this in through\n // the 'options' variable on instantiation, but this is really ugly.\n // We could consider making the StudyLoadingListener a higher-order\n // component which would set this stuff itself.\n throw new Error(\"The _setProgressData function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_clearProgressById\",\n value: function _clearProgressById(progressId) {\n throw new Error(\"The _clearProgressById function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var loadedFramesCount = this.loadedCount;\n var loadingFramesCount = totalFramesCount - loadedFramesCount;\n var percentComplete = Math.round(loadedFramesCount / totalFramesCount * 100);\n\n var progressId = this._getProgressId();\n\n var progressData = {\n multiFrame: true,\n totalFramesCount: totalFramesCount,\n loadedFramesCount: loadedFramesCount,\n loadingFramesCount: loadingFramesCount,\n percentComplete: percentComplete,\n framesPerSecond: this.stats.speed,\n framesStatus: this.framesStatus\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_logProgress\",\n value: function _logProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n var progressBar = '[';\n\n for (var i = 0; i < totalFramesCount; i++) {\n var ch = this.framesStatus[i] ? '|' : '.';\n progressBar += \"\".concat(ch);\n }\n\n progressBar += ']';\n log.info(\"\".concat(displaySetInstanceUid, \": \").concat(progressBar));\n }\n }]);\n\n return StackLoadingListener;\n}(BaseLoadingListener);\n\nvar StudyLoadingListener =\n/*#__PURE__*/\nfunction () {\n function StudyLoadingListener(options) {\n _classCallCheck(this, StudyLoadingListener);\n\n this.listeners = {};\n this.options = options;\n }\n\n _createClass(StudyLoadingListener, [{\n key: \"addStack\",\n value: function addStack(stack, stackMetaData) {\n var displaySetInstanceUid = stack.displaySetInstanceUid;\n\n if (!this.listeners[displaySetInstanceUid]) {\n var listener = this._createListener(stack, stackMetaData);\n\n if (listener) {\n this.listeners[displaySetInstanceUid] = listener;\n }\n }\n }\n }, {\n key: \"addStudy\",\n value: function addStudy(study) {\n var _this3 = this;\n\n study.displaySets.forEach(function (displaySet) {\n var stack = StackManager.findOrCreateStack(study, displaySet);\n\n _this3.addStack(stack, {\n isMultiFrame: displaySet.isMultiFrame\n });\n });\n }\n }, {\n key: \"addStudies\",\n value: function addStudies(studies) {\n var _this4 = this;\n\n if (!studies || !studies.length) {\n return;\n }\n\n studies.forEach(function (study) {\n return _this4.addStudy(study);\n });\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var displaySetInstanceUids = Object.keys(this.listeners);\n var length = displaySetInstanceUids.length;\n\n for (var i = 0; i < length; i++) {\n var displaySetInstanceUid = displaySetInstanceUids[i];\n var displaySet = this.listeners[displaySetInstanceUid];\n displaySet.destroy();\n }\n\n this.listeners = {};\n }\n }, {\n key: \"_createListener\",\n value: function _createListener(stack, stackMetaData) {\n var schema = this._getSchema(stack); // A StackLoadingListener can be created if it's wadors or not a multiframe\n // wadouri instance (single file) that means \"N\" files will have to be\n // downloaded where \"N\" is the number of frames. DICOMFileLoadingListener\n // is created only if it's a single DICOM file and there's no way to know\n // how many frames has already been loaded (bytes/s instead of frames/s).\n\n\n if (schema === 'wadors' || !stackMetaData.isMultiFrame) {\n return new StackLoadingListener(stack, this.options);\n } else {\n return new DICOMFileLoadingListener(stack, this.options);\n }\n }\n }, {\n key: \"_getSchema\",\n value: function _getSchema(stack) {\n var imageId = stack.imageIds[0];\n var colonIndex = imageId.indexOf(':');\n return imageId.substring(0, colonIndex);\n } // Singleton\n\n }], [{\n key: \"getInstance\",\n value: function getInstance(options) {\n if (!StudyLoadingListener._instance) {\n StudyLoadingListener._instance = new StudyLoadingListener(options);\n }\n\n return StudyLoadingListener._instance;\n }\n }]);\n\n return StudyLoadingListener;\n}();\n\n/**\n * Constants\n */\nvar PROPERTY_SEPARATOR = '.';\nvar ORDER_ASC = 'asc';\nvar ORDER_DESC = 'desc';\nvar MIN_COUNT = 0x00000000;\nvar MAX_COUNT = 0x7fffffff;\n/**\n * Class Definition\n */\n\nvar TypeSafeCollection =\n/*#__PURE__*/\nfunction () {\n function TypeSafeCollection() {\n _classCallCheck(this, TypeSafeCollection);\n\n this._operationCount = MIN_COUNT;\n this._elementList = [];\n this._handlers = Object.create(null);\n }\n /**\n * Private Methods\n */\n\n\n _createClass(TypeSafeCollection, [{\n key: \"_invalidate\",\n value: function _invalidate() {\n var count = this._operationCount;\n this._operationCount = count < MAX_COUNT ? count + 1 : MIN_COUNT;\n }\n }, {\n key: \"_elements\",\n value: function _elements(silent) {\n silent === true || this._operationCount;\n return this._elementList;\n }\n }, {\n key: \"_elementWithPayload\",\n value: function _elementWithPayload(payload, silent) {\n return this._elements(silent).find(function (item) {\n return item.payload === payload;\n });\n }\n }, {\n key: \"_elementWithId\",\n value: function _elementWithId(id, silent) {\n return this._elements(silent).find(function (item) {\n return item.id === id;\n });\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(event, data) {\n var handlers = this._handlers;\n\n if (event in handlers) {\n handlers = handlers[event];\n\n if (!(handlers instanceof Array)) {\n return;\n }\n\n for (var i = 0, limit = handlers.length; i < limit; ++i) {\n var handler = handlers[i];\n\n if (_isFunction(handler)) {\n handler.call(null, data);\n }\n }\n }\n }\n /**\n * Public Methods\n */\n\n }, {\n key: \"onInsert\",\n value: function onInsert(callback) {\n if (_isFunction(callback)) {\n var handlers = this._handlers.insert;\n\n if (!(handlers instanceof Array)) {\n handlers = [];\n this._handlers.insert = handlers;\n }\n\n handlers.push(callback);\n }\n }\n /**\n * Update the payload associated with the given ID to be the new supplied payload.\n * @param {string} id The ID of the entry that will be updated.\n * @param {any} payload The element that will replace the previous payload.\n * @returns {boolean} Returns true if the given ID is present in the collection, false otherwise.\n */\n\n }, {\n key: \"updateById\",\n value: function updateById(id, payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n if (found.id === id) {\n // set result to true since the ids match...\n result = true;\n\n this._invalidate();\n }\n } else {\n found = this._elementWithId(id, true);\n\n if (found) {\n found.payload = payload;\n result = true;\n\n this._invalidate();\n }\n }\n\n return result;\n }\n /**\n * Signal that the given element has been changed by notifying reactive data-source observers.\n * This method is basically a means to invalidate the inernal reactive data-source.\n * @param {any} payload The element that has been altered.\n * @returns {boolean} Returns true if the element is present in the collection, false otherwise.\n */\n\n }, {\n key: \"update\",\n value: function update(payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n result = true;\n\n this._invalidate();\n }\n\n return result;\n }\n /**\n * Insert an element in the collection. On success, the element ID (a unique string) is returned. On failure, returns null.\n * A failure scenario only happens when the given payload is already present in the collection. Note that NO exceptions are thrown!\n * @param {any} payload The element to be stored.\n * @returns {string} The ID of the inserted element or null if the element already exists...\n */\n\n }, {\n key: \"insert\",\n value: function insert(payload) {\n var id = null,\n found = this._elementWithPayload(payload, true);\n\n if (!found) {\n id = OHIF.utils.guid();\n\n this._elements(true).push({\n id: id,\n payload: payload\n });\n\n this._invalidate();\n\n this._trigger('insert', {\n id: id,\n data: payload\n });\n }\n\n return id;\n }\n /**\n * Remove all elements from the collection.\n * @returns {void} No meaningful value is returned.\n */\n\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var all = this._elements(true),\n length = all.length;\n\n for (var i = length - 1; i >= 0; i--) {\n var item = all[i];\n delete item.id;\n delete item.payload;\n all[i] = null;\n }\n\n all.splice(0, length);\n\n this._invalidate();\n }\n /**\n * Remove elements from the collection that match the criteria given in the property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} A list with all removed elements.\n */\n\n }, {\n key: \"remove\",\n value: function remove(propertyMap) {\n var found = this.findAllEntriesBy(propertyMap),\n foundCount = found.length,\n removed = [];\n\n if (foundCount > 0) {\n var all = this._elements(true);\n\n for (var i = foundCount - 1; i >= 0; i--) {\n var item = found[i];\n all.splice(item[2], 1);\n removed.push(item[0]);\n }\n\n this._invalidate();\n }\n\n return removed;\n }\n /**\n * Provides the ID of the given element inside the collection.\n * @param {any} payload The element being searched for.\n * @returns {string} The ID of the given element or undefined if the element is not present.\n */\n\n }, {\n key: \"getElementId\",\n value: function getElementId(payload) {\n var found = this._elementWithPayload(payload);\n\n return found && found.id;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"findById\",\n value: function findById(id) {\n var found = this._elementWithId(id);\n\n return found && found.payload;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfElement\",\n value: function indexOfElement(payload) {\n return this._elements().indexOf(this._elementWithPayload(payload, true));\n }\n /**\n * Provides the position of the element associated with the given ID in the internal list returning -1 if the element is not present.\n * @param {string} id The index of the element.\n * @returns {number} The position of the element associated with the given ID in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfId\",\n value: function indexOfId(id) {\n return this._elements().indexOf(this._elementWithId(id, true));\n }\n /**\n * Provides a list-like approach to the collection returning an element by index.\n * @param {number} index The index of the element.\n * @returns {any} If out of bounds, undefined is returned. Otherwise the element in the given position is returned.\n */\n\n }, {\n key: \"getElementByIndex\",\n value: function getElementByIndex(index) {\n var found = this._elements()[index >= 0 ? index : -1];\n\n return found && found.payload;\n }\n /**\n * Find an element by a criteria defined by the given callback function.\n * Attention!!! The reactive source will not be notified if no valid callback is supplied...\n * @param {function} callback A callback function which will define the search criteria. The callback\n * function will be passed the collection element, its ID and its index in this very order. The callback\n * shall return true when its criterea has been fulfilled.\n * @returns {any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"find\",\n value: function find(callback) {\n var _this = this;\n\n var found;\n\n if (_isFunction(callback)) {\n found = this._elements().find(function (item, index) {\n return callback.call(_this, item.payload, item.id, index);\n });\n }\n\n return found && found.payload;\n }\n /**\n * Find the first element that strictly matches the specified property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"findBy\",\n value: function findBy(propertyMap, options) {\n var found;\n\n if (_isObject(options)) {\n // if the \"options\" argument is provided and is a valid object,\n // it must be applied to the dataset before search...\n var all = this.all(options);\n\n if (all.length > 0) {\n if (_isObject(propertyMap)) {\n found = all.find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item);\n });\n } else {\n found = all[0]; // simply extract the first element...\n }\n }\n } else if (_isObject(propertyMap)) {\n found = this._elements().find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item.payload);\n });\n\n if (found) {\n found = found.payload;\n }\n }\n\n return found;\n }\n /**\n * Find all elements that strictly match the specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} An array of entries of all elements that match the given criteria. Each set in\n * in the array has the following format: [ elementData, elementId, elementIndex ].\n */\n\n }, {\n key: \"findAllEntriesBy\",\n value: function findAllEntriesBy(propertyMap) {\n var found = [];\n\n if (_isObject(propertyMap)) {\n this._elements().forEach(function (item, index) {\n if (_compareToPropertyMapStrict(propertyMap, item.payload)) {\n // Match! Add it to the found list...\n found.push([item.payload, item.id, index]);\n }\n });\n }\n\n return found;\n }\n /**\n * Find all elements that match a specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements that match the given criteria and sorted in the specified sorting order.\n */\n\n }, {\n key: \"findAllBy\",\n value: function findAllBy(propertyMap, options) {\n var found = this.findAllEntriesBy(propertyMap).map(function (item) {\n return item[0];\n }); // Only payload is relevant...\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(found, options.sort);\n }\n }\n\n return found;\n }\n /**\n * Executes the supplied callback function for each element of the collection.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {function} callback The callback function to be executed. The callback is passed the element,\n * its ID and its index in this very order.\n * @returns {void} Nothing is returned.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this2 = this;\n\n if (_isFunction(callback)) {\n this._elements().forEach(function (item, index) {\n callback.call(_this2, item.payload, item.id, index);\n });\n }\n }\n /**\n * Count the number of elements currently in the collection.\n * @returns {number} The current number of elements in the collection.\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this._elements().length;\n }\n /**\n * Returns a list with all elements of the collection optionally sorted by a sorting specifier criteria.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements stored in the collection.\n */\n\n }, {\n key: \"all\",\n value: function all(options) {\n var list = this._elements().map(function (item) {\n return item.payload;\n });\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(list, options.sort);\n }\n }\n\n return list;\n }\n }]);\n\n return TypeSafeCollection;\n}();\n/**\n * Utility Functions\n */\n\n/**\n * Test if supplied argument is a valid object for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\nfunction _isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n}\n/**\n * Test if supplied argument is a valid string for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isString(subject) {\n return typeof subject === 'string';\n}\n/**\n * Test if supplied argument is a valid function for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isFunction(subject) {\n return typeof subject === 'function';\n}\n/**\n * Shortcut for Object's prototype \"hasOwnProperty\" method.\n */\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Retrieve an object's property value by name. Composite property names (e.g., 'address.country.name') are accepted.\n * @param {Object} targetObject The object we want read the property from...\n * @param {String} propertyName The property to be read (e.g., 'address.street.name' or 'address.street.number'\n * to read object.address.street.name or object.address.street.number, respectively);\n * @returns {Any} Returns whatever the property holds or undefined if the property cannot be read or reached.\n */\n\nfunction _getPropertyValue(targetObject, propertyName) {\n var propertyValue; // undefined (the default return value)\n\n if (_isObject(targetObject) && _isString(propertyName)) {\n var fragments = propertyName.split(PROPERTY_SEPARATOR);\n var fragmentCount = fragments.length;\n\n if (fragmentCount > 0) {\n var firstFragment = fragments[0];\n var remainingFragments = fragmentCount > 1 ? fragments.slice(1).join(PROPERTY_SEPARATOR) : null;\n propertyValue = targetObject[firstFragment];\n\n if (remainingFragments !== null) {\n propertyValue = _getPropertyValue(propertyValue, remainingFragments);\n }\n }\n }\n\n return propertyValue;\n}\n/**\n * Compare a property map with a target object using strict comparison.\n * @param {Object} propertyMap The property map whose properties will be used for comparison. Composite\n * property names (e.g., 'address.country.name') will be tested against the \"resolved\" properties from the target object.\n * @param {Object} targetObject The target object whose properties will be tested.\n * @returns {boolean} Returns true if the properties match, false otherwise.\n */\n\n\nfunction _compareToPropertyMapStrict(propertyMap, targetObject) {\n var result = false; // \"for in\" loops do not thown exceptions for invalid data types...\n\n for (var propertyName in propertyMap) {\n if (_hasOwnProperty.call(propertyMap, propertyName)) {\n if (propertyMap[propertyName] !== _getPropertyValue(targetObject, propertyName)) {\n result = false;\n break;\n } else if (result !== true) {\n result = true;\n }\n }\n }\n\n return result;\n}\n/**\n * Checks if a sorting specifier is valid.\n * A valid sorting specifier consists of an array of arrays being each subarray a pair\n * in the format [\"property name\", \"sorting order\"].\n * The following exemple can be used to sort studies by \"date\"\" and use \"time\" to break ties in descending order.\n * [ [ 'study.date', 'desc' ], [ 'study.time', 'desc' ] ]\n * @param {Array} specifiers The sorting specifier to be tested.\n * @returns {boolean} Returns true if the specifiers are valid, false otherwise.\n */\n\n\nfunction _isValidSortingSpecifier(specifiers) {\n var result = true;\n\n if (specifiers instanceof Array && specifiers.length > 0) {\n for (var i = specifiers.length - 1; i >= 0; i--) {\n var item = specifiers[i];\n\n if (item instanceof Array) {\n var property = item[0];\n var order = item[1];\n\n if (_isString(property) && (order === ORDER_ASC || order === ORDER_DESC)) {\n continue;\n }\n }\n\n result = false;\n break;\n }\n }\n\n return result;\n}\n/**\n * Sorts an array based on sorting specifier options.\n * @param {Array} list The that needs to be sorted.\n * @param {Array} specifiers An array of specifiers. Please read isValidSortingSpecifier method definition for further details.\n * @returns {void} No value is returned. The array is sorted in place.\n */\n\n\nfunction _sortListBy(list, specifiers) {\n if (list instanceof Array && _isValidSortingSpecifier(specifiers)) {\n var specifierCount = specifiers.length;\n list.sort(function _sortListByCallback(a, b) {\n // callback name for stack traces...\n var index = 0;\n\n while (index < specifierCount) {\n var specifier = specifiers[index];\n var property = specifier[0];\n var order = specifier[1] === ORDER_DESC ? -1 : 1;\n\n var aValue = _getPropertyValue(a, property);\n\n var bValue = _getPropertyValue(b, property); // @TODO: should we check for the types being compared, like:\n // ~~ if (typeof aValue !== typeof bValue) continue;\n // Not sure because dates, for example, can be correctly compared to numbers...\n\n\n if (aValue < bValue) {\n return order * -1;\n }\n\n if (aValue > bValue) {\n return order * 1;\n }\n\n if (++index >= specifierCount) {\n return 0;\n }\n }\n });\n } else {\n throw new Error('Invalid Arguments');\n }\n}\n\n/**\n * Abstract class to fetch study metadata.\n */\n\nvar StudyMetadataSource =\n/*#__PURE__*/\nfunction () {\n function StudyMetadataSource() {\n _classCallCheck(this, StudyMetadataSource);\n }\n\n _createClass(StudyMetadataSource, [{\n key: \"getByInstanceUID\",\n\n /**\n * Get study metadata for a study with given study InstanceUID.\n * @param {String} studyInstanceUID Study InstanceUID.\n */\n value: function getByInstanceUID(studyInstanceUID) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::getByInstanceUID is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n /**\n * Load study info and study metadata for a given study into the viewer.\n * @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.\n */\n\n }, {\n key: \"loadStudy\",\n value: function loadStudy(study) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::loadStudy is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n }]);\n\n return StudyMetadataSource;\n}();\n\nvar classes = {\n MetadataProvider: MetadataProvider,\n CommandsManager: CommandsManager,\n HotkeysContext: HotkeysContext,\n HotkeysManager: HotkeysManager,\n ImageSet: ImageSet,\n StudyPrefetcher: StudyPrefetcher,\n StudyLoadingListener: StudyLoadingListener,\n StackLoadingListener: StackLoadingListener,\n DICOMFileLoadingListener: DICOMFileLoadingListener,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n //StudySummary,\n TypeSafeCollection: TypeSafeCollection,\n OHIFError: OHIFError,\n StudyMetadataSource: StudyMetadataSource\n};\n\nvar defaultButtons = [{\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: '/icons.svg#icon-tools-pan',\n active: false\n}, {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: '/icons.svg#icon-tools-zoom',\n active: false\n}, {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: '/icons.svg#icon-tools-measure-target',\n active: false\n}, {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: '/icons.svg#icon-tools-stack-scroll',\n active: false\n}, {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: '/icons.svg#icon-tools-reset',\n active: false\n}, {\n command: 'Wwwc',\n type: 'tool',\n text: 'Manual',\n svgUrl: '/icons.svg#icon-tools-levels',\n active: true\n}, {\n command: 'setWLPresetSoftTissue',\n type: 'command',\n text: 'Soft Tissue',\n svgUrl: '/icons.svg#icon-wl-soft-tissue',\n active: false\n}, {\n command: 'setWLPresetLung',\n type: 'command',\n text: 'Lung',\n svgUrl: '/icons.svg#icon-wl-lung',\n active: false\n}, {\n command: 'setWLPresetLiver',\n type: 'command',\n text: 'Liver',\n svgUrl: '/icons.svg#icon-wl-liver',\n active: false\n}, {\n command: 'setWLPresetBrain',\n type: 'command',\n text: 'Brain',\n svgUrl: '/icons.svg#icon-wl-brain',\n active: false\n}];\n\nvar tools = function tools() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n buttons: defaultButtons\n };\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'SET_TOOL_ACTIVE':\n var item = state.buttons.find(function (button) {\n return button.command === action.tool;\n });\n var buttons = [];\n\n if (item.type === 'tool') {\n buttons = state.buttons.map(function (button) {\n if (button.command === action.tool) {\n button.active = true;\n } else if (button.type === 'tool') {\n button.active = false;\n }\n\n return button;\n });\n }\n\n return {\n buttons: buttons\n };\n\n case 'SET_AVAILABLE_BUTTONS':\n return {\n buttons: action.buttons\n };\n\n default:\n return state;\n }\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_merge = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n});\n\nvar defaultState = {\n activeViewportIndex: 0,\n layout: {\n viewports: [{\n height: '100%',\n width: '100%'\n }]\n },\n viewportSpecificData: {}\n};\n\nvar viewports = function viewports() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var viewportSpecificData;\n\n switch (action.type) {\n case 'SET_VIEWPORT_ACTIVE':\n return Object.assign({}, state, {\n activeViewportIndex: action.viewportIndex\n });\n\n case 'SET_LAYOUT':\n return Object.assign({}, state, {\n layout: action.layout\n });\n\n case 'SET_VIEWPORT_SPECIFIC_DATA':\n var currentData = lodash_clonedeep(state.viewportSpecificData[action.viewportIndex]) || {};\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = lodash_merge({}, currentData, action.data);\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n case 'CLEAR_VIEWPORT_SPECIFIC_DATA':\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = {};\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$1 = {\n servers: []\n};\n\nvar servers = function servers() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$1;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_SERVER':\n var _servers = state.servers;\n\n var alreadyExists = _servers.find(function (server) {\n return server.id === action.server.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n _servers.push(action.server);\n\n if (_servers.length === 1) {\n _servers[0].active = true;\n }\n\n return Object.assign({}, state, {\n servers: _servers\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$2 = {\n progress: {},\n lastUpdated: null\n};\n\nvar loading = function loading() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$2;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var progress;\n var lastUpdated;\n\n switch (action.type) {\n case 'SET_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n progress[action.progressId] = action.progressData; // This is a workaround so we can easily identify changes\n // to the progress object without doing deep comparison.\n\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n case 'CLEAR_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n delete progress[action.progressId];\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n default:\n return state;\n }\n};\n\nvar PLUGIN_TYPES = {\n VIEWPORT: 'viewport'\n};\nvar plugins = {\n PLUGIN_TYPES: PLUGIN_TYPES,\n availablePlugins: []\n};\n\nvar defaultState$3 = {\n availablePlugins: []\n};\n\nvar plugins$1 = function plugins$$1() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$3;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_PLUGIN':\n var availablePlugins = state.availablePlugins;\n var alreadyExists = availablePlugins.find(function (plugin) {\n return plugin.id === action.plugin.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n availablePlugins.push({\n id: action.plugin.id,\n type: action.plugin.type\n }); // Not sure where else to put this. We shouldn't store functions in Redux, so I'll do this instead\n\n plugins.availablePlugins.push(action.plugin);\n return Object.assign({}, state, {\n availablePlugins: availablePlugins\n });\n\n default:\n return state;\n }\n};\n\nvar reducers = {\n tools: tools,\n viewports: viewports,\n servers: servers,\n loading: loading,\n plugins: plugins$1\n};\n\nvar redux = {\n reducers: reducers,\n actions: actions\n};\n\n// TODO: This is duplicated in TypeSafeCollection\nfunction isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n} // TODO: This is duplicated in TypeSafeCollection\n\n\nfunction isString(subject) {\n return typeof subject === 'string';\n} // Search for some string inside any object or array\n\n\nfunction search(object, query) {\n var property = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var result = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // Create the search pattern\n var pattern = new RegExp(query.trim(), 'i');\n Object.keys(object).forEach(function (key) {\n var item = object[key]; // Stop here if item is empty\n\n if (!item) {\n return;\n } // Get the value to be compared\n\n\n var value = isString(property) ? item[property] : item; // Check if the value match the pattern\n\n if (isString(value) && pattern.test(value)) {\n // Add the current item to the result\n result.push(item);\n }\n\n if (isObject(item)) {\n // Search recursively the item if the current item is an object\n search(item, query, property, result);\n }\n }); // Return the found items\n\n return result;\n} // Encode any string into a safe format for HTML id attribute\n\n\nfunction encodeId(input) {\n var string = input && input.toString ? input.toString() : input; // Return an underscore if the given string is empty or if it's not a string\n\n if (string === '' || typeof string !== 'string') {\n return '_';\n } // Create a converter to replace non accepted chars\n\n\n var converter = function converter(match) {\n return '_' + match[0].charCodeAt(0).toString(16) + '_';\n }; // Encode the given string and return it\n\n\n return string.replace(/[^a-zA-Z0-9-]/g, converter);\n}\n\nvar string = {\n search: search,\n encodeId: encodeId\n};\n\n// Transforms a shallow object with keys separated by \".\" into a nested object\nfunction getNestedObject(shallowObject) {\n var nestedObject = {};\n\n for (var key in shallowObject) {\n if (!shallowObject.hasOwnProperty(key)) continue;\n var value = shallowObject[key];\n var propertyArray = key.split('.');\n var currentObject = nestedObject;\n\n while (propertyArray.length) {\n var currentProperty = propertyArray.shift();\n\n if (!propertyArray.length) {\n currentObject[currentProperty] = value;\n } else {\n if (!currentObject[currentProperty]) {\n currentObject[currentProperty] = {};\n }\n\n currentObject = currentObject[currentProperty];\n }\n }\n }\n\n return nestedObject;\n}\n\nfunction getShallowObject(nestedObject) {\n var shallowObject = {};\n\n var putValues = function putValues(baseKey, nestedObject, resultObject) {\n for (var key in nestedObject) {\n if (!nestedObject.hasOwnProperty(key)) continue;\n var currentKey = baseKey ? \"\".concat(baseKey, \".\").concat(key) : key;\n var currentValue = nestedObject[key];\n\n if (_typeof(currentValue) === 'object') {\n if (currentValue instanceof Array) {\n currentKey += '[]';\n }\n\n putValues(currentKey, currentValue, resultObject);\n } else {\n resultObject[currentKey] = currentValue;\n }\n }\n };\n\n putValues('', nestedObject, shallowObject);\n return shallowObject;\n}\nvar object = {\n getNestedObject: getNestedObject,\n getShallowObject: getShallowObject\n};\n\nvar validate = createCommonjsModule(function (module, exports) {\n/*!\n * validate.js 0.12.0\n *\n * (c) 2013-2017 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n ;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 12,\n patch: 0,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n v.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", {attr: attribute}));\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false;\n\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n }\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(commonjsGlobal,\n exports,\n module,\n null);\n});\n\nvalidate.validators.equals = function (value, options, key, attributes) {\n if (options && value !== options.value) {\n return key + 'must equal ' + options.value;\n }\n};\n\nvalidate.validators.doesNotEqual = function (value, options, key) {\n if (options && value === options.value) {\n return key + 'cannot equal ' + options.value;\n }\n};\n\nvalidate.validators.contains = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) === -1) {\n return key + 'must contain ' + options.value;\n }\n};\n\nvalidate.validators.doesNotContain = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) !== -1) {\n return key + 'cannot contain ' + options.value;\n }\n};\n\nvalidate.validators.startsWith = function (value, options, key) {\n if (options && value.startsWith && !value.startsWith(options.value)) {\n return key + 'must start with ' + options.value;\n }\n};\n\nvalidate.validators.endsWith = function (value, options, key) {\n if (options && value.endsWith && !value.endsWith(options.value)) {\n return key + 'must end with ' + options.value;\n }\n};\n\n/**\n * Import Constants\n */\n\nvar StudySummary = metadata.StudySummary,\n InstanceMetadata$1 = metadata.InstanceMetadata;\n/**\n * Match a Metadata instance against rules using Validate.js for validation.\n * @param {StudySummary|InstanceMetadata} metadataInstance Metadata instance object\n * @param {Array} rules Array of MatchingRules instances (StudyMatchingRule|SeriesMatchingRule|ImageMatchingRule) for the match\n * @return {Object} Matching Object with score and details (which rule passed or failed)\n */\n\nvar match = function match(metadataInstance, rules) {\n // Make sure the supplied data is valid.\n if (!(metadataInstance instanceof StudySummary || metadataInstance instanceof InstanceMetadata$1)) {\n throw new OHIFError('HPMatcher::match metadataInstance must be an instance of StudySummary or InstanceMetadata');\n }\n\n var options = {\n format: 'grouped'\n };\n var details = {\n passed: [],\n failed: []\n };\n var requiredFailed = false;\n var score = 0;\n rules.forEach(function (rule) {\n var attribute = rule.attribute;\n var customAttributeExists = metadataInstance.customAttributeExists(attribute); // If the metadataInstance we are testing (e.g. study, series, or instance MetadataInstance) do\n // not contain the attribute specified in the rule, check whether or not they have been\n // defined in the CustomAttributeRetrievalCallbacks Object.\n\n if (!customAttributeExists && HP.CustomAttributeRetrievalCallbacks.hasOwnProperty(attribute)) {\n var customAttribute = HP.CustomAttributeRetrievalCallbacks[attribute];\n metadataInstance.setCustomAttribute(attribute, customAttribute.callback(metadataInstance));\n customAttributeExists = true;\n } // Format the constraint as required by Validate.js\n\n\n var testConstraint = _defineProperty({}, attribute, rule.constraint); // Create a single attribute object to be validated, since metadataInstance is an\n // instance of Metadata (StudyMetadata, SeriesMetadata or InstanceMetadata)\n\n\n var attributeValue = customAttributeExists ? metadataInstance.getCustomAttribute(attribute) : metadataInstance.getTagValue(attribute);\n\n var attributeMap = _defineProperty({}, attribute, attributeValue); // Use Validate.js to evaluate the constraints on the specified metadataInstance\n\n\n var errorMessages;\n\n try {\n errorMessages = validate(attributeMap, testConstraint, [options]);\n } catch (e) {\n errorMessages = ['Something went wrong during validation.', e];\n }\n\n if (!errorMessages) {\n // If no errorMessages were returned, then validation passed.\n // Add the rule's weight to the total score\n score += parseInt(rule.weight, 10); // Log that this rule passed in the matching details object\n\n details.passed.push({\n rule: rule\n });\n } else {\n // If errorMessages were present, then validation failed\n // If the rule that failed validation was Required, then\n // mark that a required Rule has failed\n if (rule.required) {\n requiredFailed = true;\n } // Log that this rule failed in the matching details object\n // and include any error messages\n\n\n details.failed.push({\n rule: rule,\n errorMessages: errorMessages\n });\n }\n }); // If a required Rule has failed Validation, set the matching score to zero\n\n if (requiredFailed) {\n score = 0;\n }\n\n return {\n score: score,\n details: details,\n requiredFailed: requiredFailed\n };\n};\n\nvar HPMatcher = {\n match: match\n};\n\n// Sorts an array by score\nvar sortByScore = function sortByScore(arr) {\n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n};\n\n/**\n * Import Constants\n */\n\nvar StudyMetadata$1 = metadata.StudyMetadata,\n InstanceMetadata$2 = metadata.InstanceMetadata,\n StudySummary$1 = metadata.StudySummary;\n\n\nvar ABSTRACT_PRIOR_VALUE = 'abstractPriorValue';\n/*Meteor.startup(() => {\n HP.addCustomViewportSetting('wlPreset', 'Window/Level Preset', Object.create(null), (element, optionValue) => {\n if (_.findWhere(OHIF.viewer.wlPresets, { id: optionValue })) {\n OHIF.viewerbase.wlPresets.applyWLPreset(optionValue, element);\n }\n });\n});*/\n// TODO:\n// Should have ProtocolStore as an input to constructor\n// Something to update current HP and current stage 'globally'\n//\n//\n// Should allow user to provide:\n// functions for adding /\n\nvar ProtocolEngine =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n * @param {Array} studies Array of study metadata\n * @param {Map} priorStudies Map of prior studies\n * @param {Object} studyMetadataSource Instance of StudyMetadataSource (ohif-viewerbase) Object to get study metadata\n */\n function ProtocolEngine(studies, priorStudies, studyMetadataSource) {\n _classCallCheck(this, ProtocolEngine);\n\n _defineProperty(this, \"matchedProtocols\", new Set());\n\n _defineProperty(this, \"matchedProtocolScores\", new Map());\n\n // -----------\n // Type Validations\n if (!(studyMetadataSource instanceof StudyMetadataSource)) {\n throw new OHIFError('ProtocolEngine::constructor studyMetadataSource is not an instance of StudyMetadataSource');\n }\n\n if (!(studies instanceof Array) && !studies.every(function (study) {\n return study instanceof StudyMetadata$1;\n })) {\n throw new OHIFError(\"ProtocolEngine::constructor studies is not an array or it's items are not instances of StudyMetadata\");\n } // --------------\n // Initialization\n\n\n this.studies = studies;\n this.priorStudies = priorStudies instanceof Map ? priorStudies : new Map();\n this.studyMetadataSource = studyMetadataSource; // Put protocol engine in a known state\n\n this.reset(); // Create an array for new stage ids to be stored\n // while editing a stage\n\n this.newStageIds = [];\n }\n /**\n * Resets the ProtocolEngine to the best match\n */\n\n\n _createClass(ProtocolEngine, [{\n key: \"reset\",\n value: function reset() {\n var protocol = this.getBestProtocolMatch();\n this.setHangingProtocol(protocol);\n }\n /**\n * Retrieves the current Stage from the current Protocol and stage index\n *\n * @returns {*} The Stage model for the currently displayed Stage\n */\n\n }, {\n key: \"getCurrentStageModel\",\n value: function getCurrentStageModel() {\n return this.protocol.stages[this.stage];\n }\n /**\n * Finds the best protocols from Protocol Store, matching each protocol matching rules\n * with the given study. The best protocol are orded by score and returned in an array\n * @param {Object} study StudyMetadata instance object\n * @return {Array} Array of match objects or an empty array if no match was found\n * Each match object has the score of the matching and the matched\n * protocol\n */\n\n }, {\n key: \"findMatchByStudy\",\n value: function findMatchByStudy(study) {\n log$1.trace('ProtocolEngine::findMatchByStudy');\n var matched = [];\n var studyInstance = study.getFirstInstance(); // Set custom attribute for study metadata\n\n var numberOfAvailablePriors = this.getNumberOfAvailablePriors(study.getObjectID());\n HP.ProtocolStore.getProtocol().forEach(function (protocol) {\n // Clone the protocol's protocolMatchingRules array\n // We clone it so that we don't accidentally add the\n // numberOfPriorsReferenced rule to the Protocol itself.\n var rules = protocol.protocolMatchingRules.slice();\n\n if (!rules) {\n return;\n } // Check if the study has the minimun number of priors used by the protocol.\n\n\n var numberOfPriorsReferenced = protocol.getNumberOfPriorsReferenced();\n\n if (numberOfPriorsReferenced > numberOfAvailablePriors) {\n return;\n } // Run the matcher and get matching details\n\n\n var matchedDetails = HPMatcher.match(studyInstance, rules);\n var score = matchedDetails.score; // The protocol matched some rule, add it to the matched list\n\n if (score > 0) {\n matched.push({\n score: score,\n protocol: protocol\n });\n }\n }); // If no matches were found, select the default protocol\n\n if (!matched.length) {\n var defaultProtocol = HP.ProtocolStore.getProtocol('defaultProtocol');\n return [{\n score: 1,\n protocol: defaultProtocol\n }];\n } // Sort the matched list by score\n\n\n sortByScore(matched);\n log$1.trace('ProtocolEngine::findMatchByStudy matched', matched);\n return matched;\n }\n }, {\n key: \"_clearMatchedProtocols\",\n value: function _clearMatchedProtocols() {\n this.matchedProtocols.clear();\n this.matchedProtocolScores.clear();\n }\n /**\n * Populates the MatchedProtocols Collection by running the matching procedure\n */\n\n }, {\n key: \"updateProtocolMatches\",\n value: function updateProtocolMatches() {\n var _this = this;\n\n log$1.trace('ProtocolEngine::updateProtocolMatches'); // Clear all data currently in matchedProtocols\n\n this._clearMatchedProtocols(); // For each study, find the matching protocols\n\n\n this.studies.forEach(function (study) {\n var matched = _this.findMatchByStudy(study); // For each matched protocol, check if it is already in MatchedProtocols\n\n\n matched.forEach(function (matchedDetail) {\n var protocol = matchedDetail.protocol;\n\n if (!protocol) {\n return;\n } // If it is not already in the MatchedProtocols Collection, insert it with its score\n\n\n if (!_this.matchedProtocols.has(protocol)) {\n log$1.trace('ProtocolEngine::updateProtocolMatches inserting protocol match', matchedDetail);\n\n _this.matchedProtocols.add(protocol);\n\n _this.matchedProtocolScores[protocol.id] = matchedDetail.score;\n }\n });\n });\n }\n }, {\n key: \"_getHighestScoringProtocol\",\n value: function _getHighestScoringProtocol() {\n var highestScoringProtocolId = ProtocolEngine._largestKeyByValue(this.matchedProtocolScores);\n\n return this.matchedProtocols[highestScoringProtocolId];\n }\n /**\n * Return the best matched Protocol to the current study or set of studies\n * @returns {*}\n */\n\n }, {\n key: \"getBestProtocolMatch\",\n value: function getBestProtocolMatch() {\n // Run the matching to populate matchedProtocols Set and Map\n this.updateProtocolMatches(); // Retrieve the highest scoring Protocol\n\n var bestMatch = this._getHighestScoringProtocol();\n\n log$1.trace('ProtocolEngine::getBestProtocolMatch bestMatch', bestMatch);\n return bestMatch;\n }\n /**\n * Get the number of prior studies supplied in the priorStudies map property.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {number} The number of available prior studies with the same PatientID\n */\n\n }, {\n key: \"getNumberOfAvailablePriors\",\n value: function getNumberOfAvailablePriors(studyObjectID) {\n return this.getAvailableStudyPriors(studyObjectID).length;\n }\n /**\n * Get the array of prior studies from a specific study.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {Array} The array of available priors or an empty array\n */\n\n }, {\n key: \"getAvailableStudyPriors\",\n value: function getAvailableStudyPriors(studyObjectID) {\n var priors = this.priorStudies.get(studyObjectID);\n return priors instanceof Array ? priors : [];\n } // Match images given a list of Studies and a Viewport's image matching reqs\n\n }, {\n key: \"matchImages\",\n value: function matchImages(viewport, viewportIndex) {\n var _this2 = this;\n\n log$1.trace('ProtocolEngine::matchImages');\n var studyMatchingRules = viewport.studyMatchingRules,\n seriesMatchingRules = viewport.seriesMatchingRules,\n instanceMatchingRules = viewport.imageMatchingRules;\n var matchingScores = [];\n var currentStudy = this.studies[0]; // @TODO: Should this be: this.studies[this.currentStudy] ???\n\n var firstInstance = currentStudy.getFirstInstance();\n var highestStudyMatchingScore = 0;\n var highestSeriesMatchingScore = 0; // Set custom attribute for study metadata and it's first instance\n\n currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n } // Only used if study matching rules has abstract prior values defined...\n\n\n var priorStudies;\n studyMatchingRules.forEach(function (rule) {\n if (rule.attribute === ABSTRACT_PRIOR_VALUE) {\n var validatorType = Object.keys(rule.constraint)[0];\n var validator = Object.keys(rule.constraint[validatorType])[0];\n var abstractPriorValue = rule.constraint[validatorType][validator];\n abstractPriorValue = parseInt(abstractPriorValue, 10); // TODO: Restrict or clarify validators for abstractPriorValue?\n // No need to call it more than once...\n\n if (!priorStudies) {\n priorStudies = _this2.getAvailableStudyPriors(currentStudy.getObjectID());\n } // TODO: Revisit this later: What about two studies with the same\n // study date?\n\n\n var priorStudy;\n\n if (abstractPriorValue === -1) {\n priorStudy = priorStudies[priorStudies.length - 1];\n } else {\n var studyIndex = Math.max(abstractPriorValue - 1, 0);\n priorStudy = priorStudies[studyIndex];\n } // Invalid data\n\n\n if (!(priorStudy instanceof StudyMetadata$1) && !(priorStudy instanceof StudySummary$1)) {\n return;\n }\n\n var priorStudyObjectID = priorStudy.getObjectID(); // Check if study metadata is already in studies list\n\n if (_this2.studies.find(function (study) {\n return study.getObjectID() === priorStudyObjectID;\n })) {\n return;\n } // Get study metadata if necessary and load study in the viewer (each viewer should provide it's own load study method)\n\n\n _this2.studyMetadataSource.loadStudy(priorStudy).then(function (studyMetadata) {\n // Set the custom attribute abstractPriorValue for the study metadata\n studyMetadata.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue); // Also add custom attribute\n\n var firstInstance = studyMetadata.getFirstInstance();\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue);\n } // Insert the new study metadata\n\n\n _this2.studies.push(studyMetadata); // Update the viewport to refresh layout manager with new study\n\n\n _this2.updateViewports(viewportIndex);\n }, function (error) {\n log$1.warn(error);\n throw new OHIFError(\"ProtocolEngine::matchImages could not get study metadata for the Study with the following ObjectID: \".concat(priorStudyObjectID));\n });\n } // TODO: Add relative Date / time\n\n });\n this.studies.forEach(function (study) {\n var studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {\n return;\n }\n\n highestStudyMatchingScore = studyMatchDetails.score;\n study.forEachSeries(function (series) {\n var seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {\n return;\n }\n\n highestSeriesMatchingScore = seriesMatchDetails.score;\n series.forEachInstance(function (instance, index) {\n // This tests to make sure there is actually image data in this instance\n // TODO: Change this when we add PDF and MPEG support\n // See https://ohiforg.atlassian.net/browse/LT-227\n // sopClassUid = x00080016\n // rows = x00280010\n if (!isImage(instance.getTagValue('x00080016')) && !instance.getTagValue('x00280010')) {\n return;\n }\n\n var instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (instanceMatchDetails.requiredFailed === true) {\n return;\n }\n\n var matchDetails = {\n passed: [],\n failed: []\n };\n matchDetails.passed = matchDetails.passed.concat(instanceMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(seriesMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(studyMatchDetails.details.passed);\n matchDetails.failed = matchDetails.failed.concat(instanceMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed);\n var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score;\n var currentSOPInstanceUID = instance.getSOPInstanceUID();\n var imageDetails = {\n studyInstanceUid: study.getStudyInstanceUID(),\n seriesInstanceUid: series.getSeriesInstanceUID(),\n sopInstanceUid: currentSOPInstanceUID,\n currentImageIdIndex: index,\n matchingScore: totalMatchScore,\n matchDetails: matchDetails,\n sortingInfo: {\n score: totalMatchScore,\n study: instance.getTagValue('x00080020') + instance.getTagValue('x00080030'),\n // StudyDate = x00080020 StudyTime = x00080030\n series: parseInt(instance.getTagValue('x00200011')),\n // TODO: change for seriesDateTime SeriesNumber = x00200011\n instance: parseInt(instance.getTagValue('x00200013')) // TODO: change for acquisitionTime InstanceNumber = x00200013\n\n }\n }; // Find the displaySet\n\n var displaySet = study.findDisplaySet(function (displaySet) {\n return displaySet.images.find(function (image) {\n return image.getSOPInstanceUID() === currentSOPInstanceUID;\n });\n }); // If the instance was found, set the displaySet ID\n\n if (displaySet) {\n imageDetails.displaySetInstanceUid = displaySet.getUID();\n imageDetails.imageId = instance.getImageId();\n }\n\n matchingScores.push(imageDetails);\n });\n });\n }); // Sort the matchingScores\n\n var sortingFunction = sortBy({\n name: 'score',\n reverse: true\n }, {\n name: 'study',\n reverse: true\n }, {\n name: 'instance'\n }, {\n name: 'series'\n });\n matchingScores.sort(function (a, b) {\n return sortingFunction(a.sortingInfo, b.sortingInfo);\n });\n var bestMatch = matchingScores[0];\n log$1.trace('ProtocolEngine::matchImages bestMatch', bestMatch);\n return {\n bestMatch: bestMatch,\n matchingScores: matchingScores\n };\n }\n /**\n * Rerenders viewports that are part of the current ProtocolEngine's LayoutManager\n * using the matching rules internal to each viewport.\n *\n * If this function is provided the index of a viewport, only the specified viewport\n * is rerendered.\n *\n * @param viewportIndex\n */\n\n }, {\n key: \"updateViewports\",\n value: function updateViewports(viewportIndex) {\n var _this3 = this;\n\n log$1.trace(\"ProtocolEngine::updateViewports viewportIndex: \".concat(viewportIndex)); // Make sure we have an active protocol with a non-empty array of display sets\n\n if (!this.getNumProtocolStages()) {\n return;\n } // Retrieve the current stage\n\n\n var stageModel = this.getCurrentStageModel(); // If the current stage does not fulfill the requirements to be displayed,\n // stop here.\n\n if (!stageModel || !stageModel.viewportStructure || !stageModel.viewports || !stageModel.viewports.length) {\n return;\n } // Retrieve the layoutTemplate associated with the current display set's viewport structure\n // If no such template name exists, stop here.\n\n\n var layoutTemplateName = stageModel.viewportStructure.getLayoutTemplateName();\n\n if (!layoutTemplateName) {\n return;\n } // Retrieve the properties associated with the current display set's viewport structure template\n // If no such layout properties exist, stop here.\n\n\n var layoutProps = stageModel.viewportStructure.properties;\n\n if (!layoutProps) {\n return;\n } // Create an empty array to store the output viewportData\n\n\n var viewportData = []; // Empty the matchDetails associated with the ProtocolEngine.\n // This will be used to store the pass/fail details and score\n // for each of the viewport matching procedures\n\n this.matchDetails = []; // Loop through each viewport\n\n stageModel.viewports.forEach(function (viewport, viewportIndex) {\n var details = _this3.matchImages(viewport, viewportIndex);\n\n _this3.matchDetails[viewportIndex] = details; // Convert any YES/NO values into true/false for Cornerstone\n\n var cornerstoneViewportParams = {}; // Cache viewportSettings keys\n\n var viewportSettingsKeys = Object.keys(viewport.viewportSettings);\n viewportSettingsKeys.forEach(function (key) {\n var value = viewport.viewportSettings[key];\n\n if (value === 'YES') {\n value = true;\n } else if (value === 'NO') {\n value = false;\n }\n\n cornerstoneViewportParams[key] = value;\n }); // imageViewerViewports occasionally needs relevant layout data in order to set\n // the element style of the viewport in question\n\n var currentViewportData = _objectSpread({\n viewportIndex: viewportIndex,\n viewport: cornerstoneViewportParams\n }, layoutProps);\n\n var customSettings = [];\n viewportSettingsKeys.forEach(function (id) {\n var setting = HP.CustomViewportSettings[id];\n\n if (!setting) {\n return;\n }\n\n customSettings.push({\n id: id,\n value: viewport.viewportSettings[id]\n });\n });\n\n currentViewportData.renderedCallback = function (element) {\n //console.log('renderedCallback for ' + element.id);\n customSettings.forEach(function (customSetting) {\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback Applying custom setting: \".concat(customSetting.id));\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback with value: \".concat(customSetting.value));\n var setting = HP.CustomViewportSettings[customSetting.id];\n setting.callback(element, customSetting.value);\n });\n };\n\n var currentMatch = details.bestMatch;\n var currentPosition = 1;\n var scoresLength = details.matchingScores.length;\n\n while (currentPosition < scoresLength && viewportData.find(function (a) {\n return a.imageId === currentMatch.imageId;\n })) {\n currentMatch = details.matchingScores[currentPosition];\n currentPosition++;\n }\n\n if (currentMatch && currentMatch.imageId) {\n currentViewportData.studyInstanceUid = currentMatch.studyInstanceUid;\n currentViewportData.seriesInstanceUid = currentMatch.seriesInstanceUid;\n currentViewportData.sopInstanceUid = currentMatch.sopInstanceUid;\n currentViewportData.currentImageIdIndex = currentMatch.currentImageIdIndex;\n currentViewportData.displaySetInstanceUid = currentMatch.displaySetInstanceUid;\n currentViewportData.imageId = currentMatch.imageId;\n } // @TODO Why should we throw an exception when a best match is not found? This was aborting the whole process.\n // if (!currentViewportData.displaySetInstanceUid) {\n // throw new OHIFError('ProtocolEngine::updateViewports No matching display set found?');\n // }\n\n\n viewportData.push(currentViewportData);\n });\n this.LayoutManager.layoutTemplateName = layoutTemplateName;\n this.LayoutManager.layoutProps = layoutProps;\n this.LayoutManager.viewportData = viewportData;\n\n if (viewportIndex !== undefined && viewportData[viewportIndex]) {\n this.LayoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, viewportData[viewportIndex]);\n } else {\n this.LayoutManager.updateViewports();\n }\n }\n /**\n * Sets the current Hanging Protocol to the specified Protocol\n * An optional argument can also be used to prevent the updating of the Viewports\n *\n * @param newProtocol\n * @param updateViewports\n */\n\n }, {\n key: \"setHangingProtocol\",\n value: function setHangingProtocol(newProtocol) {\n var updateViewports = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log$1.trace('ProtocolEngine::setHangingProtocol newProtocol', newProtocol);\n log$1.trace(\"ProtocolEngine::setHangingProtocol updateViewports = \".concat(updateViewports)); // Reset the array of newStageIds\n\n this.newStageIds = [];\n\n if (HP.Protocol.prototype.isPrototypeOf(newProtocol)) {\n this.protocol = newProtocol;\n } else {\n this.protocol = new HP.Protocol();\n this.protocol.fromObject(newProtocol);\n }\n\n this.stage = 0; // Update viewports by default\n\n if (updateViewports) {\n this.updateViewports();\n } //Session.set('HangingProtocolName', this.protocol.name);\n //Session.set('HangingProtocolStage', this.stage);\n\n }\n /**\n * Check if the next stage is available\n * @return {Boolean} True if next stage is available or false otherwise\n */\n\n }, {\n key: \"isNextStageAvailable\",\n value: function isNextStageAvailable() {\n var numberOfStages = this.getNumProtocolStages();\n return this.stage + 1 < numberOfStages;\n }\n /**\n * Check if the previous stage is available\n * @return {Boolean} True if previous stage is available or false otherwise\n */\n\n }, {\n key: \"isPreviousStageAvailable\",\n value: function isPreviousStageAvailable() {\n return this.stage - 1 >= 0;\n }\n /**\n * Changes the current stage to a new stage index in the display set sequence.\n * It checks if the next stage exists.\n *\n * @param {Integer} stageAction An integer value specifying wheater next (1) or previous (-1) stage\n * @return {Boolean} True if new stage has set or false, otherwise\n */\n\n }, {\n key: \"setCurrentProtocolStage\",\n value: function setCurrentProtocolStage(stageAction) {\n // Check if previous or next stage is available\n if (stageAction === -1 && !this.isPreviousStageAvailable()) {\n return false;\n } else if (stageAction === 1 && !this.isNextStageAvailable()) {\n return false;\n } // Sets the new stage\n\n\n this.stage += stageAction; // Log the new stage\n\n log$1.trace(\"ProtocolEngine::setCurrentProtocolStage stage = \".concat(this.stage)); // Set stage Session variable for reactivity\n //Session.set('HangingProtocolStage', this.stage);\n // Since stage has changed, we need to update the viewports\n // and redo matchings\n\n this.updateViewports(); // Everything went well\n\n return true;\n }\n /**\n * Retrieves the number of Stages in the current Protocol or\n * undefined if no protocol or stages are set\n */\n\n }, {\n key: \"getNumProtocolStages\",\n value: function getNumProtocolStages() {\n if (!this.protocol || !this.protocol.stages || !this.protocol.stages.length) {\n return;\n }\n\n return this.protocol.stages.length;\n }\n /**\n * Switches to the next protocol stage in the display set sequence\n */\n\n }, {\n key: \"nextProtocolStage\",\n value: function nextProtocolStage() {\n log$1.trace('ProtocolEngine::nextProtocolStage');\n\n if (!this.setCurrentProtocolStage(1)) {\n log$1.trace('ProtocolEngine::nextProtocolStage failed');\n }\n }\n /**\n * Switches to the previous protocol stage in the display set sequence\n */\n\n }, {\n key: \"previousProtocolStage\",\n value: function previousProtocolStage() {\n log$1.trace('ProtocolEngine::previousProtocolStage');\n\n if (!this.setCurrentProtocolStage(-1)) {\n log$1.trace('ProtocolEngine::previousProtocolStage failed');\n }\n }\n }]);\n\n return ProtocolEngine;\n}();\n\nvar viewer = {};\nvar OHIF$1 = {\n viewer: viewer,\n utils: utils,\n studies: studies,\n redux: redux,\n classes: classes,\n metadata: metadata,\n hotkeys: hotkeys,\n header: header,\n cornerstone: cornerstone$1,\n string: string,\n ui: ui,\n user: user,\n object: object,\n commands: commands,\n log: log$1,\n external: external,\n DICOMWeb: DICOMWeb,\n plugins: plugins\n};\n\nexport default OHIF$1;\nexport { viewer, utils, studies, redux, classes, metadata, hotkeys, header, cornerstone$1 as cornerstone, string, ui, user, object, commands, log$1 as log, DICOMWeb, plugins, OHIF$1 as OHIF };\n//# sourceMappingURL=index.es.js.map\n","/*! dicom-parser - 1.8.2 - 2018-12-05 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return Z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(e).length;default:if(n)return Z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:f>223?3:f>191?2:1;if(i+h<=r)switch(h){case 1:f<128&&(u=f);break;case 2:128==(192&(a=e[i+1]))&&(l=(31&f)<<6|63&a)>127&&(u=l);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(l=(15&f)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&f)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return D(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return S(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},l.prototype.compare=function(e,t,r,n,i){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),f=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return y(this,e,t,r);case\"utf8\":case\"utf-8\":return b(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,a){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function B(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function U(e,t,r,n,a){return a||B(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||B(e,0,r,8),i.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return U(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return U(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function j(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var l=i(s.prototype),f=0;f1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=l}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+f[r].offset+8,f[r].length);for(var c=l(f,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;y.WritableState=_;var f=r(6);f.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,f=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(f||0===f)?f:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?l(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(2),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,l=!0;r;)i[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;i.allBuffers=l,b(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:f.length,f,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)})}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}f.inherits(y,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=g.destroy,y.prototype._undestroy=g.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,l,f;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(f=r.slice()).length,l=0;l0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var l=n[r],f=o(i,l);if(void 0===f)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,f);return(0,a.default)(e,t,f,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function f(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var l=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var f,v=\"\",S=!1,k=[\"{\",\"}\"];(c(r)&&(S=!0,k=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return b(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||S&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),f=S?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(f,v,k)):k[0]+v+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(l.value)<0?(s=g(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function y(e){return void 0===e}function b(e){return v(e)&&\"[object RegExp]\"===S(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===S(e)}function E(e){return v(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;f--)if(u[f]!==h[f])return!1;for(f=u.length-1;f>=0;f--)if(l=u[f],!y(e[l],t[l],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function b(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),l=!e&&i&&!r;if((s&&o&&v(i,r)||l)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){y(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){y(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){y(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){y(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function f(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=b;var a,o=r(38);b.ReadableState=y;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=r(34),f=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(b,l);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(2),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,o)):(i||(a=function(e,t){var r;n=t,f.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===f.prototype||(t=function(e){return f.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){c(\"emit readable\"),e.emit(\"readable\"),O(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=f.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function R(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?R(this):S(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&R(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&R(this)),null!==n&&this.emit(\"data\",n),n},b.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var l=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:b;function f(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",f),r.removeListener(\"end\",u),r.removeListener(\"end\",b),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(l):r.once(\"end\",l),e.on(\"unpipe\",f);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,O(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),b(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",y),b()}function y(){c(\"onfinish\"),e.removeListener(\"close\",_),b()}function b(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",y),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var l=new i.default(r.byteArrayParser,r.byteArray,t);return l.warnings=r.warnings,l.position=r.position,l}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=f(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,l,f,u,h,d){var c,p,g,m,_,y,b,v,w,E=d.bits,x=0,S=0,k=0,A=0,P=0,T=0,D=0,O=0,I=0,R=0,L=null,F=0,B=new n.Buf16(16),U=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)B[x]=0;for(S=0;S=1&&0===B[A];A--);if(P>A&&(P=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(k=1;k0&&(0===e||1!==A))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+B[x];for(S=0;S852||2===e&&I>592)return 1;for(;;){b=x-D,h[S]y?(v=M[N+h[S]],w=L[F+h[S]]):(v=96,w=0),c=1<>D)+(p-=c)]=b<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(R&=c-1,R+=c):R=0,S++,0==--B[x]){if(x===A)break;x=t[r+h[S]]}if(x>P&&(R&m)!==g){for(0===D&&(D=P),_+=k,O=1<<(T=x-D);T+D852||2===e&&I>592)return 1;f[g=R&m]=P<<24|T<<16|_-u|0}}return 0!==R&&(f[_+R]=x-D<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,l,f,u,h,d,c,p,g,m,_,y,b,v,w,E,x,S,k,A;r=e.state,n=e.next_in,k=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),l=r.dmax,f=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=b>>>24,p-=v,0===(v=b>>>16&255))A[a++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=g[(65535&b)+(c&(1<>>=v,p-=v),p<15&&(c+=k[n++]<>>=v=b>>>24,p-=v,!(16&(v=b>>>16&255))){if(0==(64&v)){b=m[(65535&b)+(c&(1<l){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=d,0===h){if(x+=f-v,v2;)A[a++]=S[x++],A[a++]=S[x++],A[a++]=S[x++],w-=3;w&&(A[a++]=S[x++],w>1&&(A[a++]=S[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var le,fe,ue=!0;function he(e){if(ue){var t;for(le=new n.Buf32(512),fe=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(f,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,fe,0,e.work,{bits:5}),ue=!1}e.lencode=le,e.lenbits=9,e.distcode=fe,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,le=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(le-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=S;case S:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,le=0,r.mode=k;case k:for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=A;case A:if(1024&r.flags){for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=T;case T:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&le,le-=7&le,r.mode=V;break}for(;le<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=B;break;case 1:if(he(r),r.mode=j,t===c){se>>>=2,le-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,le-=2;break;case B:for(se>>>=7&le,le-=7≤le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,le=0,r.mode=U,t===c)break e;case U:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;le<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,le-=5,r.ndist=1+(31&se),se>>>=5,le-=5,r.ncode=4+(15&se),se>>>=4,le-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>=3,le-=3}for(;r.have<19;)r.lens[Te[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Se={bits:r.lenbits},xe=s(l,r.lens,0,19,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=Z;case Z:for(;r.have>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,le-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;le>>=me,le-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,le-=2}else if(17===ye){for(ke=me+3;le>>=me)),se>>>=3,le-=3}else{for(ke=me+7;le>>=me)),se>>>=7,le-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,Se={bits:r.lenbits},xe=s(f,r.lens,0,r.nlen,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,Se={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Se),r.distbits=Se.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=j,t===c)break e;case j:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=le,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,le=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,r.length=ye,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=ye,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;le<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var f=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,y=15,b=16,v=7,w=256,E=16,x=17,S=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(p+2));l(D);var O=new Array(2*g);l(O);var I=new Array(512);l(I);var R=new Array(256);l(R);var L=new Array(d);l(L);var F,B,U,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function z(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Z(e){return e<256?I[e]:I[256+(e>>>7)]}function j(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>b-r?(e.bi_buf|=t<>b-e.bi_valid,e.bi_valid+=r-b):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(y+1),o=0;for(n=1;n<=y;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?j(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)J(e,a,r);i=l;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],J(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,J(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,l=t.dyn_tree,f=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=y;a++)e.bl_count[a]=0;for(l[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=l[2*l[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),l[2*n+1]=a,n>f||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=l[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>f||(l[2*i+1]!==a&&(e.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),n--)}}(e,t),W(a,f,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,l=7,f=4;for(0===o&&(l=138,f=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*T[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),l=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=l&&(l=f)):l=f=r+5,r+4<=l&&-1!==t?te(e,t,r,n):e.strategy===i||f===l?(C(e,(u<<1)+(n?1:0),3),K(e,D,O)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(R[r]+c+1)]++,e.dyn_dtree[2*Z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,D),function(e){16===e.bi_valid?(j(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),l=r(49),f=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,y=-5,b=-1,v=1,w=2,E=3,x=4,S=0,k=2,A=8,P=9,T=15,D=8,O=286,I=30,R=19,L=2*O+1,F=15,B=3,U=258,M=U+B+1,N=32,z=42,Z=69,j=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,J=4,K=3;function X(e,t){return e.msg=l[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,f=e.window,u=e.w_mask,h=e.prev,d=e.strstart+U,c=f[a+o-1],p=f[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(f[(r=t)+o]===p&&f[r+o-1]===c&&f[r]===f[a]&&f[++r]===f[a+1]){a+=2,r++;do{}while(f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=f[a+o-1],p=f[a+o]}}}while((t=h[t&u])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,l,f,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(f=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=f.avail_in)>d&&(c=d),r=0===c?0:(f.avail_in-=c,i.arraySet(u,f.input,f.next_in,c,h),1===f.state.wrap?f.adler=o(f.adler,u,c,h):2===f.state.wrap&&(f.adler=s(f.adler,u,c,h)),f.next_in+=c,f.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=B)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<=B)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-B,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*R+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*O+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*O+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=n,l.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===f)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new le(4,4,8,4,oe),new le(4,5,16,8,oe),new le(4,6,32,32,oe),new le(4,4,16,16,se),new le(8,16,32,32,se),new le(8,16,128,128,se),new le(8,32,128,256,se),new le(32,128,258,1024,se),new le(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,T,D,S)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=fe,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?y:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===z)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,K),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===Z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,y);if(i.status===W&&0!==e.avail_in)return X(e,y);if(0!==e.avail_in||0!==i.lookahead||t!==f&&i.status!==W){var b=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===f)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=U){if(ae(e),e.lookahead<=U&&t===f)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+U;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(r=a._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(b!==V&&b!==J||(i.status=W),b===H||b===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(b===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==z&&t!==Z&&t!==j&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,l,f,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==z||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),l=e.avail_in,f=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=B;){n=r.strstart,a=r.lookahead-(B-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,l,f,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=f,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,l){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,l=1,f={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function f(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",l),r.removeListener(\"error\",f),e.removeListener(\"error\",f),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",f),e.on(\"error\",f),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,l=r(1).kMaxLength,f=\"Cannot create final Buffer. It would be larger than 0x\"+l.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=l?o=new RangeError(f):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function y(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){T(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var l=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(l=e.level);var f=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(f=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,f,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=f,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function T(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function D(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=b,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=S,t.Unzip=k,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new k(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new b(t),e,r)},t.deflateSync=function(e,t){return y(new b(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return y(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.unzipSync=function(e,t){return y(new k(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.inflateRawSync=function(e,t){return y(new S(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){T(this,t),e.nextTick(D,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(g[0],g[1]));if(this._hadError)throw d;if(p>=l)throw T(this),new RangeError(f);var m=n.concat(c,p);return T(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(l,f){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-f;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===f||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===f){if(o+=i-l,i=l,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=y,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=y},o.inherits(b,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(S,P),o.inherits(k,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(l){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(l),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,l){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,l);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,f.default)(t,l,t.length-l),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+l);return t.copy(g,0,0,l),p.copy(g,l),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(l),_=pako.inflateRaw(m),y=(0,n.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new a.default(s.default,y,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,l);return new a.default(s.default,t,l)}(c,l.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,l.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),l=c(r(36)),f=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.2\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-f;else{if(a===l)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=f}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,l,f=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*l-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,f-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-f(e)},t.toByteArray=function(e){var t,r,n,o,s,l=e.length;o=f(e),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(25),i=f(r(77)),a=f(r(76)),o=f(r(43)),s=f(r(75)),l=f(r(74));function f(e){return e&&e.__esModule?e:{default:e}}t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=i.default,t.parseDA=a.default,t.explicitElementToString=o.default,t.explicitDataSetToJS=s.default,t.createJPEGBasicOffsetTable=l.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readTag=t.readSequenceItem=t.readSequenceItemsImplicit=t.readSequenceItemsExplicit=t.readPart10Header=t.readEncapsulatedPixelDataFromFragments=t.readEncapsulatedPixelData=t.readEncapsulatedImageFrame=t.readDicomElementImplicit=t.readDicomElementExplicit=t.parseDicom=t.littleEndianByteArrayParser=t.findItemDelimitationItemAndSetElementLength=t.findEndOfEncapsulatedElement=t.findAndSetUNElementLength=t.DataSet=t.sharedCopy=t.ByteStream=t.bigEndianByteArrayParser=t.version=t.alloc=t.readFixedString=t.parseDicomDataSetImplicit=t.parseDicomDataSetExplicit=t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(78),i=r(16),a=r(14),o=P(r(22)),s=P(r(71)),l=P(r(37)),f=P(r(12)),u=P(r(11)),h=P(r(7)),d=P(r(41)),c=P(r(42)),p=P(r(24)),g=P(r(21)),m=P(r(70)),_=P(r(15)),y=P(r(23)),b=P(r(26)),v=P(r(44)),w=P(r(17)),E=P(r(36)),x=P(r(40)),S=P(r(39)),k=P(r(13)),A=P(r(4));function P(e){return e&&e.__esModule?e:{default:e}}var T={isStringVr:n.isStringVr,isPrivateTag:n.isPrivateTag,parsePN:n.parsePN,parseTM:n.parseTM,parseDA:n.parseDA,explicitElementToString:n.explicitElementToString,explicitDataSetToJS:n.explicitDataSetToJS,createJPEGBasicOffsetTable:n.createJPEGBasicOffsetTable,parseDicomDataSetExplicit:i.parseDicomDataSetExplicit,parseDicomDataSetImplicit:i.parseDicomDataSetImplicit,readFixedString:a.readFixedString,alloc:o.default,version:s.default,bigEndianByteArrayParser:l.default,ByteStream:f.default,sharedCopy:u.default,DataSet:h.default,findAndSetUNElementLength:d.default,findEndOfEncapsulatedElement:c.default,findItemDelimitationItemAndSetElementLength:p.default,littleEndianByteArrayParser:g.default,parseDicom:m.default,readDicomElementExplicit:_.default,readDicomElementImplicit:y.default,readEncapsulatedImageFrame:b.default,readEncapsulatedPixelData:v.default,readEncapsulatedPixelDataFromFragments:w.default,readPart10Header:E.default,readSequenceItemsExplicit:x.default,readSequenceItemsImplicit:S.default,readSequenceItem:k.default,readTag:A.default};t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=n.parseTM,t.parseDA=n.parseDA,t.explicitElementToString=n.explicitElementToString,t.explicitDataSetToJS=n.explicitDataSetToJS,t.createJPEGBasicOffsetTable=n.createJPEGBasicOffsetTable,t.parseDicomDataSetExplicit=i.parseDicomDataSetExplicit,t.parseDicomDataSetImplicit=i.parseDicomDataSetImplicit,t.readFixedString=a.readFixedString,t.alloc=o.default,t.version=s.default,t.bigEndianByteArrayParser=l.default,t.ByteStream=f.default,t.sharedCopy=u.default,t.DataSet=h.default,t.findAndSetUNElementLength=d.default,t.findEndOfEncapsulatedElement=c.default,t.findItemDelimitationItemAndSetElementLength=p.default,t.littleEndianByteArrayParser=g.default,t.parseDicom=m.default,t.readDicomElementExplicit=_.default,t.readDicomElementImplicit=y.default,t.readEncapsulatedImageFrame=b.default,t.readEncapsulatedPixelData=v.default,t.readEncapsulatedPixelDataFromFragments=w.default,t.readPart10Header=E.default,t.readSequenceItemsExplicit=x.default,t.readSequenceItemsImplicit=S.default,t.readSequenceItem=k.default,t.readTag=A.default,t.default=T}])});\n//# sourceMappingURL=dicomParser.min.js.map","/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstone-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstone-core\"] = factory();\n\telse\n\t\troot[\"cornerstone\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \tfunction hotDisposeChunk(chunkId) {\n/******/ \t\tdelete installedChunks[chunkId];\n/******/ \t}\n/******/ \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n/******/ \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n/******/ \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n/******/ \t\thotAddUpdateChunk(chunkId, moreModules);\n/******/ \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n/******/ \t} ;\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadUpdateChunk(chunkId) {\n/******/ \t\tvar head = document.getElementsByTagName(\"head\")[0];\n/******/ \t\tvar script = document.createElement(\"script\");\n/******/ \t\tscript.charset = \"utf-8\";\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n/******/ \t\t;\n/******/ \t\thead.appendChild(script);\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadManifest(requestTimeout) {\n/******/ \t\trequestTimeout = requestTimeout || 10000;\n/******/ \t\treturn new Promise(function(resolve, reject) {\n/******/ \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n/******/ \t\t\t\treturn reject(new Error(\"No browser support\"));\n/******/ \t\t\t}\n/******/ \t\t\ttry {\n/******/ \t\t\t\tvar request = new XMLHttpRequest();\n/******/ \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n/******/ \t\t\t\trequest.open(\"GET\", requestPath, true);\n/******/ \t\t\t\trequest.timeout = requestTimeout;\n/******/ \t\t\t\trequest.send(null);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\treturn reject(err);\n/******/ \t\t\t}\n/******/ \t\t\trequest.onreadystatechange = function() {\n/******/ \t\t\t\tif (request.readyState !== 4) return;\n/******/ \t\t\t\tif (request.status === 0) {\n/******/ \t\t\t\t\t// timeout\n/******/ \t\t\t\t\treject(\n/******/ \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n/******/ \t\t\t\t\t);\n/******/ \t\t\t\t} else if (request.status === 404) {\n/******/ \t\t\t\t\t// no update available\n/******/ \t\t\t\t\tresolve();\n/******/ \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n/******/ \t\t\t\t\t// other failure\n/******/ \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\t// success\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n/******/ \t\t\t\t\t} catch (e) {\n/******/ \t\t\t\t\t\treject(e);\n/******/ \t\t\t\t\t\treturn;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tresolve(update);\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \tvar hotApplyOnUpdate = true;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentHash = \"72ed982d5a0046aad5fa\";\n/******/ \tvar hotRequestTimeout = 10000;\n/******/ \tvar hotCurrentModuleData = {};\n/******/ \tvar hotCurrentChildModule;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParents = [];\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParentsTemp = [];\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateRequire(moduleId) {\n/******/ \t\tvar me = installedModules[moduleId];\n/******/ \t\tif (!me) return __webpack_require__;\n/******/ \t\tvar fn = function(request) {\n/******/ \t\t\tif (me.hot.active) {\n/******/ \t\t\t\tif (installedModules[request]) {\n/******/ \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n/******/ \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\t\t\thotCurrentChildModule = request;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (me.children.indexOf(request) === -1) {\n/******/ \t\t\t\t\tme.children.push(request);\n/******/ \t\t\t\t}\n/******/ \t\t\t} else {\n/******/ \t\t\t\tconsole.warn(\n/******/ \t\t\t\t\t\"[HMR] unexpected require(\" +\n/******/ \t\t\t\t\t\trequest +\n/******/ \t\t\t\t\t\t\") from disposed module \" +\n/******/ \t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t);\n/******/ \t\t\t\thotCurrentParents = [];\n/******/ \t\t\t}\n/******/ \t\t\treturn __webpack_require__(request);\n/******/ \t\t};\n/******/ \t\tvar ObjectFactory = function ObjectFactory(name) {\n/******/ \t\t\treturn {\n/******/ \t\t\t\tconfigurable: true,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: function() {\n/******/ \t\t\t\t\treturn __webpack_require__[name];\n/******/ \t\t\t\t},\n/******/ \t\t\t\tset: function(value) {\n/******/ \t\t\t\t\t__webpack_require__[name] = value;\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t};\n/******/ \t\tfor (var name in __webpack_require__) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n/******/ \t\t\t\tname !== \"e\" &&\n/******/ \t\t\t\tname !== \"t\"\n/******/ \t\t\t) {\n/******/ \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tfn.e = function(chunkId) {\n/******/ \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n/******/ \t\t\thotChunksLoading++;\n/******/ \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n/******/ \t\t\t\tfinishChunkLoading();\n/******/ \t\t\t\tthrow err;\n/******/ \t\t\t});\n/******/\n/******/ \t\t\tfunction finishChunkLoading() {\n/******/ \t\t\t\thotChunksLoading--;\n/******/ \t\t\t\tif (hotStatus === \"prepare\") {\n/******/ \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n/******/ \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n/******/ \t\t\t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\tfn.t = function(value, mode) {\n/******/ \t\t\tif (mode & 1) value = fn(value);\n/******/ \t\t\treturn __webpack_require__.t(value, mode & ~1);\n/******/ \t\t};\n/******/ \t\treturn fn;\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateModule(moduleId) {\n/******/ \t\tvar hot = {\n/******/ \t\t\t// private stuff\n/******/ \t\t\t_acceptedDependencies: {},\n/******/ \t\t\t_declinedDependencies: {},\n/******/ \t\t\t_selfAccepted: false,\n/******/ \t\t\t_selfDeclined: false,\n/******/ \t\t\t_disposeHandlers: [],\n/******/ \t\t\t_main: hotCurrentChildModule !== moduleId,\n/******/\n/******/ \t\t\t// Module API\n/******/ \t\t\tactive: true,\n/******/ \t\t\taccept: function(dep, callback) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n/******/ \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n/******/ \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n/******/ \t\t\t},\n/******/ \t\t\tdecline: function(dep) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n/******/ \t\t\t\telse hot._declinedDependencies[dep] = true;\n/******/ \t\t\t},\n/******/ \t\t\tdispose: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\taddDisposeHandler: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\tremoveDisposeHandler: function(callback) {\n/******/ \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n/******/ \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t// Management API\n/******/ \t\t\tcheck: hotCheck,\n/******/ \t\t\tapply: hotApply,\n/******/ \t\t\tstatus: function(l) {\n/******/ \t\t\t\tif (!l) return hotStatus;\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\taddStatusHandler: function(l) {\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\tremoveStatusHandler: function(l) {\n/******/ \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n/******/ \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t//inherit from previous dispose call\n/******/ \t\t\tdata: hotCurrentModuleData[moduleId]\n/******/ \t\t};\n/******/ \t\thotCurrentChildModule = undefined;\n/******/ \t\treturn hot;\n/******/ \t}\n/******/\n/******/ \tvar hotStatusHandlers = [];\n/******/ \tvar hotStatus = \"idle\";\n/******/\n/******/ \tfunction hotSetStatus(newStatus) {\n/******/ \t\thotStatus = newStatus;\n/******/ \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n/******/ \t\t\thotStatusHandlers[i].call(null, newStatus);\n/******/ \t}\n/******/\n/******/ \t// while downloading\n/******/ \tvar hotWaitingFiles = 0;\n/******/ \tvar hotChunksLoading = 0;\n/******/ \tvar hotWaitingFilesMap = {};\n/******/ \tvar hotRequestedFilesMap = {};\n/******/ \tvar hotAvailableFilesMap = {};\n/******/ \tvar hotDeferred;\n/******/\n/******/ \t// The update info\n/******/ \tvar hotUpdate, hotUpdateNewHash;\n/******/\n/******/ \tfunction toModuleId(id) {\n/******/ \t\tvar isNumber = +id + \"\" === id;\n/******/ \t\treturn isNumber ? +id : id;\n/******/ \t}\n/******/\n/******/ \tfunction hotCheck(apply) {\n/******/ \t\tif (hotStatus !== \"idle\") {\n/******/ \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n/******/ \t\t}\n/******/ \t\thotApplyOnUpdate = apply;\n/******/ \t\thotSetStatus(\"check\");\n/******/ \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n/******/ \t\t\tif (!update) {\n/******/ \t\t\t\thotSetStatus(\"idle\");\n/******/ \t\t\t\treturn null;\n/******/ \t\t\t}\n/******/ \t\t\thotRequestedFilesMap = {};\n/******/ \t\t\thotWaitingFilesMap = {};\n/******/ \t\t\thotAvailableFilesMap = update.c;\n/******/ \t\t\thotUpdateNewHash = update.h;\n/******/\n/******/ \t\t\thotSetStatus(\"prepare\");\n/******/ \t\t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\t\thotDeferred = {\n/******/ \t\t\t\t\tresolve: resolve,\n/******/ \t\t\t\t\treject: reject\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\thotUpdate = {};\n/******/ \t\t\tvar chunkId = \"cornerstone\";\n/******/ \t\t\t// eslint-disable-next-line no-lone-blocks\n/******/ \t\t\t{\n/******/ \t\t\t\t/*globals chunkId */\n/******/ \t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t\tif (\n/******/ \t\t\t\thotStatus === \"prepare\" &&\n/******/ \t\t\t\thotChunksLoading === 0 &&\n/******/ \t\t\t\thotWaitingFiles === 0\n/******/ \t\t\t) {\n/******/ \t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t}\n/******/ \t\t\treturn promise;\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n/******/ \t\t\treturn;\n/******/ \t\thotRequestedFilesMap[chunkId] = false;\n/******/ \t\tfor (var moduleId in moreModules) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n/******/ \t\t\thotUpdateDownloaded();\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotEnsureUpdateChunk(chunkId) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId]) {\n/******/ \t\t\thotWaitingFilesMap[chunkId] = true;\n/******/ \t\t} else {\n/******/ \t\t\thotRequestedFilesMap[chunkId] = true;\n/******/ \t\t\thotWaitingFiles++;\n/******/ \t\t\thotDownloadUpdateChunk(chunkId);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotUpdateDownloaded() {\n/******/ \t\thotSetStatus(\"ready\");\n/******/ \t\tvar deferred = hotDeferred;\n/******/ \t\thotDeferred = null;\n/******/ \t\tif (!deferred) return;\n/******/ \t\tif (hotApplyOnUpdate) {\n/******/ \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n/******/ \t\t\t// avoid triggering uncaught exception warning in Chrome.\n/******/ \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n/******/ \t\t\tPromise.resolve()\n/******/ \t\t\t\t.then(function() {\n/******/ \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n/******/ \t\t\t\t})\n/******/ \t\t\t\t.then(\n/******/ \t\t\t\t\tfunction(result) {\n/******/ \t\t\t\t\t\tdeferred.resolve(result);\n/******/ \t\t\t\t\t},\n/******/ \t\t\t\t\tfunction(err) {\n/******/ \t\t\t\t\t\tdeferred.reject(err);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t);\n/******/ \t\t} else {\n/******/ \t\t\tvar outdatedModules = [];\n/******/ \t\t\tfor (var id in hotUpdate) {\n/******/ \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\t\toutdatedModules.push(toModuleId(id));\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tdeferred.resolve(outdatedModules);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotApply(options) {\n/******/ \t\tif (hotStatus !== \"ready\")\n/******/ \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n/******/ \t\toptions = options || {};\n/******/\n/******/ \t\tvar cb;\n/******/ \t\tvar i;\n/******/ \t\tvar j;\n/******/ \t\tvar module;\n/******/ \t\tvar moduleId;\n/******/\n/******/ \t\tfunction getAffectedStuff(updateModuleId) {\n/******/ \t\t\tvar outdatedModules = [updateModuleId];\n/******/ \t\t\tvar outdatedDependencies = {};\n/******/\n/******/ \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n/******/ \t\t\t\treturn {\n/******/ \t\t\t\t\tchain: [id],\n/******/ \t\t\t\t\tid: id\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\twhile (queue.length > 0) {\n/******/ \t\t\t\tvar queueItem = queue.pop();\n/******/ \t\t\t\tvar moduleId = queueItem.id;\n/******/ \t\t\t\tvar chain = queueItem.chain;\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n/******/ \t\t\t\tif (module.hot._selfDeclined) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"self-declined\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (module.hot._main) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"unaccepted\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n/******/ \t\t\t\t\tvar parentId = module.parents[i];\n/******/ \t\t\t\t\tvar parent = installedModules[parentId];\n/******/ \t\t\t\t\tif (!parent) continue;\n/******/ \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\treturn {\n/******/ \t\t\t\t\t\t\ttype: \"declined\",\n/******/ \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\tparentId: parentId\n/******/ \t\t\t\t\t\t};\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n/******/ \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n/******/ \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n/******/ \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n/******/ \t\t\t\t\t\tcontinue;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tdelete outdatedDependencies[parentId];\n/******/ \t\t\t\t\toutdatedModules.push(parentId);\n/******/ \t\t\t\t\tqueue.push({\n/******/ \t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\tid: parentId\n/******/ \t\t\t\t\t});\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/\n/******/ \t\t\treturn {\n/******/ \t\t\t\ttype: \"accepted\",\n/******/ \t\t\t\tmoduleId: updateModuleId,\n/******/ \t\t\t\toutdatedModules: outdatedModules,\n/******/ \t\t\t\toutdatedDependencies: outdatedDependencies\n/******/ \t\t\t};\n/******/ \t\t}\n/******/\n/******/ \t\tfunction addAllToSet(a, b) {\n/******/ \t\t\tfor (var i = 0; i < b.length; i++) {\n/******/ \t\t\t\tvar item = b[i];\n/******/ \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// at begin all updates modules are outdated\n/******/ \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n/******/ \t\tvar outdatedDependencies = {};\n/******/ \t\tvar outdatedModules = [];\n/******/ \t\tvar appliedUpdate = {};\n/******/\n/******/ \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n/******/ \t\t\tconsole.warn(\n/******/ \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n/******/ \t\t\t);\n/******/ \t\t};\n/******/\n/******/ \t\tfor (var id in hotUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\tmoduleId = toModuleId(id);\n/******/ \t\t\t\t/** @type {TODO} */\n/******/ \t\t\t\tvar result;\n/******/ \t\t\t\tif (hotUpdate[id]) {\n/******/ \t\t\t\t\tresult = getAffectedStuff(moduleId);\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tresult = {\n/******/ \t\t\t\t\t\ttype: \"disposed\",\n/******/ \t\t\t\t\t\tmoduleId: id\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\t/** @type {Error|false} */\n/******/ \t\t\t\tvar abortError = false;\n/******/ \t\t\t\tvar doApply = false;\n/******/ \t\t\t\tvar doDispose = false;\n/******/ \t\t\t\tvar chainInfo = \"\";\n/******/ \t\t\t\tif (result.chain) {\n/******/ \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n/******/ \t\t\t\t}\n/******/ \t\t\t\tswitch (result.type) {\n/******/ \t\t\t\t\tcase \"self-declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\t\" in \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.parentId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"unaccepted\":\n/******/ \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"accepted\":\n/******/ \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n/******/ \t\t\t\t\t\tdoApply = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"disposed\":\n/******/ \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n/******/ \t\t\t\t\t\tdoDispose = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tdefault:\n/******/ \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (abortError) {\n/******/ \t\t\t\t\thotSetStatus(\"abort\");\n/******/ \t\t\t\t\treturn Promise.reject(abortError);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (doApply) {\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n/******/ \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n/******/ \t\t\t\t\t\tif (\n/******/ \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n/******/ \t\t\t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t\t\t\t)\n/******/ \t\t\t\t\t\t) {\n/******/ \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n/******/ \t\t\t\t\t\t\taddAllToSet(\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Store self accepted outdated modules to require them later by the module system\n/******/ \t\tvar outdatedSelfAcceptedModules = [];\n/******/ \t\tfor (i = 0; i < outdatedModules.length; i++) {\n/******/ \t\t\tmoduleId = outdatedModules[i];\n/******/ \t\t\tif (\n/******/ \t\t\t\tinstalledModules[moduleId] &&\n/******/ \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n/******/ \t\t\t)\n/******/ \t\t\t\toutdatedSelfAcceptedModules.push({\n/******/ \t\t\t\t\tmodule: moduleId,\n/******/ \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n/******/ \t\t\t\t});\n/******/ \t\t}\n/******/\n/******/ \t\t// Now in \"dispose\" phase\n/******/ \t\thotSetStatus(\"dispose\");\n/******/ \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n/******/ \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n/******/ \t\t\t\thotDisposeChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t});\n/******/\n/******/ \t\tvar idx;\n/******/ \t\tvar queue = outdatedModules.slice();\n/******/ \t\twhile (queue.length > 0) {\n/******/ \t\t\tmoduleId = queue.pop();\n/******/ \t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\tif (!module) continue;\n/******/\n/******/ \t\t\tvar data = {};\n/******/\n/******/ \t\t\t// Call dispose handlers\n/******/ \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n/******/ \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n/******/ \t\t\t\tcb = disposeHandlers[j];\n/******/ \t\t\t\tcb(data);\n/******/ \t\t\t}\n/******/ \t\t\thotCurrentModuleData[moduleId] = data;\n/******/\n/******/ \t\t\t// disable module (this disables requires from this module)\n/******/ \t\t\tmodule.hot.active = false;\n/******/\n/******/ \t\t\t// remove module from cache\n/******/ \t\t\tdelete installedModules[moduleId];\n/******/\n/******/ \t\t\t// when disposing there is no need to call dispose handler\n/******/ \t\t\tdelete outdatedDependencies[moduleId];\n/******/\n/******/ \t\t\t// remove \"parents\" references from all children\n/******/ \t\t\tfor (j = 0; j < module.children.length; j++) {\n/******/ \t\t\t\tvar child = installedModules[module.children[j]];\n/******/ \t\t\t\tif (!child) continue;\n/******/ \t\t\t\tidx = child.parents.indexOf(moduleId);\n/******/ \t\t\t\tif (idx >= 0) {\n/******/ \t\t\t\t\tchild.parents.splice(idx, 1);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// remove outdated dependency from module children\n/******/ \t\tvar dependency;\n/******/ \t\tvar moduleOutdatedDependencies;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n/******/ \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n/******/ \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Not in \"apply\" phase\n/******/ \t\thotSetStatus(\"apply\");\n/******/\n/******/ \t\thotCurrentHash = hotUpdateNewHash;\n/******/\n/******/ \t\t// insert new code\n/******/ \t\tfor (moduleId in appliedUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// call accept handlers\n/******/ \t\tvar error = null;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tvar callbacks = [];\n/******/ \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n/******/ \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n/******/ \t\t\t\t\t\tif (cb) {\n/******/ \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n/******/ \t\t\t\t\t\t\tcallbacks.push(cb);\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n/******/ \t\t\t\t\t\tcb = callbacks[i];\n/******/ \t\t\t\t\t\ttry {\n/******/ \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n/******/ \t\t\t\t\t\t} catch (err) {\n/******/ \t\t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n/******/ \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n/******/ \t\t\t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t\t}\n/******/ \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\t\tif (!error) error = err;\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/******/\n/******/ \t\t// Load self accepted modules\n/******/ \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n/******/ \t\t\tvar item = outdatedSelfAcceptedModules[i];\n/******/ \t\t\tmoduleId = item.module;\n/******/ \t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\ttry {\n/******/ \t\t\t\t__webpack_require__(moduleId);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\tif (typeof item.errorHandler === \"function\") {\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\titem.errorHandler(err);\n/******/ \t\t\t\t\t} catch (err2) {\n/******/ \t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n/******/ \t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\terror: err2,\n/******/ \t\t\t\t\t\t\t\toriginalError: err\n/******/ \t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\tif (!error) error = err2;\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t});\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// handle errors in accept handlers and self accepted module load\n/******/ \t\tif (error) {\n/******/ \t\t\thotSetStatus(\"fail\");\n/******/ \t\t\treturn Promise.reject(error);\n/******/ \t\t}\n/******/\n/******/ \t\thotSetStatus(\"idle\");\n/******/ \t\treturn new Promise(function(resolve) {\n/******/ \t\t\tresolve(outdatedModules);\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {},\n/******/ \t\t\thot: hotCreateModule(moduleId),\n/******/ \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n/******/ \t\t\tchildren: []\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// __webpack_hash__\n/******/ \t__webpack_require__.h = function() { return hotCurrentHash; };\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn hotCreateRequire(\"./index.js\")(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./canvasToPixel.js\":\n/*!**************************!*\\\n !*** ./canvasToPixel.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the canvas coordinate system to the pixel coordinate system\n * system. This can be used to reset tools' image coordinates after modifications\n * have been made in canvas space (e.g. moving a tool by a few cm, independent of\n * image resolution).\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {{x: Number, y: Number}} pt The input point in the canvas coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./colors/colormap.js\":\n/*!****************************!*\\\n !*** ./colors/colormap.js ***!\n \\****************************/\n/*! exports provided: getColormapsList, getColormap */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormapsList\", function() { return getColormapsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormap\", function() { return getColormap; });\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\nvar COLOR_TRANSPARENT = [0, 0, 0, 0]; // Colormaps\n//\n// Hot Iron, PET, Hot Metal Blue and PET 20 Step are color palettes\n// Defined by the DICOM standard\n// http://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html\n//\n// All Linear Segmented Colormaps were copied from matplotlib\n// https://github.com/stefanv/matplotlib/blob/master/lib/matplotlib/_cm.py\n\nvar colormapsData = {\n hotIron: {\n name: 'Hot Iron',\n numOfColors: 256,\n colors: [[0, 0, 0, 255], [2, 0, 0, 255], [4, 0, 0, 255], [6, 0, 0, 255], [8, 0, 0, 255], [10, 0, 0, 255], [12, 0, 0, 255], [14, 0, 0, 255], [16, 0, 0, 255], [18, 0, 0, 255], [20, 0, 0, 255], [22, 0, 0, 255], [24, 0, 0, 255], [26, 0, 0, 255], [28, 0, 0, 255], [30, 0, 0, 255], [32, 0, 0, 255], [34, 0, 0, 255], [36, 0, 0, 255], [38, 0, 0, 255], [40, 0, 0, 255], [42, 0, 0, 255], [44, 0, 0, 255], [46, 0, 0, 255], [48, 0, 0, 255], [50, 0, 0, 255], [52, 0, 0, 255], [54, 0, 0, 255], [56, 0, 0, 255], [58, 0, 0, 255], [60, 0, 0, 255], [62, 0, 0, 255], [64, 0, 0, 255], [66, 0, 0, 255], [68, 0, 0, 255], [70, 0, 0, 255], [72, 0, 0, 255], [74, 0, 0, 255], [76, 0, 0, 255], [78, 0, 0, 255], [80, 0, 0, 255], [82, 0, 0, 255], [84, 0, 0, 255], [86, 0, 0, 255], [88, 0, 0, 255], [90, 0, 0, 255], [92, 0, 0, 255], [94, 0, 0, 255], [96, 0, 0, 255], [98, 0, 0, 255], [100, 0, 0, 255], [102, 0, 0, 255], [104, 0, 0, 255], [106, 0, 0, 255], [108, 0, 0, 255], [110, 0, 0, 255], [112, 0, 0, 255], [114, 0, 0, 255], [116, 0, 0, 255], [118, 0, 0, 255], [120, 0, 0, 255], [122, 0, 0, 255], [124, 0, 0, 255], [126, 0, 0, 255], [128, 0, 0, 255], [130, 0, 0, 255], [132, 0, 0, 255], [134, 0, 0, 255], [136, 0, 0, 255], [138, 0, 0, 255], [140, 0, 0, 255], [142, 0, 0, 255], [144, 0, 0, 255], [146, 0, 0, 255], [148, 0, 0, 255], [150, 0, 0, 255], [152, 0, 0, 255], [154, 0, 0, 255], [156, 0, 0, 255], [158, 0, 0, 255], [160, 0, 0, 255], [162, 0, 0, 255], [164, 0, 0, 255], [166, 0, 0, 255], [168, 0, 0, 255], [170, 0, 0, 255], [172, 0, 0, 255], [174, 0, 0, 255], [176, 0, 0, 255], [178, 0, 0, 255], [180, 0, 0, 255], [182, 0, 0, 255], [184, 0, 0, 255], [186, 0, 0, 255], [188, 0, 0, 255], [190, 0, 0, 255], [192, 0, 0, 255], [194, 0, 0, 255], [196, 0, 0, 255], [198, 0, 0, 255], [200, 0, 0, 255], [202, 0, 0, 255], [204, 0, 0, 255], [206, 0, 0, 255], [208, 0, 0, 255], [210, 0, 0, 255], [212, 0, 0, 255], [214, 0, 0, 255], [216, 0, 0, 255], [218, 0, 0, 255], [220, 0, 0, 255], [222, 0, 0, 255], [224, 0, 0, 255], [226, 0, 0, 255], [228, 0, 0, 255], [230, 0, 0, 255], [232, 0, 0, 255], [234, 0, 0, 255], [236, 0, 0, 255], [238, 0, 0, 255], [240, 0, 0, 255], [242, 0, 0, 255], [244, 0, 0, 255], [246, 0, 0, 255], [248, 0, 0, 255], [250, 0, 0, 255], [252, 0, 0, 255], [254, 0, 0, 255], [255, 0, 0, 255], [255, 2, 0, 255], [255, 4, 0, 255], [255, 6, 0, 255], [255, 8, 0, 255], [255, 10, 0, 255], [255, 12, 0, 255], [255, 14, 0, 255], [255, 16, 0, 255], [255, 18, 0, 255], [255, 20, 0, 255], [255, 22, 0, 255], [255, 24, 0, 255], [255, 26, 0, 255], [255, 28, 0, 255], [255, 30, 0, 255], [255, 32, 0, 255], [255, 34, 0, 255], [255, 36, 0, 255], [255, 38, 0, 255], [255, 40, 0, 255], [255, 42, 0, 255], [255, 44, 0, 255], [255, 46, 0, 255], [255, 48, 0, 255], [255, 50, 0, 255], [255, 52, 0, 255], [255, 54, 0, 255], [255, 56, 0, 255], [255, 58, 0, 255], [255, 60, 0, 255], [255, 62, 0, 255], [255, 64, 0, 255], [255, 66, 0, 255], [255, 68, 0, 255], [255, 70, 0, 255], [255, 72, 0, 255], [255, 74, 0, 255], [255, 76, 0, 255], [255, 78, 0, 255], [255, 80, 0, 255], [255, 82, 0, 255], [255, 84, 0, 255], [255, 86, 0, 255], [255, 88, 0, 255], [255, 90, 0, 255], [255, 92, 0, 255], [255, 94, 0, 255], [255, 96, 0, 255], [255, 98, 0, 255], [255, 100, 0, 255], [255, 102, 0, 255], [255, 104, 0, 255], [255, 106, 0, 255], [255, 108, 0, 255], [255, 110, 0, 255], [255, 112, 0, 255], [255, 114, 0, 255], [255, 116, 0, 255], [255, 118, 0, 255], [255, 120, 0, 255], [255, 122, 0, 255], [255, 124, 0, 255], [255, 126, 0, 255], [255, 128, 4, 255], [255, 130, 8, 255], [255, 132, 12, 255], [255, 134, 16, 255], [255, 136, 20, 255], [255, 138, 24, 255], [255, 140, 28, 255], [255, 142, 32, 255], [255, 144, 36, 255], [255, 146, 40, 255], [255, 148, 44, 255], [255, 150, 48, 255], [255, 152, 52, 255], [255, 154, 56, 255], [255, 156, 60, 255], [255, 158, 64, 255], [255, 160, 68, 255], [255, 162, 72, 255], [255, 164, 76, 255], [255, 166, 80, 255], [255, 168, 84, 255], [255, 170, 88, 255], [255, 172, 92, 255], [255, 174, 96, 255], [255, 176, 100, 255], [255, 178, 104, 255], [255, 180, 108, 255], [255, 182, 112, 255], [255, 184, 116, 255], [255, 186, 120, 255], [255, 188, 124, 255], [255, 190, 128, 255], [255, 192, 132, 255], [255, 194, 136, 255], [255, 196, 140, 255], [255, 198, 144, 255], [255, 200, 148, 255], [255, 202, 152, 255], [255, 204, 156, 255], [255, 206, 160, 255], [255, 208, 164, 255], [255, 210, 168, 255], [255, 212, 172, 255], [255, 214, 176, 255], [255, 216, 180, 255], [255, 218, 184, 255], [255, 220, 188, 255], [255, 222, 192, 255], [255, 224, 196, 255], [255, 226, 200, 255], [255, 228, 204, 255], [255, 230, 208, 255], [255, 232, 212, 255], [255, 234, 216, 255], [255, 236, 220, 255], [255, 238, 224, 255], [255, 240, 228, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 240, 255], [255, 248, 244, 255], [255, 250, 248, 255], [255, 252, 252, 255], [255, 255, 255, 255]]\n },\n pet: {\n name: 'PET',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 2, 1, 255], [0, 4, 3, 255], [0, 6, 5, 255], [0, 8, 7, 255], [0, 10, 9, 255], [0, 12, 11, 255], [0, 14, 13, 255], [0, 16, 15, 255], [0, 18, 17, 255], [0, 20, 19, 255], [0, 22, 21, 255], [0, 24, 23, 255], [0, 26, 25, 255], [0, 28, 27, 255], [0, 30, 29, 255], [0, 32, 31, 255], [0, 34, 33, 255], [0, 36, 35, 255], [0, 38, 37, 255], [0, 40, 39, 255], [0, 42, 41, 255], [0, 44, 43, 255], [0, 46, 45, 255], [0, 48, 47, 255], [0, 50, 49, 255], [0, 52, 51, 255], [0, 54, 53, 255], [0, 56, 55, 255], [0, 58, 57, 255], [0, 60, 59, 255], [0, 62, 61, 255], [0, 65, 63, 255], [0, 67, 65, 255], [0, 69, 67, 255], [0, 71, 69, 255], [0, 73, 71, 255], [0, 75, 73, 255], [0, 77, 75, 255], [0, 79, 77, 255], [0, 81, 79, 255], [0, 83, 81, 255], [0, 85, 83, 255], [0, 87, 85, 255], [0, 89, 87, 255], [0, 91, 89, 255], [0, 93, 91, 255], [0, 95, 93, 255], [0, 97, 95, 255], [0, 99, 97, 255], [0, 101, 99, 255], [0, 103, 101, 255], [0, 105, 103, 255], [0, 107, 105, 255], [0, 109, 107, 255], [0, 111, 109, 255], [0, 113, 111, 255], [0, 115, 113, 255], [0, 117, 115, 255], [0, 119, 117, 255], [0, 121, 119, 255], [0, 123, 121, 255], [0, 125, 123, 255], [0, 128, 125, 255], [1, 126, 127, 255], [3, 124, 129, 255], [5, 122, 131, 255], [7, 120, 133, 255], [9, 118, 135, 255], [11, 116, 137, 255], [13, 114, 139, 255], [15, 112, 141, 255], [17, 110, 143, 255], [19, 108, 145, 255], [21, 106, 147, 255], [23, 104, 149, 255], [25, 102, 151, 255], [27, 100, 153, 255], [29, 98, 155, 255], [31, 96, 157, 255], [33, 94, 159, 255], [35, 92, 161, 255], [37, 90, 163, 255], [39, 88, 165, 255], [41, 86, 167, 255], [43, 84, 169, 255], [45, 82, 171, 255], [47, 80, 173, 255], [49, 78, 175, 255], [51, 76, 177, 255], [53, 74, 179, 255], [55, 72, 181, 255], [57, 70, 183, 255], [59, 68, 185, 255], [61, 66, 187, 255], [63, 64, 189, 255], [65, 63, 191, 255], [67, 61, 193, 255], [69, 59, 195, 255], [71, 57, 197, 255], [73, 55, 199, 255], [75, 53, 201, 255], [77, 51, 203, 255], [79, 49, 205, 255], [81, 47, 207, 255], [83, 45, 209, 255], [85, 43, 211, 255], [86, 41, 213, 255], [88, 39, 215, 255], [90, 37, 217, 255], [92, 35, 219, 255], [94, 33, 221, 255], [96, 31, 223, 255], [98, 29, 225, 255], [100, 27, 227, 255], [102, 25, 229, 255], [104, 23, 231, 255], [106, 21, 233, 255], [108, 19, 235, 255], [110, 17, 237, 255], [112, 15, 239, 255], [114, 13, 241, 255], [116, 11, 243, 255], [118, 9, 245, 255], [120, 7, 247, 255], [122, 5, 249, 255], [124, 3, 251, 255], [126, 1, 253, 255], [128, 0, 255, 255], [130, 2, 252, 255], [132, 4, 248, 255], [134, 6, 244, 255], [136, 8, 240, 255], [138, 10, 236, 255], [140, 12, 232, 255], [142, 14, 228, 255], [144, 16, 224, 255], [146, 18, 220, 255], [148, 20, 216, 255], [150, 22, 212, 255], [152, 24, 208, 255], [154, 26, 204, 255], [156, 28, 200, 255], [158, 30, 196, 255], [160, 32, 192, 255], [162, 34, 188, 255], [164, 36, 184, 255], [166, 38, 180, 255], [168, 40, 176, 255], [170, 42, 172, 255], [171, 44, 168, 255], [173, 46, 164, 255], [175, 48, 160, 255], [177, 50, 156, 255], [179, 52, 152, 255], [181, 54, 148, 255], [183, 56, 144, 255], [185, 58, 140, 255], [187, 60, 136, 255], [189, 62, 132, 255], [191, 64, 128, 255], [193, 66, 124, 255], [195, 68, 120, 255], [197, 70, 116, 255], [199, 72, 112, 255], [201, 74, 108, 255], [203, 76, 104, 255], [205, 78, 100, 255], [207, 80, 96, 255], [209, 82, 92, 255], [211, 84, 88, 255], [213, 86, 84, 255], [215, 88, 80, 255], [217, 90, 76, 255], [219, 92, 72, 255], [221, 94, 68, 255], [223, 96, 64, 255], [225, 98, 60, 255], [227, 100, 56, 255], [229, 102, 52, 255], [231, 104, 48, 255], [233, 106, 44, 255], [235, 108, 40, 255], [237, 110, 36, 255], [239, 112, 32, 255], [241, 114, 28, 255], [243, 116, 24, 255], [245, 118, 20, 255], [247, 120, 16, 255], [249, 122, 12, 255], [251, 124, 8, 255], [253, 126, 4, 255], [255, 128, 0, 255], [255, 130, 4, 255], [255, 132, 8, 255], [255, 134, 12, 255], [255, 136, 16, 255], [255, 138, 20, 255], [255, 140, 24, 255], [255, 142, 28, 255], [255, 144, 32, 255], [255, 146, 36, 255], [255, 148, 40, 255], [255, 150, 44, 255], [255, 152, 48, 255], [255, 154, 52, 255], [255, 156, 56, 255], [255, 158, 60, 255], [255, 160, 64, 255], [255, 162, 68, 255], [255, 164, 72, 255], [255, 166, 76, 255], [255, 168, 80, 255], [255, 170, 85, 255], [255, 172, 89, 255], [255, 174, 93, 255], [255, 176, 97, 255], [255, 178, 101, 255], [255, 180, 105, 255], [255, 182, 109, 255], [255, 184, 113, 255], [255, 186, 117, 255], [255, 188, 121, 255], [255, 190, 125, 255], [255, 192, 129, 255], [255, 194, 133, 255], [255, 196, 137, 255], [255, 198, 141, 255], [255, 200, 145, 255], [255, 202, 149, 255], [255, 204, 153, 255], [255, 206, 157, 255], [255, 208, 161, 255], [255, 210, 165, 255], [255, 212, 170, 255], [255, 214, 174, 255], [255, 216, 178, 255], [255, 218, 182, 255], [255, 220, 186, 255], [255, 222, 190, 255], [255, 224, 194, 255], [255, 226, 198, 255], [255, 228, 202, 255], [255, 230, 206, 255], [255, 232, 210, 255], [255, 234, 214, 255], [255, 236, 218, 255], [255, 238, 222, 255], [255, 240, 226, 255], [255, 242, 230, 255], [255, 244, 234, 255], [255, 246, 238, 255], [255, 248, 242, 255], [255, 250, 246, 255], [255, 252, 250, 255], [255, 255, 255, 255]]\n },\n hotMetalBlue: {\n name: 'Hot Metal Blue',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 2, 255], [0, 0, 4, 255], [0, 0, 6, 255], [0, 0, 8, 255], [0, 0, 10, 255], [0, 0, 12, 255], [0, 0, 14, 255], [0, 0, 16, 255], [0, 0, 17, 255], [0, 0, 19, 255], [0, 0, 21, 255], [0, 0, 23, 255], [0, 0, 25, 255], [0, 0, 27, 255], [0, 0, 29, 255], [0, 0, 31, 255], [0, 0, 33, 255], [0, 0, 35, 255], [0, 0, 37, 255], [0, 0, 39, 255], [0, 0, 41, 255], [0, 0, 43, 255], [0, 0, 45, 255], [0, 0, 47, 255], [0, 0, 49, 255], [0, 0, 51, 255], [0, 0, 53, 255], [0, 0, 55, 255], [0, 0, 57, 255], [0, 0, 59, 255], [0, 0, 61, 255], [0, 0, 63, 255], [0, 0, 65, 255], [0, 0, 67, 255], [0, 0, 69, 255], [0, 0, 71, 255], [0, 0, 73, 255], [0, 0, 75, 255], [0, 0, 77, 255], [0, 0, 79, 255], [0, 0, 81, 255], [0, 0, 83, 255], [0, 0, 84, 255], [0, 0, 86, 255], [0, 0, 88, 255], [0, 0, 90, 255], [0, 0, 92, 255], [0, 0, 94, 255], [0, 0, 96, 255], [0, 0, 98, 255], [0, 0, 100, 255], [0, 0, 102, 255], [0, 0, 104, 255], [0, 0, 106, 255], [0, 0, 108, 255], [0, 0, 110, 255], [0, 0, 112, 255], [0, 0, 114, 255], [0, 0, 116, 255], [0, 0, 117, 255], [0, 0, 119, 255], [0, 0, 121, 255], [0, 0, 123, 255], [0, 0, 125, 255], [0, 0, 127, 255], [0, 0, 129, 255], [0, 0, 131, 255], [0, 0, 133, 255], [0, 0, 135, 255], [0, 0, 137, 255], [0, 0, 139, 255], [0, 0, 141, 255], [0, 0, 143, 255], [0, 0, 145, 255], [0, 0, 147, 255], [0, 0, 149, 255], [0, 0, 151, 255], [0, 0, 153, 255], [0, 0, 155, 255], [0, 0, 157, 255], [0, 0, 159, 255], [0, 0, 161, 255], [0, 0, 163, 255], [0, 0, 165, 255], [0, 0, 167, 255], [3, 0, 169, 255], [6, 0, 171, 255], [9, 0, 173, 255], [12, 0, 175, 255], [15, 0, 177, 255], [18, 0, 179, 255], [21, 0, 181, 255], [24, 0, 183, 255], [26, 0, 184, 255], [29, 0, 186, 255], [32, 0, 188, 255], [35, 0, 190, 255], [38, 0, 192, 255], [41, 0, 194, 255], [44, 0, 196, 255], [47, 0, 198, 255], [50, 0, 200, 255], [52, 0, 197, 255], [55, 0, 194, 255], [57, 0, 191, 255], [59, 0, 188, 255], [62, 0, 185, 255], [64, 0, 182, 255], [66, 0, 179, 255], [69, 0, 176, 255], [71, 0, 174, 255], [74, 0, 171, 255], [76, 0, 168, 255], [78, 0, 165, 255], [81, 0, 162, 255], [83, 0, 159, 255], [85, 0, 156, 255], [88, 0, 153, 255], [90, 0, 150, 255], [93, 2, 144, 255], [96, 4, 138, 255], [99, 6, 132, 255], [102, 8, 126, 255], [105, 9, 121, 255], [108, 11, 115, 255], [111, 13, 109, 255], [114, 15, 103, 255], [116, 17, 97, 255], [119, 19, 91, 255], [122, 21, 85, 255], [125, 23, 79, 255], [128, 24, 74, 255], [131, 26, 68, 255], [134, 28, 62, 255], [137, 30, 56, 255], [140, 32, 50, 255], [143, 34, 47, 255], [146, 36, 44, 255], [149, 38, 41, 255], [152, 40, 38, 255], [155, 41, 35, 255], [158, 43, 32, 255], [161, 45, 29, 255], [164, 47, 26, 255], [166, 49, 24, 255], [169, 51, 21, 255], [172, 53, 18, 255], [175, 55, 15, 255], [178, 56, 12, 255], [181, 58, 9, 255], [184, 60, 6, 255], [187, 62, 3, 255], [190, 64, 0, 255], [194, 66, 0, 255], [198, 68, 0, 255], [201, 70, 0, 255], [205, 72, 0, 255], [209, 73, 0, 255], [213, 75, 0, 255], [217, 77, 0, 255], [221, 79, 0, 255], [224, 81, 0, 255], [228, 83, 0, 255], [232, 85, 0, 255], [236, 87, 0, 255], [240, 88, 0, 255], [244, 90, 0, 255], [247, 92, 0, 255], [251, 94, 0, 255], [255, 96, 0, 255], [255, 98, 3, 255], [255, 100, 6, 255], [255, 102, 9, 255], [255, 104, 12, 255], [255, 105, 15, 255], [255, 107, 18, 255], [255, 109, 21, 255], [255, 111, 24, 255], [255, 113, 26, 255], [255, 115, 29, 255], [255, 117, 32, 255], [255, 119, 35, 255], [255, 120, 38, 255], [255, 122, 41, 255], [255, 124, 44, 255], [255, 126, 47, 255], [255, 128, 50, 255], [255, 130, 53, 255], [255, 132, 56, 255], [255, 134, 59, 255], [255, 136, 62, 255], [255, 137, 65, 255], [255, 139, 68, 255], [255, 141, 71, 255], [255, 143, 74, 255], [255, 145, 76, 255], [255, 147, 79, 255], [255, 149, 82, 255], [255, 151, 85, 255], [255, 152, 88, 255], [255, 154, 91, 255], [255, 156, 94, 255], [255, 158, 97, 255], [255, 160, 100, 255], [255, 162, 103, 255], [255, 164, 106, 255], [255, 166, 109, 255], [255, 168, 112, 255], [255, 169, 115, 255], [255, 171, 118, 255], [255, 173, 121, 255], [255, 175, 124, 255], [255, 177, 126, 255], [255, 179, 129, 255], [255, 181, 132, 255], [255, 183, 135, 255], [255, 184, 138, 255], [255, 186, 141, 255], [255, 188, 144, 255], [255, 190, 147, 255], [255, 192, 150, 255], [255, 194, 153, 255], [255, 196, 156, 255], [255, 198, 159, 255], [255, 200, 162, 255], [255, 201, 165, 255], [255, 203, 168, 255], [255, 205, 171, 255], [255, 207, 174, 255], [255, 209, 176, 255], [255, 211, 179, 255], [255, 213, 182, 255], [255, 215, 185, 255], [255, 216, 188, 255], [255, 218, 191, 255], [255, 220, 194, 255], [255, 222, 197, 255], [255, 224, 200, 255], [255, 226, 203, 255], [255, 228, 206, 255], [255, 229, 210, 255], [255, 231, 213, 255], [255, 233, 216, 255], [255, 235, 219, 255], [255, 237, 223, 255], [255, 239, 226, 255], [255, 240, 229, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 239, 255], [255, 248, 242, 255], [255, 250, 245, 255], [255, 251, 249, 255], [255, 253, 252, 255], [255, 255, 255, 255]]\n },\n pet20Step: {\n name: 'PET 20 Step',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255]]\n },\n gray: {\n name: 'Gray',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 1, 1]]\n }\n },\n jet: {\n name: 'Jet',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.35, 0, 0], [0.66, 1, 1], [0.89, 1, 1], [1, 0.5, 0.5]],\n green: [[0, 0, 0], [0.125, 0, 0], [0.375, 1, 1], [0.64, 1, 1], [0.91, 0, 0], [1, 0, 0]],\n blue: [[0, 0.5, 0.5], [0.11, 1, 1], [0.34, 1, 1], [0.65, 0, 0], [1, 0, 0]]\n }\n },\n hsv: {\n name: 'HSV',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [0.158730, 1, 1], [0.174603, 0.968750, 0.968750], [0.333333, 0.031250, 0.031250], [0.349206, 0, 0], [0.666667, 0, 0], [0.682540, 0.031250, 0.031250], [0.841270, 0.968750, 0.968750], [0.857143, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.158730, 0.937500, 0.937500], [0.174603, 1, 1], [0.507937, 1, 1], [0.666667, 0.062500, 0.062500], [0.682540, 0, 0], [1, 0, 0]],\n blue: [[0, 0, 0], [0.333333, 0, 0], [0.349206, 0.062500, 0.062500], [0.507937, 1, 1], [0.841270, 1, 1], [0.857143, 0.937500, 0.937500], [1, 0.09375, 0.09375]]\n }\n },\n hot: {\n name: 'Hot',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.0416, 0.0416], [0.365079, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0, 0], [0.746032, 1, 1], [1, 1, 1]],\n blue: [[0, 0, 0], [0.746032, 0, 0], [1, 1, 1]]\n }\n },\n cool: {\n name: 'Cool',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 1, 1], [1, 0, 0]],\n blue: [[0, 1, 1], [1, 1, 1]]\n }\n },\n spring: {\n name: 'Spring',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0, 0]]\n }\n },\n summer: {\n name: 'Summer',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0.5, 0.5], [1, 1, 1]],\n blue: [[0, 0.4, 0.4], [1, 0.4, 0.4]]\n }\n },\n autumn: {\n name: 'Autumn',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 0, 0]]\n }\n },\n winter: {\n name: 'Winter',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 0, 0]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0.5, 0.5]]\n }\n },\n bone: {\n name: 'Bone',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.746032, 0.652778, 0.652778], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0.319444, 0.319444], [0.746032, 0.777778, 0.777778], [1, 1, 1]],\n blue: [[0, 0, 0], [0.365079, 0.444444, 0.444444], [1, 1, 1]]\n }\n },\n copper: {\n name: 'Copper',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.809524, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 0.7812, 0.7812]],\n blue: [[0, 0, 0], [1, 0.4975, 0.4975]]\n }\n },\n spectral: {\n name: 'Spectral',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.05, 0.4667, 0.4667], [0.10, 0.5333, 0.5333], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0, 0], [0.30, 0, 0], [0.35, 0, 0], [0.40, 0, 0], [0.45, 0, 0], [0.50, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0.7333, 0.7333], [0.70, 0.9333, 0.9333], [0.75, 1, 1], [0.80, 1, 1], [0.85, 1, 1], [0.90, 0.8667, 0.8667], [0.95, 0.80, 0.80], [1, 0.80, 0.80]],\n green: [[0, 0, 0], [0.05, 0, 0], [0.10, 0, 0], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0.4667, 0.4667], [0.30, 0.6000, 0.6000], [0.35, 0.6667, 0.6667], [0.40, 0.6667, 0.6667], [0.45, 0.6000, 0.6000], [0.50, 0.7333, 0.7333], [0.55, 0.8667, 0.8667], [0.60, 1, 1], [0.65, 1, 1], [0.70, 0.9333, 0.9333], [0.75, 0.8000, 0.8000], [0.80, 0.6000, 0.6000], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]],\n blue: [[0, 0, 0], [0.05, 0.5333, 0.5333], [0.10, 0.6000, 0.6000], [0.15, 0.6667, 0.6667], [0.20, 0.8667, 0.8667], [0.25, 0.8667, 0.8667], [0.30, 0.8667, 0.8667], [0.35, 0.6667, 0.6667], [0.40, 0.5333, 0.5333], [0.45, 0, 0], [0.5, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0, 0], [0.70, 0, 0], [0.75, 0, 0], [0.80, 0, 0], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]]\n }\n },\n coolwarm: {\n name: 'CoolWarm',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.2298057, 0.2298057], [0.03125, 0.26623388, 0.26623388], [0.0625, 0.30386891, 0.30386891], [0.09375, 0.342804478, 0.342804478], [0.125, 0.38301334, 0.38301334], [0.15625, 0.424369608, 0.424369608], [0.1875, 0.46666708, 0.46666708], [0.21875, 0.509635204, 0.509635204], [0.25, 0.552953156, 0.552953156], [0.28125, 0.596262162, 0.596262162], [0.3125, 0.639176211, 0.639176211], [0.34375, 0.681291281, 0.681291281], [0.375, 0.722193294, 0.722193294], [0.40625, 0.761464949, 0.761464949], [0.4375, 0.798691636, 0.798691636], [0.46875, 0.833466556, 0.833466556], [0.5, 0.865395197, 0.865395197], [0.53125, 0.897787179, 0.897787179], [0.5625, 0.924127593, 0.924127593], [0.59375, 0.944468518, 0.944468518], [0.625, 0.958852946, 0.958852946], [0.65625, 0.96732803, 0.96732803], [0.6875, 0.969954137, 0.969954137], [0.71875, 0.966811177, 0.966811177], [0.75, 0.958003065, 0.958003065], [0.78125, 0.943660866, 0.943660866], [0.8125, 0.923944917, 0.923944917], [0.84375, 0.89904617, 0.89904617], [0.875, 0.869186849, 0.869186849], [0.90625, 0.834620542, 0.834620542], [0.9375, 0.795631745, 0.795631745], [0.96875, 0.752534934, 0.752534934], [1, 0.705673158, 0.705673158]],\n green: [[0, 0.298717966, 0.298717966], [0.03125, 0.353094838, 0.353094838], [0.0625, 0.406535296, 0.406535296], [0.09375, 0.458757618, 0.458757618], [0.125, 0.50941904, 0.50941904], [0.15625, 0.558148092, 0.558148092], [0.1875, 0.604562568, 0.604562568], [0.21875, 0.648280772, 0.648280772], [0.25, 0.688929332, 0.688929332], [0.28125, 0.726149107, 0.726149107], [0.3125, 0.759599947, 0.759599947], [0.34375, 0.788964712, 0.788964712], [0.375, 0.813952739, 0.813952739], [0.40625, 0.834302879, 0.834302879], [0.4375, 0.849786142, 0.849786142], [0.46875, 0.860207984, 0.860207984], [0.5, 0.86541021, 0.86541021], [0.53125, 0.848937047, 0.848937047], [0.5625, 0.827384882, 0.827384882], [0.59375, 0.800927443, 0.800927443], [0.625, 0.769767752, 0.769767752], [0.65625, 0.734132809, 0.734132809], [0.6875, 0.694266682, 0.694266682], [0.71875, 0.650421156, 0.650421156], [0.75, 0.602842431, 0.602842431], [0.78125, 0.551750968, 0.551750968], [0.8125, 0.49730856, 0.49730856], [0.84375, 0.439559467, 0.439559467], [0.875, 0.378313092, 0.378313092], [0.90625, 0.312874446, 0.312874446], [0.9375, 0.24128379, 0.24128379], [0.96875, 0.157246067, 0.157246067], [1, 0.01555616, 0.01555616]],\n blue: [[0, 0.753683153, 0.753683153], [0.03125, 0.801466763, 0.801466763], [0.0625, 0.84495867, 0.84495867], [0.09375, 0.883725899, 0.883725899], [0.125, 0.917387822, 0.917387822], [0.15625, 0.945619588, 0.945619588], [0.1875, 0.968154911, 0.968154911], [0.21875, 0.98478814, 0.98478814], [0.25, 0.995375608, 0.995375608], [0.28125, 0.999836203, 0.999836203], [0.3125, 0.998151185, 0.998151185], [0.34375, 0.990363227, 0.990363227], [0.375, 0.976574709, 0.976574709], [0.40625, 0.956945269, 0.956945269], [0.4375, 0.931688648, 0.931688648], [0.46875, 0.901068838, 0.901068838], [0.5, 0.865395561, 0.865395561], [0.53125, 0.820880546, 0.820880546], [0.5625, 0.774508472, 0.774508472], [0.59375, 0.726736146, 0.726736146], [0.625, 0.678007945, 0.678007945], [0.65625, 0.628751763, 0.628751763], [0.6875, 0.579375448, 0.579375448], [0.71875, 0.530263762, 0.530263762], [0.75, 0.481775914, 0.481775914], [0.78125, 0.434243684, 0.434243684], [0.8125, 0.387970225, 0.387970225], [0.84375, 0.343229596, 0.343229596], [0.875, 0.300267182, 0.300267182], [0.90625, 0.259301199, 0.259301199], [0.9375, 0.220525627, 0.220525627], [0.96875, 0.184115123, 0.184115123], [1, 0.150232812, 0.150232812]]\n }\n },\n blues: {\n name: 'Blues',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.9686274528503418, 0.9686274528503418], [0.125, 0.87058824300765991, 0.87058824300765991], [0.25, 0.7764706015586853, 0.7764706015586853], [0.375, 0.61960786581039429, 0.61960786581039429], [0.5, 0.41960784792900085, 0.41960784792900085], [0.625, 0.25882354378700256, 0.25882354378700256], [0.75, 0.12941177189350128, 0.12941177189350128], [0.875, 0.031372550874948502, 0.031372550874948502], [1, 0.031372550874948502, 0.031372550874948502]],\n green: [[0, 0.9843137264251709, 0.9843137264251709], [0.125, 0.92156863212585449, 0.92156863212585449], [0.25, 0.85882353782653809, 0.85882353782653809], [0.375, 0.7921568751335144, 0.7921568751335144], [0.5, 0.68235296010971069, 0.68235296010971069], [0.625, 0.57254904508590698, 0.57254904508590698], [0.75, 0.44313725829124451, 0.44313725829124451], [0.875, 0.31764706969261169, 0.31764706969261169], [1, 0.18823529779911041, 0.18823529779911041]],\n blue: [[0, 1, 1], [0.125, 0.9686274528503418, 0.9686274528503418], [0.25, 0.93725490570068359, 0.93725490570068359], [0.375, 0.88235294818878174, 0.88235294818878174], [0.5, 0.83921569585800171, 0.83921569585800171], [0.625, 0.7764706015586853, 0.7764706015586853], [0.75, 0.70980393886566162, 0.70980393886566162], [0.875, 0.61176472902297974, 0.61176472902297974], [1, 0.41960784792900085, 0.41960784792900085]]\n }\n }\n};\n/**\n * Generate linearly spaced vectors\n* http://cens.ioc.ee/local/man/matlab/techdoc/ref/linspace.html\n * @param {Number} a A number representing the first vector\n * @param {Number} b A number representing the second vector\n * @param {Number} n The number of linear spaced vectors to generate\n * @returns {Array} An array of points representing linear spaced vectors.\n * @memberof Colors\n */\n\nfunction linspace(a, b, n) {\n n = n === null ? 100 : n;\n var increment = (b - a) / (n - 1);\n var vector = [];\n\n while (n-- > 0) {\n vector.push(a);\n a += increment;\n } // Make sure the last item will always be \"b\" because most of the\n // Time we'll get numbers like 1.0000000000000002 instead of 1.\n\n\n vector[vector.length - 1] = b;\n return vector;\n}\n/**\n * Returns the \"rank/index\" of the element in a sorted array if found or the highest index if not. Uses (binary search)\n * @param {Array} array A sorted array to search in\n * @param {any} elem the element in the array to search for\n * @returns {number} The rank/index of the element in the given array\n * @memberof Colors\n */\n\n\nfunction getRank(array, elem) {\n var left = 0;\n var right = array.length - 1;\n\n while (left <= right) {\n var mid = left + Math.floor((right - left) / 2);\n var midElem = array[mid];\n\n if (midElem === elem) {\n return mid;\n } else if (elem < midElem) {\n right = mid - 1;\n } else {\n left = mid + 1;\n }\n }\n\n return left;\n}\n/**\n * Find the indices into a sorted array a such that, if the corresponding elements\n * In v were inserted before the indices, the order of a would be preserved.\n * http://lagrange.univ-lyon1.fr/docs/numpy/1.11.0/reference/generated/numpy.searchsorted.html\n * @param {Array} inputArray The array where the values will be inserted\n * @param {Array} values An array of the values to be inserted into the inputArray\n * @returns {Array} The indices where elements should be inserted to maintain order.\n * @memberof Colors\n */\n\n\nfunction searchSorted(inputArray, values) {\n var i;\n var indexes = [];\n var len = values.length;\n inputArray.sort(function (a, b) {\n return a - b;\n });\n\n for (i = 0; i < len; i++) {\n indexes[i] = getRank(inputArray, values[i]);\n }\n\n return indexes;\n}\n/**\n * Creates an *N* -element 1-d lookup table\n * @param {Number} N The number of elements in the result lookup table\n * @param {Array} data represented by a list of x,y0,y1 mapping correspondences. Each element in this\n * List represents how a value between 0 and 1 (inclusive) represented by x is mapped to\n * A corresponding value between 0 and 1 (inclusive). The two values of y are to allow for\n * Discontinuous mapping functions (say as might be found in a sawtooth) where y0 represents\n * The value of y for values of x <= to that given, and y1 is the value to be used for x >\n * Than that given). The list must start with x=0, end with x=1, and all values of x must be\n * In increasing order. Values between the given mapping points are determined by simple linear\n * Interpolation.\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the map.\n * @returns {any[]} an array \"result\" where result[x*(N-1)] gives the closest value for\n * Values of x between 0 and 1.\n * @memberof Colors\n */\n\n\nfunction makeMappingArray(N, data, gamma) {\n var i;\n var x = [];\n var y0 = [];\n var y1 = [];\n var lut = [];\n gamma = gamma === null ? 1 : gamma;\n\n for (i = 0; i < data.length; i++) {\n var element = data[i];\n x.push((N - 1) * element[0]);\n y0.push(element[1]);\n y1.push(element[1]);\n }\n\n var xLinSpace = linspace(0, 1, N);\n\n for (i = 0; i < N; i++) {\n xLinSpace[i] = (N - 1) * Math.pow(xLinSpace[i], gamma);\n }\n\n var xLinSpaceIndexes = searchSorted(x, xLinSpace);\n\n for (i = 1; i < N - 1; i++) {\n var index = xLinSpaceIndexes[i];\n var colorPercent = (xLinSpace[i] - x[index - 1]) / (x[index] - x[index - 1]);\n var colorDelta = y0[index] - y1[index - 1];\n lut[i] = colorPercent * colorDelta + y1[index - 1];\n }\n\n lut[0] = y1[0];\n lut[N - 1] = y0[data.length - 1];\n return lut;\n}\n/**\n * Creates a Colormap based on lookup tables using linear segments.\n * @param {{red:Array, green:Array, blue:Array}} segmentedData An object with a red, green and blue entries.\n * Each entry should be a list of x, y0, y1 tuples, forming rows in a table.\n * @param {Number} N The number of elements in the result Colormap\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the Colormap.\n * @returns {Array} The created Colormap object\n * @description The lookup table is generated using linear interpolation for each\n * Primary color, with the 0-1 domain divided into any number of\n * Segments.\n * https://github.com/stefanv/matplotlib/blob/3f1a23755e86fef97d51e30e106195f34425c9e3/lib/matplotlib/colors.py#L663\n * @memberof Colors\n */\n\n\nfunction createLinearSegmentedColormap(segmentedData, N, gamma) {\n var i;\n var lut = [];\n N = N === null ? 256 : N;\n gamma = gamma === null ? 1 : gamma;\n var redLut = makeMappingArray(N, segmentedData.red, gamma);\n var greenLut = makeMappingArray(N, segmentedData.green, gamma);\n var blueLut = makeMappingArray(N, segmentedData.blue, gamma);\n\n for (i = 0; i < N; i++) {\n var red = Math.round(redLut[i] * 255);\n var green = Math.round(greenLut[i] * 255);\n var blue = Math.round(blueLut[i] * 255);\n var rgba = [red, green, blue, 255];\n lut.push(rgba);\n }\n\n return lut;\n}\n/**\n * Return all available colormaps (id and name)\n * @returns {Array<{id,key}>} An array of colormaps with an object containing the \"id\" and display \"name\"\n * @memberof Colors\n */\n\n\nfunction getColormapsList() {\n var colormaps = [];\n var keys = Object.keys(colormapsData);\n keys.forEach(function (key) {\n if (colormapsData.hasOwnProperty(key)) {\n var colormap = colormapsData[key];\n colormaps.push({\n id: key,\n name: colormap.name\n });\n }\n });\n colormaps.sort(function (a, b) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n\n if (aName === bName) {\n return 0;\n }\n\n return aName < bName ? -1 : 1;\n });\n return colormaps;\n}\n/**\n * Return a colorMap object with the provided id and colormapData\n * if the Id matches existent colorMap objects (check colormapsData) the colormapData is ignored.\n * if the colormapData is not empty, the colorMap will be added to the colormapsData list. Otherwise, an empty colorMap object is returned.\n * @param {string} id The ID of the colormap\n * @param {Object} colormapData - An object that can contain a name, numColors, gama, segmentedData and/or colors\n * @returns {*} The Colormap Object\n * @memberof Colors\n*/\n\nfunction getColormap(id, colormapData) {\n var colormap = colormapsData[id];\n\n if (!colormap) {\n colormap = colormapsData[id] = colormapData || {\n name: '',\n colors: []\n };\n }\n\n if (!colormap.colors && colormap.segmentedData) {\n colormap.colors = createLinearSegmentedColormap(colormap.segmentedData, colormap.numColors, colormap.gamma);\n }\n\n return {\n getId: function getId() {\n return id;\n },\n getColorSchemeName: function getColorSchemeName() {\n return colormap.name;\n },\n setColorSchemeName: function setColorSchemeName(name) {\n colormap.name = name;\n },\n getNumberOfColors: function getNumberOfColors() {\n return colormap.colors.length;\n },\n setNumberOfColors: function setNumberOfColors(numColors) {\n while (colormap.colors.length < numColors) {\n colormap.colors.push(COLOR_TRANSPARENT);\n }\n\n colormap.colors.length = numColors;\n },\n getColor: function getColor(index) {\n if (this.isValidIndex(index)) {\n return colormap.colors[index];\n }\n\n return COLOR_TRANSPARENT;\n },\n getColorRepeating: function getColorRepeating(index) {\n var numColors = colormap.colors.length;\n index = numColors ? index % numColors : 0;\n return this.getColor(index);\n },\n setColor: function setColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors[index] = rgba;\n }\n },\n addColor: function addColor(rgba) {\n colormap.colors.push(rgba);\n },\n insertColor: function insertColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1, rgba);\n }\n },\n removeColor: function removeColor(index) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1);\n }\n },\n clearColors: function clearColors() {\n colormap.colors = [];\n },\n buildLookupTable: function buildLookupTable(lut) {\n if (!lut) {\n return;\n }\n\n var numColors = colormap.colors.length;\n lut.setNumberOfTableValues(numColors);\n\n for (var i = 0; i < numColors; i++) {\n lut.setTableValue(i, colormap.colors[i]);\n }\n },\n createLookupTable: function createLookupTable() {\n var lut = new _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.buildLookupTable(lut);\n return lut;\n },\n isValidIndex: function isValidIndex(index) {\n return index >= 0 && index < colormap.colors.length;\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./colors/index.js\":\n/*!*************************!*\\\n !*** ./colors/index.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colormap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colormap.js */ \"./colors/colormap.js\");\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getColormap: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormap\"],\n getColormapsList: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormapsList\"],\n LookupTable: _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./colors/lookupTable.js\":\n/*!*******************************!*\\\n !*** ./colors/lookupTable.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// This code was created based on vtkLookupTable\n// http://www.vtk.org/doc/release/5.0/html/a01697.html\n// https://github.com/Kitware/VTK/blob/master/Common/Core/vtkLookupTable.cxx\nvar BELOW_RANGE_COLOR_INDEX = 0;\nvar ABOVE_RANGE_COLOR_INDEX = 1;\nvar NAN_COLOR_INDEX = 2;\n/**\n * Converts an HSV (Hue, Saturation, Value) color to RGB (Red, Green, Blue) color value\n * @param {Number} hue A number representing the hue color value\n * @param {any} sat A number representing the saturation color value\n * @param {any} val A number representing the value color value\n * @returns {Numberp[]} An RGB color array\n */\n\nfunction HSVToRGB(hue, sat, val) {\n if (hue > 1) {\n throw new Error('HSVToRGB expects hue < 1');\n }\n\n var rgb = [];\n\n if (sat === 0) {\n rgb[0] = val;\n rgb[1] = val;\n rgb[2] = val;\n return rgb;\n }\n\n var hueCase = Math.floor(hue * 6);\n var frac = 6 * hue - hueCase;\n var lx = val * (1 - sat);\n var ly = val * (1 - sat * frac);\n var lz = val * (1 - sat * (1 - frac));\n\n switch (hueCase) {\n /* 0 p.Range[1]) {\n dIndex = p.MaxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.Shift) * p.Scale;\n }\n\n return Math.floor(dIndex);\n}\n/**\n * Maps scalar values into colors via a lookup table\n * LookupTable is an object that is used by mapper objects to map scalar values into rgba (red-green-blue-alpha transparency) color specification,\n * or rgba into scalar values. The color table can be created by direct insertion of color values, or by specifying hue, saturation, value, and alpha range and generating a table\n */\n\n\nvar LookupTable =\n/*#__PURE__*/\nfunction () {\n /**\n * Creates a default linear LookupTable object with 256 colors.\n */\n function LookupTable() {\n _classCallCheck(this, LookupTable);\n\n this.NumberOfColors = 256;\n this.Ramp = 'linear';\n this.TableRange = [0, 255];\n this.HueRange = [0, 0.66667];\n this.SaturationRange = [1, 1];\n this.ValueRange = [1, 1];\n this.AlphaRange = [1, 1];\n this.NaNColor = [128, 0, 0, 255];\n this.BelowRangeColor = [0, 0, 0, 255];\n this.UseBelowRangeColor = true;\n this.AboveRangeColor = [255, 255, 255, 255];\n this.UseAboveRangeColor = true;\n this.InputRange = [0, 255];\n this.Table = [];\n }\n /**\n * Specify the number of values (i.e., colors) in the lookup table.\n * @param {Number} number The number of colors in he LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n\n _createClass(LookupTable, [{\n key: \"setNumberOfTableValues\",\n value: function setNumberOfTableValues(number) {\n this.NumberOfColors = number;\n }\n /**\n * Set the shape of the table ramp to either 'linear', 'scurve' or 'sqrt'\n * @param {String} ramp A string value representing the shape of the table. Allowed values are 'linear', 'scurve' or 'sqrt'\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRamp\",\n value: function setRamp(ramp) {\n this.Ramp = ramp;\n }\n /**\n * Sets the minimum/maximum scalar values for scalar mapping.\n * Scalar values less than minimum range value are clamped to minimum range value.\n * Scalar values greater than maximum range value are clamped to maximum range value.\n * @param {Number} start A double representing the minimum scaler value of the LookupTable\n * @param {any} end A double representing the maximum scaler value of the LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableRange\",\n value: function setTableRange(start, end) {\n this.TableRange[0] = start;\n this.TableRange[1] = end;\n }\n /**\n * Set the range in hue (using automatic generation). Hue ranges between [0,1].\n * @param {Number} start A double representing the minimum hue value in a range. Min. is 0\n * @param {Number} end A double representing the maximum hue value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setHueRange\",\n value: function setHueRange(start, end) {\n this.HueRange[0] = start;\n this.HueRange[1] = end;\n }\n /**\n * Set the range in saturation (using automatic generation). Saturation ranges between [0,1].\n * @param {Number} start A double representing the minimum Saturation value in a range. Min. is 0\n * @param {Number} end A double representing the maximum Saturation value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setSaturationRange\",\n value: function setSaturationRange(start, end) {\n this.SaturationRange[0] = start;\n this.SaturationRange[1] = end;\n }\n /**\n * Set the range in value (using automatic generation). Value ranges between [0,1].\n * @param {Numeber } start A double representing the minimum value in a range. Min. is 0\n * @param {Numeber} end A double representing the maximum value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setValueRange\",\n value: function setValueRange(start, end) {\n // Set the range in value (using automatic generation). Value ranges between [0,1].\n this.ValueRange[0] = start;\n this.ValueRange[1] = end;\n }\n /**\n * (Not Used) Sets the range of scalars which will be mapped.\n * @param {Number} start the minimum scalar value in the range\n * @param {Number} end the maximum scalar value in the range\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRange\",\n value: function setRange(start, end) {\n this.InputRange[0] = start;\n this.InputRange[1] = end;\n }\n /**\n * Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n * @param {Number} start A double representing the minimum alpha value\n * @param {Number} end A double representing the maximum alpha value\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setAlphaRange\",\n value: function setAlphaRange(start, end) {\n // Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n this.AlphaRange[0] = start;\n this.AlphaRange[1] = end;\n }\n /**\n * Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Number} scalar A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"getColor\",\n value: function getColor(scalar) {\n return this.mapValue(scalar);\n }\n /**\n * Generate lookup table from hue, saturation, value, alpha min/max values. Table is built from linear ramp of each value.\n * @param {Boolean} force true to force the build of the LookupTable. Otherwie, false. This is useful if a lookup table has been defined manually\n * (using SetTableValue) and then an application decides to rebuild the lookup table using the implicit process.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"build\",\n value: function build(force) {\n if (this.Table.length > 1 && !force) {\n return;\n } // Clear the table\n\n\n this.Table = [];\n var maxIndex = this.NumberOfColors - 1;\n var hinc, sinc, vinc, ainc;\n\n if (maxIndex) {\n hinc = (this.HueRange[1] - this.HueRange[0]) / maxIndex;\n sinc = (this.SaturationRange[1] - this.SaturationRange[0]) / maxIndex;\n vinc = (this.ValueRange[1] - this.ValueRange[0]) / maxIndex;\n ainc = (this.AlphaRange[1] - this.AlphaRange[0]) / maxIndex;\n } else {\n hinc = sinc = vinc = ainc = 0.0;\n }\n\n for (var i = 0; i <= maxIndex; i++) {\n var hue = this.HueRange[0] + i * hinc;\n var sat = this.SaturationRange[0] + i * sinc;\n var val = this.ValueRange[0] + i * vinc;\n var alpha = this.AlphaRange[0] + i * ainc;\n var rgb = HSVToRGB(hue, sat, val);\n var c_rgba = [];\n\n switch (this.Ramp) {\n case 'scurve':\n c_rgba[0] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[0]) * Math.PI)));\n c_rgba[1] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[1]) * Math.PI)));\n c_rgba[2] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[2]) * Math.PI)));\n c_rgba[3] = Math.floor(alpha * 255);\n break;\n\n case 'linear':\n c_rgba[0] = Math.floor(rgb[0] * 255 + 0.5);\n c_rgba[1] = Math.floor(rgb[1] * 255 + 0.5);\n c_rgba[2] = Math.floor(rgb[2] * 255 + 0.5);\n c_rgba[3] = Math.floor(alpha * 255 + 0.5);\n break;\n\n case 'sqrt':\n c_rgba[0] = Math.floor(Math.sqrt(rgb[0]) * 255 + 0.5);\n c_rgba[1] = Math.floor(Math.sqrt(rgb[1]) * 255 + 0.5);\n c_rgba[2] = Math.floor(Math.sqrt(rgb[2]) * 255 + 0.5);\n c_rgba[3] = Math.floor(Math.sqrt(alpha) * 255 + 0.5);\n break;\n\n default:\n throw new Error(\"Invalid Ramp value (\".concat(this.Ramp, \")\"));\n }\n\n this.Table.push(c_rgba);\n }\n\n this.buildSpecialColors();\n }\n /**\n * Ensures the out-of-range colors (Below range and Above range) are set correctly.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"buildSpecialColors\",\n value: function buildSpecialColors() {\n var numberOfColors = this.NumberOfColors;\n var belowRangeColorIndex = numberOfColors + BELOW_RANGE_COLOR_INDEX;\n var aboveRangeColorIndex = numberOfColors + ABOVE_RANGE_COLOR_INDEX;\n var nanColorIndex = numberOfColors + NAN_COLOR_INDEX; // Below range color\n\n if (this.UseBelowRangeColor || numberOfColors === 0) {\n this.Table[belowRangeColorIndex] = this.BelowRangeColor;\n } else {\n // Duplicate the first color in the table.\n this.Table[belowRangeColorIndex] = this.Table[0];\n } // Above range color\n\n\n if (this.UseAboveRangeColor || numberOfColors === 0) {\n this.Table[aboveRangeColorIndex] = this.AboveRangeColor;\n } else {\n // Duplicate the last color in the table.\n this.Table[aboveRangeColorIndex] = this.Table[numberOfColors - 1];\n } // Always use NanColor\n\n\n this.Table[nanColorIndex] = this.NaNColor;\n }\n /**\n * Similar to GetColor - Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Numeber} v A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"mapValue\",\n value: function mapValue(v) {\n var index = this.getIndex(v);\n\n if (index < 0) {\n return this.NaNColor;\n } else if (index === 0) {\n if (this.UseBelowRangeColor && v < this.TableRange[0]) {\n return this.BelowRangeColor;\n }\n } else if (index === this.NumberOfColors - 1) {\n if (this.UseAboveRangeColor && v > this.TableRange[1]) {\n return this.AboveRangeColor;\n }\n }\n\n return this.Table[index];\n }\n /**\n * Return the table index associated with a particular value.\n * @param {Number} v A double value which table index will be returned.\n * @returns {Number} The index in the LookupTable\n * @memberof Colors\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex(v) {\n var p = {};\n p.Range = [];\n p.MaxIndex = this.NumberOfColors - 1; // This was LookupShiftAndScale\n\n p.Shift = -this.TableRange[0];\n\n if (this.TableRange[1] <= this.TableRange[0]) {\n p.Scale = Number.MAX_VALUE;\n } else {\n p.Scale = p.MaxIndex / (this.TableRange[1] - this.TableRange[0]);\n }\n\n p.Range[0] = this.TableRange[0];\n p.Range[1] = this.TableRange[1]; // First, check whether we have a number...\n\n if (isNaN(v)) {\n // For backwards compatibility\n return -1;\n } // Map to an index:\n\n\n var index = linearIndexLookupMain(v, p); // For backwards compatibility, if the index indicates an\n // Out-of-range value, truncate to index range for in-range colors.\n\n if (index === this.NumberOfColors + BELOW_RANGE_COLOR_INDEX) {\n index = 0;\n } else if (index === this.NumberOfColors + ABOVE_RANGE_COLOR_INDEX) {\n index = this.NumberOfColors - 1;\n }\n\n return index;\n }\n /**\n * Directly load color into lookup table. Use [0,1] double values for color component specification.\n * Make sure that you've either used the Build() method or used SetNumberOfTableValues() prior to using this method.\n * @param {Number} index The index in the LookupTable of where to insert the color value\n * @param {Number[]} rgba An array of [0,1] double values for an RGBA color component\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableValue\",\n value: function setTableValue(index, rgba) {\n // Check if it index, red, green, blue and alpha were passed as parameter\n if (arguments.length === 5) {\n rgba = Array.prototype.slice.call(arguments, 1);\n } // Check the index to make sure it is valid\n\n\n if (index < 0) {\n throw new Error(\"Can't set the table value for negative index (\".concat(index, \")\"));\n }\n\n if (index >= this.NumberOfColors) {\n new Error(\"Index \".concat(index, \" is greater than the number of colors \").concat(this.NumberOfColors));\n }\n\n this.Table[index] = rgba;\n\n if (index === 0 || index === this.NumberOfColors - 1) {\n // This is needed due to the way the special colors are stored in\n // The internal table. If Above/BelowRangeColors are not used and\n // The min/max colors are changed in the table with this member\n // Function, then the colors used for values outside the range may\n // Be incorrect. Calling this here ensures the out-of-range colors\n // Are set correctly.\n this.buildSpecialColors();\n }\n }\n }]);\n\n return LookupTable;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LookupTable);\n\n/***/ }),\n\n/***/ \"./disable.js\":\n/*!********************!*\\\n !*** ./disable.js ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Disable an HTML element for further use in Cornerstone\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Enable\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n if (element === undefined) {\n throw new Error('disable: element must not be undefined');\n } // Search for this element in this list of enabled elements\n\n\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n // We found it!\n // Fire an event so dependencies can cleanup\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_2__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData); // Remove the child DOM elements that we created (e.g.canvas)\n\n enabledElements[i].element.removeChild(enabledElements[i].canvas);\n enabledElements[i].canvas = undefined; // Remove this element from the list of enabled elements\n\n enabledElements.splice(i, 1);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./displayImage.js\":\n/*!*************************!*\\\n !*** ./displayImage.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n\n/**\n * Sets a new image object for a given element.\n *\n * Will also apply an optional viewport setting.\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @param {Object} [viewport] A set of Cornerstone viewport parameters\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image, viewport) {\n if (element === undefined) {\n throw new Error('displayImage: parameter element must not be undefined');\n }\n\n if (image === undefined) {\n throw new Error('displayImage: parameter image must not be undefined');\n }\n\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldImage = enabledElement.image;\n enabledElement.image = image;\n\n if (enabledElement.layers && enabledElement.layers.length) {\n Object(_layers_js__WEBPACK_IMPORTED_MODULE_4__[\"setLayerImage\"])(element, image);\n }\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n }\n\n var frameRate;\n\n if (enabledElement.lastImageTimeStamp !== undefined) {\n var timeSinceLastImage = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - enabledElement.lastImageTimeStamp;\n frameRate = (1000 / timeSinceLastImage).toFixed();\n }\n\n enabledElement.lastImageTimeStamp = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var newImageEventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n oldImage: oldImage,\n enabledElement: enabledElement,\n frameRate: frameRate\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].NEW_IMAGE, newImageEventData);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./draw.js\":\n/*!*****************!*\\\n !*** ./draw.js ***!\n \\*****************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Immediately draws the enabled element\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('draw: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./drawInvalidated.js\":\n/*!****************************!*\\\n !*** ./drawInvalidated.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/**\n * This module is responsible for drawing invalidated enabled elements\n */\n\n\n/**\n * Draws all invalidated enabled elements and clears the invalid flag after drawing it\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n var ee = enabledElements[i];\n\n if (ee.invalid === true) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ee, true);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./enable.js\":\n/*!*******************!*\\\n !*** ./enable.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _generateUUID_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generateUUID.js */ \"./generateUUID.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/getCanvas.js */ \"./internal/getCanvas.js\");\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Enable\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n */\n\n/**\r\n * Returns whether or not an Enabled Element has either a currently active image or\r\n * a non-empty Array of Enabled Element Layers.\r\n *\r\n * @param {EnabledElement} enabledElement An Enabled Element\r\n * @return {Boolean} Whether or not the Enabled Element has an active image or valid set of layers\r\n * @memberof Enable\r\n */\n\nfunction hasImageOrLayers(enabledElement) {\n return enabledElement.image !== undefined || enabledElement.layers.length > 0;\n}\n/**\r\n * Enable an HTML Element for use in Cornerstone\r\n *\r\n * - If there is a Canvas already present within the HTMLElement, and it has the class\r\n * 'cornerstone-canvas', this function will use this existing Canvas instead of creating\r\n * a new one. This may be helpful when using libraries (e.g. React, Vue) which don't\r\n * want third parties to change the DOM.\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @param {Object} options Options for the enabledElement\r\n *\r\n * @return {void}\r\n * @memberof Enable\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, options) {\n if (element === undefined) {\n throw new Error('enable: parameter element cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var canvas = Object(_internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element);\n var enabledElement = {\n element: element,\n canvas: canvas,\n image: undefined,\n // Will be set once image is loaded\n invalid: false,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n uuid: Object(_generateUUID_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])()\n };\n Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"addEnabledElement\"])(enabledElement);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_7__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ELEMENT_ENABLED, enabledElement);\n Object(_resize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, true);\n /**\r\n * Draw the image immediately\r\n *\r\n * @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n function draw(timestamp) {\n if (enabledElement.canvas === undefined) {\n return;\n }\n\n var eventDetails = {\n enabledElement: enabledElement,\n timestamp: timestamp\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].PRE_RENDER, eventDetails);\n\n if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, enabledElement.invalid);\n }\n\n Object(_internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(draw);\n }\n\n draw();\n});\n\n/***/ }),\n\n/***/ \"./enabledElementData.js\":\n/*!*******************************!*\\\n !*** ./enabledElementData.js ***!\n \\*******************************/\n/*! exports provided: getElementData, removeElementData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return getElementData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return removeElementData; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n * @returns {*} Whatever data is stored for this enabled element\n */\n\nfunction getElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (ee.data.hasOwnProperty(dataType) === false) {\n ee.data[dataType] = {};\n }\n\n return ee.data[dataType];\n}\n/**\n * Clears any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n *\n * @returns {void}\n */\n\nfunction removeElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n delete ee.data[dataType];\n}\n\n/***/ }),\n\n/***/ \"./enabledElements.js\":\n/*!****************************!*\\\n !*** ./enabledElements.js ***!\n \\****************************/\n/*! exports provided: getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return getEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return addEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return getEnabledElementsByImageId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return getEnabledElements; });\nvar enabledElements = [];\n/**\n * @module EnabledElements\n */\n\n/**\n * @module Objects\n */\n\n/**\n * A two-dimensional vector\n *\n * @typedef {Object} vec2\n * @memberof Objects\n * @param {Number} x - The x distance\n * @param {Number} y - The y distance\n */\n\n/**\n * VOI\n *\n * @typedef {Object} VOI\n * @memberof Objects\n * @param {Number} windowWidth - Window Width for display\n * @param {Number} windowCenter - Window Center for display\n */\n\n/**\n * Lookup Table Array\n *\n * @typedef {Object} LUT\n * @memberof Objects\n * @property {Number} firstValueMapped\n * @property {Number} numBitsPerEntry\n * @property {Array} lut\n */\n\n/**\n * Image Statistics Object\n *\n * @typedef {Object} ImageStats\n * @memberof Objects\n * @property {Number} [lastGetPixelDataTime] The time in ms taken to retrieve stored pixels required to draw the image\n * @property {Number} [lastStoredPixelDataToCanvasImageDataTime] The time in ms taken to map from stored pixel array to canvas pixel array\n * @property {Number} [lastPutImageDataTime] The time in ms taken for putImageData to put the canvas pixel data into the canvas context\n * @property {Number} [lastRenderTime] The total time in ms taken for the entire rendering function to run\n * @property {Number} [lastLutGenerateTime] The time in ms taken to generate the lookup table for the image\n */\n\n/**\n * An Image Object in Cornerstone\n *\n * @typedef {Object} Image\n * @memberof Objects\n * @property {string} imageId - The imageId associated with this image object\n * @property {Number} minPixelValue - the minimum stored pixel value in the image\n * @property {Number} maxPixelValue - the maximum stored pixel value in the image\n * @property {Number} slope - the rescale slope to convert stored pixel values to modality pixel values or 1 if not specified\n * @property {Number} intercept - the rescale intercept used to convert stored pixel values to modality values or 0 if not specified\n * @property {Number} windowCenter - the default windowCenter to apply to the image\n * @property {Number} windowWidth - the default windowWidth to apply to the image\n * @property {function} getPixelData - a function that returns the underlying pixel data. An array of integers for grayscale and an array of RGBA for color\n * @property {function} getImageData - a function that returns a canvas imageData object for the image. This is only needed for color images\n * @property {function} getCanvas - a function that returns a canvas element with the image loaded into it. This is only needed for color images.\n * @property {function} getImage - a function that returns a JavaScript Image object with the image data. This is optional and typically used for images encoded in standard web JPEG and PNG formats\n * @property {Number} rows - number of rows in the image. This is the same as height but duplicated for convenience\n * @property {Number} columns - number of columns in the image. This is the same as width but duplicated for convenience\n * @property {Number} height - the height of the image. This is the same as rows but duplicated for convenience\n * @property {Number} width - the width of the image. This is the same as columns but duplicated for convenience\n * @property {Boolean} color - true if pixel data is RGB, false if grayscale\n * @property {Object} lut - The Lookup Table\n * @property {Boolean} rgba - Is the color pixel data stored in RGBA?\n * @property {Number} columnPixelSpacing - horizontal distance between the middle of each pixel (or width of each pixel) in mm or undefined if not known\n * @property {Number} rowPixelSpacing - vertical distance between the middle of each pixel (or height of each pixel) in mm or undefined if not known\n * @property {Boolean} invert - true if the the image should initially be displayed be inverted, false if not. This is here mainly to support DICOM images with a photometric interpretation of MONOCHROME1\n * @property {Number} sizeInBytes - the number of bytes used to store the pixels for this image.\n * @property {Boolean} [falseColor=false] - Whether or not the image has undergone false color mapping\n * @property {Array} [origPixelData] - Original pixel data for an image after it has undergone false color mapping\n * @property {ImageStats} [stats] - Statistics for the last redraw of the image\n * @property {Object} cachedLut - Cached Lookup Table for this image.\n * @property {String|Colormap} [colormap] - Depreacted. Use viewport.colormap instead. an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * A Viewport Settings Object Cornerstone\n *\n * @typedef {Object} Viewport\n * @memberof Objects\n * @property {Number} [scale=1.0] - The scale applied to the image. A scale of 1.0 will display no zoom (one image pixel takes up one screen pixel). A scale of 2.0 will be double zoom and a scale of .5 will be zoomed out by 2x\n * @property {vec2} [translation] - An object with properties x and y which describe the translation to apply in the pixel coordinate system. Note that the image is initially displayed centered in the enabled element with a x and y translation of 0 and 0 respectively.\n * @property {VOI} [voi] - an object with properties windowWidth and windowCenter.\n * @property {boolean} [invert=false] - Whether or not the image is inverted.\n * @property {boolean} [pixelReplication=false] - true if the image smooth / interpolation should be used when zoomed in on the image or false if pixel replication should be used.\n * @property {boolean} [hflip=false] - true if the image is flipped horizontally. Default is false\n * @property {boolean} [vflip=false] - true if the image is flipped vertically. Default is false\n * @property {Number} [rotation=0] - the rotation of the image (90 degree increments). Default is 0\n * @property {LUT} [modalityLUT] - the modality LUT to apply or undefined if none\n * @property {LUT} [voiLUT] - the modality LUT to apply or undefined if none\n * @property {String|Colormap} [colormap] - an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * An Enabled Element in Cornerstone\n *\n * @typedef {Object} EnabledElement\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n * @property {EnabledElementLayer[]} [layers] - The layers that have been added to the enabledElement\n * @property {Boolean} [syncViewports] - Whether or not to synchronize the viewport parameters\n * for each of the enabled element's layers\n * @property {Boolean} [lastSyncViewportsState] - The previous state for the sync viewport boolean\n */\n\n/**\n * An Enabled Element Layer in Cornerstone\n *\n * @typedef {Object} EnabledElementLayer\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Object} [options] - Layer drawing options\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n */\n\n/**\n * An Image Load Object\n *\n * @typedef {Object} ImageLoadObject\n * @memberof Objects\n * @property {Promise} promise - The Promise tracking the loading of this image\n * @property {Function|undefined} cancelFn - A function to cancel the image load request\n */\n\n/**\n * Retrieves a Cornerstone Enabled Element object\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n *\n * @returns {EnabledElement} A Cornerstone Enabled Element\n * @memberof EnabledElements\n */\n\nfunction getEnabledElement(element) {\n if (element === undefined) {\n throw new Error('getEnabledElement: parameter element must not be undefined');\n }\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n return enabledElements[i];\n }\n }\n\n throw new Error('element not enabled');\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {EnabledElement} enabledElement A Cornerstone enabledElement Object\n * @returns {void}\n * @memberof EnabledElements\n */\n\nfunction addEnabledElement(enabledElement) {\n if (enabledElement === undefined) {\n throw new Error('getEnabledElement: enabledElement element must not be undefined');\n }\n\n enabledElements.push(enabledElement);\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {string} imageId A Cornerstone Image ID\n * @returns {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElementsByImageId(imageId) {\n var ees = [];\n enabledElements.forEach(function (enabledElement) {\n if (enabledElement.image && enabledElement.image.imageId === imageId) {\n ees.push(enabledElement);\n }\n });\n return ees;\n}\n/**\n * Retrieve all of the currently enabled Cornerstone elements\n *\n * @return {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElements() {\n return enabledElements;\n}\n\n/***/ }),\n\n/***/ \"./events.js\":\n/*!*******************!*\\\n !*** ./events.js ***!\n \\*******************/\n/*! exports provided: default, events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return events; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n NEW_IMAGE: 'cornerstonenewimage',\n INVALIDATED: 'cornerstoneinvalidated',\n PRE_RENDER: 'cornerstoneprerender',\n IMAGE_CACHE_MAXIMUM_SIZE_CHANGED: 'cornerstoneimagecachemaximumsizechanged',\n IMAGE_CACHE_PROMISE_REMOVED: 'cornerstoneimagecachepromiseremoved',\n IMAGE_CACHE_FULL: 'cornerstoneimagecachefull',\n IMAGE_CACHE_CHANGED: 'cornerstoneimagecachechanged',\n WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved',\n WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull',\n IMAGE_LOADED: 'cornerstoneimageloaded',\n IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed',\n ELEMENT_RESIZED: 'cornerstoneelementresized',\n IMAGE_RENDERED: 'cornerstoneimagerendered',\n LAYER_ADDED: 'cornerstonelayeradded',\n LAYER_REMOVED: 'cornerstonelayerremoved',\n ACTIVE_LAYER_CHANGED: 'cornerstoneactivelayerchanged',\n ELEMENT_DISABLED: 'cornerstoneelementdisabled',\n ELEMENT_ENABLED: 'cornerstoneelementenabled'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EVENTS);\n/**\n * EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface\n *\n * @class\n * @memberof Polyfills\n */\n\nvar EventTarget =\n/*#__PURE__*/\nfunction () {\n function EventTarget() {\n _classCallCheck(this, EventTarget);\n\n this.listeners = {};\n this.namespaces = {};\n }\n\n _createClass(EventTarget, [{\n key: \"addEventNamespaceListener\",\n value: function addEventNamespaceListener(type, callback) {\n if (type.indexOf('.') <= 0) {\n return;\n }\n\n this.namespaces[type] = callback;\n this.addEventListener(type.split('.')[0], callback);\n }\n }, {\n key: \"removeEventNamespaceListener\",\n value: function removeEventNamespaceListener(type) {\n if (type.indexOf('.') <= 0 || !this.namespaces[type]) {\n return;\n }\n\n this.removeEventListener(type.split('.')[0], this.namespaces[type]);\n delete this.namespaces[type];\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.addEventNamespaceListener(type, callback);\n return;\n }\n\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(callback);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.removeEventNamespaceListener(type);\n return;\n }\n\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n\n var stack = this.listeners[event.type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return EventTarget;\n}();\n\nvar events = new EventTarget();\n\n/***/ }),\n\n/***/ \"./falseColorMapping.js\":\n/*!******************************!*\\\n !*** ./falseColorMapping.js ***!\n \\******************************/\n/*! exports provided: convertImageToFalseColorImage, convertToFalseColorImage, restoreImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return convertImageToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return convertToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return restoreImage; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony import */ var _colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors/colormap.js */ \"./colors/colormap.js\");\n\n\n\n/**\n * Retrieves the minimum and maximum pixel values from an Array of pixel data\n *\n * @param {Array} pixelData The input pixel data array\n *\n * @returns {{minPixelValue: Number, maxPixelValue: Number}} The minimum and maximum pixel values in the input Array\n */\n\nfunction getPixelValues(pixelData) {\n var minPixelValue = Number.MAX_VALUE;\n var maxPixelValue = Number.MIN_VALUE;\n var len = pixelData.length;\n var pixel;\n\n for (var i = 0; i < len; i++) {\n pixel = pixelData[i];\n minPixelValue = minPixelValue < pixel ? minPixelValue : pixel;\n maxPixelValue = maxPixelValue > pixel ? maxPixelValue : pixel;\n }\n\n return {\n minPixelValue: minPixelValue,\n maxPixelValue: maxPixelValue\n };\n}\n/**\n * Retrieve a function that will allow an image object to be reset to its original form\n * after a false color mapping transformation\n *\n * @param {Image} image A Cornerstone Image Object\n *\n * @return {Function} A function for resetting an Image Object to its original form\n */\n\n\nfunction getRestoreImageMethod(image) {\n if (image.restore) {\n return image.restore;\n }\n\n var color = image.color;\n var rgba = image.rgba;\n var cachedLut = image.cachedLut;\n var slope = image.slope;\n var windowWidth = image.windowWidth;\n var windowCenter = image.windowCenter;\n var minPixelValue = image.minPixelValue;\n var maxPixelValue = image.maxPixelValue;\n return function () {\n image.color = color;\n image.rgba = rgba;\n image.cachedLut = cachedLut;\n image.slope = slope;\n image.windowWidth = windowWidth;\n image.windowCenter = windowCenter;\n image.minPixelValue = minPixelValue;\n image.maxPixelValue = maxPixelValue;\n\n if (image.origPixelData) {\n var pixelData = image.origPixelData;\n\n image.getPixelData = function () {\n return pixelData;\n };\n } // Remove some attributes added by false color mapping\n\n\n image.origPixelData = undefined;\n image.colormapId = undefined;\n image.falseColor = undefined;\n };\n} //\n// Then we need to make sure it will be converted into a colormap object if it's as string.\n\n/**\n * User can pass a colormap or its id as string to some of these public functions.\n * Then we need to make sure it will be converted into a colormap object if it's a string.\n *\n * @param {*} colormap A colormap ID or Object\n * @return {*} The colormap\n */\n\n\nfunction ensuresColormap(colormap) {\n if (colormap && typeof colormap === 'string') {\n colormap = Object(_colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__[\"getColormap\"])(colormap);\n }\n\n return colormap;\n}\n/**\n * Restores a false color image to its original version\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Boolean} True if the image object had a valid restore function, which was run. Otherwise, false.\n */\n\n\nfunction restoreImage(image) {\n if (image.restore && typeof image.restore === 'function') {\n image.restore();\n return true;\n }\n\n return false;\n}\n/**\n * Convert an image to a false color image\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {String|Object} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {Boolean} - Whether or not the image has been converted to a false color image\n */\n\n\nfunction convertImageToFalseColorImage(image, colormap) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n } // User can pass a colormap id or a colormap object\n\n\n colormap = ensuresColormap(colormap);\n var colormapId = colormap.getId(); // Doesn't do anything if colormapId hasn't changed\n\n if (image.colormapId === colormapId) {\n // It has already being converted into a false color image\n // Using the colormapId passed as parameter\n return false;\n } // Restore the image attributes updated when converting to a false color image\n\n\n restoreImage(image); // Convert the image to a false color image\n\n if (colormapId) {\n var minPixelValue = image.minPixelValue || 0;\n var maxPixelValue = image.maxPixelValue || 255;\n image.restore = getRestoreImageMethod(image);\n var lookupTable = colormap.createLookupTable();\n lookupTable.setTableRange(minPixelValue, maxPixelValue); // Update the pixel data and render the new image\n\n Object(_pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lookupTable); // Update min and max pixel values\n\n var pixelValues = getPixelValues(image.getPixelData());\n image.minPixelValue = pixelValues.minPixelValue;\n image.maxPixelValue = pixelValues.maxPixelValue;\n image.windowWidth = 255;\n image.windowCenter = 128; // Cache the last colormapId used for performance\n // Then it doesn't need to be re-rendered on next\n // Time if the user hasn't updated it\n\n image.colormapId = colormapId;\n } // Return `true` to tell the caller that the image has got updated\n\n\n return true;\n}\n/**\n * Convert the image of a element to a false color image\n *\n * @param {HTMLElement} element The Cornerstone element\n * @param {*} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {void}\n */\n\n\nfunction convertToFalseColorImage(element, colormap) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return convertImageToFalseColorImage(enabledElement.image, colormap);\n}\n\n\n\n/***/ }),\n\n/***/ \"./fitToWindow.js\":\n/*!************************!*\\\n !*** ./fitToWindow.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n\n\n/**\n * Adjusts an image's scale and translation so the image is centered and all pixels\n * in the image are viewable.\n *\n * @param {HTMLElement} element The Cornerstone element to update\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var image = enabledElement.image; // The new scale is the minimum of the horizontal and vertical scale values\n\n enabledElement.viewport.scale = Object(_internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image, enabledElement.viewport.rotation).scaleFactor;\n enabledElement.viewport.translation.x = 0;\n enabledElement.viewport.translation.y = 0;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./generateUUID.js\":\n/*!*************************!*\\\n !*** ./generateUUID.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n* Generates a UUID for the enabledElement.\n*\n* @return {String} the UUID.\n*/\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n // https://stackoverflow.com/a/8809472/9208320 Public Domain/MIT\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\"&\",\"|\"] }] */\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // Use high-precision timer if available\n }\n\n return 'x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n});\n\n/***/ }),\n\n/***/ \"./getDefaultViewportForImage.js\":\n/*!***************************************!*\\\n !*** ./getDefaultViewportForImage.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n\n\n/**\n * Returns a default viewport for display the specified image on the specified\n * enabled element. The default viewport is fit to window\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image Object\n *\n * @returns {Viewport} The default viewport for the image\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n});\n\n/***/ }),\n\n/***/ \"./getImage.js\":\n/*!*********************!*\\\n !*** ./getImage.js ***!\n \\*********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Returns the currently displayed image for an element or undefined if no image has\n * been displayed yet\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Image} The Cornerstone Image Object displayed in this element\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return enabledElement.image;\n});\n\n/***/ }),\n\n/***/ \"./getPixels.js\":\n/*!**********************!*\\\n !*** ./getPixels.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony import */ var _internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n\n\n\n/**\n * Retrieves an array of pixels from a rectangular region with modality LUT transformation applied\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The modality pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n var storedPixels = Object(_getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, x, y, width, height);\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var mlutfn = Object(_internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ee.image.slope, ee.image.intercept, ee.viewport.modalityLUT);\n return storedPixels.map(mlutfn);\n});\n\n/***/ }),\n\n/***/ \"./getStoredPixels.js\":\n/*!****************************!*\\\n !*** ./getStoredPixels.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves an array of stored pixel values from a rectangular region of an image\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The stored pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n if (element === undefined) {\n throw new Error('getStoredPixels: parameter element must not be undefined');\n }\n\n x = Math.round(x);\n y = Math.round(y);\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var storedPixels = [];\n var index = 0;\n var pixelData = enabledElement.image.getPixelData();\n\n for (var row = 0; row < height; row++) {\n for (var column = 0; column < width; column++) {\n var spIndex = (row + y) * enabledElement.image.columns + (column + x);\n storedPixels[index++] = pixelData[spIndex];\n }\n }\n\n return storedPixels;\n});\n\n/***/ }),\n\n/***/ \"./getViewport.js\":\n/*!************************!*\\\n !*** ./getViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves the viewport for the specified enabled element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Viewport|undefined} The Cornerstone Viewport settings for this element, if they exist. Otherwise, undefined\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var viewport = enabledElement.viewport;\n\n if (viewport === undefined) {\n return;\n } // Return a copy of the viewport\n\n\n return Object.assign({}, viewport);\n});\n\n/***/ }),\n\n/***/ \"./imageCache.js\":\n/*!***********************!*\\\n !*** ./imageCache.js ***!\n \\***********************/\n/*! exports provided: cachedImages, setMaximumSizeBytes, putImageLoadObject, getImageLoadObject, removeImageLoadObject, getCacheInfo, purgeCache, changeImageIdCacheSize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cachedImages\", function() { return cachedImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumSizeBytes\", function() { return setMaximumSizeBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"putImageLoadObject\", function() { return putImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageLoadObject\", function() { return getImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeImageLoadObject\", function() { return removeImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCacheInfo\", function() { return getCacheInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeCache\", function() { return purgeCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeImageIdCacheSize\", function() { return changeImageIdCacheSize; });\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\n * This module deals with caching images\n * @module ImageCache\n */\n\nvar maximumSizeInBytes = 1024 * 1024 * 1024; // 1 GB\n\nvar cacheSizeInBytes = 0; // Dictionary of imageId to cachedImage objects\n\nvar imageCacheDict = {}; // Array of cachedImage objects\n\nvar cachedImages = [];\n/** Sets the maximum size of cache and purges cache contents if necessary.\n *\n * @param {number} numBytes The maximun size that the cache should occupy.\n * @returns {void}\n */\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_MAXIMUM_SIZE_CHANGED);\n purgeCacheIfNecessary();\n}\n/**\n * Purges the cache if size exceeds maximum\n * @returns {void}\n */\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary)\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n var imageId = lastCachedImage.imageId;\n removeImageLoadObject(imageId);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_PROMISE_REMOVED, {\n imageId: imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_FULL, cacheInfo);\n}\n/**\n * Puts a new image loader into the cache\n *\n * @param {string} imageId ImageId of the image loader\n * @param {Object} imageLoadObject The object that is loading or loaded the image\n * @returns {void}\n */\n\n\nfunction putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n\n if (imageCacheDict.hasOwnProperty(imageId) === true) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n\n if (imageLoadObject.cancelFn && typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancelFn must be a function');\n }\n\n var cachedImage = {\n loaded: false,\n imageId: imageId,\n sharedCacheKey: undefined,\n // The sharedCacheKey for this imageId. undefined by default\n imageLoadObject: imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0\n };\n imageCacheDict[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n imageLoadObject.promise.then(function (image) {\n if (cachedImages.indexOf(cachedImage) === -1) {\n // If the image has been purged before being loaded, we stop here.\n return;\n }\n\n cachedImage.loaded = true;\n cachedImage.image = image;\n\n if (image.sizeInBytes === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n\n cachedImage.sizeInBytes = image.sizeInBytes;\n cacheSizeInBytes += cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'addImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n purgeCacheIfNecessary();\n }, function () {\n var cachedImage = imageCacheDict[imageId];\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n delete imageCacheDict[imageId];\n });\n}\n/**\n * Retuns the object that is loading a given imageId\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n}\n/**\n * Removes the image loader associated with a given Id from the cache\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction removeImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'deleteImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n decache(cachedImage.imageLoadObject);\n delete imageCacheDict[imageId];\n}\n/**\n * @typedef {Object} CacheInformation\n * @property {number} maximumSizeInBytes The maximum size of the cache in bytes\n * @property {number} cacheSizeInBytes Currently occupied space in the cache in bytes\n * @property {number} numberOfImagesCached Number of ImageLoaders in the cache\n * @returns {void}\n */\n\n/**\n * Gets the current state of the cache\n * @returns {void}\n */\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n} // This method should only be called by `removeImageLoadObject` because it's\n// The one that knows how to deal with shared cache keys and cache size.\n\n/**\n * INTERNAL: Removes and ImageLoader from the cache\n *\n * @param {Object} imageLoadObject Image Loader Object to remove\n * @returns {void}\n */\n\nfunction decache(imageLoadObject) {\n imageLoadObject.promise.then(function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n }, function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n });\n}\n/**\n * Removes all images from cache\n * @returns {void}\n */\n\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages[0];\n removeImageLoadObject(removedCachedImage.imageId);\n }\n}\n/**\n * Updates the space than an image is using in the cache\n *\n * @param {string} imageId Image ID\n * @param {number} newCacheSize New image size\n * @returns {void}\n */\n\nfunction changeImageIdCacheSize(imageId, newCacheSize) {\n var cacheEntry = imageCacheDict[imageId];\n\n if (cacheEntry) {\n cacheEntry.imageLoadObject.promise.then(function (image) {\n var cacheSizeDifference = newCacheSize - image.sizeInBytes;\n image.sizeInBytes = newCacheSize;\n cacheEntry.sizeInBytes = newCacheSize;\n cacheSizeInBytes += cacheSizeDifference;\n var eventDetails = {\n action: 'changeImageSize',\n image: image\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n });\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n imageCache: imageCacheDict,\n cachedImages: cachedImages,\n setMaximumSizeBytes: setMaximumSizeBytes,\n putImageLoadObject: putImageLoadObject,\n getImageLoadObject: getImageLoadObject,\n removeImageLoadObject: removeImageLoadObject,\n getCacheInfo: getCacheInfo,\n purgeCache: purgeCache,\n changeImageIdCacheSize: changeImageIdCacheSize\n});\n\n/***/ }),\n\n/***/ \"./imageLoader.js\":\n/*!************************!*\\\n !*** ./imageLoader.js ***!\n \\************************/\n/*! exports provided: loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return loadImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return loadAndCacheImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return registerImageLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return registerUnknownImageLoader; });\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n\n/**\r\n * This module deals with ImageLoaders, loading images and caching images\r\n * @module ImageLoader\r\n */\n\nvar imageLoaders = {};\nvar unknownImageLoader;\n/**\r\n * Load an image using a registered Cornerstone Image Loader.\r\n *\r\n * The image loader that is used will be\r\n * determined by the image loader scheme matching against the imageId.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\nfunction loadImageFromImageLoader(imageId, options) {\n var colonIndex = imageId.indexOf(':');\n var scheme = imageId.substring(0, colonIndex);\n var loader = imageLoaders[scheme];\n\n if (loader === undefined || loader === null) {\n if (unknownImageLoader !== undefined) {\n return unknownImageLoader(imageId);\n }\n\n throw new Error('loadImageFromImageLoader: no image loader for imageId');\n }\n\n var imageLoadObject = loader(imageId, options); // Broadcast an image loaded event once the image is loaded\n\n imageLoadObject.promise.then(function (image) {\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOADED, {\n image: image\n });\n }, function (error) {\n var errorObject = {\n imageId: imageId,\n error: error\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOAD_FAILED, errorObject);\n });\n return imageLoadObject;\n}\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The loaded image is not stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\n\nfunction loadImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n return loadImageFromImageLoader(imageId, options).promise;\n} //\n\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The image is stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} Image Loader Object\r\n * @memberof ImageLoader\r\n */\n\nfunction loadAndCacheImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadAndCacheImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n imageLoadObject = loadImageFromImageLoader(imageId, options);\n Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"putImageLoadObject\"])(imageId, imageLoadObject);\n return imageLoadObject.promise;\n}\n/**\r\n * Registers an imageLoader plugin with cornerstone for the specified scheme\r\n *\r\n * @param {String} scheme The scheme to use for this image loader (e.g. 'dicomweb', 'wadouri', 'http')\r\n * @param {Function} imageLoader A Cornerstone Image Loader function\r\n * @returns {void}\r\n * @memberof ImageLoader\r\n */\n\nfunction registerImageLoader(scheme, imageLoader) {\n imageLoaders[scheme] = imageLoader;\n}\n/**\r\n * Registers a new unknownImageLoader and returns the previous one\r\n *\r\n * @param {Function} imageLoader A Cornerstone Image Loader\r\n *\r\n * @returns {Function|Undefined} The previous Unknown Image Loader\r\n * @memberof ImageLoader\r\n */\n\nfunction registerUnknownImageLoader(imageLoader) {\n var oldImageLoader = unknownImageLoader;\n unknownImageLoader = imageLoader;\n return oldImageLoader;\n}\n\n/***/ }),\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawImage\", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ \"./internal/generateLut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateLut\", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewport\", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageData\", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedColorPixelDataToCanvasImageData\", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataColorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataPseudocolorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ \"./internal/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internal\", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"]; });\n\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"]; });\n\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"]; });\n\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"]; });\n\n/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"]; });\n\n/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToCanvas\", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ \"./canvasToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canvasToPixel\", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ \"./disable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ \"./displayImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"displayImage\", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ \"./draw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ \"./drawInvalidated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawInvalidated\", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ \"./enable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"enable\", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ \"./enabledElementData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"]; });\n\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"]; });\n\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"]; });\n\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitToWindow\", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ \"./getDefaultViewportForImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewportForImage\", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ \"./getImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImage\", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ \"./getPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getPixels\", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStoredPixels\", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ \"./getViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewport\", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ \"./imageLoader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"]; });\n\n/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ \"./invalidate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidate\", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ \"./invalidateImageId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidateImageId\", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ \"./pageToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageToPixel\", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ \"./pixelToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelToCanvas\", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ \"./reset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setToPixelCoordinateSystem\", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ \"./setViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setViewport\", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"updateImage\", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelDataToFalseColorData\", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ \"./rendering/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rendering\", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"imageCache\", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ \"./metaData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"metaData\", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ \"./webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"webGL\", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colors\", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ \"./falseColorMapping.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"]; });\n\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"]; });\n\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerEvent\", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n// Internal (some of these are from old internal/legacy expose)\n\n\n\n\n\n\n\n\n // Rendering\n\n\n\n\n\n\n\n/**\n * @module PixelCoordinateSystem\n */\n\n/**\n * @module ViewportSettings\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar cornerstone = {\n drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"],\n renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"],\n renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"],\n renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"],\n renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"],\n renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"],\n removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"],\n getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"],\n addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"],\n getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"],\n getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"],\n addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"],\n removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"],\n getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"],\n getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"],\n getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"],\n setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"],\n getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"],\n purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"],\n setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"],\n fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"],\n loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"],\n registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"],\n registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"],\n invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"],\n convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"],\n restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"],\n EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n events: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"],\n triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cornerstone);\n\n/***/ }),\n\n/***/ \"./internal/calculateTransform.js\":\n/*!****************************************!*\\\n !*** ./internal/calculateTransform.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n/**\n * Calculate the transform for a Cornerstone enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\n * @param {Number} [scale] The viewport scale\n * @return {Transform} The current transform\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, scale) {\n var transform = new _transform_js__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"](); // Move to center of canvas\n\n transform.translate(enabledElement.canvas.width / 2, enabledElement.canvas.height / 2); // Apply the rotation before scaling for non square pixels\n\n var angle = enabledElement.viewport.rotation;\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n } // Apply the scale\n\n\n var widthScale = enabledElement.viewport.scale;\n var heightScale = enabledElement.viewport.scale;\n var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1);\n var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1);\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {\n if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) {\n widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing;\n } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) {\n heightScale *= enabledElement.image.rowPixelSpacing / enabledElement.image.columnPixelSpacing;\n }\n } else {\n // These should be good for \"TRUE SIZE\" and \"MAGNIFY\"\n widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing;\n heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing;\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') {\n // Fit TRUE IMAGE image (width/height) to window\n var verticalScale = enabledElement.canvas.height / (height * heightScale);\n var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale\n\n widthScale = heightScale = Math.min(horizontalScale, verticalScale);\n\n if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) {\n widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing;\n } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) {\n heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing;\n }\n }\n }\n\n transform.scale(widthScale, heightScale); // Unrotate to so we can translate unrotated\n\n if (angle !== 0) {\n transform.rotate(-angle * Math.PI / 180);\n } // Apply the pan offset\n\n\n transform.translate(enabledElement.viewport.translation.x, enabledElement.viewport.translation.y); // Rotate again so we can apply general scale\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n }\n\n if (scale !== undefined) {\n // Apply the font scale\n transform.scale(scale, scale);\n } // Apply Flip if required\n\n\n if (enabledElement.viewport.hflip) {\n transform.scale(-1, 1);\n }\n\n if (enabledElement.viewport.vflip) {\n transform.scale(1, -1);\n } // Move back from center of image\n\n\n transform.translate(-width / 2, -height / 2);\n return transform;\n});\n\n/***/ }),\n\n/***/ \"./internal/computeAutoVoi.js\":\n/*!************************************!*\\\n !*** ./internal/computeAutoVoi.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return computeAutoVoi; });\n/**\n * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.\n *\n * @param {Viewport} viewport - Object containing the viewport properties\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @returns {void}\n * @memberof Internal\n */\nfunction computeAutoVoi(viewport, image) {\n if (hasVoi(viewport)) {\n return;\n }\n\n var maxVoi = image.maxPixelValue * image.slope + image.intercept;\n var minVoi = image.minPixelValue * image.slope + image.intercept;\n var ww = maxVoi - minVoi;\n var wc = (maxVoi + minVoi) / 2;\n\n if (viewport.voi === undefined) {\n viewport.voi = {\n windowWidth: ww,\n windowCenter: wc\n };\n } else {\n viewport.voi.windowWidth = ww;\n viewport.voi.windowCenter = wc;\n }\n}\n/**\n * Check if viewport has voi LUT data\n * @param {any} viewport The viewport to check for voi LUT data\n * @returns {Boolean} true viewport has LUT data (Window Width/Window Center or voiLUT). Otherwise, false.\n * @memberof Internal\n */\n\nfunction hasVoi(viewport) {\n var hasLut = viewport.voiLUT && viewport.voiLUT.lut && viewport.voiLUT.lut.length > 0;\n return hasLut || viewport.voi.windowWidth !== undefined && viewport.voi.windowCenter !== undefined;\n}\n\n/***/ }),\n\n/***/ \"./internal/drawCompositeImage.js\":\n/*!****************************************!*\\\n !*** ./internal/drawCompositeImage.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layers.js */ \"./layers.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n\n\n\n\n\n\n\nfunction getViewportRatio(baseLayer, targetLayer) {\n if (!baseLayer.syncProps) {\n updateLayerSyncProps(baseLayer);\n }\n\n if (!targetLayer.syncProps) {\n updateLayerSyncProps(targetLayer);\n }\n\n return targetLayer.syncProps.originalScale / baseLayer.syncProps.originalScale;\n}\n\nfunction updateLayerSyncProps(layer) {\n var syncProps = layer.syncProps || {}; // This is used to keep each of the layers' viewports in sync with the active layer\n\n syncProps.originalScale = layer.viewport.scale;\n layer.syncProps = syncProps;\n} // Sync all viewports based on active layer's viewport\n\n\nfunction syncViewports(layers, activeLayer) {\n // If we intend to keep the viewport's scale, translation and rotation in sync,\n // loop through the layers\n layers.forEach(function (layer) {\n // Don't do anything to the active layer\n // Don't do anything if this layer has no viewport\n if (layer === activeLayer || !layer.viewport || !activeLayer.viewport) {\n return;\n }\n\n if (!layer.syncProps) {\n updateLayerSyncProps(layer);\n }\n\n var viewportRatio = getViewportRatio(activeLayer, layer); // Update the layer's translation and scale to keep them in sync with the first image\n // based on the ratios between the images\n\n layer.viewport.scale = activeLayer.viewport.scale * viewportRatio;\n layer.viewport.rotation = activeLayer.viewport.rotation;\n layer.viewport.translation = {\n x: activeLayer.viewport.translation.x / viewportRatio,\n y: activeLayer.viewport.translation.y / viewportRatio\n };\n layer.viewport.hflip = activeLayer.viewport.hflip;\n layer.viewport.vflip = activeLayer.viewport.vflip;\n });\n}\n/**\n * Internal function to render all layers for a Cornerstone enabled element\n *\n * @param {CanvasRenderingContext2D} context Canvas context to draw upon\n * @param {EnabledElementLayer[]} layers The array of all layers for this enabled element\n * @param {Boolean} invalidated A boolean whether or not this image has been invalidated and must be redrawn\n * @returns {void}\n * @memberof Internal\n */\n\n\nfunction renderLayers(context, layers, invalidated) {\n // Loop through each layer and draw it to the canvas\n layers.forEach(function (layer, index) {\n if (!layer.image) {\n return;\n }\n\n context.save(); // Set the layer's canvas to the pixel coordinate system\n\n layer.canvas = context.canvas;\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(layer, context); // Render into the layer's canvas\n\n var colormap = layer.viewport.colormap || layer.options.colormap;\n var labelmap = layer.viewport.labelmap;\n var isInvalid = layer.invalid || invalidated;\n\n if (colormap && colormap !== '' && labelmap === true) {\n Object(_rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"addLabelMapLayer\"])(layer, isInvalid);\n } else if (colormap && colormap !== '') {\n Object(_rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"addPseudoColorLayer\"])(layer, isInvalid);\n } else if (layer.image.color === true) {\n Object(_rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"addColorLayer\"])(layer, isInvalid);\n } else {\n // If this is the base layer, use the alpha channel for rendering of the grayscale image\n var useAlphaChannel = index === 0;\n Object(_rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"addGrayscaleLayer\"])(layer, isInvalid, useAlphaChannel);\n } // Apply any global opacity settings that have been defined for this layer\n\n\n if (layer.options && layer.options.opacity) {\n context.globalAlpha = layer.options.opacity;\n } else {\n context.globalAlpha = 1;\n }\n\n if (layer.options && layer.options.fillStyle) {\n context.fillStyle = layer.options.fillStyle;\n } // Set the pixelReplication property before drawing from the layer into the\n // composite canvas\n\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas\n\n var sx = layer.viewport.displayedArea.tlhc.x - 1;\n var sy = layer.viewport.displayedArea.tlhc.y - 1;\n var width = layer.viewport.displayedArea.brhc.x - sx;\n var height = layer.viewport.displayedArea.brhc.y - sy;\n context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height);\n context.restore();\n layer.invalid = false;\n });\n}\n/**\n * Internal API function to draw a composite image to a given enabled element\n *\n * @param {EnabledElement} enabledElement An enabled element to draw into\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var element = enabledElement.element;\n var allLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getLayers\"])(element);\n var activeLayer = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getActiveLayer\"])(element);\n var visibleLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getVisibleLayers\"])(element);\n var resynced = !enabledElement.lastSyncViewportsState && enabledElement.syncViewports; // This state will help us to determine if the user has re-synced the\n // layers allowing us to make a new copy of the viewports\n\n enabledElement.lastSyncViewportsState = enabledElement.syncViewports; // Stores a copy of all viewports if the user has just synced them then we can use the\n // copies to calculate anything later (ratio, translation offset, rotation offset, etc)\n\n if (resynced) {\n allLayers.forEach(function (layer) {\n if (layer.viewport) {\n updateLayerSyncProps(layer);\n }\n });\n } // Sync all viewports in case it's activated\n\n\n if (enabledElement.syncViewports === true) {\n syncViewports(visibleLayers, activeLayer);\n } // Get the enabled element's canvas so we can draw to it\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Render all visible layers\n\n renderLayers(context, visibleLayers, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImage.js\":\n/*!*******************************!*\\\n !*** ./internal/drawImage.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Internal API function to draw an image to a given enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} [invalidated = false] - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof Internal\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n enabledElement.needsRedraw = true;\n\n if (invalidated) {\n enabledElement.invalid = true;\n }\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImageSync.js\":\n/*!***********************************!*\\\n !*** ./internal/drawImageSync.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n/* harmony import */ var _drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawCompositeImage.js */ \"./internal/drawCompositeImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n\n\n\n\n\n\n\n\n/**\r\n * Draw an image to a given enabled element synchronously\r\n *\r\n * @param {EnabledElement} enabledElement An enabled element to draw into\r\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\r\n * @returns {void}\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var image = enabledElement.image;\n var element = enabledElement.element;\n var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn\n\n if (!enabledElement.canvas || !(enabledElement.image || layers.length)) {\n return;\n } // Start measuring the time needed to draw the image/layers\n\n\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n image.stats = {\n lastGetPixelDataTime: -1.0,\n lastStoredPixelDataToCanvasImageDataTime: -1.0,\n lastPutImageDataTime: -1.0,\n lastRenderTime: -1.0,\n lastLutGenerateTime: -1.0\n };\n\n if (layers && layers.length) {\n Object(_drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n } else if (image) {\n var render = image.render;\n\n if (!render) {\n if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '' && enabledElement.image.labelmap === true) {\n render = _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__[\"renderLabelMapImage\"];\n } else if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '') {\n render = _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderPseudoColorImage\"];\n } else if (image.color) {\n render = _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderColorImage\"];\n } else {\n render = _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderGrayscaleImage\"];\n }\n }\n\n render(enabledElement, invalidated);\n } // Calculate how long it took to draw the image/layers\n\n\n var renderTimeInMs = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var eventData = {\n viewport: enabledElement.viewport,\n element: element,\n image: image,\n enabledElement: enabledElement,\n canvasContext: enabledElement.canvas.getContext('2d'),\n renderTimeInMs: renderTimeInMs\n };\n image.stats.lastRenderTime = renderTimeInMs;\n enabledElement.invalid = false;\n enabledElement.needsRedraw = false;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].IMAGE_RENDERED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./internal/generateColorLut.js\":\n/*!**************************************!*\\\n !*** ./internal/generateColorLut.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n/**\n * Creates a LUT used while rendering to convert stored pixel values to\n * display pixels\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Number} windowWidth The Window Width\n * @param {Number} windowCenter The Window Center\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\n *\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(storedValue);\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(_storedValue);\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/generateLut.js\":\n/*!*********************************!*\\\n !*** ./internal/generateLut.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n\n/**\r\n * Creates a LUT used while rendering to convert stored pixel values to\r\n * display pixels\r\n *\r\n * @param {Image} image A Cornerstone Image Object\r\n * @param {Number} windowWidth The Window Width\r\n * @param {Number} windowCenter The Window Center\r\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\r\n * @param {Array} [modalityLUT] A modality Lookup Table\r\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\r\n *\r\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, modalityLUT, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image.slope, image.intercept, modalityLUT);\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(mlutfn(_storedValue));\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/getCanvas.js\":\n/*!*******************************!*\\\n !*** ./internal/getCanvas.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getCanvas; });\nvar CANVAS_CSS_CLASS = 'cornerstone-canvas';\n/**\n * Create a canvas and append it to the element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\nfunction createCanvas(element) {\n var canvas = document.createElement('canvas');\n canvas.style.display = 'block';\n canvas.classList.add(CANVAS_CSS_CLASS);\n element.appendChild(canvas);\n return canvas;\n}\n/**\n * Create a canvas or returns the one that already exists for a given element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\n\nfunction getCanvas(element) {\n var selector = \"canvas.\".concat(CANVAS_CSS_CLASS);\n return element.querySelector(selector) || createCanvas(element);\n}\n\n/***/ }),\n\n/***/ \"./internal/getDefaultViewport.js\":\n/*!****************************************!*\\\n !*** ./internal/getDefaultViewport.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n/**\n * Creates a new viewport object containing default values\n *\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\nfunction createViewport() {\n var displayedArea = createDefaultDisplayedArea();\n return {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: undefined,\n windowCenter: undefined\n },\n invert: false,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: undefined,\n voiLUT: undefined,\n colormap: undefined,\n labelmap: false,\n displayedArea: displayedArea\n };\n}\n/**\n * Creates the default displayed area.\n * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space.\n *\n * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object\n * @memberof Internal\n */\n\n\nfunction createDefaultDisplayedArea() {\n return {\n // Top Left Hand Corner\n tlhc: {\n x: 1,\n y: 1\n },\n // Bottom Right Hand Corner\n brhc: {\n x: 1,\n y: 1\n },\n rowPixelSpacing: 1,\n columnPixelSpacing: 1,\n presentationSizeMode: 'NONE'\n };\n}\n/**\n * Creates a new viewport object containing default values for the image and canvas\n *\n * @param {HTMLElement} canvas A Canvas DOM element\n * @param {Image} image A Cornerstone Image Object\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n if (canvas === undefined) {\n throw new Error('getDefaultViewport: parameter canvas must not be undefined');\n }\n\n if (image === undefined) {\n return createViewport();\n } // Fit image to window\n\n\n var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(canvas, image, 0).scaleFactor;\n return {\n scale: scale,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter\n },\n invert: image.invert,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: image.modalityLUT,\n voiLUT: image.voiLUT,\n colormap: image.colormap,\n labelmap: Boolean(image.labelmap),\n displayedArea: {\n tlhc: {\n x: 1,\n y: 1\n },\n brhc: {\n x: image.columns,\n y: image.rows\n },\n rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing,\n columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing,\n presentationSizeMode: 'NONE'\n }\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageFitScale.js\":\n/*!**************************************!*\\\n !*** ./internal/getImageFitScale.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n/* harmony import */ var _getImageSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageSize.js */ \"./internal/getImageSize.js\");\n\n\n/**\n * Calculates the horizontal, vertical and minimum scale factor for an image\n @param {{width, height}} windowSize The window size where the image is displayed. This can be any HTML element or structure with a width, height fields (e.g. canvas).\n * @param {any} image The cornerstone image object\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{horizontalScale, verticalScale, scaleFactor}} The calculated horizontal, vertical and minimum scale factor\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowSize, image) {\n var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(windowSize, 'getImageScale: parameter windowSize must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageScale: parameter image must not be undefined');\n var imageSize = Object(_getImageSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, rotation);\n var rowPixelSpacing = image.rowPixelSpacing || 1;\n var columnPixelSpacing = image.columnPixelSpacing || 1;\n var verticalRatio = 1;\n var horizontalRatio = 1;\n\n if (rowPixelSpacing < columnPixelSpacing) {\n horizontalRatio = columnPixelSpacing / rowPixelSpacing;\n } else {\n // even if they are equal we want to calculate this ratio (the ration might be 0.5)\n verticalRatio = rowPixelSpacing / columnPixelSpacing;\n }\n\n var verticalScale = windowSize.height / imageSize.height / verticalRatio;\n var horizontalScale = windowSize.width / imageSize.width / horizontalRatio; // Fit image to window\n\n return {\n verticalScale: verticalScale,\n horizontalScale: horizontalScale,\n scaleFactor: Math.min(horizontalScale, verticalScale)\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageSize.js\":\n/*!**********************************!*\\\n !*** ./internal/getImageSize.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n\n/**\n * Check if the angle is rotated\n * @param {Number} rotation the rotation angle\n * @returns {Boolean} true if the angle is rotated; Otherwise, false.\n * @memberof Internal\n */\n\nfunction isRotated(rotation) {\n return !(rotation === null || rotation === undefined || rotation === 0 || rotation === 180);\n}\n/**\n * Retrieves the current image dimensions given an enabled element\n *\n * @param {any} image The Cornerstone image.\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{width:Number, height:Number}} The Image dimensions\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image) {\n var rotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageSize: parameter image must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.width, 'getImageSize: parameter image must have width');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.height, 'getImageSize: parameter image must have height');\n\n if (isRotated(rotation)) {\n return {\n height: image.width,\n width: image.height\n };\n }\n\n return {\n width: image.width,\n height: image.height\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getModalityLUT.js\":\n/*!************************************!*\\\n !*** ./internal/getModalityLUT.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generates a linear modality transformation function\n *\n * See DICOM PS3.3 C.11.1 Modality LUT Module\n *\n * http://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.11.html\n *\n * @param {Number} slope m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} intercept The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n\n Output units = m*SV + b.\n * @return {function(*): *} A linear modality LUT function. Given a stored pixel it returns the modality pixel value\n * @memberof Internal\n */\nfunction generateLinearModalityLUT(slope, intercept) {\n return function (storedPixelValue) {\n return storedPixelValue * slope + intercept;\n };\n}\n\nfunction generateNonLinearModalityLUT(modalityLUT) {\n var minValue = modalityLUT.lut[0];\n var maxValue = modalityLUT.lut[modalityLUT.lut.length - 1];\n var maxValueMapped = modalityLUT.firstValueMapped + modalityLUT.lut.length;\n return function (storedPixelValue) {\n if (storedPixelValue < modalityLUT.firstValueMapped) {\n return minValue;\n } else if (storedPixelValue >= maxValueMapped) {\n return maxValue;\n }\n\n return modalityLUT.lut[storedPixelValue];\n };\n}\n/**\n * Get the appropriate Modality LUT for the current situation.\n *\n * @param {Number} [slope] m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} [intercept] The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n * @param {Function} [modalityLUT] A modality LUT function. Given a stored pixel it returns the modality pixel value.\n *\n * @return {function(*): *} A modality LUT function. Given a stored pixel it returns the modality pixel value.\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (slope, intercept, modalityLUT) {\n if (modalityLUT) {\n return generateNonLinearModalityLUT(modalityLUT);\n }\n\n return generateLinearModalityLUT(slope, intercept);\n});\n\n/***/ }),\n\n/***/ \"./internal/getTransform.js\":\n/*!**********************************!*\\\n !*** ./internal/getTransform.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n // For now we will calculate it every time it is requested.\n // In the future, we may want to cache it in the enabled element to speed things up.\n return Object(_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./internal/getVOILut.js\":\n/*!*******************************!*\\\n !*** ./internal/getVOILut.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint no-bitwise: 0 */\n\n/**\n * Volume of Interest Lookup Table Function\n *\n * @typedef {Function} VOILUTFunction\n *\n * @param {Number} modalityLutValue\n * @returns {Number} transformed value\n * @memberof Objects\n */\n\n/**\n * @module: VOILUT\n */\n\n/**\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\nfunction generateLinearVOILUT(windowWidth, windowCenter) {\n return function (modalityLutValue) {\n return ((modalityLutValue - windowCenter) / windowWidth + 0.5) * 255.0;\n };\n}\n/**\n * Generate a non-linear volume of interest lookup table\n *\n * @param {LUT} voiLUT Volume of Interest Lookup Table Object\n *\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\nfunction generateNonLinearVOILUT(voiLUT) {\n // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa!\n var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length;\n var shift = bitsPerEntry - 8;\n var minValue = voiLUT.lut[0] >> shift;\n var maxValue = voiLUT.lut[voiLUT.lut.length - 1] >> shift;\n var maxValueMapped = voiLUT.firstValueMapped + voiLUT.lut.length - 1;\n return function (modalityLutValue) {\n if (modalityLutValue < voiLUT.firstValueMapped) {\n return minValue;\n } else if (modalityLutValue >= maxValueMapped) {\n return maxValue;\n }\n\n return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift;\n };\n}\n/**\n * Retrieve a VOI LUT mapping function given the current windowing settings\n * and the VOI LUT for the image\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object\n *\n * @return {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowWidth, windowCenter, voiLUT) {\n if (voiLUT) {\n return generateNonLinearVOILUT(voiLUT);\n }\n\n return generateLinearVOILUT(windowWidth, windowCenter);\n});\n\n/***/ }),\n\n/***/ \"./internal/guid.js\":\n/*!**************************!*\\\n !*** ./internal/guid.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n/**\n * Generate a unique identifier\n *\n * @return {string} A unique identifier\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return \"\".concat(s4() + s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4()).concat(s4()).concat(s4());\n});\n\n/***/ }),\n\n/***/ \"./internal/index.js\":\n/*!***************************!*\\\n !*** ./internal/index.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ \"./internal/drawImage.js\");\n/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ \"./internal/generateLut.js\");\n/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ \"./internal/getTransform.js\");\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__[\"Transform\"]\n});\n\n/***/ }),\n\n/***/ \"./internal/now.js\":\n/*!*************************!*\\\n !*** ./internal/now.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @module Polyfills\n */\n\n/**\n * Use the performance.now() method if possible, and if not, use Date.now()\n *\n * @return {number} Time elapsed since the time origin\n * @memberof Polyfills\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n if (window.performance) {\n return performance.now();\n }\n\n return Date.now();\n});\n\n/***/ }),\n\n/***/ \"./internal/requestAnimationFrame.js\":\n/*!*******************************************!*\\\n !*** ./internal/requestAnimationFrame.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction requestFrame(callback) {\n window.setTimeout(callback, 1000 / 60);\n}\n/**\n * Polyfills requestAnimationFrame for older browsers.\n *\n * @param {Function} callback A parameter specifying a function to call when it's time to update your animation for the next repaint. The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame starts to fire callbacks.\n *\n * @return {Number} A long integer value, the request id, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.\n * @memberof Polyfills\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (callback) {\n return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback);\n});\n\n/***/ }),\n\n/***/ \"./internal/storedColorPixelDataToCanvasImageData.js\":\n/*!***********************************************************!*\\\n !*** ./internal/storedColorPixelDataToCanvasImageData.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored color pixel values to display pixel values using a LUT.\n *\n * Note: Skips alpha value for any input image pixel data.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex] + -minPixelValue]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex]]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageData.js\":\n/*!******************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageData.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT. This is the most performance sensitive code in cornerstone and\n * we use a special trick to make this go as fast as possible. Specifically we\n * use the alpha channel only to control the luminance rather than the red, green and\n * blue channels which makes it over 3x faster. The canvasImageDataData buffer needs\n * to be previously filled with white pixels.\n *\n * NOTE: Attribution would be appreciated if you use this technique!\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 3;\n var storedPixelDataIndex = 0; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\":\n/*!**************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataColorLUT.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataColorLUT(image, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataColorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\":\n/*!********************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} grayscaleLut Lookup table array\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataPseudocolorLUT(image, grayscaleLut, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var grayscale;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++]];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataPseudocolorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataRGBA.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var pixelValue; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedRGBAPixelDataToCanvasImageData.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedRGBAPixelDataToCanvasImageData.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored RGBA color pixel values to display pixel values using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/transform.js\":\n/*!*******************************!*\\\n !*** ./internal/transform.js ***!\n \\*******************************/\n/*! exports provided: Transform */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// By Simon Sarris\n// Www.simonsarris.com\n// Sarris@acm.org\n//\n// Free to use and distribute at will\n// So long as you are nice to people, etc\n// Simple class for keeping track of the current transformation matrix\n// For instance:\n// Var t = new Transform();\n// T.rotate(5);\n// Var m = t.m;\n// Ctx.setTransform(m[0], m[1], m[2], m[3], m[4], m[5]);\n// Is equivalent to:\n// Ctx.rotate(5);\n// But now you can retrieve it :)\n// Remember that this does not account for any CSS transforms applied to the canvas\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform() {\n _classCallCheck(this, Transform);\n\n this.reset();\n }\n\n _createClass(Transform, [{\n key: \"reset\",\n value: function reset() {\n this.m = [1, 0, 0, 1, 0, 0];\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var transform = new Transform();\n transform.m[0] = this.m[0];\n transform.m[1] = this.m[1];\n transform.m[2] = this.m[2];\n transform.m[3] = this.m[3];\n transform.m[4] = this.m[4];\n transform.m[5] = this.m[5];\n return transform;\n }\n }, {\n key: \"multiply\",\n value: function multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n }\n }, {\n key: \"invert\",\n value: function invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n }\n }, {\n key: \"rotate\",\n value: function rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n }\n }, {\n key: \"translate\",\n value: function translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(px, py) {\n var x = px;\n var y = py;\n px = x * this.m[0] + y * this.m[2] + this.m[4];\n py = x * this.m[1] + y * this.m[3] + this.m[5];\n return {\n x: px,\n y: py\n };\n }\n }]);\n\n return Transform;\n}();\n\n/***/ }),\n\n/***/ \"./internal/tryEnableWebgl.js\":\n/*!************************************!*\\\n !*** ./internal/tryEnableWebgl.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n\n/**\n * Checks if webGL is supported and initializes the rendering engine.\n * @param {any} options Options to check if webgl rendering is requested (e.g. enable webgl by passing {renderer: 'webgl'})\n * @returns {Boolean} true if webgl rendering has been successfully initialized. Otherwise, false.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.isWebGLAvailable()) {\n // If WebGL is available on the device, initialize the renderer\n // And return the renderCanvas from the WebGL rendering path\n _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.initRenderer();\n options.renderer = 'webgl';\n return true;\n } // If WebGL is not available on this device, we will fall back\n // To using the Canvas renderer\n\n\n console.error('WebGL not available, falling back to Canvas renderer');\n delete options.renderer;\n return false;\n});\n\n/***/ }),\n\n/***/ \"./internal/validator.js\":\n/*!*******************************!*\\\n !*** ./internal/validator.js ***!\n \\*******************************/\n/*! exports provided: validateParameterUndefined, validateParameterUndefinedOrNull */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefined\", function() { return validateParameterUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefinedOrNull\", function() { return validateParameterUndefinedOrNull; });\n/**\n * Check if the supplied parameter is undefined and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\nfunction validateParameterUndefined(checkParam, errorMsg) {\n if (checkParam === undefined) {\n throw new Error(errorMsg);\n }\n}\n/**\n * Check if the supplied parameter is undefined or null and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\n\nfunction validateParameterUndefinedOrNull(checkParam, errorMsg) {\n if (checkParam === undefined || checkParam === null) {\n throw new Error(errorMsg);\n }\n}\n\n/***/ }),\n\n/***/ \"./invalidate.js\":\n/*!***********************!*\\\n !*** ./invalidate.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Sets the invalid flag on the enabled element and fire an event\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.invalid = true;\n enabledElement.needsRedraw = true;\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].INVALIDATED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./invalidateImageId.js\":\n/*!******************************!*\\\n !*** ./invalidateImageId.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the all enabled elements\n * displaying the specified imageId\n *\n * @param {string} imageId The imageId of the Cornerstone Image Object to redraw\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (imageId) {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElementsByImageId\"])(imageId);\n enabledElements.forEach(function (enabledElement) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, true);\n });\n});\n\n/***/ }),\n\n/***/ \"./layers.js\":\n/*!*******************!*\\\n !*** ./layers.js ***!\n \\*******************/\n/*! exports provided: rescaleImage, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, setLayerImage, getActiveLayer, purgeLayers */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rescaleImage\", function() { return rescaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return addLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return removeLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return getLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return getLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return getVisibleLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return setActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return setLayerImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return getActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return purgeLayers; });\n/* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ \"./internal/guid.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\n * @module EnabledElementLayers\n */\n\n/**\n * Helper function to trigger an event on a Cornerstone element with\n * a specific layerId\n *\n * @param {String} eventName The event name (e.g. CornerstoneLayerAdded)\n * @param {EnabledElement} enabledElement The Cornerstone enabled element\n * @param {String} layerId The layer's unique identifier\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction triggerEventForLayer(eventName, enabledElement, layerId) {\n var element = enabledElement.element;\n var eventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n enabledElement: enabledElement,\n layerId: layerId\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(element, eventName, eventData);\n}\n/**\n * Rescale the target layer to the base layer based on the\n * relative size of each image and their pixel dimensions.\n *\n * This function will update the Viewport parameters of the\n * target layer to a new scale.\n *\n * @param {EnabledElementLayer} baseLayer The base layer\n * @param {EnabledElementLayer} targetLayer The target layer to rescale\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\n\nfunction rescaleImage(baseLayer, targetLayer) {\n if (baseLayer.layerId === targetLayer.layerId) {\n throw new Error('rescaleImage: both arguments represent the same layer');\n }\n\n var baseImage = baseLayer.image;\n var targetImage = targetLayer.image; // Return if these images don't have an imageId (e.g. for dynamic images)\n\n if (!baseImage.imageId || !targetImage.imageId) {\n return;\n } // Column pixel spacing need to be considered when calculating the\n // ratio between the layer added and base layer images\n\n\n var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width);\n var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative;\n targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio;\n}\n/**\n * Add a layer to a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image object to add as a new layer\n * @param {Object} options Options for the layer\n *\n * @returns {String} layerId The new layer's unique identifier\n * @memberof EnabledElementLayers\n */\n\nfunction addLayer(element, image, options) {\n var layerId = Object(_internal_guid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var viewport;\n\n if (image) {\n viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (options && options.viewport) {\n viewport = Object.assign(viewport, options.viewport);\n }\n } // Set syncViewports to true by default when a new layer is added\n\n\n if (enabledElement.syncViewports !== false) {\n enabledElement.syncViewports = true;\n }\n\n var newLayer = {\n image: image,\n layerId: layerId,\n viewport: viewport,\n options: options || {},\n renderingTools: {}\n }; // Rescale the new layer based on the base layer to make sure\n // they will have a proportional size (pixel spacing)\n\n if (layers.length && image) {\n rescaleImage(layers[0], newLayer);\n }\n\n layers.push(newLayer);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added\n\n if (layers.length === 1 && image) {\n setActiveLayer(element, layerId);\n }\n\n return layerId;\n}\n/**\n * Remove a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction removeLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index !== -1) {\n layers.splice(index, 1); // If the current layer is active, and we have other layers,\n // switch to the first layer that remains in the array\n\n if (layerId === enabledElement.activeLayerId && layers.length) {\n setActiveLayer(element, layers[0].layerId);\n }\n\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_REMOVED, enabledElement, layerId);\n }\n}\n/**\n * Retrieve a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @return {EnabledElementLayer} The layer\n * @memberof EnabledElementLayers\n */\n\nfunction getLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === layerId;\n });\n}\n/**\n * Retrieve all layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers;\n}\n/**\n * Retrieve all visible layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getVisibleLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.filter(function (layer) {\n return layer.options && layer.options.visible !== false && layer.options.opacity !== 0;\n });\n}\n/**\n * Set the active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setActiveLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // Stop here if this layer is already active\n\n if (enabledElement.activeLayerId === layerId) {\n return;\n }\n\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index === -1) {\n throw new Error('setActiveLayer: layer not found in layers array');\n }\n\n var layer = enabledElement.layers[index];\n\n if (!layer.image) {\n throw new Error('setActiveLayer: layer with undefined image cannot be set as active.');\n }\n\n enabledElement.activeLayerId = layerId;\n enabledElement.image = layer.image;\n enabledElement.viewport = layer.viewport;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ACTIVE_LAYER_CHANGED, enabledElement, layerId);\n}\n/**\n * Set a new image for a specific layerId\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image The image to be displayed in this layer\n * @param {String} [layerId] The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setLayerImage(element, image, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var baseLayer = enabledElement.layers[0];\n var layer;\n\n if (layerId) {\n layer = getLayer(element, layerId);\n } else {\n layer = getActiveLayer(element);\n }\n\n if (!layer) {\n throw new Error('setLayerImage: Layer not found');\n }\n\n layer.image = image;\n\n if (!image) {\n layer.viewport = undefined;\n return;\n }\n\n if (!layer.viewport) {\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (layer.options && layer.options.viewport) {\n layer.viewport = Object.assign(defaultViewport, layer.options.viewport);\n }\n\n if (baseLayer.layerId !== layerId) {\n rescaleImage(baseLayer, layer);\n }\n }\n}\n/**\n * Retrieve the currently active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @return {EnabledElementLayer} The currently active layer\n * @memberof EnabledElementLayers\n */\n\nfunction getActiveLayer(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === enabledElement.activeLayerId;\n });\n}\n/**\n * Purge the layers\r\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\r\n * @returns {void}\r\n */\n\nfunction purgeLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n enabledElement.layers = [];\n delete enabledElement.activeLayerId;\n delete enabledElement.lastSyncViewportsState;\n}\n\n/***/ }),\n\n/***/ \"./metaData.js\":\n/*!*********************!*\\\n !*** ./metaData.js ***!\n \\*********************/\n/*! exports provided: addProvider, removeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addProvider\", function() { return addProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeProvider\", function() { return removeProvider; });\n// This module defines a way to access various metadata about an imageId. This layer of abstraction exists\n// So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document)\nvar providers = [];\n/**\n * @module Metadata\n */\n\n/**\n * Adds a metadata provider with the specified priority\n * @param {Function} provider Metadata provider function\n * @param {Number} [priority=0] - 0 is default/normal, > 0 is high, < 0 is low\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction addProvider(provider) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var i; // Find the right spot to insert this provider based on priority\n\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n } // Insert the decode task at position i\n\n\n providers.splice(i, 0, {\n priority: priority,\n provider: provider\n });\n}\n/**\n * Removes the specified provider\n *\n * @param {Function} provider Metadata provider function\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction removeProvider(provider) {\n for (var i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\n/**\n * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest\n * until one responds\n *\n * @param {String} type The type of metadata requested from the metadata store\n * @param {String} imageId The Cornerstone Image Object's imageId\n *\n * @returns {*} The metadata retrieved from the metadata store\n * @memberof Metadata\n */\n\nfunction getMetaData(type, imageId) {\n // Invoke each provider in priority order until one returns something\n for (var i = 0; i < providers.length; i++) {\n var result = providers[i].provider(type, imageId);\n\n if (result !== undefined) {\n return result;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addProvider: addProvider,\n removeProvider: removeProvider,\n get: getMetaData\n});\n\n/***/ }),\n\n/***/ \"./pageToPixel.js\":\n/*!************************!*\\\n !*** ./pageToPixel.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the page coordinate system to the pixel coordinate\n * system\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {Number} pageX The x value in the page coordinate system\n * @param {Number} pageY The y value in the page coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pageX, pageY) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('image has not been loaded yet');\n } // Convert the pageX and pageY to the canvas client coordinates\n\n\n var rect = element.getBoundingClientRect();\n var clientX = pageX - rect.left - window.pageXOffset;\n var clientY = pageY - rect.top - window.pageYOffset;\n var pt = {\n x: clientX,\n y: clientY\n };\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./pixelDataToFalseColorData.js\":\n/*!**************************************!*\\\n !*** ./pixelDataToFalseColorData.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pixelDataToFalseColorData; });\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n\n/**\n * Converts the image pixel data into a false color data\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Object} lookupTable A lookup table Object\n *\n * @returns {void}\n * @deprecated This function is superseded by the ability to set the Viewport parameters\n * to include colormaps.\n */\n\nfunction pixelDataToFalseColorData(image, lookupTable) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n }\n\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = image.width * image.height;\n var origPixelData = image.origPixelData || image.getPixelData();\n var storedColorPixelData = new Uint8Array(numPixels * 4);\n var sp;\n var mapped;\n image.color = true;\n image.falseColor = true;\n image.origPixelData = origPixelData;\n\n if (lookupTable instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n lookupTable.build();\n\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n mapped = lookupTable.mapValue(sp);\n storedColorPixelData[canvasImageDataIndex++] = mapped[0];\n storedColorPixelData[canvasImageDataIndex++] = mapped[1];\n storedColorPixelData[canvasImageDataIndex++] = mapped[2];\n storedColorPixelData[canvasImageDataIndex++] = mapped[3];\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][3]; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][3]; // Alpha\n }\n }\n\n image.rgba = true;\n image.cachedLut = undefined;\n image.render = undefined;\n image.slope = 1;\n image.intercept = 0;\n image.minPixelValue = 0;\n image.maxPixelValue = 255;\n image.windowWidth = 255;\n image.windowCenter = 128;\n\n image.getPixelData = function () {\n return storedColorPixelData;\n };\n}\n\n/***/ }),\n\n/***/ \"./pixelToCanvas.js\":\n/*!**************************!*\\\n !*** ./pixelToCanvas.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the pixel coordinate system to the canvas coordinate system\n * system. This can be used to render using canvas context without having the weird\n * side effects that come from scaling and non square pixels\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {{x: Number, y: Number}} pt The transformed point in the pixel coordinate system\n *\n * @returns {{x: Number, y: Number}} The input point in the canvas coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./rendering/doesImageNeedToBeRendered.js\":\n/*!************************************************!*\\\n !*** ./rendering/doesImageNeedToBeRendered.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Determine whether or not an Enabled Element needs to be re-rendered.\n *\n * If the imageId has changed, or if any of the last rendered viewport\n * parameters have changed, this function will return true.\n *\n * @param {EnabledElement} enabledElement An Enabled Element\n * @param {Image} image An Image\n * @return {boolean} Whether or not the Enabled Element needs to re-render its image\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var lastRenderedImageId = enabledElement.renderingTools.lastRenderedImageId;\n var lastRenderedViewport = enabledElement.renderingTools.lastRenderedViewport;\n return image.imageId !== lastRenderedImageId || !lastRenderedViewport || lastRenderedViewport.windowCenter !== enabledElement.viewport.voi.windowCenter || lastRenderedViewport.windowWidth !== enabledElement.viewport.voi.windowWidth || lastRenderedViewport.invert !== enabledElement.viewport.invert || lastRenderedViewport.rotation !== enabledElement.viewport.rotation || lastRenderedViewport.hflip !== enabledElement.viewport.hflip || lastRenderedViewport.vflip !== enabledElement.viewport.vflip || lastRenderedViewport.modalityLUT !== enabledElement.viewport.modalityLUT || lastRenderedViewport.voiLUT !== enabledElement.viewport.voiLUT || lastRenderedViewport.colormap !== enabledElement.viewport.colormap;\n});\n\n/***/ }),\n\n/***/ \"./rendering/getLut.js\":\n/*!*****************************!*\\\n !*** ./rendering/getLut.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/computeAutoVoi.js */ \"./internal/computeAutoVoi.js\");\n/* harmony import */ var _lutMatches_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lutMatches.js */ \"./rendering/lutMatches.js\");\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateLut.js */ \"./internal/generateLut.js\");\n\n\n\n/**\n * Retrieve or generate a LUT Array for an Image and Viewport\n *\n * @param {Image} image An Image Object\n * @param {Viewport} viewport An Viewport Object\n * @param {Boolean} invalidated Whether or not the LUT data has been invalidated\n * (e.g. by a change to the windowWidth, windowCenter, or invert viewport parameters).\n * @return {Uint8ClampedArray} LUT Array\n * @memberof rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, viewport, invalidated) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.modalityLUT, viewport.modalityLUT) && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.voiLUT, viewport.voiLUT) && image.cachedLut.invert === viewport.invert && invalidated !== true) {\n return image.cachedLut.lutArray;\n }\n\n Object(_internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(viewport, image); // Lut is invalid or not present, regenerate it and cache it\n\n Object(_internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert, viewport.modalityLUT, viewport.voiLUT);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n image.cachedLut.voiLUT = viewport.voiLUT;\n image.cachedLut.modalityLUT = viewport.modalityLUT;\n return image.cachedLut.lutArray;\n});\n\n/***/ }),\n\n/***/ \"./rendering/index.js\":\n/*!****************************!*\\\n !*** ./rendering/index.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony import */ var _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n\n\n\n\n\n\n/**\n * @module rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n colorImage: _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__[\"renderColorImage\"],\n grayscaleImage: _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderGrayscaleImage\"],\n webImage: _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderWebImage\"],\n pseudoColorImage: _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderPseudoColorImage\"],\n labelMapImage: _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderLabelMapImage\"],\n toCanvas: _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./rendering/initializeRenderCanvas.js\":\n/*!*********************************************!*\\\n !*** ./rendering/initializeRenderCanvas.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Sets size and clears canvas\n *\n * @param {Object} enabledElement Cornerstone Enabled Element\n * @param {Object} image Image to be rendered\n * @returns {void}\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // Resize the canvas\n\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we\n // control the luminance using the alpha channel to improve rendering performance.\n\n canvasContext.fillStyle = 'white';\n canvasContext.fillRect(0, 0, renderCanvas.width, renderCanvas.height);\n var renderCanvasData = canvasContext.getImageData(0, 0, image.width, image.height);\n enabledElement.renderingTools.renderCanvasContext = canvasContext;\n enabledElement.renderingTools.renderCanvasData = renderCanvasData;\n});\n\n/***/ }),\n\n/***/ \"./rendering/lutMatches.js\":\n/*!*********************************!*\\\n !*** ./rendering/lutMatches.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Check if two lookup tables match\n *\n * @param {LUT} a A lookup table function\n * @param {LUT} b Another lookup table function\n * @return {boolean} Whether or not they match\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (a, b) {\n // If undefined, they are equal\n if (!a && !b) {\n return true;\n } // If one is undefined, not equal\n\n\n if (!a || !b) {\n return false;\n } // Check the unique ids\n\n\n return a.id === b.id;\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderColorImage.js\":\n/*!***************************************!*\\\n !*** ./rendering/renderColorImage.js ***!\n \\***************************************/\n/*! exports provided: renderColorImage, addColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return renderColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addColorLayer\", function() { return addColorLayer; });\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ \"./internal/generateColorLut.js\");\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ \"./internal/storedRGBAPixelDataToCanvasImageData.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Generates an appropriate Look Up Table to render the given image with the given window width and level (specified in the viewport)\n * Uses an internal cache for performance\n *\n * @param {Object} image The image to be rendered\n * @param {Object} viewport The viewport values used for rendering\n * @returns {Uint8ClampedArray} Look Up Table array.\n * @memberof rendering\n */\n\nfunction getLut(image, viewport) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && image.cachedLut.invert === viewport.invert) {\n return image.cachedLut.lutArray;\n } // Lut is invalid or not present, regenerate it and cache it\n\n\n Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n return image.cachedLut.lutArray;\n}\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || !canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // The ww/wc is identity and not inverted - get a canvas with the image rendered into it for\n // Fast drawing\n\n if (enabledElement.viewport.voi.windowWidth === 255 && enabledElement.viewport.voi.windowCenter === 128 && enabledElement.viewport.invert === false && image.getCanvas && image.getCanvas()) {\n return image.getCanvas();\n } // Apply the lut to the stored pixel data onto the render canvas\n\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var colorLut = getLut(image, enabledElement.viewport);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // The color image voi/invert has been modified - apply the lut to the underlying\n // Pixel data and put it into the renderCanvas\n\n if (image.rgba) {\n Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, colorLut, renderCanvasData.data);\n } else {\n Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, colorLut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to render a color image to an enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderColorImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderColorImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\nfunction addColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addColorLayer: image must be loaded before it can be drawn');\n } // All multi-layer images should include the alpha value\n\n\n image.rgba = true;\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderGrayscaleImage.js\":\n/*!*******************************************!*\\\n !*** ./rendering/renderGrayscaleImage.js ***!\n \\*******************************************/\n/*! exports provided: renderGrayscaleImage, addGrayscaleLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return renderGrayscaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGrayscaleLayer\", function() { return addGrayscaleLayer; });\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @param {Boolean} [useAlphaChannel = true] Will an alpha channel be used\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var useAlphaChannel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas\n\n if (useAlphaChannel) {\n Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image, lut, renderCanvasData.data);\n } else {\n Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a grayscale image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderGrayscaleImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a grayscale image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @param {Boolean} [useAlphaChannel] - Whether or not to render the grayscale image using only the alpha channel.\n This does not work if this layer is not the first layer in the enabledElement.\n * @returns {void}\n */\n\nfunction addGrayscaleLayer(layer, invalidated) {\n var useAlphaChannel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (layer === undefined) {\n throw new Error('addGrayscaleLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addGrayscaleLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderLabelMapImage.js\":\n/*!******************************************!*\\\n !*** ./rendering/renderLabelMapImage.js ***!\n \\******************************************/\n/*! exports provided: renderLabelMapImage, addLabelMapLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return renderLabelMapImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLabelMapLayer\", function() { return addLabelMapLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderLabelMapImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a label map image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderLabelMapImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderLabelMapImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for label map pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addLabelMapLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addLabelMapLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addLabelMapLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderPseudoColorImage.js\":\n/*!*********************************************!*\\\n !*** ./rendering/renderPseudoColorImage.js ***!\n \\*********************************************/\n/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return renderPseudoColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPseudoColorLayer\", function() { return addPseudoColorLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderPseudoColorImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n colormap.setNumberOfColors(256);\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(image, lut, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a pseudo-color image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderPseudoColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for pseudocolor pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addPseudoColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addPseudoColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addPseudoColorLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderToCanvas.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderToCanvas.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n\n\n\n\n\n/**\r\n * @typedef {Object} EnabledElementStub\r\n * @property {HTMLElement} element The enabled element\r\n * @property {HTMLCanvasElement} canvas The current canvas\r\n * @property {Object} image Currently displayed image\r\n * @property {Boolean} invalid Whether or not the image pixel data has been changed\r\n * @property {Boolean} needsRedraw A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\r\n * @property {Object} options Layer drawing options\r\n * @property {Object[]} layers Layers added to the EnabledElement\r\n * @property {Object} data\r\n * @property {Object} renderingTools\r\n * @property {Object} viewport The current viewport\r\n * @memberof rendering\r\n */\n\n/**\r\n * creates a dummy enabled element\r\n *\r\n * @param {HTMLCanvasElement} canvas the canvas that will be assigned to the enabled element.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param { any } options Options for rendering the image (e.g.enable webgl by {renderer: 'webgl' })\r\n * @param { any } viewport A set of Cornerstone viewport parameters\r\n * @returns {EnabledElementStub} a dummy enabled element\r\n * @memberof rendering\r\n */\n\nfunction createEnabledElementStub(canvas, image, options, viewport) {\n return {\n element: canvas,\n canvas: canvas,\n image: image,\n invalid: true,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n viewport: viewport\n };\n}\n/**\r\n * Render the image to the provided canvas immediately.\r\n * @param {any} canvas The HTML canvas where the image will be rendered.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param {any} [viewport = null] A set of Cornerstone viewport parameters\r\n * @param {any} [options = null] Options for rendering the image (e.g. enable webgl by {renderer: 'webgl'})\r\n * @returns {void}\r\n * @memberof rendering\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (canvas === undefined) {\n throw new Error('renderToCanvas: parameter canvas cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canvas, image);\n\n if (viewport) {\n Object.assign(defaultViewport, viewport);\n }\n\n var enabledElementStub = createEnabledElementStub(canvas, image, options, defaultViewport);\n var eventDetails = {\n enabledElement: enabledElementStub,\n timestamp: Date.now()\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElementStub.element, _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PRE_RENDER, eventDetails);\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElementStub, enabledElementStub.invalid);\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderWebImage.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderWebImage.js ***!\n \\*************************************/\n/*! exports provided: renderWebImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return renderWebImage; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n\n\n/**\n * API function to draw a standard web image (PNG, JPG) to an enabledImage\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\nfunction renderWebImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderWebImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderWebImage: image must be loaded before it can be drawn');\n } // If the viewport ww/wc and invert all match the initial state of the image, we can draw the image\n // Directly. If any of those are changed, we call renderColorImage() to apply the lut\n\n\n if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) {\n // Get the canvas context and reset the transform\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height);\n } else {\n Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderColorImage\"])(enabledElement, invalidated);\n }\n}\n\n/***/ }),\n\n/***/ \"./rendering/saveLastRendered.js\":\n/*!***************************************!*\\\n !*** ./rendering/saveLastRendered.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Saves the parameters of the last render into renderingTools, used later to decide if data can be reused.\n *\n * @param {Object} enabledElement Cornerstone EnabledElement\n * @returns {Object} enabledElement.renderingTools\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var imageId = enabledElement.image.imageId;\n var viewport = enabledElement.viewport;\n var isColor = enabledElement.image.color;\n enabledElement.renderingTools.lastRenderedImageId = imageId;\n enabledElement.renderingTools.lastRenderedIsColor = isColor;\n enabledElement.renderingTools.lastRenderedViewport = {\n windowCenter: viewport.voi.windowCenter,\n windowWidth: viewport.voi.windowWidth,\n invert: viewport.invert,\n rotation: viewport.rotation,\n hflip: viewport.hflip,\n vflip: viewport.vflip,\n modalityLUT: viewport.modalityLUT,\n voiLUT: viewport.voiLUT,\n colormap: viewport.colormap\n };\n return enabledElement.renderingTools;\n});\n\n/***/ }),\n\n/***/ \"./reset.js\":\n/*!******************!*\\\n !*** ./reset.js ***!\n \\******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\n/**\n * Resets the viewport to the default settings\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, enabledElement.image);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./resize.js\":\n/*!*******************!*\\\n !*** ./resize.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/getImageSize.js */ \"./internal/getImageSize.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {HTMLElement} canvas The Canvas DOM element within the DOM element enabled for Cornerstone\r\n * @returns {void}\r\n */\n\nfunction setCanvasSize(element, canvas) {\n // The device pixel ratio is 1.0 for normal displays and > 1.0\n // For high DPI displays like Retina\n\n /*\r\n This functionality is disabled due to buggy behavior on systems with mixed DPI's. If the canvas\r\n is created on a display with high DPI (e.g. 2.0) and then the browser window is dragged to\r\n a different display with a different DPI (e.g. 1.0), the canvas is not recreated so the pageToPixel\r\n produces incorrect results. I couldn't find any way to determine when the DPI changed other than\r\n by polling which is not very clean. If anyone has any ideas here, please let me know, but for now\r\n we will disable this functionality. We may want\r\n to add a mechanism to optionally enable this functionality if we can determine it is safe to do\r\n so (e.g. iPad or iPhone or perhaps enumerate the displays on the system. I am choosing\r\n to be cautious here since I would rather not have bug reports or safety issues related to this\r\n scenario.\r\n var devicePixelRatio = window.devicePixelRatio;\r\n if(devicePixelRatio === undefined) {\r\n devicePixelRatio = 1.0;\r\n }\r\n */\n // Avoid setting the same value because it flashes the canvas with IE and Edge\n if (canvas.width !== element.clientWidth) {\n canvas.width = element.clientWidth;\n canvas.style.width = \"\".concat(element.clientWidth, \"px\");\n } // Avoid setting the same value because it flashes the canvas with IE and Edge\n\n\n if (canvas.height !== element.clientHeight) {\n canvas.height = element.clientHeight;\n canvas.style.height = \"\".concat(element.clientHeight, \"px\");\n }\n}\n/**\r\n * Checks if the image of a given enabled element fitted the window\r\n * before the resize\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {Boolean} true if it fitted the windows, false otherwise\r\n */\n\n\nfunction wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var imageSize = Object(_internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement.image, enabledElement.viewport.rotation);\n var imageWidth = Math.round(imageSize.width * scale);\n var imageHeight = Math.round(imageSize.height * scale);\n var x = enabledElement.viewport.translation.x;\n var y = enabledElement.viewport.translation.y;\n return imageWidth === oldCanvasWidth && imageHeight <= oldCanvasHeight || imageWidth <= oldCanvasWidth && imageHeight === oldCanvasHeight && x === 0 && y === 0;\n}\n/**\r\n * Rescale the image relative to the changed size of the canvas\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {void}\r\n */\n\n\nfunction relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var canvasWidth = enabledElement.canvas.width;\n var canvasHeight = enabledElement.canvas.height;\n var relWidthChange = canvasWidth / oldCanvasWidth;\n var relHeightChange = canvasHeight / oldCanvasHeight;\n var relChange = Math.sqrt(relWidthChange * relHeightChange);\n enabledElement.viewport.scale = relChange * scale;\n}\n/**\r\n * Resizes an enabled element and optionally fits the image to window\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {Boolean} forceFitToWindow true to to force a refit, false to rescale accordingly\r\n * @returns {void}\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, forceFitToWindow) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldCanvasWidth = enabledElement.canvas.width;\n var oldCanvasHeight = enabledElement.canvas.height;\n setCanvasSize(element, enabledElement.canvas);\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ELEMENT_RESIZED, eventData);\n\n if (enabledElement.image === undefined) {\n return;\n }\n\n if (forceFitToWindow || wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight)) {\n // Fit the image to the window again if it fitted before the resize\n Object(_fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n } else {\n // Adapt the scale of a zoomed or panned image relative to the size change\n relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./setToPixelCoordinateSystem.js\":\n/*!***************************************!*\\\n !*** ./setToPixelCoordinateSystem.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/**\n * Sets the canvas context transformation matrix to the pixel coordinate system. This allows\n * geometry to be driven using the canvas context using coordinates in the pixel coordinate system\n * @param {EnabledElement} enabledElement The\n * @param {CanvasRenderingContext2D} context The CanvasRenderingContext2D for the enabledElement's Canvas\n * @param {Number} [scale] Optional scale to apply\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, context, scale) {\n if (enabledElement === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter enabledElement must not be undefined');\n }\n\n if (context === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter context must not be undefined');\n }\n\n var transform = Object(_internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, scale);\n context.setTransform(transform.m[0], transform.m[1], transform.m[2], transform.m[3], transform.m[4], transform.m[5]);\n});\n\n/***/ }),\n\n/***/ \"./setViewport.js\":\n/*!************************!*\\\n !*** ./setViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\nvar MIN_WINDOW_WIDTH = 0.000001;\nvar MIN_VIEWPORT_SCALE = 0.0001;\n/**\n * Sets/updates viewport of a given enabled element\n *\n * @param {HTMLElement} element - DOM element of the enabled element\n * @param {Viewport} [viewport] - Object containing the viewport properties\n * @returns {void}\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, viewport) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // If viewport is not already set, start with default and merge new\n // viewport options later\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement.canvas);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n } // Prevent window width from being too small (note that values close to zero are valid and can occur with\n // PET images in particular)\n\n\n if (enabledElement.viewport.voi.windowWidth) {\n enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH);\n } // Prevent scale from getting too small\n\n\n if (enabledElement.viewport.scale) {\n enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE);\n } // Normalize the rotation value to a positive rotation in degrees\n\n\n enabledElement.viewport.rotation %= 360;\n\n if (enabledElement.viewport.rotation < 0) {\n enabledElement.viewport.rotation += 360;\n }\n\n if (enabledElement.image) {\n // Force the image to be updated since the viewport has been modified\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./triggerEvent.js\":\n/*!*************************!*\\\n !*** ./triggerEvent.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return triggerEvent; });\n/**\n * Trigger a CustomEvent\n *\n * @param {EventTarget} el The element or EventTarget to trigger the event upon\n * @param {String} type The event type name\n * @param {Object|null} detail=null The event data to be sent\n * @returns {Boolean} The return value is false if at least one event listener called preventDefault(). Otherwise it returns true.\n */\nfunction triggerEvent(el, type) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var event; // This check is needed to polyfill CustomEvent on IE11-\n\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(type, {\n detail: detail,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, detail);\n }\n\n return el.dispatchEvent(event);\n}\n\n/***/ }),\n\n/***/ \"./updateImage.js\":\n/*!************************!*\\\n !*** ./updateImage.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the specified enabled element\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Boolean} [invalidated=false] Whether or not the image pixel data has been changed, necessitating a redraw\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined && !enabledElement.layers.length) {\n throw new Error('updateImage: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./webgl/createProgramFromString.js\":\n/*!******************************************!*\\\n !*** ./webgl/createProgramFromString.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Creates and compiles a shader.\n *\n * @param {!WebGLRenderingContext} gl The WebGL Context.\n * @param {string} shaderSource The GLSL source code for the shader.\n * @param {number} shaderType The type of shader, VERTEX_SHADER or FRAGMENT_SHADER.\n *\n * @return {!WebGLShader} The shader.\n * @memberof WebGLRendering\n */\nfunction compileShader(gl, shaderSource, shaderType) {\n // Create the shader object\n var shader = gl.createShader(shaderType); // Set the shader source code.\n\n gl.shaderSource(shader, shaderSource); // Compile the shader\n\n gl.compileShader(shader); // Check if it compiled\n\n var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong during compilation; get the error\n var infoLog = gl.getShaderInfoLog(shader);\n console.error(\"Could not compile shader:\\n\".concat(infoLog));\n }\n\n return shader;\n}\n/**\n * Creates a program from 2 shaders.\n *\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShader A vertex shader.\n * @param {!WebGLShader} fragmentShader A fragment shader.\n * @return {!WebGLProgram} A program.\n * @memberof WebGLRendering\n */\n\n\nfunction createProgram(gl, vertexShader, fragmentShader) {\n // Create a program.\n var program = gl.createProgram(); // Attach the shaders.\n\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader); // Link the program.\n\n gl.linkProgram(program); // Check if it linked.\n\n var success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong with the link\n var infoLog = gl.getProgramInfoLog(program);\n console.error(\"WebGL program filed to link:\\n\".concat(infoLog));\n }\n\n return program;\n}\n/**\n * Creates a program from 2 shaders source (Strings)\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShaderSrc Vertex shader string\n * @param {!WebGLShader} fragShaderSrc Fragment shader string\n * @return {!WebGLProgram} A program\n * @memberof WebGLRendering\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (gl, vertexShaderSrc, fragShaderSrc) {\n var vertexShader = compileShader(gl, vertexShaderSrc, gl.VERTEX_SHADER);\n var fragShader = compileShader(gl, fragShaderSrc, gl.FRAGMENT_SHADER);\n return createProgram(gl, vertexShader, fragShader);\n});\n\n/***/ }),\n\n/***/ \"./webgl/index.js\":\n/*!************************!*\\\n !*** ./webgl/index.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"./webgl/renderer.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n\n\n\n/**\n * @module WebGLRendering\n */\n\nvar mod = {\n createProgramFromString: _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n renderer: {\n render: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n initRenderer: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"initRenderer\"],\n getRenderCanvas: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"getRenderCanvas\"],\n isWebGLAvailable: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLAvailable\"]\n },\n textureCache: _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nObject.defineProperty(mod, 'isWebGLInitialized', {\n enumerable: true,\n configurable: false,\n get: function get() {\n return _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLInitialized\"];\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n\n/***/ }),\n\n/***/ \"./webgl/renderer.js\":\n/*!***************************!*\\\n !*** ./webgl/renderer.js ***!\n \\***************************/\n/*! exports provided: isWebGLInitialized, getRenderCanvas, initRenderer, render, isWebGLAvailable */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLInitialized\", function() { return isWebGLInitialized; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderCanvas\", function() { return getRenderCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRenderer\", function() { return initRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLAvailable\", function() { return isWebGLAvailable; });\n/* harmony import */ var _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shaders/index.js */ \"./webgl/shaders/index.js\");\n/* harmony import */ var _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertexShader.js */ \"./webgl/vertexShader.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* eslint no-bitwise: 0 */\n\n\n\n\nvar renderCanvas = document.createElement('canvas');\nvar gl;\nvar texCoordBuffer;\nvar positionBuffer;\nvar isWebGLInitialized = false;\n\nfunction getRenderCanvas() {\n return renderCanvas;\n}\n\nfunction initShaders() {\n for (var id in _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"]) {\n // Console.log(\"WEBGL: Loading shader\", id);\n var shader = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][id];\n shader.attributes = {};\n shader.uniforms = {};\n shader.vert = _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__[\"vertexShader\"];\n shader.program = Object(_createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(gl, shader.vert, shader.frag);\n shader.attributes.texCoordLocation = gl.getAttribLocation(shader.program, 'a_texCoord');\n gl.enableVertexAttribArray(shader.attributes.texCoordLocation);\n shader.attributes.positionLocation = gl.getAttribLocation(shader.program, 'a_position');\n gl.enableVertexAttribArray(shader.attributes.positionLocation);\n shader.uniforms.resolutionLocation = gl.getUniformLocation(shader.program, 'u_resolution');\n }\n}\n\nfunction initRenderer() {\n if (isWebGLInitialized === true) {\n // Console.log(\"WEBGL Renderer already initialized\");\n return;\n }\n\n if (initWebGL(renderCanvas)) {\n initBuffers();\n initShaders(); // Console.log(\"WEBGL Renderer initialized!\");\n\n isWebGLInitialized = true;\n }\n}\n\nfunction updateRectangle(gl, width, height) {\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([width, height, 0, height, width, 0, 0, 0]), gl.STATIC_DRAW);\n}\n\nfunction handleLostContext(event) {\n event.preventDefault();\n console.warn('WebGL Context Lost!');\n}\n\nfunction handleRestoredContext(event) {\n event.preventDefault();\n isWebGLInitialized = false;\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].purgeCache();\n initRenderer(); // Console.log('WebGL Context Restored.');\n}\n\nfunction initWebGL(canvas) {\n gl = null;\n\n try {\n // Try to grab the standard context. If it fails, fallback to experimental.\n var options = {\n preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element\n\n }; // ---------------- Testing purposes -------------\n // If (debug === true && WebGLDebugUtils) {\n // RenderCanvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderCanvas);\n // }\n // ---------------- Testing purposes -------------\n\n gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); // Set up event listeners for context lost / context restored\n\n canvas.removeEventListener('webglcontextlost', handleLostContext, false);\n canvas.addEventListener('webglcontextlost', handleLostContext, false);\n canvas.removeEventListener('webglcontextrestored', handleRestoredContext, false);\n canvas.addEventListener('webglcontextrestored', handleRestoredContext, false);\n } catch (error) {\n throw new Error('Error creating WebGL context');\n } // If we don't have a GL context, give up now\n\n\n if (!gl) {\n console.error('Unable to initialize WebGL. Your browser may not support it.');\n gl = null;\n }\n\n return gl;\n}\n/**\n * Returns the image data type as a string representation.\n * @param {any} image The cornerstone image object\n * @returns {string} image data type (rgb, iint16, uint16, int8 and uint8)\n * @memberof WebGLRendering\n */\n\n\nfunction getImageDataType(image) {\n if (image.color) {\n return 'rgb';\n }\n\n var pixelData = image.getPixelData();\n\n if (pixelData instanceof Int16Array) {\n return 'int16';\n }\n\n if (pixelData instanceof Uint16Array) {\n return 'uint16';\n }\n\n if (pixelData instanceof Int8Array) {\n return 'int8';\n }\n\n return 'uint8';\n}\n\nfunction getShaderProgram(image) {\n var datatype = getImageDataType(image); // We need a mechanism for\n // Choosing the shader based on the image datatype\n // Console.log(\"Datatype: \" + datatype);\n\n if (_shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].hasOwnProperty(datatype)) {\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][datatype];\n }\n\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].rgb;\n}\n\nfunction generateTexture(image) {\n var TEXTURE_FORMAT = {\n uint8: gl.LUMINANCE,\n int8: gl.LUMINANCE_ALPHA,\n uint16: gl.LUMINANCE_ALPHA,\n int16: gl.RGB,\n rgb: gl.RGB\n };\n var TEXTURE_BYTES = {\n int8: 1,\n // Luminance\n uint16: 2,\n // Luminance + Alpha\n int16: 3,\n // RGB\n rgb: 3 // RGB\n\n };\n var imageDataType = getImageDataType(image);\n var format = TEXTURE_FORMAT[imageDataType]; // GL texture configuration\n\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var imageData = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"dataUtilities\"][imageDataType].storedPixelDataToImageData(image, image.width, image.height);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, image.width, image.height, 0, format, gl.UNSIGNED_BYTE, imageData); // Calculate the size in bytes of this image in memory\n\n var sizeInBytes = image.width * image.height * TEXTURE_BYTES[imageDataType];\n return {\n texture: texture,\n sizeInBytes: sizeInBytes\n };\n}\n\nfunction getImageTexture(image) {\n var imageTexture = _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageTexture(image.imageId);\n\n if (!imageTexture) {\n // Console.log(\"Generating texture for imageid: \", image.imageId);\n imageTexture = generateTexture(image);\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].putImageTexture(image, imageTexture);\n }\n\n return imageTexture.texture;\n}\n\nfunction initBuffers() {\n positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]), gl.STATIC_DRAW);\n texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0]), gl.STATIC_DRAW);\n}\n\nfunction renderQuad(shader, parameters, texture, width, height) {\n gl.clearColor(1.0, 0.0, 0.0, 1.0);\n gl.viewport(0, 0, width, height);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.useProgram(shader.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.vertexAttribPointer(shader.attributes.texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.vertexAttribPointer(shader.attributes.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n for (var key in parameters) {\n var uniformLocation = gl.getUniformLocation(shader.program, key);\n\n if (!uniformLocation) {\n continue; // Disabling this error for now since RGB requires minPixelValue\n // but the other shaders do not.\n // throw `Could not access location for uniform: ${key}`;\n }\n\n var uniform = parameters[key];\n var type = uniform.type;\n var value = uniform.value;\n\n if (type === 'i') {\n gl.uniform1i(uniformLocation, value);\n } else if (type === 'f') {\n gl.uniform1f(uniformLocation, value);\n } else if (type === '2f') {\n gl.uniform2f(uniformLocation, value[0], value[1]);\n }\n }\n\n updateRectangle(gl, width, height);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\n\nfunction render(enabledElement) {\n // Resize the canvas\n var image = enabledElement.image;\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var viewport = enabledElement.viewport; // Render the current image\n\n var shader = getShaderProgram(image);\n var texture = getImageTexture(image);\n var parameters = {\n u_resolution: {\n type: '2f',\n value: [image.width, image.height]\n },\n wc: {\n type: 'f',\n value: viewport.voi.windowCenter\n },\n ww: {\n type: 'f',\n value: viewport.voi.windowWidth\n },\n slope: {\n type: 'f',\n value: image.slope\n },\n intercept: {\n type: 'f',\n value: image.intercept\n },\n minPixelValue: {\n type: 'f',\n value: image.minPixelValue\n },\n invert: {\n type: 'i',\n value: viewport.invert ? 1 : 0\n }\n };\n renderQuad(shader, parameters, texture, image.width, image.height);\n return renderCanvas;\n}\nfunction isWebGLAvailable() {\n // Adapted from\n // http://stackoverflow.com/questions/9899807/three-js-detect-webgl-support-and-fallback-to-regular-canvas\n var options = {\n failIfMajorPerformanceCaveat: true\n };\n\n try {\n var canvas = document.createElement('canvas');\n return Boolean(window.WebGLRenderingContext) && (canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options));\n } catch (e) {\n return false;\n }\n}\n\n/***/ }),\n\n/***/ \"./webgl/shaders/index.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/index.js ***!\n \\********************************/\n/*! exports provided: shaders, dataUtilities */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shaders\", function() { return shaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataUtilities\", function() { return dataUtilities; });\n/* harmony import */ var _int16_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int16.js */ \"./webgl/shaders/int16.js\");\n/* harmony import */ var _int8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int8.js */ \"./webgl/shaders/int8.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"./webgl/shaders/rgb.js\");\n/* harmony import */ var _uint16_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uint16.js */ \"./webgl/shaders/uint16.js\");\n/* harmony import */ var _uint8_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uint8.js */ \"./webgl/shaders/uint8.js\");\n\n\n\n\n\nvar shaders = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16Shader\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8Shader\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbShader\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16Shader\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8Shader\"]\n};\nvar dataUtilities = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16DataUtilities\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8DataUtilities\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbDataUtilities\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16DataUtilities\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8DataUtilities\"]\n};\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int16.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/int16.js ***!\n \\********************************/\n/*! exports provided: int16DataUtilities, int16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16DataUtilities\", function() { return int16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16Shader\", function() { return int16Shader; });\n/* eslint no-bitwise: 0 */\nvar int16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack int16 into three uint8 channels (r, g, b)\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack int16 into three uint8 channels (r, g, b)\n var pixelData = image.getPixelData();\n var numberOfChannels = 3;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = Math.abs(pixelData[i]);\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.g*65536.0;' + 'if (color.b == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int8.js\":\n/*!*******************************!*\\\n !*** ./webgl/shaders/int8.js ***!\n \\*******************************/\n/*! exports provided: int8DataUtilities, int8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8DataUtilities\", function() { return int8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8Shader\", function() { return int8Shader; });\nvar int8Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Store data in Uint8Array\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n // Store data in Uint8Array\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n data[offset++] = pixelData[i];\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.;' + 'if (color.a == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/rgb.js\":\n/*!******************************!*\\\n !*** ./webgl/shaders/rgb.js ***!\n \\******************************/\n/*! exports provided: rgbDataUtilities, rgbShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbDataUtilities\", function() { return rgbDataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbShader\", function() { return rgbShader; });\nvar rgbShader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack RGB images into a 3-channel RGB texture\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0; // Only 3 channels, since we use WebGL's RGB texture format\n\n var numStoredPixels = image.width * image.height * 4;\n var numOutputPixels = image.width * image.height * 3;\n var storedPixelData = image.getPixelData();\n var data = new Uint8Array(numOutputPixels); // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n } else {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n }\n\n return data;\n}\n\nvar rgbDataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nrgbShader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform float minPixelValue;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec3 color = texture2D(u_image, v_texCoord).xyz;' + // Rescale based on slope and intercept\n'color = color * 256.0 * slope + intercept;' + // Apply window settings\n'float center0 = wc - 0.5 - minPixelValue;' + 'float width0 = max(ww, 1.0);' + 'color = (color - center0) / width0 + 0.5;' + // RGBA output\n'gl_FragColor = vec4(color, 1);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1. - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint16.js\":\n/*!*********************************!*\\\n !*** ./webgl/shaders/uint16.js ***!\n \\*********************************/\n/*! exports provided: uint16DataUtilities, uint16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16DataUtilities\", function() { return uint16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16Shader\", function() { return uint16Shader; });\n/* eslint no-bitwise: 0 */\nvar uint16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * For uint16 pack uint16 into two uint8 channels (r and a).\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack uint16 into two uint8 channels (r and a)\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = pixelData[i];\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n }\n\n return data;\n}\n\nvar uint16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.a*65536.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint8.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/uint8.js ***!\n \\********************************/\n/*! exports provided: uint8DataUtilities, uint8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8DataUtilities\", function() { return uint8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8Shader\", function() { return uint8Shader; });\nvar uint8Shader = {};\n/**\n * Convert stored pixel data to image data. Here we will store\n * all data in the alpha channel.\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n return image.getPixelData();\n}\n\nvar uint8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/textureCache.js\":\n/*!*******************************!*\\\n !*** ./webgl/textureCache.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\r\n * This module deals with caching image textures in VRAM for WebGL\r\n * @module WebGLTextureCache\r\n */\n\nvar imageCache = {};\nvar cachedImages = [];\nvar maximumSizeInBytes = 1024 * 1024 * 256; // 256 MB\n\nvar cacheSizeInBytes = 0;\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n}\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n cacheSizeInBytes -= lastCachedImage.sizeInBytes;\n delete imageCache[lastCachedImage.imageId];\n cachedImages.pop();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_REMOVED, {\n imageId: lastCachedImage.imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_CACHE_FULL, cacheInfo);\n}\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n purgeCacheIfNecessary();\n}\n\nfunction putImageTexture(image, imageTexture) {\n var imageId = image.imageId;\n\n if (image === undefined) {\n throw new Error('putImageTexture: image must not be undefined');\n }\n\n if (imageId === undefined) {\n throw new Error('putImageTexture: imageId must not be undefined');\n }\n\n if (imageTexture === undefined) {\n throw new Error('putImageTexture: imageTexture must not be undefined');\n }\n\n if (Object.prototype.hasOwnProperty.call(imageCache, imageId) === true) {\n throw new Error('putImageTexture: imageId already in cache');\n }\n\n var cachedImage = {\n imageId: imageId,\n imageTexture: imageTexture,\n timeStamp: new Date(),\n sizeInBytes: imageTexture.sizeInBytes\n };\n imageCache[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n\n if (imageTexture.sizeInBytes === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes must not be undefined');\n }\n\n if (imageTexture.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes is not a number');\n }\n\n cacheSizeInBytes += cachedImage.sizeInBytes;\n purgeCacheIfNecessary();\n}\n\nfunction getImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = new Date();\n return cachedImage.imageTexture;\n}\n\nfunction removeImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n delete imageCache[imageId];\n return cachedImage.imageTexture;\n}\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages.pop();\n delete imageCache[removedCachedImage.imageId];\n }\n\n cacheSizeInBytes = 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n purgeCache: purgeCache,\n getImageTexture: getImageTexture,\n putImageTexture: putImageTexture,\n removeImageTexture: removeImageTexture,\n setMaximumSizeBytes: setMaximumSizeBytes\n});\n\n/***/ }),\n\n/***/ \"./webgl/vertexShader.js\":\n/*!*******************************!*\\\n !*** ./webgl/vertexShader.js ***!\n \\*******************************/\n/*! exports provided: vertexShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertexShader\", function() { return vertexShader; });\nvar vertexShader = 'attribute vec2 a_position;' + 'attribute vec2 a_texCoord;' + 'uniform vec2 u_resolution;' + 'varying vec2 v_texCoord;' + 'void main() {' + 'vec2 zeroToOne = a_position / u_resolution;' + 'vec2 zeroToTwo = zeroToOne * 2.0;' + 'vec2 clipSpace = zeroToTwo - 1.0;' + 'gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);' + 'v_texCoord = a_texCoord;' + '}';\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=cornerstone.js.map","/*! cornerstone-wado-image-loader - 2.2.2 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstoneWADOImageLoader */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstoneWADOImageLoader\",[],t):\"object\"==typeof exports?exports.cornerstoneWADOImageLoader=t():e.cornerstoneWADOImageLoader=t()}(this,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,r){\"use strict\";t.a=function(e){for(var t,r=e[0],a=e[0],n=e.length,o=1;o>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var i;return e};var d=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var r=t,a=e.rows*e.columns,n=new ArrayBuffer(a*e.samplesPerPixel),o=new DataView(r.buffer,r.byteOffset),i=new Int8Array(r.buffer,r.byteOffset),l=new Int8Array(n),s=0,u=o.getInt32(0,!0),c=0;c>l;var u=(new Date).getTime();return e.decodeTimeInMS=u-o,e}},function(e,t,r){\"use strict\";r.r(t);var a=function(e,t){if(void 0===e)throw new Error(\"decodeRGB: rgbBuffer must not be undefined\");if(e.length%3!=0)throw new Error(\"decodeRGB: rgbBuffer length must be divisible by 3\");for(var r=e.length/3,a=0,n=0,o=0;o>t;return a}var l=function(e,t){for(var r=e.columns*e.rows,a=e.pixelData,n=e.redPaletteColorLookupTableData,o=e.greenPaletteColorLookupTableData,i=e.bluePaletteColorLookupTableData,l=e.redPaletteColorLookupTableData.length,s=0,u=0,c=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,d=x(n,f),p=x(o,f),m=x(i,f),g=0;gt.length)return!1;for(var a=r,n=0;n=E.maxWebWorkers)){var e=new Worker(E.webWorkerPath);R.push({worker:e,status:\"initializing\"}),e.addEventListener(\"message\",F),e.postMessage({taskType:\"initialize\",workerIndex:R.length-1,config:E})}}function G(e){if(e=e||W,E)throw new Error(\"WebWorkerManager already initialized\");if((E=e).maxWebWorkers=E.maxWebWorkers||navigator.hardwareConcurrency||1,!E.startWebWorkersOnDemand)for(var t=0;t=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,u)}if(16===n){if((r=s+t*u*2)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,2*u)}if(1===n){if((r=s+t*u*.125)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return Pe(e.byteArray,r,u)}if(32!==n)throw new Error(\"unsupported pixel format\");if((r=s+t*u*4)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,4*u)};var Ie=function(e){var t=de(e),r=parseInt(t.url,10),a=be.get(r);return new Promise(function(r,e){var t=new FileReader;t.onload=function(e){var t=e.target.result;r(t)},t.onerror=e,t.readAsArrayBuffer(a)})};var Te=function(e){var t=1i?i:t},e.degToRad=function(t){return t*(Math.PI/180)},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return\"number\"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(3),s=(n=o)&&n.__esModule?n:{default:n},r=i(0);var a,h,u,c,l,f=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};f.prototype={constructor:f,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(\"index is out of range: \"+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+t)}},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},sub:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyAxisAngle:(l=void 0,function(t,e){return void 0===l&&(l=new s.default),this.applyQuaternion(l.setFromAxisAngle(t.normalize(),e)),this}),applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[3]*i+o[6]*n,this.y=o[1]*e+o[4]*i+o[7]*n,this.z=o[2]*e+o[5]*i+o[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n+o[12],this.y=o[1]*e+o[5]*i+o[9]*n+o[13],this.z=o[2]*e+o[6]*i+o[10]*n+o[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements,s=1/(o[3]*e+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*e+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*e+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*e+o[6]*i+o[10]*n+o[14])*s,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,o=t.x,s=t.y,r=t.z,a=t.w,h=a*e+s*n-r*i,u=a*i+r*e-o*n,c=a*n+o*i-s*e,l=-o*e-s*i-r*n;return this.x=h*a+l*-o+u*-r-c*-s,this.y=u*a+l*-s+c*-o-h*-r,this.z=c*a+l*-r+h*-s-u*-o,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n,this.y=o[1]*e+o[5]*i+o[9]*n,this.z=o[2]*e+o[6]*i+o[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:(u=void 0,c=void 0,function(t,e){return void 0===u&&(u=new f,c=new f),u.set(t,t,t),c.set(e,e,e),this.clamp(u,c)}),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},cross:function(t,e){if(void 0!==e)return console.warn(\"DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(t,e);var i=this.x,n=this.y,o=this.z;return this.x=n*t.z-o*t.y,this.y=o*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,o=t.z,s=e.x,r=e.y,a=e.z;return this.x=n*a-o*r,this.y=o*s-i*a,this.z=i*r-n*s,this},projectOnVector:(a=void 0,h=void 0,function(t){return void 0===a&&(a=new f),a.copy(t).normalize(),h=this.dot(a),this.copy(a).multiplyScalar(h)}),projectOnPlane:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,r.clamp)(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new f(this.x,this.y,this.z)}},e.default=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}var r={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var i=s(t.start,t.end);if(0===i)return s(e,t.start);var n=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/i;return s(e,n<0?t.start:n>1?t.end:{x:t.start.x+n*(t.end.x-t.start.x),y:t.start.y+n*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var i,o,s,r,a,h,u,c,l,f,y,d={},p=t.start.x,x=t.start.y,m=t.end.x,v=t.end.y,g=e.start.x,z=e.start.y,b=e.end.x,M=e.end.y,w=void 0;if(f=(i=v-x)*b+(s=p-m)*M+(a=m*x-p*v),(0===(l=i*g+s*z+a)||0===f||(0,n.sign)(l)!==(0,n.sign)(f))&&(c=(o=M-z)*m+(r=g-b)*v+(h=b*z-g*M),0===(u=o*p+r*x+h)||0===c||(0,n.sign)(u)!==(0,n.sign)(c))){y=i*r-o*s,w=s*h-r*a;var R=parseFloat(w/y);w=o*a-i*h;var P=parseFloat(w/y);return d.x=R,d.y=P,d}}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=void 0!==n?n:1};n.prototype.setFromAxisAngle=function(t,e){var i=e/2,n=Math.sin(i);return this.x=t.x*n,this.y=t.y*n,this.z=t.z*n,this.w=Math.cos(i),this},n.prototype.multiplyQuaternions=function(t,e){var i=t.x,n=t.y,o=t.z,s=t.w,r=e.x,a=e.y,h=e.z,u=e.w;return this.x=i*u+s*r+n*h-o*a,this.y=n*u+s*a+o*r-i*h,this.z=o*u+s*h+i*a-n*r,this.w=s*u-i*r-n*a-o*h,this},n.prototype.setFromRotationMatrix=function(t){var e=t.elements,i=e[0],n=e[4],o=e[8],s=e[1],r=e[5],a=e[9],h=e[2],u=e[6],c=e[10],l=i+r+c,f=void 0;return l>0?(f=.5/Math.sqrt(l+1),this.w=.25/f,this.x=(u-a)*f,this.y=(o-h)*f,this.z=(s-n)*f):i>r&&i>c?(f=2*Math.sqrt(1+i-r-c),this.w=(u-a)/f,this.x=.25*f,this.y=(n+s)/f,this.z=(o+h)/f):r>c?(f=2*Math.sqrt(1+r-i-c),this.w=(o-h)/f,this.x=(n+s)/f,this.y=.25*f,this.z=(a+u)/f):(f=2*Math.sqrt(1+c-i-r),this.w=(s-n)/f,this.x=(o+h)/f,this.y=(a+u)/f,this.z=.25*f),this},e.default=n},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(2),s=(n=o)&&n.__esModule?n:{default:n};function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var a={distanceToPoint:function(t,e){var i=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var n=s.default.distanceToPoint(t,e);n=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),n=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),i&&n}(t,e)){var n=r(t),o=r(e);return t.width>=0?e.width>=0?(i.topLeft.x=Math.max(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.bottomRight.x)):(i.topLeft.x=Math.max(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.topLeft.x)):e.width>=0?(i.topLeft.x=Math.min(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.topLeft.x)):(i.topLeft.x=Math.min(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(i.topLeft.y=Math.max(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.bottomRight.y)):(i.topLeft.y=Math.max(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.topLeft.y)):e.height>=0?(i.topLeft.y=Math.min(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.topLeft.y)):(i.topLeft.y=Math.min(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.bottomRight.y)),i}}};e.default=a},function(t,e,i){\"use strict\";function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function o(t,e){return Math.sqrt(s(t,e))}function s(t,e){var i=n(t,e);return i.x*i.x+i.y*i.y}Object.defineProperty(e,\"__esModule\",{value:!0});var r={subtract:n,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:o,distanceSquared:s,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var i=[],n=void 0;return t.forEach(function(t,s){var r=o(t,e);i.push(r),n=0===s?r:Math.min(r,n)}),t[i.indexOf(n)]}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r,a,h=function(t,e){this.normal=void 0!==t?t:new s.default(1,0,0),this.constant=void 0!==e?e:0};h.prototype={constructor:h,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:(r=new s.default,a=new s.default,function(t,e,i){var n=r.subVectors(i,e).cross(a.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}),copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return this.orthoPoint(t,e).sub(t).negate()},orthoPoint:function(t,e){var i=this.distanceToPoint(t);return(e||new s.default).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(t){var e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0},intersectLine:function(){var t=new s.default;return function(e,i){var n=i||new s.default,o=e.delta(t),r=this.normal.dot(o);if(0===r)return 0===this.distanceToPoint(e.start)?n.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?void 0:n.copy(o).multiplyScalar(a).add(e.start)}}(),intersectPlane:function(t){var e=this.normal.clone().cross(t.normal),i={origin:new s.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return i.direction=new s.default,i;var n=this.constant,o=t.constant,r=this.normal.clone().dot(t.normal),a=-(n-o*r)/(1-r*r),h=-(o-n*r)/(1-r*r);return i.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(h)),i},coplanarPoint:function(t){return(t||new s.default).copy(this.normal).multiplyScalar(-this.constant)},translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},clone:function(){return(new h).copy(this)}},e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r=function(t,e,i,n,o,s,r,a,h,u,c,l,f,y,d,p){this.elements=new Float32Array(16);var x=this.elements;x[0]=void 0!==t?t:1,x[4]=e||0,x[8]=i||0,x[12]=n||0,x[1]=o||0,x[5]=void 0!==s?s:1,x[9]=r||0,x[13]=a||0,x[2]=h||0,x[6]=u||0,x[10]=void 0!==c?c:1,x[14]=l||0,x[3]=f||0,x[7]=y||0,x[11]=d||0,x[15]=void 0!==p?p:1};r.prototype.makeRotationFromQuaternion=function(t){var e=this.elements,i=t.x,n=t.y,o=t.z,s=t.w,r=i+i,a=n+n,h=o+o,u=i*r,c=i*a,l=i*h,f=n*a,y=n*h,d=o*h,p=s*r,x=s*a,m=s*h;return e[0]=1-(f+d),e[4]=c-m,e[8]=l+x,e[1]=c+m,e[5]=1-(u+d),e[9]=y-p,e[2]=l-x,e[6]=y+p,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},r.prototype.multiplyMatrices=function(t,e){var i=t.elements,n=e.elements,o=this.elements,s=i[0],r=i[4],a=i[8],h=i[12],u=i[1],c=i[5],l=i[9],f=i[13],y=i[2],d=i[6],p=i[10],x=i[14],m=i[3],v=i[7],g=i[11],z=i[15],b=n[0],M=n[4],w=n[8],R=n[12],P=n[1],L=n[5],T=n[9],S=n[13],_=n[2],V=n[6],q=n[10],j=n[14],E=n[3],k=n[7],O=n[11],A=n[15];return o[0]=s*b+r*P+a*_+h*E,o[4]=s*M+r*L+a*V+h*k,o[8]=s*w+r*T+a*q+h*O,o[12]=s*R+r*S+a*j+h*A,o[1]=u*b+c*P+l*_+f*E,o[5]=u*M+c*L+l*V+f*k,o[9]=u*w+c*T+l*q+f*O,o[13]=u*R+c*S+l*j+f*A,o[2]=y*b+d*P+p*_+x*E,o[6]=y*M+d*L+p*V+x*k,o[10]=y*w+d*T+p*q+x*O,o[14]=y*R+d*S+p*j+x*A,o[3]=m*b+v*P+g*_+z*E,o[7]=m*M+v*L+g*V+z*k,o[11]=m*w+v*T+g*q+z*O,o[15]=m*R+v*S+g*j+z*A,this},r.prototype.multiply=function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},r.prototype.getInverse=function(t,e){var i=this.elements,n=t.elements,o=n[0],s=n[4],r=n[8],a=n[12],h=n[1],u=n[5],c=n[9],l=n[13],f=n[2],y=n[6],d=n[10],p=n[14],x=n[3],m=n[7],v=n[11],g=n[15];i[0]=c*p*m-l*d*m+l*y*v-u*p*v-c*y*g+u*d*g,i[4]=a*d*m-r*p*m-a*y*v+s*p*v+r*y*g-s*d*g,i[8]=r*l*m-a*c*m+a*u*v-s*l*v-r*u*g+s*c*g,i[12]=a*c*y-r*l*y-a*u*d+s*l*d+r*u*p-s*c*p,i[1]=l*d*x-c*p*x-l*f*v+h*p*v+c*f*g-h*d*g,i[5]=r*p*x-a*d*x+a*f*v-o*p*v-r*f*g+o*d*g,i[9]=a*c*x-r*l*x-a*h*v+o*l*v+r*h*g-o*c*g,i[13]=r*l*f-a*c*f+a*h*d-o*l*d-r*h*p+o*c*p,i[2]=u*p*x-l*y*x+l*f*m-h*p*m-u*f*g+h*y*g,i[6]=a*y*x-s*p*x-a*f*m+o*p*m+s*f*g-o*y*g,i[10]=s*l*x-a*u*x+a*h*m-o*l*m-s*h*g+o*u*g,i[14]=a*u*f-s*l*f-a*h*y+o*l*y+s*h*p-o*u*p,i[3]=c*y*x-u*d*x-c*f*m+h*d*m+u*f*v-h*y*v,i[7]=s*d*x-r*y*x+r*f*m-o*d*m-s*f*v+o*y*v,i[11]=r*u*x-s*c*x-r*h*m+o*c*m+s*h*v-o*u*v,i[15]=s*c*f-r*u*f+r*h*y-o*c*y-s*h*d+o*u*d;var z=o*i[0]+h*i[4]+f*i[8]+x*i[12];if(0===z){var b=\"Matrix4.getInverse(): can't invert matrix, determinant is 0\";if(e)throw new Error(b);return console.warn(b),this.identity(),this}return this.multiplyScalar(1/z),this},r.prototype.applyToVector3Array=function(){var t=new s.default;return function(e,i,n){void 0===i&&(i=0),void 0===n&&(n=e.length);for(var o=0,s=i;o1||isNaN(r))){var a=this.start.clone().add(e.clone().multiplyScalar(r));return a.clone().sub(t.start).lengthSq()+a.clone().sub(t.end).lengthSq()<=t.distanceSq()?a:void 0}}}}]),t}();e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var n=f(i(8)),o=f(i(2)),s=i(0),r=f(i(7)),a=f(i(6)),h=f(i(5)),u=f(i(3)),c=f(i(4)),l=f(i(1));function f(t){return t&&t.__esModule?t:{default:t}}var y={Line3:n.default,lineSegment:o.default,clamp:s.clamp,degToRad:s.degToRad,radToDeg:s.radToDeg,sign:s.sign,Matrix4:r.default,Plane:a.default,point:h.default,quaternion:u.default,rect:c.default,Vector3:l.default};e.Line3=n.default,e.lineSegment=o.default,e.clamp=s.clamp,e.degToRad=s.degToRad,e.radToDeg=s.radToDeg,e.sign=s.sign,e.Matrix4=r.default,e.Plane=a.default,e.point=h.default,e.quaternion=u.default,e.rect=c.default,e.Vector3=l.default,e.default=y}])});\n//# sourceMappingURL=cornerstoneMath.min.js.map","/*! cornerstone-tools - 3.0.0-b.1512 - 2018-12-17 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstone-tools\",[],t):\"object\"==typeof exports?exports[\"cornerstone-tools\"]=t():e.cornerstoneTools=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=10)}([function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;return\"function\"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent(\"CustomEvent\")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}var b={drawColorId:0,radius:10,minRadius:1,maxRadius:50,alpha:.4,renderBrushIfHiddenButActive:!0,hiddenButActiveAlpha:.2,colorMapId:\"BrushColorMap\",visibleSegmentations:{},imageBitmapCache:{},segmentationMetadata:{}},E={radius:function(e){b.radius=Math.min(Math.max(e,b.minRadius),b.maxRadius)},brushColorMap:function(e){var t=f.cornerstone.colors.getColormap(b.colorMapId);t.setNumberOfColors(e.length);for(var n=0;n2&&void 0!==arguments[2])||arguments[2];b.visibleSegmentations[e]||(b.imageBitmapCache[e]=[]),b.visibleSegmentations[e][t]=n},imageBitmapCacheForElement:function(e,t,n){b.imageBitmapCache[e]||(b.imageBitmapCache[e]=[]),b.imageBitmapCache[e][t]=n},clearImageBitmapCacheForElement:function(e){b.imageBitmapCache[e]=[]},metadata:function(e,t,n){b.segmentationMetadata[e]||(b.segmentationMetadata[e]=[]),b.segmentationMetadata[e][t]=n}};var M={state:b,onRegisterCallback:function(){!function(){var e=f.cornerstone.colors.getColormap(b.colorMapId);e.setNumberOfColors(19);for(var t=0;t<19;t++)t0}).forEach(function(t){var n=!1;t.supportedInteractionTypes.forEach(function(e){t.options[\"is\".concat(e,\"Active\")]&&(n=!0)}),n||(console.info(\"Setting tool \".concat(t.name,\"'s to PASSIVE\")),N(e,t.name))})}(e,o,n,a),o.supportedInteractionTypes.forEach(function(e){void 0===a||a.includes(e)?n[\"is\".concat(e,\"Active\")]=!0:n[\"is\".concat(e,\"Active\")]=!1})),F(\"active\",null,e,t,n)},L=function(e,t,n){z(\"active\",e,t,n),_.state.enabledElements.forEach(function(a){D(a,e,t,n)})},A=F.bind(null,\"disabled\",null),H=V.bind(null,\"disabled\",null),R=F.bind(null,\"enabled\",null),U=V.bind(null,\"enabled\",null),N=F.bind(null,\"passive\",x.TOOL_DEACTIVATED),B=V.bind(null,\"passive\",x.TOOL_DEACTIVATED);function F(e,t,n,a,o){var i=O(n,a);i?(o=G(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(i.options.mouseButtonMask)&&(o.mouseButtonMask=o.mouseButtonMask.concat(i.options.mouseButtonMask)),i.mode=e,i.mergeOptions(o),i[\"\".concat(e,\"Callback\")]&&i[\"\".concat(e,\"Callback\")](n,o),t&&T(n,t,{options:o,toolName:a,type:t})):console.warn(\"Unable to find tool '\".concat(a,\"' for enabledElement\"))}function V(e,t,n,a){z(e,n,a),_.state.enabledElements.forEach(function(o){F(e,t,o,n,a)})}function j(e,t,n,a){var o=_.state.tools.find(function(t){return t.element===n&&\"active\"===t.mode&&!0===t.options[\"is\".concat(e,\"Active\")]});o&&(console.info(\"Setting tool \".concat(o.name,\"'s is\").concat(e,\"Active to false\")),o.options[\"is\".concat(e,\"Active\")]=!1)}function z(e,t,n,a){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),_.state.globalToolChangeHistory.push(o);_.state.globalToolChangeHistory.length>50&&_.state.globalToolChangeHistory.shift();var i=_.state.globalTools[t];if(\"active\"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=_.state.globalTools[e];if(o){var i=new o.tool(o.configuration);i.supportedInteractionTypes.forEach(function(e){if(void 0===n||n.includes(e))if(\"Mouse\"===e){var o=G(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach(function(t){return a.push(\"\".concat(e,\"-\").concat(t))}):Array.isArray(o)&&0===o.length&&a.push(\"\".concat(e,\"-DELETE\"))}else\"MultiTouch\"===e?a.push(\"\".concat(e,\"-\").concat(i.configuration.touchPointers)):a.push(e)})}return a}(t,n,a);Object.keys(_.state.globalTools).forEach(function(e){var t=_.state.globalTools[e];t.activeBindings=t.activeBindings.filter(function(e){return!r.includes(e)})}),r.some(function(e){return e.includes(\"Mouse-DELETE\")})&&(i.activeBindings=i.activeBindings.filter(function(e){return!e.includes(\"Mouse\")}),r=r.filter(function(e){return!e.includes(\"Mouse\")})),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[]}}var W={Mouse:function(e,t,n){var a=G(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some(function(e){return a.includes(e)})});o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter(function(e){return!a.includes(e)}),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:j.bind(void 0,\"MouseWheel\"),Touch:function(e,t,n){var a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive}),o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers});a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isTouchActive to false\")),o.options.isMultiTouchActive=!1)},TouchPinch:j.bind(void 0,\"TouchPinch\"),TouchRotate:j.bind(void 0,\"TouchRotate\"),DoubleTap:j.bind(void 0,\"DoubleTap\"),MultiTouch:function(e,t,n){var a,o=_.state.tools.find(function(n){return n.element===t&&\"active\"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers});1===e.configuration.touchPointers&&(a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive})),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isMultiTouchActive to false\")),o.options.isMultiTouchActive=!1),a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1)}};function G(e){if(e!==Object(e)||Array.isArray(e))if(\"number\"==typeof e){var t=[];t.push(e),e={mouseButtonMask:0===e?[]:t}}else null===e?e={mouseButtonMask:[]}:(console.info(\"No options provided when changing tool mode\"),e={});else if(0===e.mouseButtonMask||null===e.mouseButtonMask)e.mouseButtonMask=[];else if(\"number\"==typeof e.mouseButtonMask){var n=[];n.push(e.mouseButtonMask),e.mouseButtonMask=n}return e}var q={activeOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},enabledCallback:function(e){D(e,this.name)}},enabledOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},activeCallback:function(e){R(e,this.name)}}},Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.name,a=t.strategies,i=t.defaultStrategy,r=t.configuration,s=t.supportedInteractionTypes,l=t.mixins;o()(this,e),this.name=n,this.mode=\"disabled\",this.element=void 0,this.supportedInteractionTypes=s||[],this.strategies=a||{},this.defaultStrategy=i||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,this._options={},this._configuration=Object.assign({},r),this.hasCursor=!1,l&&l.length&&this._applyMixins(l)}return r()(e,[{key:\"mergeOptions\",value:function(e){this._options=Object.assign({},this._options,e)}},{key:\"clearOptions\",value:function(){this._options={}}},{key:\"applyActiveStrategy\",value:function(e){return this.strategies[this.activeStrategy](e,this.configuration)}},{key:\"_applyMixins\",value:function(e){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=a.detail,i=o.element,r=o.image,s=a.detail.deltaPoints.image,l=s.x,c=s.y;t.active=!0;for(var u=Object.keys(t.handles),d=0;d2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=s.detail,c=s.detail.element;t.active=!1,t.invalidated=!0,S.isToolLocked=!1,ce[a].forEach(function(e){c.removeEventListener(e,i)}),ue[a].forEach(function(e){c.removeEventListener(e,r)}),n.deleteIfHandleOutsideImage&&re(l,t.handles)&&$(c,e,t);\"function\"==typeof n.doneMovingCallback&&n.doneMovingCallback();f.cornerstone.updateImage(c)}(t,n,o,i,{dragHandler:r,upOrEndHandler:e},a)};n.active=!0,S.isToolLocked=!0,ce[i].forEach(function(e){a.addEventListener(e,r)}),ue[i].forEach(function(e){a.addEventListener(e,s)})};var he={value:!1},ve={mouse:[x.MOUSE_DRAG],touch:[x.TOUCH_DRAG]},ge={mouse:[x.MOUSE_UP,x.MOUSE_CLICK],touch:[x.TOUCH_END,x.TOUCH_DRAG_END,x.TOUCH_PINCH,x.TOUCH_PRESS,x.TAP]},me=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element,s=function(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=l.page,d=f.cornerstone.pageToPixel(c,u.x,\"touch\"===o?u.y+-57:u.y);!1===n.hasMoved&&(n.hasMoved=!0);he.value=!1,n.active=!0,n.x=d.x,n.y=d.y,a.preventHandleOutsideImage&&le(n,s);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function r(l){!function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=t.currentPoints.image,d=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,S.isToolLocked=!1,he.value=!1,ve[i].forEach(function(e){d.removeEventListener(e,s)}),ge[i].forEach(function(e){d.removeEventListener(e,l)}),o.deleteIfHandleOutsideImage&&re(t,n.handles)&&$(d,e,n);c.type===x.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=u.x,a.y=u.y);\"function\"==typeof o.doneMovingCallback&&o.doneMovingCallback();f.cornerstone.updateImage(d)}(t,e,n,a,o,i,{dragHandler:s,upOrEndHandler:r},l)};if(a.active=!0,n.active=!0,S.isToolLocked=!0,ve[i].forEach(function(e){r.addEventListener(e,s)}),ge[i].forEach(function(e){r.addEventListener(e,l)}),\"touch\"===i){he.value=!0;var c=f.cornerstone.getEnabledElement(r),u={x:e.currentPoints.page.x,y:e.currentPoints.page.y+-57},d=f.cornerstone.pageToPixel(r,u.x,u.y);!function e(t,n,a,o){if(!n.value)return;var i=Math.abs(t.y-o.y);var r=i/10;if(i<1)return t.y=o.y,void(n.value=!1);t.y>o.y?t.y-=r:t.y5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element;S.isToolLocked=!0,a.active=!0,n.active=!0;var s=function(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=s.page,d=f.cornerstone.pageToPixel(c,\"touch\"===o?u.x+-57:u.x,\"touch\"===o?u.y+-57:u.y);n.active=!0,n.x=d.x,n.y=d.y,a&&a.preventHandleOutsideImage&&le(n,l);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function e(r){!function(e,t,n,a,o,i,r){var s=i.moveHandler,l=i.moveEndHandler,c=r.detail,u=c.element,d=c.currentPoints.page,h=f.cornerstone.pageToPixel(u,\"touch\"===o?d.x+-57:d.x,\"touch\"===o?d.y+-57:d.y);if(n.active=!1,t.active=!1,S.isToolLocked=!1,n.x=h.x,n.y=h.y,fe[o].forEach(function(e){u.removeEventListener(e,s)}),pe[o].forEach(function(e){u.removeEventListener(e,l)}),u.removeEventListener(x.TOUCH_START,xe),r.type===x.TOUCH_PINCH||r.type===x.TOUCH_PRESS)return n.active=!1,f.cornerstone.updateImage(u),void(\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback());a.preventHandleOutsideImage&&le(n,r.detail.image);a.deleteIfHandleOutsideImage&&re(r.detail,t.handles)&&$(u,e,t);\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback();f.cornerstone.updateImage(u)}(t,n,a,o,i,{moveHandler:s,moveEndHandler:e},r)};fe[i].forEach(function(e){r.addEventListener(e,s)}),pe[i].forEach(function(e){r.addEventListener(e,l)}),r.addEventListener(x.TOUCH_START,xe)};function xe(e){return e.stopImmediatePropagation(),!1}var Te=function(e,t,n,a,o){n.active=!0,S.isToolLocked=!0,me(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},be=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"mouse\",i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=Object.assign({},{doneMovingCallback:function(){n.active=!1,S.isToolLocked=!1}},t.options);n.active=!0,S.isToolLocked=!0,de(e.detail,t.name,n,null,o,a),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Me=function(e){function t(e){var n=e.name,a=e.strategies,i=e.defaultStrategy,r=e.configuration,s=e.supportedInteractionTypes,c=e.mixins;return o()(this,t),l()(this,u()(t).call(this,{name:n,strategies:a,defaultStrategy:i,configuration:r,supportedInteractionTypes:s,mixins:c}))}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){throw new Error(\"Method createNewMeasurement not implemented for \".concat(this.name,\".\"))}},{key:\"pointNearTool\",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error(\"Method pointNearTool not implemented for \".concat(this.name,\".\"))}},{key:\"distanceFromPoint\",value:function(e,t,n){throw new Error(\"Method distanceFromPoint not implemented for \".concat(this.name,\".\"))}},{key:\"renderToolData\",value:function(e){throw new Error(\"renderToolData not implemented for \".concat(this.name,\".\"))}},{key:\"mouseMoveCallback\",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=Q(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:\"mouse\";Te(e,this,t,n,a)}},{key:\"toolSelectedCallback\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"mouse\";Ee(e,this,t,n)}}]),t}(Y),Ce=1,we=2;var Ie={setToolWidth:function(e){Ce=e},getToolWidth:function(){return Ce},setActiveWidth:function(e){we=e},getActiveWidth:function(){return we}},Se=\"white\",ke=\"greenyellow\",Pe=\"transparent\";var _e={setFillColor:function(e){Pe=e},getFillColor:function(){return Pe},setToolColor:function(e){Se=e},getToolColor:function(){return Se},setActiveColor:function(e){ke=e},getActiveColor:function(){return ke},getColorIfActive:function(e){return e.color?e.color:e.active?ke:Se}},Oe=function(e,t){e.save(),t(e),e.restore()},De=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Ie.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),e.stroke(),r&&e.setLineDash([])};function Le(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)})}var Ae=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=a.map(function(e){return f.cornerstone.pixelToCanvas(t,e)})),e.moveTo(n.x,n.y),a.forEach(function(t){var n=t.x,a=t.y;e.lineTo(n,a)})})},He=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Le(e,void 0,t,n,r,\"canvas\"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Ae(e,void 0,n,s,r,\"canvas\")},Re=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n)),De(e,o,function(e){e.arc(n.x,n.y,a,0,2*Math.PI)})},Ue=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a));var i=Math.min(n.x,a.x),r=Math.min(n.y,a.y),s=Math.abs(n.x-a.x),l=Math.abs(n.y-a.y),c=s/2*.5522848,u=l/2*.5522848,d=i+s,h=r+l,v=i+s/2,g=r+l/2;De(e,o,function(e){e.moveTo(i,g),e.bezierCurveTo(i,g-u,v-c,r,v,r),e.bezierCurveTo(v+c,r,d,g-u,d,g),e.bezierCurveTo(d,g+u,v+c,h,v,h),e.bezierCurveTo(v-c,h,i,g+u,i,g),e.closePath()})},Ne=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=_e.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return\"continue\";if(!0===a.drawHandlesIfActive&&!s.active)return\"continue\";var l=s.active?Ie.getActiveWidth():Ie.getToolWidth(),c=a.fill;De(e,{lineWidth:l,fillStyle:c},function(e){var t=f.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||S.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)})},l=0;l0?f.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Le(a,void 0,r,f.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},\"canvas\")},Fe=15,Ve=\"\".concat(Fe,\"px Arial\"),je=\"transparent\";var ze={setFont:function(e){Ve=e},getFont:function(){return Ve},setFontSize:function(e){Fe=e},getFontSize:function(){return Fe},setBackgroundColor:function(e){je=e},getBackgroundColor:function(){return je}},We=function(e,t,n,a,o){var i=ze.getFontSize();e.font=ze.getFont(),e.textBaseline=\"top\",e.fillStyle=a,n.forEach(function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))})},Ge=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function qe(e,t,n){var a=ze.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var Ye=function(e,t,n,a,o,i){\"[object Array]\"!==Object.prototype.toString.call(t)&&(t=[t]);var r=ze.getFontSize(),s=ze.getBackgroundColor(),l=0;t.forEach(function(t){var n=qe(e,t,5);l=Math.max(l,n)});var c={width:l,height:5+t.length*(r+5)};return Oe(e,function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?\"#FF0000\":s;Ge(e,c,r),We(e,c,t,o,5)}),c},Xe=function(e,t,n,a,o,i,r,s,l,c){var u=f.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=Ye(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map(function(e){return u.pixelToCanvas(t,e)});Be(v,d,n.boundingBox,e,r,s)}},Ke=function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(r,s,l,c)})},Ze=function(e){var t=e.getContext(\"2d\");return t.setTransform(1,0,0,1,0,0),t},Je=function(e,t){return void 0===e?t:e},Qe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Je(t.shadowColor,\"#000000\"),e.shadowBlur=Je(t.shadowBlur,0),e.shadowOffsetX=Je(t.shadowOffsetX,1),e.shadowOffsetY=Je(t.shadowOffsetY,1))},$e=function(e,t,n){if(n.vflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},et=function(e){e.setTransform(1,0,0,1,0,0)},tt=function(e,t,n,a){var o=f.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return f.cornerstoneMath.lineSegment.distanceToPoint(i,a)},nt=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n};function at(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}var ot=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Angle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(tt(e,t.handles.start,t.handles.middle,n)<25||tt(e,t.handles.middle,t.handles.end,n)<25)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=Q(e.currentTarget,this.name);if(s)for(var l=Ze(n.canvasContext.canvas),c=Ie.getToolWidth(),u=function(e){var o=s.data[e];if(!1===o.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var s=_e.getColorIfActive(o),l=f.cornerstone.pixelToCanvas(n.element,o.handles.start),u=f.cornerstone.pixelToCanvas(n.element,o.handles.middle);Ae(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var d={color:s,handleRadius:i,drawHandlesIfActive:r};Ne(e,n,o.handles,d);var v=n.image.columnPixelSpacing||1,g=n.image.rowPixelSpacing||1,m={x:(o.handles.middle.x-o.handles.start.x)*v,y:(o.handles.middle.y-o.handles.start.y)*g},p={x:(o.handles.end.x-o.handles.middle.x)*v,y:(o.handles.end.y-o.handles.middle.y)*g},y={x:(o.handles.end.x-o.handles.start.x)*v,y:(o.handles.end.y-o.handles.start.y)*g},x=at(m),T=at(p),b=at(y),E=Math.acos((Math.pow(x,2)+Math.pow(T,2)-Math.pow(b,2))/(2*x*T));if(E*=180/Math.PI,o.rAngle=nt(E,2),o.rAngle){var M,C=function(e,t,n){var a=t&&n?\"\":\" (isotropic)\";return e.rAngle.toString()+String.fromCharCode(parseInt(\"00B0\",16))+a}(o,n.image.rowPixelSpacing,n.image.columnPixelSpacing);if(!o.handles.textBox.hasMoved){M={x:u.x,y:u.y};var w=qe(e,C,5);u.x0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ArrowAnnotate\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{getTextCallback:rt,changeTextCallback:st,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=Q(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Ze(c),d=Ie.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return\"continue\";Oe(u,function(n){Qe(n,t.configuration);var l=_e.getColorIfActive(i),c=f.cornerstone.pixelToCanvas(a,i.handles.start),u=f.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?He(n,u,c,l,d):He(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&Ne(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&\"\"!==v){var m=qe(n,v,5),p=ze.getFontSize()+10,y=Math.max(m,p)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},ht=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,handles:{start:dt(n,a,0),end:dt(n,a,1,{active:!0}),perpendicularStart:dt(n,a,2,{locked:!0}),perpendicularEnd:dt(n,a,3),textBox:dt(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},vt=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=f.cornerstone,i=f.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ne(r.textBox,n))return!0;var c=\"mouse\"===a?S.clickProximity:S.touchProximity;return!!function(e,t,n,a){var o=f.cornerstone,i=f.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)u){var g=u;u=v,v=g}e.longestDiameter=u.toFixed(1),e.shortestDiameter=v.toFixed(1)},ft=function(e,t,n){var a=\" mm\";return t&&n||(a=\" pixels\"),[\" L \".concat(e.longestDiameter).concat(a),\" W \".concat(e.shortestDiameter).concat(a)]},pt=function(e,t){var n=this,a=e.detail,o=a.element,i=a.image,r=this.configuration;if(!yt(i)){var s=this.createNewMeasurement(a),l=function(){s.active=!1,f.cornerstone.updateImage(o)};J(o,this.name,s),f.cornerstone.updateImage(o);var c=(new Date).getTime(),u=s.handles,d=u.end,h=u.perpendicularStart;ye(a,this.name,s,d,{doneMovingCallback:function(){var e=s.handles,t=s.longestDiameter,i=s.shortestDiameter,u=re(a,e),d=parseFloat(t)||0,v=parseFloat(i)||0,g=d<1||v<1,m=(new Date).getTime()-c<150;u||g||m?(s.cancelled=!0,$(o,n.name,s)):r.getMeasurementLocationCallback(s,a,l),h.locked=!1,f.cornerstone.updateImage(o)}},t)}},yt=function(e){var t=f.cornerstone.metaData.get(\"imagePlaneModule\",e.imageId),n=e.rowPixelSpacing,a=e.columnPixelSpacing;return t&&(n=t.rowPixelSpacing||t.rowImagePixelSpacing,a=t.columnPixelSpacing||t.colImagePixelSpacing),!n||!a};var xt={setCoords:function(e){lt=e.currentPoints.canvas},getCoords:function(){return lt}},Tt=function(e){var t=this,n=e.detail,a=n.element;xt.setCoords(n);var o=Q(a,this.name);if(o){for(var i=!1,r=function(e){var r=n.currentPoints.canvas,s=o.data[e],l=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=oe(e,t,n,a),i=!1;return Object.keys(t).forEach(function(e){if(\"textBox\"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}}),i}(a,s.handles,r);Object.keys(s.handles).forEach(function(e){if(\"textBox\"!==e){var t=s.handles[e];t.hover=t.active}}),l&&(i=!0);var c=t.pointNearTool(a,s,r,\"mouse\"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;sn(e,i)?(r.x=y+u*g,r.y=x-u*v,s.x=r.x-d*g,s.y=r.y+d*v):(r.x=m+u*g,r.y=p-u*v,s.x=r.x-d*g,s.y=r.y+d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=f.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=f.cornerstoneMath.lineSegment.intersectLine(l,c),r=f.cornerstoneMath.point.distance(i,n.handles.start),s=f.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||function(e,t){var n=f.cornerstoneMath.point.distance,a=t.handles,o=a.start,i=a.end,r=a.perpendicularStart,s=a.perpendicularEnd,l=r,c=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,l),u=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,e),d=c+u;if(n(l,e)<=c)return!1;var h=n(o,i),v=(o.x-i.x)/h,g=(o.y-i.y)/h,m=o.x-1*v,p=o.y-1*g,y=i.x+1*v,x=i.y+1*g;r.x=e.x+d*g,r.y=e.y-d*v,s.x=e.x,s.y=e.y,s.locked=!1,r.locked=!1;var T={start:{x:o.x,y:o.y},end:{x:i.x,y:i.y}},b={start:{x:r.x,y:r.y},end:{x:s.x,y:s.y}};return f.cornerstoneMath.lineSegment.intersectLine(T,b)||(n(e,o)>n(e,i)?(s.x=y-u*g,s.y=x+u*v,r.x=s.x+d*g,r.y=s.y-d*v):(s.x=m-u*g,s.y=p+u*v,r.x=s.x+d*g,r.y=s.y-d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Et=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mt=function(e,t){Et(e,t,\"x\"),Et(e,t,\"y\"),Et(e,t,\"moving\"),Et(e,t,\"hover\"),Et(e,t,\"active\"),Et(e,t,\"selected\")};var Ct=function(e){var t,n=this,a=e.detail,o=a.element,i=S.clickProximity,r=function(e){t.invalidated=!0,re(a,t.handles)&&$(o,n.name,t),e&&(e.moving=!1,e.selected=!0),o.style.cursor=\"\",f.cornerstone.updateImage(o),o.addEventListener(x.MOUSE_MOVE,n._moveCallback),o.addEventListener(x.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=Q(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=oe.apply(void 0,u);if(d)return o.removeEventListener(x.MOUSE_MOVE,n._moveCallback),o.removeEventListener(x.TOUCH_START,n._moveCallback),t.active=!0,wt(t.handles),d.moving=!0,d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),m=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+m*m)||0)>v?(Mt(s,l),Mt(s,c),Mt(l,u),Object.values(r).find(function(e){return!0===e.moving})):n}(a,t,d),o.style.cursor=d.hasBoundingBox?\"move\":\"none\",function(e,t,n,a,o,i){var r=e.element,s={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},l=function(e){var o=e.detail;a.active=!0,a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+s.x,a.y=o.currentPoints.image.y+s.y):bt(a,o,n,s),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),f.cornerstone.updateImage(r);var l={toolType:t,element:r,measurementData:n};f.cornerstone.triggerEvent(r,x.MEASUREMENT_MODIFIED,l)};r.addEventListener(x.MOUSE_DRAG,l),r.addEventListener(x.TOUCH_DRAG,l);var c=f.cornerstone.getImage(r),u=function(){f.cornerstone.getImage(r).imageId!==c.imageId&&d()};r.addEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u);var d=function e(){r.removeEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u),r.removeEventListener(x.MOUSE_DRAG,l),r.removeEventListener(x.MOUSE_UP,e),r.removeEventListener(x.MOUSE_CLICK,e),r.removeEventListener(x.TOUCH_DRAG,l),r.removeEventListener(x.TOUCH_DRAG_END,e),r.removeEventListener(x.TAP,e),f.cornerstone.updateImage(r),\"function\"==typeof o&&o()};r.addEventListener(x.MOUSE_UP,d),r.addEventListener(x.MOUSE_CLICK,d),r.addEventListener(x.TOUCH_DRAG_END,d),r.addEventListener(x.TAP,d)}(a,n.name,t,d,function(){return r(d)}),St(e),{v:!0}},u=0;u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Bidirectional\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{changeMeasurementLocationCallback:Lt,getMeasurementLocationCallback:Lt,textBox:\"\",shadow:\"\",drawHandlesOnHover:!0,additionalData:[]}},i=Object.assign(a.configuration,n),r=Object.assign(a,{configuration:i});return(e=l()(this,u()(t).call(this,r))).createNewMeasurement=ht.bind(ut()(ut()(e))),e.pointNearTool=vt.bind(ut()(ut()(e))),e.renderToolData=gt.bind(ut()(ut()(e))),e.addNewMeasurement=pt.bind(ut()(ut()(e))),e._moveCallback=Tt.bind(ut()(ut()(e))),e.preMouseDownCallback=Ct.bind(ut()(ut()(e))),e.preTouchStartCallback=Pt.bind(ut()(ut()(e))),e}return h()(t,e),t}(Me),Ht=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"CobbAngle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.hasIncomplete=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,complete:!1,value:\"\",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(tt(e,t.handles.start,t.handles.end,n)<25||tt(e,t.handles.start2,t.handles.end2,n)<25))}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r)for(var s=Ze(n.canvasContext.canvas),l=Ie.getToolWidth(),c=ze.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(s,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Le(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Xe(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)})},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"EllipticalRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x)+7.5,top:Math.min(o.y,i.y)+7.5,width:Math.abs(o.x-i.x)-15,height:Math.abs(o.y-i.y)-15},s={left:Math.min(o.x,i.x)-7.5,top:Math.min(o.y,i.y)-7.5,width:Math.abs(o.x-i.x)+15,height:Math.abs(o.y-i.y)+15},l=Vt(r,n);return!(!Vt(s,n)||l)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ue(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.round(Math.min(a.handles.start.x,a.handles.end.x)),top:Math.round(Math.min(a.handles.start.y,a.handles.end.y)),width:Math.round(Math.abs(a.handles.start.x-a.handles.end.x)),height:Math.round(Math.abs(a.handles.start.y-a.handles.end.y))};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=jt(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=Math.PI*(y.width*(m||1)/2)*(y.height*(g||1)/2),isNaN(l)||(a.area=l),a.invalidated=!1}a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2);var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;ye.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.x+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>o.value}(e,t,n));var a,o,i}function Xt(e,t,n,a){qt(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var Kt=function e(t,n){o()(this,e),this.toolIndex=t,this.handleIndexArray=n},Zt=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];o()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function Jt(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function tn(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var nn={newHandle:function(e,t){var n=t.length-1;return Jt(t,$t(t[n]),$t(e),[n])},end:function(e){var t=e.length-1;return Jt(e,$t(e[t]),$t(e[0]),[t,0])},modify:function(e,t){var n=$t(e[t]),a=t-1;0===t&&(a=e.length-1);var o=$t(e[a]);return!!Jt(e,n,o,[t,a])||Jt(e,n,o=$t(e[a=t===e.length-1?0:t+1]),[t,a])}},an=function(){function e(t){o()(this,e),this._eventData=t}return r()(e,[{key:\"findLine\",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:\"findTool\",value:function(){return this._toolData=Q(this._eventData.element,\"FreehandMouse\"),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:\"_nearestHandleToPointAllTools\",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:5,activeHandleRadius:3,completeHandleRadius:6,alwaysShowHandles:!1,invalidColor:\"crimson\",currentHandle:0,currentTool:-1}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(ut()(ut()(e))),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(ut()(ut()(e))),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(ut()(ut()(e))),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(ut()(ut()(e))),e._editMouseUpCallback=e._editMouseUpCallback.bind(ut()(ut()(e))),e._editMouseDragCallback=e._editMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:[]};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles;if(!a)throw new Error(\"invalid parameters supplied to tool \".concat(this.name,\"'s pointNearTool\"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:\"distanceFromPoint\",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=e.detail,i=o.element;if(n.hasBoundingBox)Te(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};var s=this._pointNearHandleAllTools(o),l=s.handleNearby,c=s.toolIndex;this._modifying=!0,r.currentHandle=l,r.currentTool=c,this._activateModify(i),S.isToolLocked=!0,vn(e)}}},{key:\"_drawingMouseMoveCallback\",value:function(e){var t=e.detail,n=t.element,a=Q(t.element,this.name),o=this.configuration,i=o.currentTool,r=a.data[i],s=t.currentPoints.canvas;this._getMouseLocation(t),this._checkInvalidHandleLocation(r,t);var l=this._pointNearHandle(n,r,s);void 0!==l&&!l.hasBoundingBox&&l\")}},{key:\"_compareDistanceToSpacingCanvas\",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\">\",o=this.configuration;f.cornerstone.pixelToCanvas(e,t),f.cornerstone.pixelToCanvas(e,n);return\">\"===a?f.cornerstoneMath.point.distance(t,n)>o.spacing:f.cornerstoneMath.point.distance(t,n)0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Length\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;return a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!(!a||!1===t.visible)&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l,c=Ze(n.canvasContext.canvas),u=n.image,d=n.element,h=Ie.getToolWidth(),v=f.cornerstone.metaData.get(\"imagePlaneModule\",u.imageId);v?(s=v.rowPixelSpacing||v.rowImagePixelSpacing,l=v.columnPixelSpacing||v.colImagePixelSpacing):(s=u.rowPixelSpacing,l=u.columnPixelSpacing);for(var g=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(c,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,d,a.handles.start,a.handles.end,{color:r});var c={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,c);var u=(a.handles.end.x-a.handles.start.x)*(l||1),v=(a.handles.end.y-a.handles.start.y)*(s||1),g=Math.sqrt(u*u+v*v);if(a.length=g,!a.handles.textBox.hasMoved){var m={x:Math.max(a.handles.start.x,a.handles.end.x)};m.x===a.handles.start.x?m.y=a.handles.start.y:m.y=a.handles.end.y,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}var f=function(e,t,n){var a=\" mm\";t&&n||(a=\" pixels\");return\"\".concat(e.length.toFixed(2)).concat(a)}(a,s,l);Xe(e,d,a.handles.textBox,f,a.handles,p,r,h,10,!0)})},m=0;m0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Probe\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};console.error(\"required eventData not supplieed to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.end);return f.cornerstoneMath.point.distance(o,n)<5}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration.handleRadius,a=Q(e.currentTarget,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=t.image,r=ze.getFontSize(),s=function(e){var s=a.data[e];if(!1===s.visible)return\"continue\";Oe(o,function(e){var a=_e.getColorIfActive(s);Ne(e,t,s.handles,{handleRadius:n,color:a});var o,l,c,u=Math.round(s.handles.end.x),d=Math.round(s.handles.end.y);if(u>=0&&d>=0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RectangleRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x),top:Math.min(o.y,i.y),width:Math.abs(o.x-i.x),height:Math.abs(o.y-i.y)};return f.cornerstoneMath.rect.distanceToPoint(r,n)<5}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ke(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.min(a.handles.start.x,a.handles.end.x),top:Math.min(a.handles.start.y,a.handles.end.y),width:Math.abs(a.handles.start.x-a.handles.end.x),height:Math.abs(a.handles.start.y-a.handles.end.y)};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=yn(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=y.width*(m||1)*(y.height*(g||1)),isNaN(l)||(a.area=l),a.invalidated=!1}var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2),Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"TextMarker\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{markers:[],current:\"\",ascending:!0,loop:!1,changeTextCallback:Tn}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.touchPressCallback=e._changeText.bind(ut()(ut()(e))),e.doubleClickCallback=e._changeText.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(f.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:\"pointNearTool\",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=f.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ne(t.handles.end,n);return a<10||o}}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration,a=Q(t.element,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return\"continue\";var r=_e.getColorIfActive(i);Oe(o,function(e){Qe(e,n);var a=f.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=Ye(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})})},r=0;r3&&void 0!==arguments[3]&&arguments[3];e.forEach(function(e){var o,i=(o=e[0],e[1]*n+o);t[i]=a?0:1})},drawBrushOnCanvas:function(e,t,n,a){var o=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),i=f.cornerstone.pixelToCanvas(a,{x:1,y:1}),r=i.x-o.x,s=i.y-o.y;Oe(t,function(t){e.forEach(function(e){var o=f.cornerstone.pixelToCanvas(a,{x:e[0],y:e[1]}),i={left:o.x,top:o.y,width:r,height:s};Ge(t,i,n)})})},getCircle:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.round(a),r=Math.round(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>n||h<0||d*d+c*c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Brush\",supportedInteractionTypes:[\"Mouse\"],strategies:{overlapping:_n,nonOverlapping:On},defaultStrategy:\"overlapping\",configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"renderBrush\",value:function(e){var t,n=e.detail,a=n.viewport;if(this._drawing?t=this._lastImageCoords:this._mouseUpRender?(t=this._lastImageCoords,this._mouseUpRender=!1):t=_.state.mousePositionImage,t){var o=n.image,i=o.rows,r=o.columns,s=t,l=s.x,c=s.y;if(!(l<0||l>r||c<0||c>i)){this._configuration;var u=kn.radius,d=n.canvasContext,h=n.element,v=kn.drawColorId,g=this._getBrushColor(v);d.setTransform(1,0,0,1,0,0);var m=f.cornerstone,p=u*a.scale,y=m.pixelToCanvas(h,t);d.beginPath(),d.strokeStyle=g,d.ellipse(y.x,y.y,p,p,0,0,2*Math.PI),d.stroke()}}}},{key:\"_paint\",value:function(e){this.applyActiveStrategy(e,this.configuration),f.cornerstone.updateImage(e.detail.element)}}]),t}(Cn);function _n(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData),d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u.data[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u.data[h].pixelData=v}var g=u.data[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u.data[h].invalidated=!0}}function On(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData).data,d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u[h].pixelData=v}var g=u[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u[h].invalidated=!0;for(var p=Cn.getNumberOfColors(),y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Crosshairs\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDownCallback=e._chooseLocation.bind(ut()(ut()(e))),e.mouseDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e.touchDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_chooseLocation\",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=Q(n,this.name);if(a){var o=n,i=f.cornerstone.getEnabledElement(o).image.imageId,r=f.cornerstone.metaData.get(\"imagePlaneModule\",i);if(r){var s=Bn(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach(function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=Q(e,\"stack\");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach(function(e,a){var o=f.cornerstone.metaData.get(\"imagePlaneModule\",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Un(o.imagePositionPatient),r=Un(o.rowCosines),l=Un(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"DoubleTapFitToWindow\",supportedInteractionTypes:[\"DoubleTap\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"doubleTapCallback\",value:function(e){var t=e.detail;f.cornerstone.fitToWindow(t.element)}}]),t}(Y),qn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"DragProbe\",strategies:{default:Yn,minimal:Xn},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).touchDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.touchEndCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.mouseUpCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.initialConfiguration=i,e.dragEventData={},e}return h()(t,e),r()(t,[{key:\"_movingEventCallback\",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,f.cornerstone.updateImage(n)}},{key:\"_endMovingEventCallback\",value:function(e){var t=e.detail.element;this.dragEventData={},f.cornerstone.updateImage(t)}},{key:\"renderToolData\",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(Y),Yn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Ze(s.canvas),c=_e.getActiveColor(),u=ze.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Oe(l,function(e){Qe(e,t);var a,s,l=\"\".concat(d,\", \").concat(h);if(i.color)a=mn(o,d,h,1,1),s=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2],\" A: \").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,m=Rt(i,v);s=\"SP: \".concat(v,\" MO: \").concat(parseFloat(g.toFixed(3))),m&&(s+=\" SUV: \".concat(parseFloat(m.toFixed(3))))}var f={x:r.canvas.x+5,y:r.canvas.y-5};Ye(e,s,f.x,f.y+u+5,c),Ye(e,l,f.x,f.y,c)})},Xn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Ze(s.canvas),u=_e.getActiveColor(),d=r.page.y-ze.getFontSize()/2;l&&(d=r.page.y-4*ze.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Oe(c,function(e){Qe(e,t);var a,r=n.metaData.get(\"generalSeriesModule\",i.imageId),s=r&&r.modality,c=\"\";if(i.color)a=mn(o,h.x,h.y,1,1),c=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if(\"CT\"===s)c+=\"HU: \".concat(g);else if(\"PT\"===s){c+=g;var m=Rt(i,d);m&&(c+=\" SUV: \".concat(parseFloat(m.toFixed(2))))}else c+=g}var f=n.pixelToCanvas(o,h),p={x:12,y:-(ze.getFontSize()+10)/2},y=qe(e,c,5);l&&(p={x:-y/2,y:-ze.getFontSize()-10-12}),Re(e,o,f,6,{color:u},\"canvas\"),Ye(e,c,f.x+p.x,f.y+p.y,u)})},Kn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Eraser\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preMouseDownCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_deleteAllNearbyTools\",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;S.tools.forEach(function(e){var a=Q(n,e.name);a&&a.data.forEach(function(a){\"function\"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&($(n,e.name,a),f.cornerstone.updateImage(n))})});return!0}}]),t}(Y),Zn=rn.FreehandHandleData,Jn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandSculpterMouse\",referencedToolName:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],mixins:[\"activeOrDisabledBinaryTool\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:5,maxSpacing:20,currentTool:null,dragColor:_e.getActiveColor(),hoverColor:_e.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).hasCursor=!0,e.initialConfiguration=i,e.referencedToolName=i.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(ut()(ut()(e))),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;if(this._active){var n=t.canvasContext.canvas.getContext(\"2d\"),a={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};Ne(n,t,this.configuration.mouseLocation.handles,a)}else this.configuration.showCursorOnHover&&this._renderHoverCursor(e)}},{key:\"doubleClickCallback\",value:function(e){var t=e.detail;this._selectFreehandTool(t),f.cornerstone.updateImage(t.element)}},{key:\"preMouseDownCallback\",value:function(e){var t=e.detail;return null===this.configuration.currentTool?this._selectFreehandTool(t):this._initialiseSculpting(t),f.cornerstone.updateImage(t.element),!0}},{key:\"activeMouseDragCallback\",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=Q(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles;this._getMouseLocation(n),this._sculpt(n,o),f.cornerstone.updateImage(n.element)}}}},{key:\"activeMouseUpCallback\",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,S.isToolLocked=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),f.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:\"_renderHoverCursor\",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext(\"2d\"),i=Q(a,this.referencedToolName).data[this.configuration.currentTool];this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=S.mousePositionImage;var r=O(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};Ne(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:\"newImageCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"enabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"passiveCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"disabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"_selectFreehandTool\",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a)}},{key:\"_activateFreehandTool\",value:function(e,t){var n=Q(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;ae.maxSpacing&&a.push(o)}return a}},{key:\"_insertHandleRadially\",value:function(e,t){var n=e.dataHandles,a=t-1,o=this.constructor._getNextHandleIndexBeforeInsert(t,n.length),i=this.constructor._getInsertPosition(e,t,a,o),r=new Zn(i);n.splice(t,0,r),n[a].lines.pop(),n[a].lines.push(n[t]),t===n.length-1?n[t].lines.push(n[0]):n[t].lines.push(n[t+1])}},{key:\"_consolidateHandles\",value:function(e){if(e.dataHandles.length>3){var t=this._findCloseHandlePairs(e);this._mergeCloseHandles(e,t)}}},{key:\"_findCloseHandlePairs\",value:function(e){for(var t=e.dataHandles,n=e.element,a=e.minSpacing,o=[],i=t.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=Q(a,this.referencedToolName).data[i.currentTool],s=1;if(n){var l=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),c=f.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height});s=(c.x-l.x)*(c.y-l.y)/(o.width*o.height)}var u=r.area*s,d=Math.pow(u/Math.PI,.5);return Math.min(t,d)}},{key:\"_getClosestFreehandToolOnElement\",value:function(e,t){var n=O(e,this.referencedToolName),a=Q(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Magnify\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{magnifySize:300,magnificationLevel:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.enabledCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.disabledCallback=e._destroyMagnificationCanvas.bind(ut()(ut()(e))),e.postTouchStartCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.touchEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.postMouseDownCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.mouseDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.mouseUpCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.mouseClickCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.newImageCallback=e._drawMagnificationTool.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_addMagnifyingGlass\",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame(function(){return t._drawMagnificationTool(e)}),e.preventDefault(),e.stopPropagation()}},{key:\"_updateMagnifyingGlass\",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:\"_removeMagnifyingGlass\",value:function(e){e.detail.element.querySelector(\".magnifyTool\").style.display=\"none\",document.body.style.cursor=\"default\",this._removeZoomElement()}},{key:\"_drawMagnificationTool\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector(\"canvas:not(.magnifyTool)\"),o=Ze(n),i=f.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top=\"\".concat(u.top,\"px\"),n.style.left=\"\".concat(u.left,\"px\"),n.style.display=\"block\",document.body.style.cursor=\"none\"}}},{key:\"_drawZoomedElement\",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=f.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement=document.createElement(\"div\"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,f.cornerstone.enable(this.zoomElement,n.options);var r=f.cornerstone.getEnabledElement(this.zoomElement),s=f.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,f.cornerstone.displayImage(this.zoomElement,i),f.cornerstone.setViewport(this.zoomElement,s)}},{key:\"_removeZoomElement\",value:function(){void 0!==this.zoomElement&&(f.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:\"_createMagnificationCanvas\",value:function(e){if(null===e.querySelector(\".magnifyTool\")){var t=document.createElement(\"canvas\");t.classList.add(\"magnifyTool\"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position=\"absolute\",t.style.display=\"none\",e.appendChild(t)}}},{key:\"_destroyMagnificationCanvas\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");n&&t.removeChild(n)}}]),t}(Y),$n=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"PanMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{touchPointers:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Pan\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ReferenceLines\",mixins:[\"enabledOrDisabledBinaryTool\"],configuration:{renderer:ia}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.renderer=null,e.synchronizationContext=null,e}var n;return h()(t,e),r()(t,[{key:\"enabledCallback\",value:(n=oa()(na.a.mark(function e(t){var n,a,o,i=arguments;return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,sa(t);case 4:if(e.sent&&o&&a){e.next=8;break}return console.warn(\"Unable to enable \".concat(this.name,\". Exiting enable callback. Tool will be enabled, but will not render.\")),e.abrupt(\"return\");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case\"end\":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Ze(n.canvasContext.canvas);f.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach(function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)})}}}]),t}(Y),ua=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},da=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Rotate\",strategies:{default:ha,horizontal:va,vertical:ga},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"mouseDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"postMouseDownCallback\",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:\"dragCallback\",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y),ha=function(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=ua(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle},va=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},ga=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},ma=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RotateTouch\",supportedInteractionTypes:[\"TouchRotate\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchRotateCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,f.cornerstone.setViewport(n,a)}}]),t}(Y),fa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ScaleOverlay\",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:[\"enabledOrDisabledBinaryTool\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"enabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=Ze(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=f.cornerstone.metaData.get(\"imagePlaneModule\",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=pa(c,.25,.05),v=pa(c,.05,.15);if(c.width&&c.height&&h&&v){var g=_e.getToolColor(),m=Ie.getToolWidth(),p=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:m},this.configuration);Oe(n,function(e){Qe(e,p),Le(e,i,p.verticalLine.start,p.verticalLine.end,{color:g,lineWidth:m},\"canvas\"),ya(e,i,p),Le(e,i,p.horizontalLine.start,p.horizontalLine.end,{color:g,lineWidth:m},\"canvas\"),xa(e,i,p)})}}else console.warn(\"unable to define rowPixelSpacing or colPixelSpacing from data on \".concat(this.name,\"'s renderToolData\"))}}]),t}(Y),pa=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},ya=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},xa=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},Ta={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function ba(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];return/trident/i.test(n[1])?(e=/\\brv[ :]+(\\d+)/g.exec(t)||[],\"IE \".concat(e[1]||\"\")):\"Chrome\"===n[1]&&null!==(e=t.match(/\\b(OPR|Edge)\\/(\\d+)/))?e.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(e=t.match(/version\\/(\\d+)/i))&&n.splice(1,1,e[1]),n.join(\" \"))}function Ea(){return la||Ma()}function Ma(){var e=ba().split(\" \"),t=e[0],n=e[1],a=Ta[t];return a?a[n]?a[n]:a.default:Ta.default}var Ca={interaction:[],thumbnail:[],prefetch:[]},wa={interaction:0,thumbnail:0,prefetch:0},Ia={interaction:6,thumbnail:6,prefetch:5},Sa=!1,ka=20;function Pa(){Sa&&setTimeout(function(){Oa()},ka)}function _a(e){var t=f.cornerstone,n=e.type;wa[n]++,Sa=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()});else{var s=function(e){return\"prefetch\"===e.type?-5:\"interactive\"===e.type?0:\"thumbnail\"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()})}}function Oa(){var e=Ea();Ia={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(wa.interaction+wa.thumbnail+wa.prefetch),n=0;n1){var i=Q(e,\"stackRenderer\");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=Rn.getStartLoadHandler(),l=Rn.getEndLoadHandler(),c=Rn.getErrorLoadingHandler();if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then(function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}},function(n){var a=r.imageIds[t];c&&c(e,a,n)}),La.startGrabbing(),T(e,x.STACK_SCROLL,u)}}},Ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n)r%=i.imageIds.length;else r=se(r,0,i.imageIds.length-1);if(a)Aa(e,r);else{var s={index:r};i.pending.push(s),function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function e(o){t.imageIds.indexOf(o.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,e),t.pending.length>0&&function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function o(i){t.imageIds.indexOf(i.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,o),t.pending.length>0&&e(t,t.pending[0],a))}),Aa(a,n.index)}}(t,t.pending[0],a))}),Aa(a,n.index)}}(i,s,e)}}};function Ra(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index){e.pending.splice(e.pending.indexOf(t),1);if(e.pending.length>0){Ra(e,e.pending[0],n)}return}var a=function a(o){var i;if(e.imageIds.indexOf(o.detail.image.imageId)===t.index){e.pending.splice(e.pending.indexOf(t),1);n.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);if(e.pending.length>0){Ra(e,e.pending[0],n)}}};n.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);Aa(n,t.index)}}var Ua=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{loop:!1,allowSkipping:!0,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;Ha(a,s?-n:n,i,r)}}]),t}(Y),Na=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Ba=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScroll\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{loop:!1,allowSkipping:!0}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Fa=function(e,t,n,a,o){if(!e)throw new Error(\"getLuminance: parameter element must not be undefined\");t=Math.round(t),n=Math.round(n);var i,r,s,l=f.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"WwwcRegion\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{minWindowWidth:10}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.touchDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.touchEndCallback=e._applyStrategy.bind(ut()(ut()(e))),e.postMouseDownCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseClickCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseUpCallback=e._applyStrategy.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=_e.getColorIfActive({active:!0}),i=Ze(n.canvasContext.canvas);Oe(i,function(e){Ke(e,a,t.handles.start,t.handles.end,{color:o})})}},{key:\"_startOutliningRegion\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return ja(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),f.cornerstone.updateImage(t),!0}},{key:\"_setHandlesAndUpdate\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,f.cornerstone.updateImage(t)}},{key:\"_applyStrategy\",value:function(e){ja(this.handles.start)||ja(this.handles.end)||(e.detail.handles=this.handles,za(e,this.configuration),this._resetHandles())}},{key:\"_resetHandles\",value:function(){this.handles={start:{},end:{}}}}]),t}(Y),ja=function(e){return 0===Object.keys(e).length&&e.constructor===Object},za=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=se(l,0,a.width),c=se(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Fa(o,l,c,u,d),v=Wa(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,f.cornerstone.setViewport(o,g),f.cornerstone.updateImage(o)},Wa=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Wwwc\",strategies:{basicLevelingStrategy:qa},supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{orientation:0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"mouseDragCallback\",value:function(e){this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:\"touchDragCallback\",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y);function qa(e,t){var n=t.orientation,a=e.detail,o=(a.image.maxPixelValue*a.image.slope+a.image.intercept-(a.image.minPixelValue*a.image.slope+a.image.intercept))/1024,i=a.deltaPoints.page.x*o,r=a.deltaPoints.page.y*o;0===n?(a.viewport.voi.windowWidth+=i,a.viewport.voi.windowCenter+=r):(a.viewport.voi.windowWidth+=r,a.viewport.voi.windowCenter+=i)}var Ya=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{minScale:.25,maxScale:20,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Ya(a,r?o/4:-o/4,{maxScale:s,minScale:l});f.cornerstone.setViewport(n,c)}}]),t}(Y),Za=Xa.correctShift,Ja=Xa.changeViewportScale,Qa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Zoom\",strategies:{default:eo,translate:to,zoomToCenter:no},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){$a.call(this,e)}},{key:\"mouseDragCallback\",value:function(e){$a.call(this,e)}}]),t}(Y),$a=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function eo(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],m=Ja(c,r,{maxScale:a,minScale:o});f.cornerstone.setViewport(l,m);var p=f.cornerstone.pageToPixel(l,d,h),y={x:v-p.x,y:g-p.y};y=Za(y,m),c.translation.x-=y.x,c.translation.y-=y.y}function to(e,t){var n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=Ja(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&le(e.detail.startPoints.image,l);var m={x:l.width/2-d,y:l.height/2-h};m=Za(m,v);var f={x:v.translation.x-m.x,y:v.translation.y-m.y};Math.abs(f.x)<.01?v.translation.x=m.x:g.x=f.x/8,Math.abs(f.y)<.01?v.translation.y=m.y:g.y=f.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function no(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;Ja(s,r,{maxScale:a,minScale:o})}var ao=Xa.correctShift,oo=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomTouchPinch\",supportedInteractionTypes:[\"TouchPinch\"],configuration:{minScale:.25,maxScale:20}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchPinchCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var so,lo={48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",13:\"RETURN\",8:\"BACKSPACE\",9:\"TAB\",46:\"DELETE\",12:\"DELETE\",27:\"ESCAPE\",20:\"CAPSLOCK\",173:\"-\",189:\"-\",109:\"-\",61:\"+\",187:\"+\",107:\"+\",219:\"[\",221:\"]\",59:\";\",186:\";\",188:\",\",190:\".\",199:\"/\"},co={\"base/BaseTool\":Y,\"base/BaseAnnotationTool\":Me,\"base/BaseBrushTool\":Cn,\"manipulators/anyHandlesOutsideImage\":re,\"manipulators/getHandleNearImagePoint\":oe,\"manipulators/handleActivator\":ie,\"manipulators/moveAllHandles\":de,\"manipulators/moveHandle\":me,\"manipulators/moveNewHandle\":ye,\"manipulators/moveHandleNearImagePoint\":Te,\"manipulators/findHandleDataNearImagePoint\":be,\"manipulators/moveAnnotation\":Ee,\"mixins/activeOrDisabledBinaryTool\":q.activeOrDisabledBinaryTool,\"mixins/enabledOrDisabledBinaryTool\":q.enabledOrDisabledBinaryTool,\"drawing/getNewContext\":Ze,\"drawing/draw\":Oe,\"drawing/path\":De,\"drawing/setShadow\":Qe,\"drawing/drawLine\":Le,\"drawing/drawLines\":function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"pixel\";De(e,a,function(e){n.forEach(function(n){var a=n.start,i=n.end;if(\"pixel\"===o){var r=f.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)})})},\"drawing/drawJoinedLines\":Ae,\"drawing/drawCircle\":Re,\"drawing/drawEllipse\":Ue,\"drawing/drawRect\":Ke,\"drawing/fillOutsideRect\":function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(r+l,s,-l,c)})},\"drawing/drawTextBox\":Ye,\"drawing/drawArrow\":He,\"drawing/fillBox\":Ge,\"drawing/fillTextLines\":We,\"drawing/drawLink\":Be,\"drawing/drawLinkedTextBox\":Xe,\"drawing/drawHandles\":Ne,\"drawing/textBoxWidth\":qe,\"util/getLuminance\":Fa,\"util/copyPoints\":io,\"util/calculateSUV\":Rt,\"util/setContextToDisplayFontSize\":function(e,t,n){return f.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},\"util/scrollToIndex\":Aa,\"util/scroll\":Ha,\"util/roundToDecimal\":nt,\"util/projectPatientPointToImagePlane\":Nn,\"util/imagePointToPatientPoint\":Bn,\"util/planePlaneIntersection\":Fn,\"util/pointInsideBoundingBox\":ne,\"util/makeUnselectable\":function(e,t){e.style.webkitUserSelect=\"none\",e.style.webkitTouchCallout=\"none\",e.style.mozUserSelect=\"none\",e.style.msUserSelect=\"none\",e.style.oUserSelect=\"none\",e.style.khtmlUserSelect=\"none\",e.style.userSelect=\"none\",e.unselectable=\"on\",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents=\"none\")},\"util/getRGBPixels\":mn,\"util/getDefaultSimultaneousRequests\":Ma,\"util/getMaxSimultaneousRequests\":Ea,\"util/getBrowserInfo\":ba,\"util/isMobileDevice\":function(){return new RegExp(\"Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\").test(navigator.userAgent)},\"util/angleBetweenPoints\":ua,\"util/getKeyFromKeyCode\":function(e){return lo[e]},\"util/numbersWithCommas\":Nt,\"util/lineSegDistance\":tt,\"util/triggerEvent\":T,\"util/convertToVectro3\":Un,\"util/ellipseUtils\":Ft,\"util/freehandUtils\":rn,\"util/brushUtils\":wn,\"util/zoomUtils\":Xa},uo=function(e){return co[e]},ho=!0,vo=200;function go(e){if(\"number\"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function mo(){ho=!1}function fo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_DOUBLE_CLICK,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o);console.log(\"double-click: \".concat(go(e))),T(t,a,{event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function po(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){so=setTimeout(mo,vo),t.removeEventListener(\"mousemove\",yo);var a={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=f.cornerstone.pixelToCanvas(t,a.image);var o=io(a),i={event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:x.MOUSE_DOWN};T(i.element,x.MOUSE_DOWN,i)&&(i.type=x.MOUSE_DOWN_ACTIVATE,T(i.element,x.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",function e(i){clearTimeout(so);var s=x.MOUSE_UP;ho&&(s=x.MOUSE_CLICK);var l={page:f.cornerstoneMath.point.pageToPoint(i),image:f.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=f.cornerstone.pixelToCanvas(t,l.image);var c={page:f.cornerstoneMath.point.subtract(l.page,o.page),image:f.cornerstoneMath.point.subtract(l.image,o.image),client:f.cornerstoneMath.point.subtract(l.client,o.client),canvas:f.cornerstoneMath.point.subtract(l.canvas,o.canvas)};console.log(\"mouseup: \".concat(go(i)));var u={event:i,buttons:go(i),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};T(u.element,s,u),document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e),t.addEventListener(\"mousemove\",yo),ho=!0})}function r(e){var i=x.MOUSE_DRAG,r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,o.page),image:f.cornerstoneMath.point.subtract(r.image,o.image),client:f.cornerstoneMath.point.subtract(r.client,o.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,o.canvas)};console.log(\"mousemove \".concat(go(e)));var l={buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};T(l.element,i,l),o=io(r)}}function yo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_MOVE,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o),r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,i.page),image:f.cornerstoneMath.point.subtract(r.image,i.image),client:f.cornerstoneMath.point.subtract(r.client,i.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,i.canvas)};T(t,a,{viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=io(r)}}function xo(e){e.removeEventListener(\"mousedown\",po),e.removeEventListener(\"mousemove\",yo),e.removeEventListener(\"dblclick\",fo)}var To={enable:function(e){xo(e),e.addEventListener(\"mousedown\",po),e.addEventListener(\"mousemove\",yo),e.addEventListener(\"dblclick\",fo)},disable:xo},bo=function(e){var t=0,n=0,a=0,o=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),a=10*t,o=10*n,\"deltaY\"in e&&(o=e.deltaY),\"deltaX\"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function Eo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){e.preventDefault();var a=e.pageX,o=e.pageY,i=f.cornerstone.pageToPixel(t,a,o),r=bo(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:f.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};T(t,x.MOUSE_WHEEL,h)}}function Mo(e){e.removeEventListener(\"wheel\",Eo,{passive:!1})}var Co,wo,Io={enable:function(e){Mo(e),e.addEventListener(\"wheel\",Eo,{passive:!1})},disable:Mo},So=2e3,ko={mouse:0,touch:1};function Po(e,t){var n=Date.now();if(e!==Co){if(n-wo<=So)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Co=e}wo=n}var _o=Po.bind(null,ko.mouse),Oo=Po.bind(null,ko.touch);function Do(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.addEventListener(t,a,{passive:!1})})}function Lo(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.removeEventListener(t,a)})}var Ao=[\"mousedown\",\"mouseup\"],Ho=[\"touchstart\",\"touchend\"];function Ro(e){Lo(e,Ao,ko.mouse),Lo(e,Ho,ko.touch)}var Uo,No,Bo,Fo,Vo,jo,zo,Wo,Go,qo={enable:function(e){Ro(e),Do(e,Ao,ko.mouse),Do(e,Ho,ko.touch)},disable:Ro},Yo=1,Xo=0,Ko=!1,Zo=!1,Jo=700,Qo=5,$o=\"touchInput\";function ei(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Zo=!1,clearTimeout(zo)),e.type){case\"tap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"doubletap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.DOUBLE_TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"pinchstart\":Zo=!1,clearTimeout(zo),Yo=1;break;case\"pinchmove\":if(Zo=!1,clearTimeout(zo),!0===Ko){Yo=e.scale,Ko=!1;break}o=(e.scale-Yo)/Yo,(Uo={page:e.center,image:f.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PINCH,Vo={event:e,startPoints:Uo,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},T(t,a,Vo),Yo=e.scale;break;case\"touchstart\":Yo=1,clearTimeout(zo),clearTimeout(jo),jo=setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_START,e.touches.length>1&&(a=x.MULTI_TOUCH_START),Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},!0===T(t,a,Vo)&&(a=x.TOUCH_START_ACTIVE,e.touches.length>1&&(a=x.MULTI_TOUCH_START_ACTIVE),Vo.type=a,T(t,a,Vo)),Bo=io(Uo)},50),Zo=!0,Wo=0,zo=setTimeout(function(){Zo&&((No={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PRESS,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo))},Jo);break;case\"touchend\":Yo=1,Zo=!1,clearTimeout(zo),setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:f.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_END,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},T(t,a,Vo)},50);break;case\"panmove\":i={x:e.deltaX-Go.x,y:e.deltaY-Go.y},Go={x:e.deltaX,y:e.deltaY},(No={page:{x:Bo.page.x+i.x,y:Bo.page.y+i.y},image:f.cornerstone.pageToPixel(t,Bo.page.x+i.x,Bo.page.y+i.y),client:{x:Bo.client.x+i.x,y:Bo.client.y+i.y}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},(Wo+=Math.sqrt(Fo.page.x*Fo.page.x+Fo.page.y*Fo.page.y))>Qo&&(Zo=!1,clearTimeout(zo)),a=x.TOUCH_DRAG,e.pointers.length>1&&(a=x.MULTI_TOUCH_DRAG),Vo={viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,numPointers:e.pointers.length,type:a,isTouchEvent:!0},T(t,a,Vo),Bo=io(No);break;case\"panstart\":Go={x:e.deltaX,y:e.deltaY},(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Bo=io(No);break;case\"panend\":if(Zo=!1,clearTimeout(zo),!Bo)return!1;(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},a=x.TOUCH_DRAG_END,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,type:a,isTouchEvent:!0},T(t,a,Vo),2===e.pointers.length-e.changedPointers.length&&(Ko=!0);break;case\"rotatemove\":Zo=!1,clearTimeout(zo),r=e.rotation-Xo,Xo=e.rotation,a=x.TOUCH_ROTATE,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},T(t,a,Vo)}return!1}}function ti(e){qo.disable(e);[\"touchstart\",\"touchend\"].forEach(function(t){e.removeEventListener(t,ei)});var t=jn($o,e).hammer;t&&t.off(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei)}var ni={enable:function(e){ti(e);var t=f.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:\"doubletap\",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei),qo.enable(e),[\"touchstart\",\"touchend\"].forEach(function(t){e.addEventListener(t,ei,{passive:!1})});var c=jn($o,e);c.hammer=a,zn($o,e,c)},disable:ti},ai=function(e,t,n){return t.filter(function(t){return t.element===e&&\"active\"===t.mode&&(void 0===n||t.options[\"is\".concat(n,\"Active\")])})};\"createImageBitmap\"in window||(window.createImageBitmap=function(){var e=oa()(na.a.mark(function e(t){return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e){var n=document.createElement(\"img\");n.addEventListener(\"load\",function(){e(this)});var a=document.createElement(\"canvas\");a.width=t.width,a.height=t.height,a.getContext(\"2d\").putImageData(t,0,0,0,0,a.width,a.height),n.src=a.toDataURL()}));case 1:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}());var oi=_.modules.brush,ii=oi.state,ri=oi.getters,si=oi.setters;function li(e,t,n){var a=e.detail.element,o=n.toolData,i=n.visibleSegmentations;return!!o.data[t].pixelData&&(!!i[t]||ii.drawColorId===t&&ai(a,_.state.tools).filter(function(e){return e instanceof Cn}).length>0)}function ci(e,t,n){var a=n.toolData,o=n.imageBitmapCache,i=n.visibleSegmentations;o&&o[t]&&function(e,t,n){var a=e.detail,o=Ze(a.canvasContext.canvas),i=f.cornerstone.pixelToCanvas(a.element,{x:0,y:0}),r=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:0}),s=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:a.image.height}),l=f.cornerstoneMath.point.distance(i,r),c=f.cornerstoneMath.point.distance(r,s),u=a.canvasContext.canvas,d=a.viewport;o.imageSmoothingEnabled=!1,o.globalAlpha=function(e){if(e)return ii.alpha;return ii.hiddenButActiveAlpha}(n),$e(o,u,d);var h={x:d.translation.x*d.scale,y:d.translation.y*d.scale};o.drawImage(t,u.width/2-l/2+h.x,u.height/2-c/2+h.y,l,c),o.globalAlpha=1,et(o)}(e,o[t],i[t]),a.data[t].invalidated&&function(e,t,n){var a=e.detail,o=a.element,i=f.cornerstone.getEnabledElement(o),r=t.data[n].pixelData,s=ii.colorMapId,l=[[0,0,0,0],f.cornerstone.colors.getColormap(s).getColor(n)],c=new ImageData(a.image.width,a.image.height),u={stats:{},minPixelValue:0,getPixelData:function(){return r}};f.cornerstone.storedPixelDataToCanvasImageDataColorLUT(u,l,c.data),window.createImageBitmap(c).then(function(e){si.imageBitmapCacheForElement(i.uuid,n,e),t.data[n].invalidated=!1,f.cornerstone.updateImage(a.element)})}(e,a,t)}var ui=function(e){var t=e.detail.element,n=S.tools.filter(function(e){return e.element===t&&(\"active\"===e.mode||\"passive\"===e.mode||\"enabled\"===e.mode)});n.filter(function(e){return e instanceof Cn}).length>0&&function(e){var t=e.detail,n=t.element,a=Cn.getNumberOfColors(),o=Q(n,Cn.getReferencedToolDataName());if(!o){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\")?S.clickProximity:S.touchProximity;return t.filter(function(t){for(var o=Q(e,t.name),i=0;i0})},pi=function(e){if(!S.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mi(n,k.mouseTools()),i=o.filter(function(e){return\"active\"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preMouseDownCallback});if(r)if(r.preMouseDownCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"mouse\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"mouse\")}else{var g=o.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"mouse\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"mouse\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postMouseDownCallback});if(p)if(p.postMouseDownCallback(e))return}}}},yi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=ai(n,k.mouseTools());if(0!==(a=a.filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive})).length){var o=a[0];if(\"function\"==typeof o.preMouseDownActivateCallback)if(o.preMouseDownActivateCallback(e))return;o.addNewMeasurement?o.addNewMeasurement(e,\"mouse\"):o instanceof Me&&function(e,t){e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(J(a,t.name,o),f.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?me:ye)(n,t.name,o,o.handles.end,t.options,\"mouse\"))}(e,o)}}},xi=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element;if(0!==(t=(t=(t=ai(a,k.mouseTools())).filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive})).filter(function(e){return\"function\"==typeof e.mouseDragCallback})).length)t[0].mouseDragCallback(e)}},Ti=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element,o=n.currentPoints;S.mousePositionImage=o.image;var i=(t=mi(a,k.mouseTools())).filter(function(e){return\"active\"===e.mode&&e.options.isMouseActive}),r=!1;i.length>0&&(r=i.some(function(e){return e.hasCursor})),t=fi(a,t);for(var s=0;s0&&function(e){var t=e.detail,n=t.element,a=Q(n,Cn.getReferencedToolDataName());if(!a){for(var o=Cn.getNumberOfColors(),i=0;i0){var i=o[0],r=Q(n,i.name),s=r.data.find(function(e){return void 0!==oe(n,e.handles,a,28)});r.data.active=!0,s.active=!0,f.cornerstone.updateImage(n);var l=Object.assign({},{doneMovingCallback:function(){Di(r)}},i.options);return me(e.detail,i.name,r.data,s,l,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var c=t.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a)})});if(c.length>0){var u=c[0],d=Q(n,u.name),h=d.data.find(function(e){return u.pointNearTool(n,e,a)});h.active=!0,f.cornerstone.updateImage(n);var v=Object.assign({},{doneMovingCallback:function(){Di(d)}},u.options);return de(e.detail,u.name,h,null,v,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var g=ai(n,k.touchTools());return g.length>0&&g[0].touchStartActiveCallback?g[0].touchStartActiveCallback(e):Oi(e),!1}},Hi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mi(n,k.touchTools()),i=o.filter(function(e){return\"active\"===e.mode&&e.options.isTouchActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preTouchStartCallback});if(r)if(r.preTouchStartCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"touch\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a,\"touch\"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"touch\")}else{var g=s.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"touch\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"touch\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postTouchStartCallback});if(p)if(p.postTouchStartCallback(e))return}}}},Ri=vi.bind(null,\"DoubleTap\",\"doubleTapCallback\"),Ui=vi.bind(null,\"Touch\",\"touchDragCallback\"),Ni=vi.bind(null,\"Touch\",\"touchEndCallback\"),Bi=vi.bind(null,\"TouchPinch\",\"touchPinchCallback\"),Fi=vi.bind(null,\"Touch\",\"touchPressCallback\"),Vi=vi.bind(null,\"TouchRotate\",\"touchRotateCallback\"),ji=function(e){e.addEventListener(x.TAP,Ai),e.addEventListener(x.TOUCH_START,Hi,{passive:!1}),e.addEventListener(x.TOUCH_DRAG,Ui,{passive:!1}),e.addEventListener(x.TOUCH_END,Ni),e.addEventListener(x.TOUCH_START_ACTIVE,Oi),e.addEventListener(x.TOUCH_PRESS,Fi),e.addEventListener(x.DOUBLE_TAP,Ri),e.addEventListener(x.TOUCH_PINCH,Bi),e.addEventListener(x.TOUCH_ROTATE,Vi),e.addEventListener(x.MULTI_TOUCH_DRAG,_i)},zi=function(e){e.removeEventListener(x.TAP,Ai),e.removeEventListener(x.TOUCH_START,Hi),e.removeEventListener(x.TOUCH_DRAG,Ui),e.removeEventListener(x.TOUCH_END,Ni),e.removeEventListener(x.TOUCH_START_ACTIVE,Oi),e.removeEventListener(x.TOUCH_PRESS,Fi),e.removeEventListener(x.DOUBLE_TAP,Ri),e.removeEventListener(x.TOUCH_PINCH,Bi),e.removeEventListener(x.TOUCH_ROTATE,Vi),e.removeEventListener(x.MULTI_TOUCH_DRAG,_i)},Wi=function(e,t,n){var a=new t(n);O(e,a.name)?console.warn(\"\".concat(a.name,\" has already been added to the target element\")):(a.element=e,_.state.tools.push(a))},Gi=function(e,t){qi(e,t),_.state.enabledElements.forEach(function(n){Wi(n,e,t)})},qi=function(e,t){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var n=new e(t);void 0!==_.state.globalTools[n.name]?console.warn(\"\".concat(n.name,\" has already been added globally\")):_.state.globalTools[n.name]={tool:e,configuration:t,activeBindings:[]}}},Yi=function(e){console.log(\"EVENT:ELEMENT_ENABLED\");var t=e.detail.element;di(t),ki(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.enable(t),Io.enable(t),wi(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.enable(t),ji(t)),Xi(t)},Xi=function(e){_.state.enabledElements.push(e),_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;Object.keys(_.state.globalTools).forEach(function(t){var n=_.state.globalTools[t],a=n.tool,o=n.configuration;Wi(e,a,o)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;var t={active:D,passive:N,enabled:R,disabled:A};_.state.globalToolChangeHistory.forEach(function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)})}(e)};var Ki=function(e){console.info(\"EVENT:ELEMENT_DISABLED\");var t=e.detail.element;hi(t),Pi(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.disable(t),Io.disable(t),Ii(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.disable(t),zi(t)),Zi(t),Ji(t)},Zi=function(e){_.state.tools=_.state.tools.filter(function(t){return t.element!==e})},Ji=function(e){_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)})}(e);var t=_.state.enabledElements.findIndex(function(t){return t===e});t>-1?_.state.enabledElements.splice(t,1):console.warn(\"unable to remove element\")};var Qi,$i=function(){window.removeEventListener(\"resize\",er,!1)};function er(){Qi||(Qi=setTimeout(function(){Qi=null,tr()},66))}var tr=function(){S.enabledElements.forEach(function(e){f.cornerstone.resize(e)})},nr=function(){$i(),window.addEventListener(\"resize\",er,!1)},ar=function(e){var t;!function(){!function(){var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Yi),e.events.removeEventListener(n,Ki)}();var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Yi),e.events.addEventListener(n,Ki)}(),t=_.modules,Object.keys(t).forEach(function(e){\"function\"==typeof t[e].onRegisterCallback&&t[e].onRegisterCallback()}),nr(),_.modules.globalConfiguration.state=Object.assign({},_.modules.globalConfiguration.state,e)};var or,ir=\"stackPrefetch\",rr=\"prefetch\",sr={maxImagesToPrefetch:1/0},lr=10;var cr=function(e){return Math.max.apply(null,e)},ur=function(e){return Math.min.apply(null,e)};function dr(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0],a=Q(e,ir);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort(function(e,t){return e-t}),o.indicesToRequest.slice().forEach(function(e){var t=n.imageIds[e];t&&(f.cornerstone.imageCache.getImageLoadObject(t)&&b(e))}),o.indicesToRequest.length){La.clearRequestStack(rr);for(var i,r,s,l,c,u,d=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=[],l=[],i.forEach(function(e){er&&l.push(e)}),{low:i.indexOf(cr(s)),high:i.indexOf(ur(l))}),h=Rn.getErrorLoadingHandler(),v=d.low,g=d.high;v>=0||gsr.maxImagesToPrefetch,y=o.indicesToRequest[g]-m>sr.maxImagesToPrefetch,x=!p&&v>=0,T=!y&&g-1&&o.indicesToRequest.splice(t,1)}function E(e){b(n.imageIds.indexOf(e.imageId))}function M(t){console.log(\"prefetch errored: \".concat(t)),h&&h(e,c,t,\"stackPrefetch\")}}function hr(e){return function(t){var n,a=t.detail;try{n=Q(e,\"stack\")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=Q(e,ir);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function vr(e){clearTimeout(or),or=setTimeout(function(){var t=e.target;try{dr(t)}catch(e){return}},lr)}var gr={enable:function(e){Q(e,ir).data=[];var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:function(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),J(e,ir,a),dr(e),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr),e.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var i=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),f.cornerstone.events.addEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else console.warn(\"A stack that should not be cached was given the stackPrefetch\")}},disable:function(e){clearTimeout(or),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var t=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=Q(e,ir);n&&n.data.length&&(n.data[0].enabled=!1,La.clearRequestStack(rr))},getConfiguration:function(){return sr},setConfiguration:function(e){var t;sr=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,la=t)}},mr=function(){function e(){o()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return r()(e,[{key:\"render\",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error(\"FusionRenderer: render - Image ID Index is not an integer\");if(!this.findImageFn)throw new Error(\"No findImage function has been defined\");t||(t=Q(e,\"stack\").data);var a=f.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then(function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach(function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then(function(t){a.setLayerImage(e,t,c),a.updateImage(e)}):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))})})}}]),e}(),fr={};fr.FusionRenderer=mr;var pr=fr,yr=\"playClip\";function xr(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Tr(e,t){var n,a;if(void 0===e)throw new Error(\"playClip: element must not be undefined\");var o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i,r=f.cornerstone;if(o.data.length>1){var s=Q(e,\"stackRenderer\");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=Q(e,yr);c&&c.data&&c.data.length?xr(n=c.data[0]):J(e,yr,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,(\"number\"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return xr(n),void function(e){var t={element:e};T(e,x.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rn.getStartLoadHandler(),a=Rn.getEndLoadHandler(),s=Rn.getErrorLoadingHandler(),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then(function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}},function(t){var n=l.imageIds[c];s&&s(e,n,t)}))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout(function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()},0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function br(e){var t=Q(e,yr);t&&t.data&&t.data.length&&xr(t.data[0])}var Er=function(e,t){var n=_.state.tools.findIndex(function(n){return n.element===e&&n.name===t});n>=0&&_.state.tools.splice(n,1)},Mr=function(e){Cr(e),_.state.enabledElements.forEach(function(t){Er(t,e)})},Cr=function(e){_.modules.globalConfiguration.state.globalToolSyncEnabled&&_.state.globalTools[e]&&delete _.state.globalTools[e]},wr=function(e,t,n){var a=O(e,t);a&&a.mergeOptions(n)},Ir=function(e,t){S.enabledElements.forEach(function(e){wr(e,t)})};function Sr(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var kr=[];function Pr(e,t){var n=Z(e);n||(n=K);var a=[\"stack\",\"stackPrefetch\",\"playClip\",\"volume\",\"slab\",\"referenceLines\",\"crosshairs\",\"stackRenderer\"];t&&(a=a.concat(t));var o=Sr(a,n);kr.push(o),te(e,o)}var _r={newStackSpecificToolStateManager:Sr,addStackStateManager:Pr};function Or(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else{if(!(r.z>1e-4&&r.z>r.x&&r.z>r.y))break;n+=i,r.z=0}return n},invertOrientationString:function(e){var t=e.replace(\"H\",\"f\");return t=(t=(t=(t=(t=(t=t.replace(\"F\",\"h\")).replace(\"R\",\"l\")).replace(\"L\",\"r\")).replace(\"A\",\"p\")).replace(\"P\",\"a\")).toUpperCase()}},Ar=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"image/png\",a=e.querySelector(\"canvas\");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement(\"a\");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent(\"MouseEvents\");r.initMouseEvent(\"click\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent(\"onclick\")},Hr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return Object.keys(P).some(function(t){return t===e})}(e)){if(console.warn(\"A module with the name \".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting module \".concat(e))}P[e]=t};var Rr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return void 0!==q[e]}(e)){if(console.warn(\"mixins/\".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting mixins/\".concat(e))}q[e]=t,co[\"mixins/\".concat(e)]=q[e]};var Ur=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t){return void 0!==co[\"\".concat(e,\"/\").concat(t)]}(e,t)){if(console.warn(\"\".concat(e,\"/\").concat(t,\" is already registered\")),!a)return;console.warn(\"Overwriting \".concat(e,\"/\").concat(t))}co[\"\".concat(e,\"/\").concat(t)]=n};var Nr=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t,n){if(!e)return console.warn(\"The type must be given in order to register.\"),!1;if(!t)return console.warn(\"The \".concat(e,\" must have a name in order to register.\")),!1;if(\"object\"!==y()(n)&&\"function\"!=typeof n)return console.warn(\"The \".concat(n,\" is a \").concat(y()(n),\", it should be an Object or a function.\")),!1;return!0}(e,t,n))switch(e){case\"module\":Hr(t,n,a);break;case\"mixin\":Rr(t,n,a);break;default:Ur(e,t,n,a),console.warn(\"unrecognised type \".concat(e,\", not registering \").concat(t))}};var Br=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=0;n=0;--i){var r=this.tryEntries[i],s=r.completion;if(\"root\"===r.tryLoc)return a(\"end\");if(r.tryLoc<=this.prev){var l=o.call(r,\"catchLoc\"),c=o.call(r,\"finallyLoc\");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,\"finallyLoc\")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if(\"throw\"===a.type){var o=a.arg;P(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:O(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=n),m}}}function T(e,t,n,a){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),r=new _(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error(\"Generator is already running\");if(a===g){if(\"throw\"===o)throw i;return D()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===m)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);a=v;var l=b(e,t,n);if(\"normal\"===l.type){if(a=n.done?g:h,l.arg===m)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(a=g,n.method=\"throw\",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}function E(){}function M(){}function C(){}function w(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise(function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if(\"throw\"!==s.type){var l=s.arg,c=l.value;return c&&\"object\"==typeof c&&o.call(c,\"__await\")?Promise.resolve(c.__await).then(function(e){t(\"next\",e,i,r)},function(e){t(\"throw\",e,i,r)}):Promise.resolve(c).then(function(e){l.value=e,i(l)},function(e){return t(\"throw\",e,i,r)})}r(s.arg)}(n,a,t,i)})}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=n,S(e,t),\"throw\"===t.method))return m;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return m}var o=b(a,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,m;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,m):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,m)}function k(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 P(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function O(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(11),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t\\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","import dicomParser from 'dicom-parser';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';\nimport cornerstoneMath from 'cornerstone-math';\nimport cornerstoneTools from 'cornerstone-tools';\nimport Hammer from 'hammerjs';\nimport OHIF from 'ohif-core';\n//import sha from './sha.js';\n//import version from './version.js';\nimport { homepage } from '../package.json';\n\nwindow.info = {\n //sha,\n //version,\n homepage\n};\n\n// For debugging\nwindow.cornerstone = cornerstone;\nwindow.cornerstoneTools = cornerstoneTools;\nwindow.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\ncornerstoneTools.external.cornerstone = cornerstone;\ncornerstoneTools.external.Hammer = Hammer;\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\ncornerstoneTools.init();\n\ncornerstoneWADOImageLoader.external.cornerstone = cornerstone;\ncornerstoneWADOImageLoader.external.dicomParser = dicomParser;\n\nOHIF.external.cornerstone = cornerstone;\nOHIF.external.cornerstoneTools = cornerstoneTools;\nOHIF.external.cornerstoneMath = cornerstoneMath;\nOHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\n// TODO: Is there a better way to guess ROOT_URL?\nlet ROOT_URL = window.location.pathname;\n\n// If the page we are on is not a subset of the expected homepage\n// provided in the package.json file, we might be doing local development.\n// In this case, set the base URL to the current location's origin.\nif (homepage.includes(window.location.origin) === false) {\n ROOT_URL = window.location.origin;\n}\n\nconst config = {\n maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),\n startWebWorkersOnDemand: true,\n webWorkerPath: ROOT_URL + '/cornerstoneWADOImageLoaderWebWorker.min.js',\n taskConfiguration: {\n decodeTask: {\n loadCodecsOnStartup: true,\n initializeCodecsOnStartup: false,\n codecsPath: ROOT_URL + '/cornerstoneWADOImageLoaderCodecs.min.js',\n usePDFJS: false,\n strict: false\n }\n }\n};\n\ncornerstoneWADOImageLoader.webWorkerManager.initialize(config);\n\n\nOHIF.user.getAccessToken = () => {\n // TODO: Get the Redux store from somewhere else\n const state = window.store.getState();\n if (!state.oidc || !state.oidc.user) {\n return;\n }\n\n return state.oidc.user.access_token;\n}\n\ncornerstoneWADOImageLoader.configure({\n beforeSend: function(xhr) {\n const headers = OHIF.DICOMWeb.getAuthorizationHeader();\n\n if (headers.Authorization) {\n xhr.setRequestHeader(\"Authorization\", headers.Authorization);\n }\n }\n});\n\n// Set the tool font and font size\n// context.font = \"[style] [variant] [weight] [size]/[line height] [font family]\";\nconst fontFamily =\n 'Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif';\ncornerstoneTools.textStyle.setFont(`16px ${fontFamily}`);\n\n// Set the tool width\ncornerstoneTools.toolStyle.setToolWidth(2);\n// Set color for inactive tools\ncornerstoneTools.toolColors.setToolColor('rgb(255, 255, 0)');\n\n// Set color for active tools\ncornerstoneTools.toolColors.setActiveColor('rgb(0, 255, 0)');\n\ncornerstoneTools.store.state.touchProximity = 40;\n","const defaultState = {\n leftSidebarOpen: true,\n rightSidebarOpen: false,\n}\n\nconst ui = (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LEFT_SIDEBAR_OPEN':\n return Object.assign({}, state, { leftSidebarOpen: action.state });\n case 'SET_RIGHT_SIDEBAR_OPEN':\n return Object.assign({}, state, { rightSidebarOpen: action.state });\n default:\n return state;\n }\n};\n\nexport default ui;\n","import React, { PureComponent, Component } from 'react';\nimport reactDom from 'react-dom';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".CineDialog {\\n background: var(--ui-gray-darkest);\\n color: var(--text-secondary-color);\\n filter: drop-shadow(0 0 3px var(--ui-gray-darkest));\\n border: none;\\n border-radius: 8px;\\n width: inherit;\\n}\\n.CineDialog h5 {\\n font-size: 20px;\\n line-height: 35px;\\n margin: 0;\\n}\\n.CineDialog h5,\\n.CineDialog label {\\n font-weight: 400;\\n}\\n.CineDialog .cine-navigation,\\n.CineDialog .cine-controls,\\n.CineDialog .cine-options {\\n cursor: default;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"] {\\n background-color: transparent;\\n border: 0 none;\\n outline: 0 none;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"]::-ms-tooltip {\\n display: none;\\n}\\n.CineDialog .double-row-style {\\n box-sizing: border-box;\\n width: 290px;\\n height: 80px;\\n padding: 10px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .double-row-style .cine-navigation {\\n position: absolute;\\n right: 16px;\\n top: 10px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn {\\n padding: 0 4px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 32px;\\n}\\n.CineDialog .double-row-style .cine-controls {\\n left: 0px;\\n}\\n.CineDialog .double-row-style .cine-options {\\n padding: 0px 0;\\n}\\n.CineDialog .double-row-style .cine-options .fps-section {\\n width: 175px;\\n float: left;\\n}\\n.CineDialog .double-row-style .cine-options .fps {\\n float: right;\\n margin: 5px 20px 0 0;\\n}\\n.CineDialog .single-row-style {\\n box-sizing: content-box;\\n width: 425px;\\n height: 45px;\\n padding: 4px 8px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .single-row-style .cine-navigation {\\n float: right;\\n overflow: hidden;\\n padding-right: 12px;\\n position: relative;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn {\\n padding: 0 2px;\\n margin: 0 0 0 2px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn:first-of-type {\\n margin-left: 0;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 45px;\\n}\\n.CineDialog .single-row-style .cine-controls {\\n position: relative;\\n float: left;\\n overflow: hidden;\\n}\\n.CineDialog .single-row-style .cine-controls .btn {\\n font-size: 22px;\\n line-height: 45px;\\n min-width: 28px;\\n padding: 0 0px;\\n margin: 0 4px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-options {\\n display: block;\\n position: relative;\\n width: 150px;\\n float: left;\\n overflow: hidden;\\n padding: 0;\\n margin: 0 0 0 10px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section {\\n display: block;\\n float: left;\\n width: 80px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section input[type=\\\"range\\\"] {\\n line-height: 45px;\\n height: 45px;\\n}\\n.CineDialog .single-row-style .cine-options .fps {\\n display: block;\\n width: 68px;\\n float: left;\\n padding: 0;\\n margin: 0 0 0 2px;\\n text-align: center;\\n line-height: 45px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n}\\n.CineDialog .btn {\\n color: var(--text-secondary-color);\\n background-color: transparent;\\n border: 0;\\n border-radius: 4px;\\n font-size: 15px;\\n font-weight: normal;\\n height: 37px;\\n line-height: 37px;\\n padding: 0 12px;\\n}\\n.CineDialog .btn:hover,\\n.CineDialog .btn:active,\\n.CineDialog .btn.active {\\n color: var(--hover-color);\\n}\\n.CineDialog .btn[disabled]:hover {\\n color: inherit;\\n}\\n.CineDialog .btn[disabled]:active {\\n color: var(--text-secondary-color);\\n}\\n.CineDialog .btn.btn-primary,\\n.CineDialog .btn.btn-secondary,\\n.CineDialog .btn.btn-danger {\\n transition: background-color 0.3s ease;\\n}\\n.CineDialog .btn.btn-primary:hover,\\n.CineDialog .btn.btn-secondary:hover,\\n.CineDialog .btn.btn-danger:hover,\\n.CineDialog .btn.btn-primary:active,\\n.CineDialog .btn.btn-secondary:active,\\n.CineDialog .btn.btn-danger:active,\\n.CineDialog .btn.btn-primary:focus,\\n.CineDialog .btn.btn-secondary:focus,\\n.CineDialog .btn.btn-danger:focus {\\n opacity: 0.8;\\n}\\n.CineDialog .btn.btn-primary {\\n background-color: var(--active-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-secondary {\\n background-color: var(--text-secondary-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-danger {\\n background-color: var(--text-destructive-color);\\n color: var(--text-primary-color);\\n}\\n.CineDialog .btn.active {\\n box-shadow: inset 1px 1px 2px var(--ui-gray-darkest);\\n}\\n\";\nstyleInject(css);\n\nvar CineDialog =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CineDialog, _PureComponent);\n\n function CineDialog(props) {\n var _this;\n\n _classCallCheck(this, CineDialog);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CineDialog).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var target = event.target;\n var value = target.value;\n\n if (target.type === 'range') {\n value = parseFloat(target.value);\n }\n\n var name = target.name;\n\n _this.setState(_defineProperty({}, name, value));\n\n if (name === 'cineFrameRate' && _this.props.onFrameRateChanged) {\n _this.props.onFrameRateChanged(parseFloat(value));\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickPlayPause\", function () {\n var value = !_this.state.isPlaying;\n\n _this.setState({\n isPlaying: value\n });\n\n if (_this.props.onPlayPauseChanged) {\n _this.props.onPlayPauseChanged(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickNextButton\", function (event) {\n if (_this.props.onClickNextButton) {\n _this.props.onClickNextButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickBackButton\", function (event) {\n if (_this.props.onClickBackButton) {\n _this.props.onClickBackButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToStart\", function (event) {\n if (_this.props.onClickSkipToStart) {\n _this.props.onClickSkipToStart(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToEnd\", function (event) {\n if (_this.props.onClickSkipToEnd) {\n _this.props.onClickSkipToEnd(event);\n }\n });\n\n _this.state = {\n cineFrameRate: props.cineFrameRate,\n isPlaying: props.isPlaying\n };\n return _this;\n }\n\n _createClass(CineDialog, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // TODO: Not sure if we should just switch this to a stateless\n // fully-controlled component instead\n if (this.props.isPlaying !== prevProps.isPlaying || this.props.isPlaying !== this.state.isPlaying) {\n this.setState({\n isPlaying: this.props.isPlaying\n });\n }\n\n if (this.props.cineFrameRate !== prevProps.cineFrameRate || this.props.cineFrameRate !== this.state.cineFrameRate) {\n this.setState({\n cineFrameRate: this.props.cineFrameRate\n });\n }\n }\n }, {\n key: \"render\",\n // TODO:\n // - Add next / previous display set buttons which just call\n // onClickNextDisplaySet and onClickPreviousDisplaySet which are passed in as props.\n // See https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.html#L38\n // - Add 'isEnabled' prop: https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.js#L301\n value: function render() {\n return React.createElement(\"div\", {\n className: \"CineDialog\"\n }, React.createElement(\"div\", {\n className: \"noselect double-row-style\"\n }, React.createElement(\"div\", {\n className: \"cine-controls\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"cineFirstButton\",\n title: \"Skip to first image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToStart\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-backward\"\n })), React.createElement(\"button\", {\n id: \"cineBackButton\",\n title: \"Previous image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickBackButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-backward\"\n })), React.createElement(\"button\", {\n id: \"cinePlayButton\",\n title: \"Play / Stop\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickPlayPause\n }, React.createElement(\"i\", {\n className: this.state.isPlaying ? 'fa fa-lg fa-stop' : 'fa fa-lg fa-play'\n })), React.createElement(\"button\", {\n id: \"cineNextButton\",\n title: \"Next image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickNextButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-forward\"\n })), React.createElement(\"button\", {\n id: \"cineLastButton\",\n title: \"Skip to last image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToEnd\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-forward\"\n })))), React.createElement(\"div\", {\n className: \"cine-options\"\n }, React.createElement(\"div\", {\n className: \"fps-section\"\n }, React.createElement(\"input\", {\n type: \"range\",\n name: \"cineFrameRate\",\n id: \"cineSlider\",\n min: this.props.cineMinFrameRate,\n max: this.props.cineMaxFrameRate,\n step: this.props.cineStepFrameRate,\n value: this.state.cineFrameRate,\n onChange: this.handleInputChange\n })), React.createElement(\"span\", {\n className: \"fps\"\n }, this.state.cineFrameRate.toFixed(1), \" fps\"))));\n }\n }]);\n\n return CineDialog;\n}(PureComponent);\n\n_defineProperty(CineDialog, \"propTypes\", {\n cineMinFrameRate: propTypes.number.isRequired,\n cineMaxFrameRate: propTypes.number.isRequired,\n cineStepFrameRate: propTypes.number.isRequired,\n cineFrameRate: propTypes.number.isRequired,\n isPlaying: propTypes.bool.isRequired,\n onPlayPauseChanged: propTypes.func,\n onFrameRateChanged: propTypes.func,\n onClickNextButton: propTypes.func,\n onClickBackButton: propTypes.func,\n onClickSkipToStart: propTypes.func,\n onClickSkipToEnd: propTypes.func\n});\n\n_defineProperty(CineDialog, \"defaultProps\", {\n cineMinFrameRate: 1,\n cineMaxFrameRate: 90,\n cineStepFrameRate: 1,\n cineFrameRate: 24,\n isPlaying: false\n});\n\nvar interfaces = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n});\n\nunwrapExports(interfaces);\nvar interfaces_1 = interfaces.HandlerRole;\n\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n}\n\n/* global window */\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread$1({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n createStore: createStore,\n combineReducers: combineReducers,\n bindActionCreators: bindActionCreators,\n applyMiddleware: applyMiddleware,\n compose: compose,\n __DO_NOT_USE__ActionTypes: ActionTypes\n});\n\nvar types = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n});\n\nunwrapExports(types);\nvar types_1 = types.INIT_COORDS;\nvar types_2 = types.BEGIN_DRAG;\nvar types_3 = types.PUBLISH_DRAG_SOURCE;\nvar types_4 = types.HOVER;\nvar types_5 = types.DROP;\nvar types_6 = types.END_DRAG;\n\nvar setClientOffset_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n});\n\nunwrapExports(setClientOffset_1);\nvar setClientOffset_2 = setClientOffset_1.setClientOffset;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\nvar beginDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar ResetCoordinatesAction = {\n type: types.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1(isObject_1(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n});\n\nunwrapExports(beginDrag);\n\nvar publishDragSource = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n});\n\nunwrapExports(publishDragSource);\n\nvar matchesType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n});\n\nunwrapExports(matchesType_1);\n\nvar hover = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n});\n\nunwrapExports(hover);\n\nvar drop = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target.drop(monitor, targetId);\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1(typeof dropResult === 'undefined' || isObject_1(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n});\n\nunwrapExports(drop);\n\nvar endDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n});\n\nunwrapExports(endDrag);\n\nvar dragDrop = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n__export(types);\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag.default(manager),\n publishDragSource: publishDragSource.default(manager),\n hover: hover.default(manager),\n drop: drop.default(manager),\n endDrag: endDrag.default(manager),\n };\n}\nexports.default = createDragDropActions;\n});\n\nunwrapExports(dragDrop);\n\nvar equality = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n});\n\nunwrapExports(equality);\nvar equality_1 = equality.strictEquality;\nvar equality_2 = equality.areCoordsEqual;\nvar equality_3 = equality.areArraysEqual;\n\nvar dragOffset_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.INIT_COORDS:\n case dragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop.HOVER:\n if (equality.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n});\n\nunwrapExports(dragOffset_1);\n\nvar registry = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n});\n\nunwrapExports(registry);\nvar registry_1 = registry.ADD_SOURCE;\nvar registry_2 = registry.ADD_TARGET;\nvar registry_3 = registry.REMOVE_SOURCE;\nvar registry_4 = registry.REMOVE_TARGET;\nvar registry_5 = registry.addSource;\nvar registry_6 = registry.addTarget;\nvar registry_7 = registry.removeSource;\nvar registry_8 = registry.removeTarget;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$1 = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$1;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$1.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = _getNative(_root, 'Map');\n\nvar _Map = Map$1;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\nvar _setCacheAdd = setCacheAdd;\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nvar _setCacheHas = setCacheHas;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\n\nvar _SetCache = SetCache;\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nvar _baseFindIndex = baseFindIndex;\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nvar _baseIsNaN = baseIsNaN;\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nvar _strictIndexOf = strictIndexOf;\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? _strictIndexOf(array, value, fromIndex)\n : _baseFindIndex(array, _baseIsNaN, fromIndex);\n}\n\nvar _baseIndexOf = baseIndexOf;\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && _baseIndexOf(array, value, 0) > -1;\n}\n\nvar _arrayIncludes = arrayIncludes;\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nvar _arrayIncludesWith = arrayIncludesWith;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nvar _arrayMap = arrayMap;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nvar _cacheHas = cacheHas;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = _arrayMap(values, _baseUnary(iteratee));\n }\n if (comparator) {\n includes = _arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = _cacheHas;\n isCommon = false;\n values = new _SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseDifference = baseDifference;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$2 = defineProperty;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$2 ? identity_1 : function(func, string) {\n return _defineProperty$2(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = _baseRest(function(array, values) {\n return isArrayLikeObject_1(array)\n ? _baseDifference(array, values)\n : [];\n});\n\nvar without_1 = without;\n\nvar dragOperation_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: without_1(state.targetIds, payload.targetId) });\n case dragDrop.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n});\n\nunwrapExports(dragOperation_1);\n\nvar refCount_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n return state + 1;\n case registry.REMOVE_SOURCE:\n case registry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n});\n\nunwrapExports(refCount_1);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? _arrayIncludesWith : _arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = _arrayMap(array, _baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new _SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? _cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? _cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseIntersection = baseIntersection;\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject_1(value) ? value : [];\n}\n\nvar _castArrayLikeObject = castArrayLikeObject;\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = _baseRest(function(arrays) {\n var mapped = _arrayMap(arrays, _castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? _baseIntersection(mapped)\n : [];\n});\n\nvar intersection_1 = intersection;\n\nvar dirtiness = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.NONE = [];\nexports.ALL = [];\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n return intersection_1(handlerIds, dirtyIds).length > 0;\n}\nexports.areDirty = areDirty;\n});\n\nunwrapExports(dirtiness);\nvar dirtiness_1 = dirtiness.NONE;\nvar dirtiness_2 = dirtiness.ALL;\nvar dirtiness_3 = dirtiness.areDirty;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nvar _arrayFilter = arrayFilter;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nvar _arrayPush = arrayPush;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nvar _isFlattenable = isFlattenable;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nvar _baseFlatten = baseFlatten;\n\n/* Built-in method references that are verified to be native. */\nvar Set = _getNative(_root, 'Set');\n\nvar _Set = Set;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nvar noop_1 = noop;\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nvar _setToArray = setToArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY) ? noop_1 : function(values) {\n return new _Set(values);\n};\n\nvar _createSet = createSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE$1 = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE$1) {\n var set = iteratee ? null : _createSet(array);\n if (set) {\n return _setToArray(set);\n }\n isCommon = false;\n includes = _cacheHas;\n seen = new _SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseUniq = baseUniq;\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? _baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = _baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return _baseUniq(_baseFlatten(result, 1), iteratee, comparator);\n}\n\nvar _baseXor = baseXor;\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = _baseRest(function(arrays) {\n return _baseXor(_arrayFilter(arrays, isArrayLikeObject_1));\n});\n\nvar xor_1 = xor;\n\nvar dirtyHandlerIds_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness.NONE; }\n switch (action.type) {\n case dragDrop.HOVER:\n break;\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n case registry.REMOVE_TARGET:\n case registry.REMOVE_SOURCE:\n return dirtiness.NONE;\n case dragDrop.BEGIN_DRAG:\n case dragDrop.PUBLISH_DRAG_SOURCE:\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n default:\n return dirtiness.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = xor_1(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n});\n\nunwrapExports(dirtyHandlerIds_1);\n\nvar stateId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n});\n\nunwrapExports(stateId_1);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol;\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nvar _isKey = isKey;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache;\n\nvar memoize_1 = memoize;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nvar _memoizeCapped = memoizeCapped;\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nvar _stringToPath = stringToPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n}\n\nvar _baseToString = baseToString;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : _baseToString(value);\n}\n\nvar toString_1 = toString;\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\n\nvar _castPath = castPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;\n}\n\nvar _toKey = toKey;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nvar _baseGet = baseGet;\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar get_1 = get;\n\nvar reducers = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: get_1(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n});\n\nunwrapExports(reducers);\n\nvar coords = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n});\n\nunwrapExports(coords);\nvar coords_1 = coords.add;\nvar coords_2 = coords.subtract;\nvar coords_3 = coords.getSourceClientOffset;\nvar coords_4 = coords.getDifferenceFromInitialOffset;\n\nvar DragDropMonitorImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n invariant_1(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n var source = this.registry.getSource(sourceId);\n invariant_1(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n var target = this.registry.getTarget(targetId);\n invariant_1(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n var source = this.registry.getSource(sourceId, true);\n invariant_1(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n});\n\nunwrapExports(DragDropMonitorImpl_1);\n\nvar getNextUniqueId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n});\n\nunwrapExports(getNextUniqueId_1);\n\nvar contracts = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction validateSourceContract(source) {\n invariant_1(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n});\n\nunwrapExports(contracts);\nvar contracts_1 = contracts.validateSourceContract;\nvar contracts_2 = contracts.validateTargetContract;\nvar contracts_3 = contracts.validateType;\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/*\n\n\n

License

\n\nUnless stated otherwise all works are:\n\n
\n\nand licensed under:\n\n\n\n

MIT License

\n\n
\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n\n\n*/\ninherits$1(Domain, EventEmitter);\nfunction createEmitError(d) {\n return emitError;\n function emitError(e) {\n d.emit('error', e);\n }\n}\n\nfunction Domain() {\n EventEmitter.call(this);\n this.__emitError = createEmitError(this);\n}\nDomain.prototype.add = function (emitter) {\n emitter.on('error', this.__emitError);\n};\nDomain.prototype.remove = function(emitter) {\n emitter.removeListener('error', this.__emitError);\n};\nDomain.prototype.bind = function(fn) {\n var emitError = this.__emitError;\n return function() {\n var args = Array.prototype.slice.call(arguments);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n};\nDomain.prototype.intercept = function(fn) {\n var emitError = this.__emitError;\n return function(err) {\n if (err) {\n emitError(err);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n }\n};\nDomain.prototype.run = function(fn) {\n var emitError = this.__emitError;\n try {\n fn();\n } catch (err) {\n emitError(err);\n }\n return this\n};\nDomain.prototype.dispose = function() {\n this.removeAllListeners();\n return this\n};\nDomain.prototype.enter = Domain.prototype.exit = function() {\n return this\n};\nfunction createDomain() {\n return new Domain();\n}\nvar create = createDomain;\n\nvar require$$0 = {\n Domain: Domain,\n createDomain: createDomain,\n create: create\n};\n\nvar domain$1; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nvar raw = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index$2 = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index$2 < queue.length) {\n var currentIndex = index$2;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index$2 = index$2 + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index$2 > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index$2; scan < newLength; scan++) {\n queue[scan] = queue[scan + index$2];\n }\n queue.length -= index$2;\n index$2 = 0;\n }\n }\n queue.length = 0;\n index$2 = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain$1) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain$1 = require$$0;\n }\n domain$1.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain$1.active = process.domain = parentDomain;\n }\n}\n\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nvar asap_1 = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n raw(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n raw.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\nvar HandlerRegistryImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces.HandlerRole.SOURCE;\n case 'T':\n return interfaces.HandlerRole.TARGET;\n default:\n invariant_1(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts.validateType(type);\n contracts.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts.validateType(type, true);\n contracts.validateTargetContract(target);\n var targetId = this.addHandler(interfaces.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry.removeSource(sourceId));\n asap_1(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n});\n\nunwrapExports(HandlerRegistryImpl_1);\n\nvar DragDropManagerImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux.createStore(reducers.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(createBackend, context, debugMode) {\n if (context === void 0) { context = {}; }\n if (debugMode === void 0) { debugMode = false; }\n var _this = this;\n this.context = context;\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n this.backend = createBackend(this);\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.getContext = function () {\n return this.context;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n});\n\nunwrapExports(DragDropManagerImpl_1);\n\nvar factories = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createDragDropManager(backend, context, debugMode) {\n return new DragDropManagerImpl_1.default(backend, context, debugMode);\n}\nexports.createDragDropManager = createDragDropManager;\n});\n\nunwrapExports(factories);\nvar factories_1 = factories.createDragDropManager;\n\nvar lib = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(interfaces);\n__export(factories);\n});\n\nunwrapExports(lib);\n\nvar checkDecoratorArguments_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction checkDecoratorArguments(functionName, signature) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (process.env.NODE_ENV !== 'production') {\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg && arg.prototype && arg.prototype.render) {\n // tslint:disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' +\n (\"It should be \" + functionName + \"(\" + signature + \")(Component), not the other way around. \") +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}\nexports.default = checkDecoratorArguments;\n});\n\nunwrapExports(checkDecoratorArguments_1);\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty$1 = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar isClassComponent_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar _default = isClassComponent;\nexports.default = _default;\n});\n\nunwrapExports(isClassComponent_1);\n\nvar DragDropContext_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n/**\n * Create the React Context\n */\nexports.Consumer = (_a = React.createContext({ dragDropManager: undefined }), _a.Consumer), exports.Provider = _a.Provider;\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createChildContext(backend, context, debugMode) {\n return {\n dragDropManager: lib.createDragDropManager(backend, context, debugMode),\n };\n}\nexports.createChildContext = createChildContext;\n/**\n * A React component that provides the React-DnD context\n */\nexports.DragDropContextProvider = function (_a) {\n var backend = _a.backend, context = _a.context, debugMode = _a.debugMode, children = _a.children;\n var contextValue = createChildContext(backend, context, debugMode);\n return React.createElement(exports.Provider, { value: contextValue }, children);\n};\n/**\n * Wrap the root component of your application with DragDropContext decorator to set up React DnD.\n * This lets you specify the backend, and sets up the shared DnD state behind the scenes.\n * @param backendFactory The DnD backend factory\n * @param backendContext The backend context\n */\nfunction DragDropContext(backendFactory, backendContext, debugMode) {\n checkDecoratorArguments_1.default('DragDropContext', 'backend', backendFactory);\n var childContext = createChildContext(backendFactory, backendContext, debugMode);\n return function decorateContext(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragDropContextContainer = /** @class */ (function (_super) {\n __extends(DragDropContextContainer, _super);\n function DragDropContextContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = React.createRef();\n _this.getManager = function () { return childContext.dragDropManager; };\n return _this;\n }\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragDropContextContainer.prototype.render = function () {\n return (React.createElement(exports.Provider, { value: childContext },\n React.createElement(Decorated, __assign({}, this.props, { ref: isClassComponent(Decorated) ? this.ref : undefined }))));\n };\n DragDropContextContainer.DecoratedComponent = DecoratedComponent;\n DragDropContextContainer.displayName = \"DragDropContext(\" + displayName + \")\";\n return DragDropContextContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContextContainer, DecoratedComponent);\n };\n}\nexports.DragDropContext = DragDropContext;\n});\n\nunwrapExports(DragDropContext_1);\nvar DragDropContext_2 = DragDropContext_1.Consumer;\nvar DragDropContext_3 = DragDropContext_1.Provider;\nvar DragDropContext_4 = DragDropContext_1.createChildContext;\nvar DragDropContext_5 = DragDropContext_1.DragDropContextProvider;\nvar DragDropContext_6 = DragDropContext_1.DragDropContext;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$6 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject$1(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$6.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject$1;\n\n//\n\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar DragLayer_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\nfunction DragLayer(collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragLayer', 'collect[, options]', collect, options);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' +\n 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _a = options.arePropsEqual, arePropsEqual = _a === void 0 ? shallowequal : _a;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragLayerContainer = /** @class */ (function (_super) {\n __extends(DragLayerContainer, _super);\n function DragLayerContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n return _this;\n }\n DragLayerContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragLayerContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragLayerContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.handleChange();\n };\n DragLayerContainer.prototype.componentWillUnmount = function () {\n this.isCurrentlyMounted = false;\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n };\n DragLayerContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: isClassComponent(Decorated) ? _this.ref : undefined })));\n }));\n };\n DragLayerContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n };\n DragLayerContainer.prototype.getCurrentState = function () {\n if (!this.manager) {\n return {};\n }\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n };\n DragLayerContainer.displayName = \"DragLayer(\" + displayName + \")\";\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragLayerContainer, DecoratedComponent);\n };\n}\nexports.default = DragLayer;\n});\n\nunwrapExports(DragLayer_1);\n\nvar Disposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable(action) {\n this.isDisposed = false;\n this.action = isFunction_1(action) ? action : noop_1;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n Disposable.isDisposable = function (d) {\n return d && isFunction_1(d.dispose);\n };\n Disposable._fixup = function (result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n };\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n Disposable.create = function (action) {\n return new Disposable(action);\n };\n /** Performs the task of cleaning up resources. */\n Disposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n };\n /**\n * Gets the disposable that does nothing when disposed.\n */\n Disposable.empty = { dispose: noop_1 };\n return Disposable;\n}());\nexports.Disposable = Disposable;\n});\n\nunwrapExports(Disposable_1);\nvar Disposable_2 = Disposable_1.Disposable;\n\nvar SerialDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\nvar SerialDisposable = /** @class */ (function () {\n function SerialDisposable() {\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n SerialDisposable.prototype.getDisposable = function () {\n return this.current;\n };\n SerialDisposable.prototype.setDisposable = function (value) {\n var shouldDispose = this.isDisposed;\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n if (old) {\n old.dispose();\n }\n }\n if (shouldDispose && value) {\n value.dispose();\n }\n };\n /** Performs the task of cleaning up resources. */\n SerialDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n if (old) {\n old.dispose();\n }\n }\n };\n return SerialDisposable;\n}());\nexports.SerialDisposable = SerialDisposable;\n});\n\nunwrapExports(SerialDisposable_1);\nvar SerialDisposable_2 = SerialDisposable_1.SerialDisposable;\n\nvar CompositeDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\nvar CompositeDisposable = /** @class */ (function () {\n function CompositeDisposable() {\n var disposables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n disposables[_i] = arguments[_i];\n }\n this.isDisposed = false;\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n CompositeDisposable.prototype.add = function (item) {\n if (this.isDisposed) {\n item.dispose();\n }\n else {\n this.disposables.push(item);\n }\n };\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n CompositeDisposable.prototype.remove = function (item) {\n var shouldDispose = false;\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n return shouldDispose;\n };\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n CompositeDisposable.prototype.clear = function () {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n CompositeDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n return CompositeDisposable;\n}());\nexports.CompositeDisposable = CompositeDisposable;\n});\n\nunwrapExports(CompositeDisposable_1);\nvar CompositeDisposable_2 = CompositeDisposable_1.CompositeDisposable;\n\nvar disposables = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(Disposable_1);\n__export(SerialDisposable_1);\n__export(CompositeDisposable_1);\n});\n\nunwrapExports(disposables);\n\nvar decorateHandler_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n\n\n\n\nfunction decorateHandler(_a) {\n var DecoratedComponent = _a.DecoratedComponent, createHandler = _a.createHandler, createMonitor = _a.createMonitor, createConnector = _a.createConnector, registerHandler = _a.registerHandler, containerDisplayName = _a.containerDisplayName, getType = _a.getType, collect = _a.collect, options = _a.options;\n var _b = options.arePropsEqual, arePropsEqual = _b === void 0 ? shallowequal : _b;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n var DragDropContainer = /** @class */ (function (_super) {\n __extends(DragDropContainer, _super);\n function DragDropContainer(props) {\n var _this = _super.call(this, props) || this;\n _this.isCurrentlyMounted = false;\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n _this.disposable = new disposables.SerialDisposable();\n _this.receiveProps(props);\n _this.dispose();\n return _this;\n }\n DragDropContainer.prototype.getHandlerId = function () {\n return this.handlerId;\n };\n DragDropContainer.prototype.getDecoratedComponentInstance = function () {\n if (!this.handler) {\n return null;\n }\n return this.handler.ref.current;\n };\n DragDropContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragDropContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.disposable = new disposables.SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n };\n DragDropContainer.prototype.componentDidUpdate = function (prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n };\n DragDropContainer.prototype.componentWillUnmount = function () {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n DragDropContainer.prototype.receiveProps = function (props) {\n if (!this.handler) {\n return;\n }\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n DragDropContainer.prototype.receiveType = function (type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n if (type === this.currentType) {\n return;\n }\n this.currentType = type;\n var _a = registerHandler(type, this.handler, this.manager), handlerId = _a.handlerId, unregister = _a.unregister;\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n this.disposable.setDisposable(new disposables.CompositeDisposable(new disposables.Disposable(unsubscribe), new disposables.Disposable(unregister)));\n };\n DragDropContainer.prototype.dispose = function () {\n this.disposable.dispose();\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n };\n DragDropContainer.prototype.getCurrentState = function () {\n if (!this.handlerConnector) {\n return {};\n }\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(nextState), 'Expected `collect` specified as the second argument to ' +\n '%s for %s to return a plain object of props to inject. ' +\n 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n return nextState;\n };\n DragDropContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: _this.handler && isClassComponent(Decorated)\n ? _this.handler.ref\n : undefined })));\n }));\n };\n DragDropContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n };\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = containerDisplayName + \"(\" + displayName + \")\";\n return DragDropContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContainer, DecoratedComponent);\n}\nexports.default = decorateHandler;\n});\n\nunwrapExports(decorateHandler_1);\n\nvar registerSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n return {\n handlerId: sourceId,\n unregister: unregisterSource,\n };\n}\nexports.default = registerSource;\n});\n\nunwrapExports(registerSource_1);\n\nvar createSourceFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n var SourceImpl = /** @class */ (function () {\n function SourceImpl(monitor) {\n var _this = this;\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n var item = spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(item), 'beginDrag() must return a plain object that represents the dragged item. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n }\n SourceImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n SourceImpl.prototype.canDrag = function () {\n if (!this.props) {\n return false;\n }\n if (!spec.canDrag) {\n return true;\n }\n return spec.canDrag(this.props, this.monitor);\n };\n SourceImpl.prototype.isDragging = function (globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n return spec.isDragging(this.props, this.monitor);\n };\n SourceImpl.prototype.endDrag = function () {\n if (!this.props) {\n return;\n }\n if (!spec.endDrag) {\n return;\n }\n spec.endDrag(this.props, this.monitor, this.ref.current);\n };\n return SourceImpl;\n }());\n return function createSource(monitor) {\n return new SourceImpl(monitor);\n };\n}\nexports.default = createSourceFactory;\n});\n\nunwrapExports(createSourceFactory_1);\n\nvar createSourceMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar SourceMonitor = /** @class */ (function () {\n function SourceMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n SourceMonitor.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n SourceMonitor.prototype.canDrag = function () {\n invariant_1(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n SourceMonitor.prototype.isDragging = function () {\n invariant_1(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n SourceMonitor.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n SourceMonitor.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n SourceMonitor.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n SourceMonitor.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n SourceMonitor.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n SourceMonitor.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n SourceMonitor.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n SourceMonitor.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n SourceMonitor.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n SourceMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n SourceMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n SourceMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n SourceMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n SourceMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n SourceMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n SourceMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n SourceMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return SourceMonitor;\n}());\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\nexports.default = createSourceMonitor;\n});\n\nunwrapExports(createSourceMonitor_1);\n\nvar cloneWithRef_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return React.cloneElement(element, {\n ref: newRef,\n });\n }\n return React.cloneElement(element, {\n ref: function (node) {\n newRef(node);\n if (previousRef) {\n previousRef(node);\n }\n },\n });\n}\nexports.default = cloneWithRef;\n});\n\nunwrapExports(cloneWithRef_1);\n\nvar wrapConnectorHooks_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a
, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!React.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return undefined;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.default(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook; };\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n});\n\nunwrapExports(wrapConnectorHooks_1);\n\nvar createSourceConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createSourceConnector(backend) {\n var currentHandlerId;\n var currentDragSourceNode;\n var currentDragSourceOptions;\n var disconnectCurrentDragSource;\n var currentDragPreviewNode;\n var currentDragPreviewOptions;\n var disconnectCurrentDragPreview;\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = undefined;\n }\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = undefined;\n }\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n var hooks = wrapConnectorHooks_1.default({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode &&\n shallowequal(options, currentDragSourceOptions)) {\n return;\n }\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n reconnectDragSource();\n },\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode &&\n shallowequal(options, currentDragPreviewOptions)) {\n return;\n }\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n reconnectDragPreview();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createSourceConnector;\n});\n\nunwrapExports(createSourceConnector_1);\n\nvar isValidType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isValidType(type, allowArray) {\n return (typeof type === 'string' ||\n typeof type === 'symbol' ||\n (!!allowArray &&\n Array.isArray(type) &&\n type.every(function (t) { return isValidType(t, false); })));\n}\nexports.default = isValidType;\n});\n\nunwrapExports(isValidType_1);\n\nvar DragSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\nfunction DragSource(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type), 'Expected \"type\" provided as the first argument to DragSource to be ' +\n 'a string, or a function that returns a string given the current props. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = createSourceFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource_1.default,\n createMonitor: createSourceMonitor_1.default,\n createConnector: createSourceConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DragSource;\n});\n\nunwrapExports(DragSource_1);\n\nvar registerTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n return {\n handlerId: targetId,\n unregister: unregisterTarget,\n };\n}\nexports.default = registerTarget;\n});\n\nunwrapExports(registerTarget_1);\n\nvar createTargetFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n var TargetImpl = /** @class */ (function () {\n function TargetImpl(monitor) {\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n }\n TargetImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n TargetImpl.prototype.receiveMonitor = function (monitor) {\n this.monitor = monitor;\n };\n TargetImpl.prototype.canDrop = function () {\n if (!spec.canDrop) {\n return true;\n }\n return spec.canDrop(this.props, this.monitor);\n };\n TargetImpl.prototype.hover = function () {\n if (!spec.hover) {\n return;\n }\n spec.hover(this.props, this.monitor, this.ref.current);\n };\n TargetImpl.prototype.drop = function () {\n if (!spec.drop) {\n return undefined;\n }\n var dropResult = spec.drop(this.props, this.monitor, this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(typeof dropResult === 'undefined' || isPlainObject_1(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n return TargetImpl;\n }());\n return function createTarget(monitor) {\n return new TargetImpl(monitor);\n };\n}\nexports.default = createTargetFactory;\n});\n\nunwrapExports(createTargetFactory_1);\n\nvar createTargetMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrop = false;\nvar TargetMonitor = /** @class */ (function () {\n function TargetMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n TargetMonitor.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n TargetMonitor.prototype.canDrop = function () {\n invariant_1(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n TargetMonitor.prototype.isOver = function (options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n TargetMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n TargetMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n TargetMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n TargetMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n TargetMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n TargetMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n TargetMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n TargetMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return TargetMonitor;\n}());\nexports.TargetMonitor = TargetMonitor;\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\nexports.default = createTargetMonitor;\n});\n\nunwrapExports(createTargetMonitor_1);\nvar createTargetMonitor_2 = createTargetMonitor_1.TargetMonitor;\n\nvar createTargetConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createTargetConnector(backend) {\n var currentHandlerId;\n var currentDropTargetNode;\n var currentDropTargetOptions;\n var disconnectCurrentDropTarget;\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = undefined;\n }\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n var hooks = wrapConnectorHooks_1.default({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode &&\n shallowequal(options, currentDropTargetOptions)) {\n return;\n }\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n reconnectDropTarget();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createTargetConnector;\n});\n\nunwrapExports(createTargetConnector_1);\n\nvar DropTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' +\n 'a string, an array of strings, or a function that returns either given ' +\n 'the current props. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = createTargetFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget_1.default,\n createMonitor: createTargetMonitor_1.default,\n createConnector: createTargetConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DropTarget;\n});\n\nunwrapExports(DropTarget_1);\n\nvar lib$1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.DragDropContext = DragDropContext_1.DragDropContext;\nexports.DragDropContextProvider = DragDropContext_1.DragDropContextProvider;\n\nexports.DragLayer = DragLayer_1.default;\n\nexports.DragSource = DragSource_1.default;\n\nexports.DropTarget = DropTarget_1.default;\n});\n\nunwrapExports(lib$1);\nvar lib_1 = lib$1.DragDropContext;\nvar lib_2 = lib$1.DragDropContextProvider;\nvar lib_3 = lib$1.DragLayer;\nvar lib_4 = lib$1.DragSource;\nvar lib_5 = lib$1.DropTarget;\n\nvar css$1 = \".ExampleDropTarget {\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\\n width: 100%;\\n min-height: 100px;\\n\\n border: 2px dashed black;\\n padding: 20px;\\n transition: 0.2s all ease;\\n}\\n\\n.ExampleDropTarget h4,\\n.ExampleDropTarger p {\\n text-align: center;\\n word-break: break-word;\\n}\\n\\n.ExampleDropTarget.can-drop {\\n border: 2px dashed #20a5d6;\\n background-color: #fafafa;\\n color: black;\\n}\\n\\n.ExampleDropTarget.hovered {\\n border: 2px dashed #20a5d6;\\n background-color: black;\\n color: #91b9cd;\\n}\\n\";\nstyleInject(css$1);\n\n// if they have the same string type.\n\nvar Types = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget = {\n drop: function drop(props, monitor, component) {\n // Note: For this example we use setState, but in\n // OHIF we will update the redux store instead\n var item = monitor.getItem();\n component.setState({\n item: {\n id: item.id,\n seriesDescription: item.seriesDescription\n }\n });\n return {\n id: 'ExampleDropTarget'\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar ExampleDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ExampleDropTarget, _Component);\n\n function ExampleDropTarget() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ExampleDropTarget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ExampleDropTarget)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n item: null\n });\n\n return _this;\n }\n\n _createClass(ExampleDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = ExampleDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, React.createElement(\"h4\", null, isActive ? 'Release to drop' : 'Drag / Drop something from the Study Browser here'), React.createElement(\"p\", {\n className: \"study-drop-results\"\n }, this.state.item && JSON.stringify(this.state.item))));\n }\n }]);\n\n return ExampleDropTarget;\n}(Component);\n\n_defineProperty(ExampleDropTarget, \"className\", 'ExampleDropTarget');\n\n_defineProperty(ExampleDropTarget, \"defaultProps\", {\n isOver: false\n});\n\n_defineProperty(ExampleDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired\n});\n\nvar collect = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n};\n\nvar ExampleDropTarget$1 = lib_5(Types.THUMBNAIL, divTarget, collect)(ExampleDropTarget);\n\nvar css$2 = \".layoutChooser {\\n border: 1px solid rgba(77,99,110,0.81);\\n border-radius: 8px;\\n padding: 5px 0;\\n position: absolute;\\n z-index: 5000;\\n}\\n.layoutChooser .selectedBefore {\\n background-color: #5cc3eb;\\n}\\n.layoutChooser table {\\n margin: 0 auto;\\n}\\n.layoutChooser table td {\\n cursor: pointer;\\n}\\n.layoutChooser table td:hover,\\n.layoutChooser table td.hover {\\n background-color: #209ac9;\\n}\\n\";\nstyleInject(css$2);\n\n/**\n * Adds the 'hover' class to cells above and to the left of the current cell\n * This is used to \"fill in\" the grid that the user will change the layout to,\n * if they click on a specific table cell.\n **/\n\nvar LayoutChooser =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutChooser, _PureComponent);\n\n function LayoutChooser(props) {\n var _this;\n\n _classCallCheck(this, LayoutChooser);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayoutChooser).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isRange\", function (cell, parentCell) {\n return cell.row <= parentCell.row && cell.col <= parentCell.col;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"highlightCells\", function (currentCell) {\n var table = [];\n\n for (var row = 0; row < _this.props.rows; row++) {\n var newRow = [];\n\n for (var col = 0; col < _this.props.columns; col++) {\n var cell = {\n row: row,\n col: col\n };\n\n if (_this.isRange(cell, currentCell)) {\n cell.className = 'hover';\n } else if (_this.isRange(currentCell, _this.emptyCell) && _this.isRange(cell, _this.state.selectedCell)) {\n cell.className = 'selectedBefore';\n }\n\n newRow.push(cell);\n }\n\n table.push(newRow);\n }\n\n _this.setState({\n table: table\n });\n });\n\n _this.emptyCell = {\n row: -1,\n column: -1\n };\n _this.state = {\n table: [[]],\n selectedCell: _this.props.selectedCell\n };\n return _this;\n }\n\n _createClass(LayoutChooser, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.highlightCells(this.emptyCell);\n }\n }, {\n key: \"onClick\",\n value: function onClick(currentCell) {\n this.setState({\n selectedCell: currentCell\n });\n this.highlightCells(currentCell);\n\n if (this.props.onClick) {\n this.props.onClick(currentCell);\n }\n\n if (this.props.onChange) {\n this.props.onChange(currentCell);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var columns = this.props.columns;\n var style = {\n display: this.props.visible ? 'block' : 'none',\n minWidth: columns * this.props.boxSize + (columns + 5) * this.props.cellBorder\n };\n return React.createElement(\"div\", {\n className: \"layoutChooser pull-left dropdown-menu\",\n role: \"menu\",\n style: style\n }, React.createElement(\"table\", null, React.createElement(\"tbody\", null, this.state.table.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (cell, j) {\n return React.createElement(\"td\", {\n className: cell.className,\n style: {\n width: _this2.props.boxSize,\n height: _this2.props.boxSize,\n border: 'solid 1px black'\n },\n key: j,\n onMouseEnter: function onMouseEnter() {\n return _this2.highlightCells(cell);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.highlightCells(_this2.emptyCell);\n },\n onClick: function onClick() {\n return _this2.onClick(cell);\n }\n });\n }));\n }))));\n }\n }]);\n\n return LayoutChooser;\n}(PureComponent);\n\n_defineProperty(LayoutChooser, \"propTypes\", {\n rows: propTypes.number.isRequired,\n columns: propTypes.number.isRequired,\n visible: propTypes.bool.isRequired,\n selectedCell: propTypes.object,\n boxSize: propTypes.number.isRequired,\n cellBorder: propTypes.number.isRequired,\n onClick: propTypes.func,\n onChange: propTypes.func\n});\n\n_defineProperty(LayoutChooser, \"defaultProps\", {\n rows: 3,\n columns: 3,\n visible: true,\n boxSize: 20,\n cellBorder: 1,\n selectedCell: {\n row: -1,\n col: -1\n }\n});\n\nvar LayoutButton =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutButton, _PureComponent);\n\n function LayoutButton() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutButton);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutButton)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownVisible: _this.props.dropdownVisible\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (selectedCell) {\n if (_this.props.onChange) {\n _this.props.onChange(selectedCell);\n }\n });\n\n return _this;\n }\n\n _createClass(LayoutButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.dropdownVisible !== prevProps.dropdownVisible) {\n this.setState({\n dropdownVisible: this.props.dropdownVisible\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"layout\",\n type: \"button\",\n className: \"btn btn-sm btn-default dropdown-toggle\",\n \"data-container\": \"body\",\n \"data-toggle\": \"dropdown\",\n \"aria-expanded\": \"false\",\n \"data-placement\": \"right\",\n title: \"Layout\",\n rel: \"tooltip\",\n onClick: this.onClick\n }, React.createElement(\"span\", {\n className: \"fa fa-th-large\"\n })), React.createElement(LayoutChooser, {\n visible: this.state.dropdownVisible,\n onChange: this.onChange,\n onClick: this.onClick,\n selectedCell: this.props.selectedCell\n }));\n }\n }]);\n\n return LayoutButton;\n}(PureComponent);\nLayoutButton.defaultProps = {\n dropdownVisible: false\n};\nLayoutButton.propTypes = {\n dropdownVisible: propTypes.bool.isRequired,\n onChange: propTypes.func,\n selectedCell: propTypes.object\n};\n\nvar css$3 = \".viewport-container {\\n float: left;\\n\\n border: var(--viewport-border-thickness) solid var(--ui-border-color);\\n}\\n\\n.viewport-container.active {\\n border: var(--viewport-border-thickness) solid var(--active-color);\\n}\\n\\n.EmptyViewport {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n color: var(--text-secondary-color);\\n}\\n\";\nstyleInject(css$3);\n\nvar css$4 = \".LayoutPanelDropTarget {\\n width: 100%;\\n height: 100%;\\n\\n opacity: 1;\\n transition: 0.3s all ease;\\n}\\n\\n.LayoutPanelDropTarget.hovered {\\n opacity: 0.5;\\n}\\n\";\nstyleInject(css$4);\n\n// if they have the same string type.\n\nvar Types$1 = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget$1 = {\n drop: function drop(props, monitor, component) {\n var item = monitor.getItem();\n\n if (props.onDrop) {\n props.onDrop({\n viewportIndex: props.viewportIndex,\n item: item\n });\n }\n\n return {\n id: \"LayoutPanelDropTarget-\".concat(props.viewportIndex),\n viewportIndex: props.viewportIndex,\n item: item\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar LayoutPanelDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutPanelDropTarget, _Component);\n\n function LayoutPanelDropTarget() {\n _classCallCheck(this, LayoutPanelDropTarget);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LayoutPanelDropTarget).apply(this, arguments));\n }\n\n _createClass(LayoutPanelDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = LayoutPanelDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, this.props.children));\n }\n }]);\n\n return LayoutPanelDropTarget;\n}(Component);\n\n_defineProperty(LayoutPanelDropTarget, \"className\", 'LayoutPanelDropTarget');\n\n_defineProperty(LayoutPanelDropTarget, \"defaultProps\", {\n isOver: false,\n canDrop: false\n});\n\n_defineProperty(LayoutPanelDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired,\n viewportComponent: propTypes.object\n});\n\nvar collect$1 = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n canDrop: monitor.canDrop(),\n isOver: monitor.isOver()\n };\n};\n\nvar LayoutPanelDropTarget$1 = lib_5(Types$1.THUMBNAIL, divTarget$1, collect$1)(LayoutPanelDropTarget);\n\nfunction defaultViewportPlugin(props) {\n return React.createElement(\"div\", null, JSON.stringify(props));\n}\n\nfunction EmptyViewport() {\n return React.createElement(\"div\", {\n className: \"EmptyViewport\"\n }, React.createElement(\"p\", null, \"Please drag a stack here to view images.\"));\n}\n\nvar LayoutManager =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutManager, _Component);\n\n function LayoutManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDrop\", function (_ref) {\n var viewportIndex = _ref.viewportIndex,\n item = _ref.item;\n\n if (_this.props.setViewportData) {\n _this.props.setViewportData({\n viewportIndex: viewportIndex,\n item: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPluginComponent\", function (plugin) {\n var pluginComponent = _this.props.availablePlugins[plugin || _this.props.defaultPlugin];\n\n if (!pluginComponent) {\n throw new Error(\"No Viewport Plugin available for plugin \".concat(plugin, \". Available plugins: \").concat(JSON.stringify(_this.props.availablePlugins)));\n }\n\n return pluginComponent;\n });\n\n return _this;\n }\n\n _createClass(LayoutManager, [{\n key: \"getChildComponent\",\n value: function getChildComponent(plugin, data, viewportIndex) {\n if (data.displaySet) {\n var PluginComponent = this.getPluginComponent(plugin);\n return React.createElement(PluginComponent, {\n viewportData: data,\n viewportIndex: viewportIndex\n });\n }\n\n return React.createElement(EmptyViewport, null);\n }\n }, {\n key: \"getContent\",\n value: function getContent(childComponent, supportsDragAndDrop, viewportIndex) {\n if (supportsDragAndDrop) {\n return React.createElement(LayoutPanelDropTarget$1, {\n onDrop: this.onDrop,\n viewportIndex: viewportIndex\n }, childComponent);\n }\n\n return React.createElement(\"div\", {\n className: \"LayoutPanel\"\n }, childComponent);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!this.props.viewportData.length) {\n return '';\n }\n\n var _this$props = this.props,\n supportsDragAndDrop = _this$props.supportsDragAndDrop,\n studies = _this$props.studies,\n viewportData = _this$props.viewportData;\n var viewports = this.props.layout.viewports;\n var viewportElements = viewports.map(function (layout, viewportIndex) {\n var displaySet = viewportData[viewportIndex];\n var data = {\n displaySet: displaySet,\n studies: studies\n };\n\n var childComponent = _this2.getChildComponent(layout.plugin, data, viewportIndex);\n\n var content = _this2.getContent(childComponent, supportsDragAndDrop, viewportIndex);\n\n var className = 'viewport-container';\n\n if (_this2.props.activeViewportIndex === viewportIndex) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n key: viewportIndex,\n className: className,\n style: _objectSpread({}, layout)\n }, content);\n });\n return React.createElement(\"div\", {\n className: LayoutManager.className\n }, viewportElements);\n }\n }]);\n\n return LayoutManager;\n}(Component);\n\n_defineProperty(LayoutManager, \"className\", 'LayoutManager');\n\n_defineProperty(LayoutManager, \"defaultProps\", {\n viewportData: [],\n layout: {\n viewports: [{\n top: 0,\n left: 0,\n height: '100%',\n width: '100%'\n }]\n },\n activeViewportIndex: 0,\n supportsDragAndDrop: true,\n availablePlugins: {\n defaultViewportPlugin: defaultViewportPlugin\n },\n defaultPlugin: 'defaultViewportPlugin'\n});\n\n_defineProperty(LayoutManager, \"propTypes\", {\n viewportData: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n activeViewportIndex: propTypes.number.isRequired,\n layout: propTypes.object.isRequired,\n availablePlugins: propTypes.object.isRequired,\n setViewportData: propTypes.func,\n studies: propTypes.array\n});\n\nvar css$5 = \".tableList {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n}\\n.tableList .tableListHeader {\\n background-color: var(--ui-gray-darker);\\n color: var(--text-secondary-color);\\n fill: var(--text-secondary-color);\\n display: flex;\\n height: 63px;\\n line-height: 63px;\\n margin-top: 2px;\\n overflow: hidden;\\n width: 100%;\\n}\\n.tableList .tableListHeader .tableListHeaderTitle {\\n color: var(--text-secondary-color);\\n font-size: 22px;\\n font-weight: 300;\\n line-height: 63px;\\n padding: 0 10px;\\n text-align: left;\\n flex: 1;\\n}\\n.tableList .tableListHeader .numberOfItems {\\n color: var(--ui-sky-blue);\\n float: right;\\n font-weight: 300;\\n font-size: 40px;\\n max-width: 54px;\\n height: 63px;\\n line-height: 66px;\\n flex: 1;\\n}\\n\";\nstyleInject(css$5);\n\nvar TableList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableList, _Component);\n\n function TableList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getHeader\", function () {\n if (_this.props.customHeader) {\n return _this.props.customHeader;\n } else {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, _this.props.headerTitle), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, _this.props.children.length));\n }\n });\n\n return _this;\n }\n\n _createClass(TableList, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableList\"\n }, React.createElement(\"div\", {\n className: \"tableListHeader\",\n onClick: this.onHeaderClick\n }, this.getHeader()), React.createElement(\"div\", {\n className: \"tableListContent\"\n }, this.props.children));\n }\n }]);\n\n return TableList;\n}(Component);\n\n_defineProperty(TableList, \"propTypes\", {\n customHeader: propTypes.node,\n defaultItems: propTypes.object,\n children: propTypes.node.isRequired,\n headerTitle: propTypes.string\n});\n\nvar css$6 = \".tableListItem {\\n display: flex;\\n margin-left: -6px;\\n margin-top: 2px;\\n padding-left: 6px;\\n opacity: 0.7;\\n width: calc(100% + 6px);\\n}\\n.tableListItem:hover {\\n opacity: 1;\\n}\\n.tableListItem.selected {\\n opacity: 1;\\n}\\n.tableListItem.selected .itemIndex {\\n color: $activeColor;\\n}\\n.tableListItem .itemIndex {\\n background-color: var(--ui-gray);\\n color: var(--text-secondary-color);\\n cursor: pointer;\\n flex: 1;\\n max-width: 40px;\\n font-size: 14px;\\n font-weight: 400;\\n margin-right: 5px;\\n padding: 10px;\\n text-align: center;\\n}\\n.tableListItem .itemContent {\\n flex: 1;\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n margin-left: -2px;\\n}\\n\";\nstyleInject(css$6);\n\nvar TableListItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableListItem, _Component);\n\n function TableListItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableListItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableListItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event) {\n if (_this.props.onItemClick) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onItemClick(event, _this.props);\n }\n });\n\n return _this;\n }\n\n _createClass(TableListItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableListItem \".concat(this.props.itemClass),\n onClick: this.onItemClick\n }, React.createElement(\"div\", {\n className: \"itemIndex\"\n }, this.props.itemIndex + 1), React.createElement(\"div\", {\n className: \"itemContent\"\n }, this.props.children));\n }\n }]);\n\n return TableListItem;\n}(Component);\n\n_defineProperty(TableListItem, \"propTypes\", {\n children: propTypes.node,\n itemClass: propTypes.string,\n itemIndex: propTypes.number,\n onItemClick: propTypes.func.isRequired\n});\n\nvar css$7 = \".measurementItem .rowActions {\\n background-color: var(--ui-gray-darker);\\n height: 0;\\n overflow: hidden;\\n transition: all 0.3s ease;\\n visibility: hidden;\\n padding-left: 14px;\\n}\\n.measurementItem .rowActions .btnAction {\\n background-color: transparent;\\n border: none;\\n color: var(--default-color);\\n cursor: pointer;\\n line-height: 35px;\\n transition: all 0.3s ease;\\n}\\n.measurementItem .rowActions .btnAction:hover,\\n.measurementItem .rowActions .btnAction:active {\\n color: var(--text-primary-color);\\n}\\n.measurementItem .rowActions .btnAction i {\\n margin-right: 4px;\\n}\\n.measurementItem.selected .rowActions {\\n height: 35px;\\n visibility: visible;\\n}\\n.measurementItem .measurementLocation {\\n margin-left: 9px;\\n margin-top: 9px;\\n}\\n.measurementItem .measurementDisplayText {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n\";\nstyleInject(css$7);\n\nvar MeasurementTableItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTableItem, _Component);\n\n function MeasurementTableItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MeasurementTableItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MeasurementTableItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getDataDisplayText\", function () {\n return _this.props.measurementData.data.map(function (data, index) {\n return React.createElement(\"div\", {\n key: \"displayText_\".concat(index),\n className: \"measurementDisplayText\"\n }, data.displayText ? data.displayText : '...');\n });\n });\n\n return _this;\n }\n\n _createClass(MeasurementTableItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(TableListItem, {\n itemKey: this.props.itemKey,\n itemClass: \"measurementItem \".concat(this.props.itemClass),\n itemIndex: this.props.itemIndex,\n onItemClick: this.props.onItemClick\n }, React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"measurementLocation\"\n }, this.props.measurementData.label), React.createElement(\"div\", null, this.getDataDisplayText()), React.createElement(\"div\", {\n className: \"rowActions\"\n }, React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onRelabel\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Relabel\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onEditDescription\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Description\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onDelete\n }, React.createElement(\"i\", {\n className: \"fa fa-trash-o\"\n }), \"Delete\"))));\n }\n }]);\n\n return MeasurementTableItem;\n}(Component);\n\n_defineProperty(MeasurementTableItem, \"propTypes\", {\n measurementData: propTypes.object.isRequired,\n onItemClick: propTypes.func.isRequired,\n onRelabel: propTypes.func.isRequired,\n onDelete: propTypes.func.isRequired,\n onEditDescription: propTypes.func.isRequired,\n itemKey: propTypes.string.isRequired,\n itemClass: propTypes.string,\n itemIndex: propTypes.number\n});\n\nfunction throttled(delay, fn) {\n var lastCall = 0;\n return function () {\n var now = new Date().getTime();\n\n if (now - lastCall < delay) {\n return;\n }\n\n lastCall = now;\n return fn.apply(void 0, arguments);\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar css$8 = \".scrollArea {\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollArea .scrollable {\\n max-height: inherit;\\n overflow: hidden;\\n zoom: 1;\\n}\\n.scrollArea .scrollable.scrollX {\\n overflow-x: scroll;\\n}\\n.scrollArea .scrollable.scrollY {\\n overflow-y: scroll;\\n}\\n.scrollArea.fit {\\n height: 100%;\\n width: 100%;\\n}\\n.scrollArea.fit .scrollable {\\n bottom: 0;\\n left: 0;\\n max-height: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scrollArea .scrollNav {\\n background-color: rgba(0,0,0,0.75);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.75);\\n cursor: pointer;\\n height: 24px;\\n left: 10px;\\n opacity: 0;\\n position: absolute;\\n right: 10px;\\n transition: all 0.3s ease;\\n}\\n.scrollArea .scrollNav:after {\\n color: var(--active-color);\\n display: block;\\n font-family: FontAwesome;\\n font-size: 20px;\\n text-align: center;\\n transition: color 0.3s ease;\\n}\\n.scrollArea .scrollNav:hover {\\n background-color: rgba(0,0,0,0.9);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.9);\\n}\\n.scrollArea .scrollNav:hover:after {\\n color: var(--hover-color);\\n}\\n.scrollArea .scrollNavUp {\\n border-bottom-left-radius: 24px/2;\\n border-bottom-right-radius: 24px/2;\\n top: 0;\\n transform: ranslateY(-24px);\\n}\\n.scrollArea .scrollNavUp:after {\\n content: '\\\\f102';\\n}\\n.scrollArea .scrollNavDown {\\n border-top-left-radius: 24px/2;\\n border-top-right-radius: 24px/2;\\n bottom: 0;\\n transform: translateY(24px);\\n}\\n.scrollArea .scrollNavDown:after {\\n content: '\\\\f103';\\n}\\n.scrollArea.canScrollUp .scrollNavUp,\\n.scrollArea.canScrollDown .scrollNavDown {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\";\nstyleInject(css$8);\n\nvar ScrollableArea =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollableArea, _Component);\n\n function ScrollableArea(props) {\n var _this;\n\n _classCallCheck(this, ScrollableArea);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollableArea).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavDown\", function (event) {\n var _this$scrollableEleme = _this.scrollableElement,\n currentTop = _this$scrollableEleme.scrollTop,\n height = _this$scrollableEleme.offsetHeight,\n scrollHeight = _this$scrollableEleme.scrollHeight;\n var limit = scrollHeight - height;\n var scrollTop = currentTop + _this.props.scrollStep;\n scrollTop = scrollTop > limit ? limit : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavUp\", function (event) {\n var currentTop = _this.scrollableElement.scrollTop;\n var scrollTop = currentTop - _this.props.scrollStep;\n scrollTop = scrollTop < 0 ? 0 : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"adjustMargins\", function () {\n if (_this.props.hideScrollbar) {\n var x = _this.props.scrollX ? 1 : 0;\n var y = _this.props.scrollY ? 1 : 0;\n var scrollbarSize = getScrollbarSize();\n _this.scrollableElement.style.marginRight = \"\".concat(0 - scrollbarSize[0] * y, \"px\");\n _this.scrollableElement.style.marginBottom = \"\".concat(0 - scrollbarSize[1] * x, \"px\");\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollHandler\", function () {\n var _this$scrollableEleme2 = _this.scrollableElement,\n height = _this$scrollableEleme2.offsetHeight,\n scrollTop = _this$scrollableEleme2.scrollTop,\n scrollHeight = _this$scrollableEleme2.scrollHeight;\n var scrollAreaClasses = ''; // Stop here if unable to scroll\n\n if (scrollHeight <= height) return; // Check if can scroll up\n\n if (scrollTop) {\n scrollAreaClasses += 'canScrollUp';\n } // Check if can scroll down\n\n\n if (scrollTop + height < scrollHeight) {\n scrollAreaClasses += ' canScrollDown';\n }\n\n if (_this.state.scrollAreaClasses !== scrollAreaClasses) {\n _this.setState({\n scrollAreaClasses: scrollAreaClasses\n });\n }\n });\n\n _this.state = {\n scrollAreaClasses: ''\n };\n _this.scrollHandlerThrottled = throttled(150, _this.scrollHandler);\n return _this;\n }\n\n _createClass(ScrollableArea, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var scrollableClass = 'scrollable';\n\n if (this.props.scrollableClass) {\n scrollableClass += \" \".concat(this.props.scrollableClass);\n }\n\n if (this.props.scrollX) {\n scrollableClass += \" scrollX\";\n }\n\n if (this.props.scrollY) {\n scrollableClass += \" scrollY\";\n }\n\n return React.createElement(\"div\", {\n className: \"scrollArea \".concat(this.props.class, \" \").concat(this.state.scrollAreaClasses)\n }, React.createElement(\"div\", {\n className: scrollableClass,\n ref: function ref(element) {\n _this2.scrollableElement = element;\n },\n onScroll: this.scrollHandlerThrottled,\n onMouseEnter: this.scrollHandlerThrottled,\n onTransitionEnd: this.scrollHandlerThrottled\n }, this.props.children), React.createElement(\"div\", {\n className: \"scrollNav scrollNavUp\",\n onClick: this.scrollNavUp\n }), React.createElement(\"div\", {\n className: \"scrollNav scrollNavDown\",\n onClick: this.scrollNavDown\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.adjustMargins();\n this.scrollHandler();\n window.addEventListener('resize', this.adjustMargins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.adjustMargins);\n }\n }]);\n\n return ScrollableArea;\n}(Component);\n\n_defineProperty(ScrollableArea, \"propTypes\", {\n children: propTypes.node.isRequired,\n class: propTypes.string,\n scrollableClass: propTypes.string,\n scrollX: propTypes.bool,\n scrollY: propTypes.bool,\n hideScrollbar: propTypes.bool,\n scrollStep: propTypes.number\n});\n\n_defineProperty(ScrollableArea, \"defaultProps\", {\n hideScrollbar: true,\n class: 'flex-grow fit',\n scrollY: true,\n scrollX: false,\n scrollStep: 100\n});\n\nvar css$9 = \".measurementTable {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n.measurementTable .maxMeasurements {\\n border-radius: 3px;\\n color: var(--primary-background-color);\\n font-size: 12px;\\n font-weight: 500;\\n height: 19px;\\n line-height: 17px;\\n margin-top: 22px;\\n margin-right: 15px;\\n padding: 2px 6px 0;\\n text-transform: uppercase;\\n transition: all 0.3s ease;\\n background-color: var(--default-color);\\n}\\n.measurementTable .measurementTableHeader {\\n padding-left: 45px;\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem .timepointLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n}\\n\";\nstyleInject(css$9);\n\nvar MeasurementTable =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTable, _Component);\n\n function MeasurementTable(props) {\n var _this;\n\n _classCallCheck(this, MeasurementTable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MeasurementTable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurementsGroups\", function () {\n return _this.props.measurementCollection.map(function (measureGroup, index) {\n return React.createElement(TableList, {\n key: index,\n customHeader: _this.getCustomHeader(measureGroup)\n }, _this.getMeasurements(measureGroup));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurements\", function (measureGroup) {\n return measureGroup.measurements.map(function (measurement, index) {\n var key = \"\".concat(measureGroup.groupName, \"_\").concat(index);\n return React.createElement(MeasurementTableItem, {\n key: key,\n itemIndex: index,\n itemKey: key,\n itemClass: _this.state.selectedKey === key ? 'selected' : '',\n measurementData: measurement,\n onItemClick: _this.onItemClick,\n onRelabel: function onRelabel() {\n alert('relabel');\n },\n onDelete: function onDelete() {\n alert('delete');\n },\n onEditDescription: function onEditDescription() {\n alert('editDescription');\n }\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getCustomHeader\", function (measureGroup) {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, measureGroup.groupName), measureGroup.maxMeasurements && React.createElement(\"div\", {\n className: \"maxMeasurements\"\n }, \"MAX \", measureGroup.maxMeasurements), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, measureGroup.measurements.length));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTimepointsHeader\", function () {\n return _this.props.timepoints.map(function (timepoint, index) {\n return React.createElement(\"div\", {\n key: index,\n className: \"measurementTableHeaderItem\"\n }, React.createElement(\"div\", {\n className: \"timepointLabel\"\n }, timepoint.label), React.createElement(\"div\", {\n className: \"timepointDate\"\n }, timepoint.date));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event, itemProps) {\n _this.setState({\n selectedKey: itemProps.itemKey\n });\n });\n\n _this.state = {\n selectedKey: null\n };\n return _this;\n }\n\n _createClass(MeasurementTable, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"measurementTable\"\n }, React.createElement(\"div\", {\n className: \"measurementTableHeader\"\n }, this.getTimepointsHeader()), React.createElement(ScrollableArea, null, React.createElement(\"div\", null, this.getMeasurementsGroups())));\n }\n }]);\n\n return MeasurementTable;\n}(Component);\n\n_defineProperty(MeasurementTable, \"propTypes\", {\n measurementCollection: propTypes.array.isRequired,\n timepoints: propTypes.array.isRequired\n});\n\nvar PlayClipButton =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PlayClipButton, _Component);\n\n function PlayClipButton() {\n _classCallCheck(this, PlayClipButton);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PlayClipButton).apply(this, arguments));\n }\n\n _createClass(PlayClipButton, [{\n key: \"render\",\n value: function render() {\n var playClass = 'fa-stop';\n\n if (this.props.isPlaying) {\n playClass = 'fa-play';\n }\n\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"playClip\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Play/Stop Clip\"\n }, React.createElement(\"span\", {\n className: \"fa \".concat(playClass)\n })), React.createElement(\"button\", {\n id: \"toggleCineDialog\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Toggle CINE Dialog\"\n }, React.createElement(\"span\", {\n className: \"fa fa-youtube-play\"\n })));\n }\n }]);\n\n return PlayClipButton;\n}(Component);\nPlayClipButton.propTypes = {\n isPlaying: propTypes.bool.isRequired\n};\nPlayClipButton.defaultProps = {\n isPlaying: false\n};\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css$a = \".RoundedButtonGroup {\\n --height: 25px;\\n\\n position: relative;\\n z-index: 0;\\n}\\n\\n.roundedButtonWrapper {\\n cursor: pointer;\\n display: inline-block;\\n float: left;\\n margin-left: -2px;\\n text-decoration: none;\\n text-align: center;\\n}\\n\\n.roundedButtonWrapper.disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper .roundedButton {\\n align-items: center;\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--ui-border-color-dark);\\n color: var(--text-secondary-color);\\n display: flex;\\n font-size: 11px;\\n font-weight: 500;\\n justify-content: center;\\n height: var(--height);\\n line-height: var(--height);\\n padding: 0 22px;\\n position: relative;\\n text-transform: uppercase;\\n transition: var(--sidebar-transition);\\n z-index: 1;\\n}\\n\\n.roundedButtonWrapper .roundedButton svg {\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n\\n.roundedButtonWrapper\\n .roundedButton\\n svg\\n .roundedButtonWrapper\\n .roundedButton\\n span {\\n margin: 0 2px;\\n}\\n\\n.roundedButtonWrapper .roundedButton i {\\n line-height: 15px;\\n font-size: 15px;\\n}\\n\\n.bottomLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n font-weight: 500;\\n line-height: 12px;\\n margin-top: 8px;\\n}\\n\\n.roundedButtonWrapper:first-child {\\n margin-left: 0;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:first-child .roundedButton {\\n border-bottom-left-radius: var(--height);\\n border-top-left-radius: var(--height);\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:last-child .roundedButton {\\n border-bottom-right-radius: var(--height);\\n border-top-right-radius: var(--height);\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton {\\n background-color: var(--box-background-color);\\n color: var(--ui-gray-dark);\\n}\\n\\n.roundedButtonWrapper.active .roundedButton {\\n background-color: var(--active-color);\\n border-color: var(--ui-border-color-active);\\n color: var(--ui-gray-dark);\\n z-index: 2;\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton svg,\\n.roundedButtonWrapper.active .roundedButton svg {\\n fill: var(--ui-gray-dark);\\n stroke: var(--ui-gray-dark);\\n}\\n\";\nstyleInject(css$a);\n\nvar RoundedButtonGroup =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RoundedButtonGroup, _Component);\n\n function RoundedButtonGroup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RoundedButtonGroup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RoundedButtonGroup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickOption\", function (value) {\n var newValue = value;\n\n if (_this.props.value === value) {\n newValue = null;\n }\n\n if (_this.props.onValueChanged) {\n _this.props.onValueChanged(newValue);\n }\n });\n\n return _this;\n }\n\n _createClass(RoundedButtonGroup, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classnames(RoundedButtonGroup.className, 'clearfix center-table');\n var buttons = this.props.options.map(function (option, index) {\n var className = classnames({\n roundedButtonWrapper: true,\n noselect: true,\n active: _this2.props.value === option.value\n });\n var optionSVG;\n\n if (option.svgLink) {\n var svgStyle = {\n width: \"\".concat(option.svgWidth, \"px\"),\n height: \"\".concat(option.svgHeight, \"px\")\n };\n optionSVG = React.createElement(\"svg\", {\n style: svgStyle\n }, React.createElement(\"use\", {\n xlinkHref: option.svgLink\n }));\n }\n\n var optionText = option.text && React.createElement(\"span\", null, option.text);\n var optionIcon = option.iconClasses && React.createElement(\"i\", {\n className: option.iconClasses\n });\n var bottomLabel = option.bottomLabel && React.createElement(\"div\", {\n className: \"bottomLabel\"\n }, option.bottomLabel);\n return React.createElement(\"div\", {\n key: index,\n className: className,\n onClick: function onClick() {\n return _this2.onClickOption(option.value);\n }\n }, React.createElement(\"div\", {\n className: \"roundedButton\"\n }, optionSVG, optionText, optionIcon), bottomLabel);\n });\n return React.createElement(\"div\", {\n className: className\n }, buttons);\n }\n }]);\n\n return RoundedButtonGroup;\n}(Component);\n\n_defineProperty(RoundedButtonGroup, \"className\", 'RoundedButtonGroup');\n\n_defineProperty(RoundedButtonGroup, \"propTypes\", {\n options: propTypes.array,\n value: propTypes.string,\n onValueChanged: propTypes.func\n});\n\n_defineProperty(RoundedButtonGroup, \"defaultProps\", {\n options: [],\n value: null\n});\n\nvar css$b = \".dd-menu {\\n float: left;\\n margin-right: 10px;\\n cursor: pointer;\\n position: relative;\\n z-index: 999;\\n}\\n\\n.dd-title {\\n font-size: 13px;\\n}\\n\\n.dd-menu-toggle {\\n display: inline-block;\\n}\\n\\n.dd-caret-down {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-top: 0.5rem;\\n margin-left: 0.5rem;\\n border-top: 5px solid;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n}\\n\\n.dd-menu-list {\\n position: absolute;\\n top: 100%;\\n margin-top: 10px;\\n background: white;\\n border-radius: 5px;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n overflow: hidden;\\n transition: all 300ms ease;\\n -webkit-transition: all 300ms ease;\\n -moz-transition: all 300ms ease;\\n -ms-transition: all 300ms ease;\\n -o-transition: all 300ms ease;\\n}\\n\\n.dd-menu-list.open {\\n display: inline-block;\\n}\\n\\n.dd-menu-list.left {\\n left: 0;\\n}\\n\\n.dd-menu-list.right {\\n right: 0;\\n}\\n\\n.dd-menu-list.center {\\n left: 50%;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n -moz-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n}\\n\\n.dd-item {\\n display: flex;\\n color: var(--text-color-active);\\n padding: 10px 15px;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.dd-item:hover {\\n text-decoration: none;\\n background: #eee;\\n}\\n\\n.dd-item:last-child {\\n border-bottom: none;\\n}\\n\\n.dd-item-icon {\\n width: 10px;\\n text-align: center;\\n margin-right: 10px;\\n}\\n\\n.dd-item-icon:before {\\n vertical-align: middle;\\n}\\n\";\nstyleInject(css$b);\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Dropdown, _Component);\n\n function Dropdown() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Dropdown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Dropdown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n open: false\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderList\", function () {\n var _this$props = _this.props,\n list = _this$props.list,\n align = _this$props.align;\n\n if (!_this.state.open) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"dd-menu-list \".concat(align || 'left')\n }, list.map(function (_ref, key) {\n var icon = _ref.icon,\n title = _ref.title,\n link = _ref.link,\n _onClick = _ref.onClick;\n return React.createElement(\"a\", {\n href: link || '#',\n key: key,\n className: \"dd-item\",\n onClick: function onClick() {\n return _this.handleOnClick(_onClick);\n }\n }, icon && React.createElement(\"span\", {\n className: \"dd-item-icon \".concat(icon)\n }), React.createElement(\"span\", null, title));\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleOnClick\", function (onClick) {\n _this.toggleList();\n\n if (onClick) {\n onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMouseClick\", function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n _this.toggleList();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderTitleElement\", function () {\n var _this$props2 = _this.props,\n titleElement = _this$props2.titleElement,\n title = _this$props2.title;\n\n if (titleElement) {\n return titleElement;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"span\", {\n className: \"dd-title\"\n }, title), React.createElement(\"span\", {\n className: \"dd-caret-down\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"toggleList\", function () {\n var open = _this.state.open;\n var state = true;\n document.addEventListener('mousedown', _this.handleMouseClick, false);\n\n if (open) {\n document.removeEventListener('mousedown', _this.handleMouseClick, false);\n state = false;\n }\n\n _this.setState({\n open: state\n });\n });\n\n return _this;\n }\n\n _createClass(Dropdown, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", {\n className: \"dd-menu\",\n ref: function ref(node) {\n return _this2.node = node;\n }\n }, React.createElement(\"div\", {\n className: \"dd-menu-toggle\",\n onClick: this.toggleList\n }, this.renderTitleElement()), this.renderList());\n }\n }]);\n\n return Dropdown;\n}(Component);\n\n_defineProperty(Dropdown, \"propTypes\", {\n titleElement: propTypes.node,\n title: propTypes.string,\n align: propTypes.oneOf(['left', 'center', 'right']),\n list: propTypes.arrayOf(propTypes.shape({\n title: propTypes.string.isRequired,\n icon: propTypes.string,\n onClick: propTypes.func,\n link: propTypes.string\n }))\n});\n\nvar InputRadio =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InputRadio, _Component);\n\n function InputRadio() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, InputRadio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(InputRadio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (evt) {\n _this.props.onSelected(evt, _this.props.itemData);\n });\n\n return _this;\n }\n\n _createClass(InputRadio, [{\n key: \"render\",\n value: function render() {\n var labelClass = this.props.labelClass ? this.props.labelClass : '';\n return React.createElement(\"label\", {\n className: 'wrapperLabel radioLabel ' + labelClass,\n htmlFor: this.props.id\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: this.props.id,\n className: \"radioInput\",\n value: this.props.value,\n onChange: this.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, this.props.label));\n }\n }]);\n\n return InputRadio;\n}(Component);\n\nInputRadio.propTypes = {\n value: propTypes.string,\n label: propTypes.string.isRequired,\n itemData: propTypes.object.isRequired,\n labelClass: propTypes.string,\n id: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar SelectTreeBreadcrumb =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTreeBreadcrumb, _Component);\n\n function SelectTreeBreadcrumb() {\n _classCallCheck(this, SelectTreeBreadcrumb);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SelectTreeBreadcrumb).apply(this, arguments));\n }\n\n _createClass(SelectTreeBreadcrumb, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"selectTreeBreadcrumb\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel radioLabel\",\n htmlFor: \"selectTreeBreadcrumb\"\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: \"selectTreeBreadcrumb\",\n className: \"treeNode radioInput\",\n value: this.props.value,\n onChange: this.props.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, React.createElement(\"span\", {\n className: \"backIcon\"\n }, React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: \"/icons.svg#fast-backward\"\n }))), this.props.label)));\n }\n }]);\n\n return SelectTreeBreadcrumb;\n}(Component);\n\nSelectTreeBreadcrumb.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar css$c = \".selectTreeRoot {\\n text-align: initial;\\n width: 320px;\\n max-height: inherit;\\n font-size: 14px;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeContent {\\n max-height: inherit;\\n overflow: hidden;\\n border: 1px solid #c4c4c4;\\n border-radius: 5px;\\n background-color: #fff;\\n display: flex;\\n flex-direction: column;\\n}\\n.selectTreeRoot .treeHeader {\\n background-color: #c0c0c0;\\n border-bottom: 1px solid #c4c4c4;\\n color: #303030;\\n padding: 5px;\\n text-align: center;\\n}\\n.selectTreeRoot .treeHeader .wrapperText {\\n font-weight: bold;\\n padding-bottom: 2px;\\n}\\n.selectTreeRoot .treeHeader .wrapperSearch {\\n width: 100%;\\n}\\n.selectTreeRoot .treeHeader .searchIcon {\\n position: absolute;\\n width: 18px;\\n height: 15px;\\n margin: 10px;\\n color: #a3a3a3;\\n}\\n.selectTreeRoot .treeHeader .searchInput {\\n width: 100%;\\n height: 34px;\\n padding: 6px 12px 6px 35px;\\n background-color: #fff;\\n background-image: none;\\n border: 1px solid #9b9b9b;\\n border-radius: 4px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n color: #555;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.selectTreeRoot .treeHeader .searchInput:focus {\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6);\\n}\\n.selectTreeRoot .wrapperText {\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .wrapperLabel {\\n cursor: pointer;\\n padding: 0 12px;\\n height: 41px;\\n width: 100%;\\n line-height: 41px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon {\\n padding-right: 10px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon svg {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n top: 2px;\\n color: #457fb0;\\n}\\n.selectTreeRoot .treeOptions {\\n overflow: auto;\\n height: 100%;\\n}\\n.selectTreeRoot .treeOptions .selectTreeBreadcrumb + .treeInputsWrapper .treeInputs .treeLeaf {\\n border: none;\\n height: initial;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeOptions > .treeInputsWrapper > .treeInputs .treeLeaf {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .treeNode,\\n.selectTreeRoot .treeLeaf {\\n cursor: pointer;\\n display: block;\\n overflow: hidden;\\n font-weight: normal;\\n box-shadow: 0 0 0 200px transparent;\\n padding: 0 12px;\\n}\\n.selectTreeRoot .treeNode {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .radioLabel .radioInput {\\n display: none;\\n}\\n\";\nstyleInject(css$c);\n\nvar SelectTree =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTree, _Component);\n\n function SelectTree(props) {\n var _this;\n\n _classCallCheck(this, SelectTree);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTree).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"componentDidUpdate\", function () {\n _this.props.onComponentChange();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isLeafSelected\", function (item) {\n return item && !Array.isArray(item.items);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getLabelClass\", function (item) {\n var labelClass = 'treeLeaf';\n\n if (_this.state.searchTerm || Array.isArray(item.items)) {\n labelClass = 'treeNode';\n }\n\n return labelClass;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"headerItem\", function () {\n var title = _this.props.selectTreeFirstTitle;\n\n if (_this.state.currentNode && _this.props.selectTreeSecondTitle) {\n title = _this.props.selectTreeSecondTitle;\n }\n\n return React.createElement(\"div\", {\n className: \"wrapperLabel treeHeader\"\n }, React.createElement(\"div\", {\n className: \"wrapperText\"\n }, title), _this.props.searchEnabled && React.createElement(\"div\", {\n className: \"wrapperSearch\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-search searchIcon\"\n }), React.createElement(\"input\", {\n type: \"text\",\n className: \"searchInput\",\n placeholder: \"Search labels\",\n autoFocus: true,\n onChange: _this.searchLocations,\n value: _this.state.searchTerm ? _this.state.searchTerm : ''\n })));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"searchLocations\", function (evt) {\n _this.setState({\n currentNode: null,\n searchTerm: evt.currentTarget.value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (event, item) {\n if (_this.isLeafSelected(item)) {\n _this.setState({\n searchTerm: null,\n currentNode: null,\n value: null\n });\n\n return _this.props.onSelected(event, item);\n } else {\n _this.setState({\n currentNode: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onBreadcrumbSelected\", function () {\n _this.setState({\n currentNode: null\n });\n });\n\n _this.state = {\n searchTerm: null,\n currentNode: null,\n value: null\n };\n return _this;\n }\n\n _createClass(SelectTree, [{\n key: \"render\",\n value: function render() {\n var treeItems = this.getTreeItems();\n return React.createElement(\"div\", {\n className: \"selectTree selectTreeRoot\"\n }, React.createElement(\"div\", {\n className: \"treeContent\"\n }, this.headerItem(), React.createElement(\"div\", {\n className: \"treeOptions\"\n }, this.state.currentNode && React.createElement(SelectTreeBreadcrumb, {\n onSelected: this.onBreadcrumbSelected,\n label: this.state.currentNode.label,\n value: this.state.currentNode.value\n }), React.createElement(\"div\", {\n className: \"treeInputsWrapper\"\n }, React.createElement(\"div\", {\n className: \"treeInputs\"\n }, treeItems)))));\n }\n }, {\n key: \"getTreeItems\",\n value: function getTreeItems() {\n var _this2 = this;\n\n var storageKey = 'SelectTree';\n var treeItems;\n\n if (this.state.searchTerm) {\n var filteredItems = [];\n var rawItems = lodash_clonedeep(this.props.items);\n rawItems.forEach(function (item) {\n if (Array.isArray(item.items)) {\n item.items.forEach(function (item) {\n var label = item.label.toLowerCase();\n\n var searchTerm = _this2.state.searchTerm.toLowerCase();\n\n if (label.indexOf(searchTerm) !== -1) {\n filteredItems.push(item);\n }\n });\n }\n });\n treeItems = filteredItems;\n } else if (this.state.currentNode) {\n treeItems = lodash_clonedeep(this.state.currentNode.items);\n } else {\n treeItems = lodash_clonedeep(this.props.items);\n }\n\n return treeItems.map(function (item, index) {\n var itemKey = index;\n\n if (_this2.state.currentNode) {\n itemKey += \"_\".concat(_this2.state.currentNode.value);\n }\n\n return React.createElement(InputRadio, {\n key: itemKey,\n id: \"\".concat(storageKey, \"_\").concat(item.value),\n name: index,\n itemData: item,\n value: item.value,\n label: item.label,\n labelClass: _this2.getLabelClass(item),\n onSelected: _this2.onSelected\n });\n });\n }\n }]);\n\n return SelectTree;\n}(Component);\n\n_defineProperty(SelectTree, \"defaultProps\", {\n searchEnabled: true,\n selectTreeFirstTitle: 'First Level itens',\n items: []\n});\n\nSelectTree.propTypes = {\n searchEnabled: propTypes.bool,\n selectTreeFirstTitle: propTypes.string,\n selectTreeSecondTitle: propTypes.string,\n onComponentChange: propTypes.func,\n items: propTypes.array.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar css$d = \".simpleDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n z-index: 1000;\\n border: 0;\\n border-radius: 6px;\\n background-color: var(--ui-gray-darker);\\n}\\n.simpleDialog .header {\\n border-bottom: 3px solid var(--primary-background-color);\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.simpleDialog .header .title {\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 24px;\\n padding-right: 40px;\\n color: var(--text-secondary-color);\\n margin: 0;\\n}\\n.simpleDialog .header .closeBtn {\\n -webkit-transform: translateY(-50%);\\n color: var(--text-secondary-color);\\n height: 20px;\\n opacity: 1;\\n overflow: hidden;\\n padding: 2px;\\n position: absolute;\\n right: 21px;\\n text-align: center;\\n text-shadow: none;\\n top: 50%;\\n transform: translateY(-50%);\\n transition: color 0.3s ease;\\n width: 20px;\\n}\\n.simpleDialog .header .closeIcon {\\n color: transparent;\\n display: block;\\n font-size: 0;\\n height: 100%;\\n line-height: 0;\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n}\\n.simpleDialog .header .closeIcon:after,\\n.simpleDialog .header .closeIcon:before {\\n content: ' ';\\n display: block;\\n height: 2px;\\n transition: background-color 0.3s ease;\\n width: 19px;\\n background-color: var(--text-secondary-color);\\n}\\n.simpleDialog .header .closeIcon:before {\\n left: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n -webkit-transform-origin: 1px 50%;\\n transform-origin: 1px 50%;\\n}\\n.simpleDialog .header .closeIcon:after {\\n right: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-transform-origin: calc(100% - 1px) 50%;\\n transform-origin: calc(100% - 1px) 50%;\\n}\\n.simpleDialog .content {\\n padding: 16px 22px 25px;\\n position: relative;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .content .simpleDialogSelect,\\n.simpleDialog .content .simpleDialogInput {\\n background-color: var(--input-background-color);\\n color: var(--text-primary-color);\\n border: 0;\\n border-radius: 2px;\\n font-size: 14px;\\n height: 30px;\\n width: 100%;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n margin-top: 10px;\\n display: block;\\n}\\n.simpleDialog .content .simpleDialogLabelFor {\\n font-size: 14px;\\n font-weight: 700;\\n line-height: 16px;\\n margin: 10px 0 0 0;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .footer {\\n padding: 15px;\\n text-align: right;\\n}\\n.simpleDialog .footer .btn {\\n margin-left: 5px;\\n}\\n\";\nstyleInject(css$d);\n\nvar SimpleDialog =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SimpleDialog, _Component);\n\n function SimpleDialog() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SimpleDialog);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SimpleDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClose\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onClose();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onConfirm\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onConfirm();\n });\n\n return _this;\n }\n\n _createClass(SimpleDialog, [{\n key: \"render\",\n value: function render() {\n return React.createElement(React.Fragment, null, this.props.isOpen && React.createElement(\"div\", {\n className: \"simpleDialog \".concat(this.props.rootClass, \" \"),\n ref: this.props.componentRef,\n style: this.props.componentStyle\n }, React.createElement(\"form\", null, React.createElement(\"div\", {\n className: \"header\"\n }, React.createElement(\"span\", {\n className: \"closeBtn\",\n onClick: this.onClose\n }, React.createElement(\"span\", {\n className: \"closeIcon\"\n }, \"x\")), React.createElement(\"h4\", {\n className: \"title\"\n }, this.props.headerTitle)), React.createElement(\"div\", {\n className: \"content\"\n }, this.props.children), React.createElement(\"div\", {\n className: \"footer\"\n }, React.createElement(\"button\", {\n className: \"btn btn-default\",\n onClick: this.onClose\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.onConfirm\n }, \"Confirm\")))));\n }\n }]);\n\n return SimpleDialog;\n}(Component);\n\n_defineProperty(SimpleDialog, \"defaultProps\", {\n isOpen: true,\n componentStyle: {},\n rootClass: ''\n});\n\nSimpleDialog.propTypes = {\n headerTitle: propTypes.string.isRequired,\n onClose: propTypes.func.isRequired,\n onConfirm: propTypes.func.isRequired\n};\n\nfunction ViewportLoadingIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, \"Loading \", props.percentComplete);\n}\nViewportLoadingIndicator.propTypes = {\n percentComplete: propTypes.number\n};\n\nfunction ViewportErrorIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, React.createElement(\"p\", null, \"Error\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, props.details));\n}\nViewportErrorIndicator.propTypes = {\n details: propTypes.string\n};\n\nvar css$e = \":root {\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n --primary-background-color: #000;\\n --ui-border-color-dark: #3c5d80;\\n --sidebar-transition: all 0.3s ease;\\n}\\n.ThumbnailEntry.active .ImageThumbnail {\\n border-color: var(--active-color);\\n box-shadow: none;\\n transition: var(--sidebar-transition);\\n}\\n.ImageThumbnail {\\n background-color: var(--primary-background-color);\\n box-shadow: inset 0 0 0 1px var(--ui-border-color-dark);\\n border: 5px solid transparent;\\n border-radius: 12px;\\n height: 135px;\\n margin: 0 auto;\\n padding: 5px;\\n position: relative;\\n transition: var(--sidebar-transition);\\n width: 217px;\\n -moz-background-clip: padding;\\n -webkit-background-clip: padding;\\n background-clip: padding-box;\\n}\\n.image-thumbnail-canvas {\\n height: 100%;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n}\\n.image-thumbnail-canvas img {\\n -webkit-user-drag: none;\\n}\\n.thumbnailLoadingIndicator {\\n display: none;\\n pointer-events: none;\\n color: var(--text-secondary-color);\\n height: 20px;\\n width: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n margin: auto;\\n position: absolute;\\n}\\n.thumbnailLoadingIndicator.d-block {\\n display: block;\\n}\\n.thumbnailLoadingIndicator p {\\n text-align: center;\\n font-size: 10pt;\\n}\\n.image-thumbnail-progress-bar {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n top: -5px;\\n}\\n.image-thumbnail-progress-bar .image-thumbnail-progress-bar-inner {\\n height: 100%;\\n width: 0;\\n border-radius: 5px;\\n background-color: var(--active-color);\\n}\\n\";\nstyleInject(css$e);\n\n// - Passed in as a prop?\n// - Set as external dependency?\n// - Pass in the entire load and render function as a prop?\n//import cornerstone from 'cornerstone-core';\n\n/**\n * Asynchronous wrapper around Cornerstone's renderToCanvas method.\n *\n * @param {HTMLElement} canvasElement An HTML element\n * @param {Image} image A Cornerstone Image\n *\n * @return {Promise} A promise tracking the progress of the rendering. Resolves empty.\n */\n\nfunction renderAsync(canvasElement, image) {\n return new Promise(function (resolve, reject) {\n try {\n cornerstone.renderToCanvas(canvasElement, image);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nvar ImageThumbnail =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageThumbnail, _PureComponent);\n\n function ImageThumbnail(props) {\n var _this;\n\n _classCallCheck(this, ImageThumbnail);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageThumbnail).call(this, props));\n _this.canvas = React.createRef();\n var renderIntoCanvas = _this.props.imageId && !_this.props.imageSrc;\n _this.state = {\n loading: renderIntoCanvas\n };\n return _this;\n }\n\n _createClass(ImageThumbnail, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n\n if (renderIntoCanvas) {\n var imageId = this.props.imageId;\n var canvas = this.canvas.current;\n cornerstone.loadAndCacheImage(imageId).then(function (image) {\n renderAsync(canvas, image).then(function () {\n _this2.setState({\n loading: false\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var loadingOrError;\n\n if (this.props.error) {\n loadingOrError = React.createElement(ViewportErrorIndicator, null);\n } else if (this.state.loading) {\n loadingOrError = React.createElement(ViewportLoadingIndicator, null);\n }\n\n var showStackLoadingProgressBar = this.props.stackPercentComplete !== undefined;\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n return React.createElement(\"div\", {\n className: \"ImageThumbnail\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-canvas\"\n }, renderIntoCanvas ? React.createElement(\"canvas\", {\n ref: this.canvas,\n width: this.props.width,\n height: this.props.height\n }) : React.createElement(\"img\", {\n className: \"static-image\",\n src: this.props.imageSrc //width={this.props.width}\n ,\n height: this.props.height,\n alt: ''\n })), loadingOrError, showStackLoadingProgressBar && React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar-inner\",\n style: {\n width: \"\".concat(this.props.stackPercentComplete, \"%\")\n }\n })));\n }\n }]);\n\n return ImageThumbnail;\n}(PureComponent);\n\n_defineProperty(ImageThumbnail, \"propTypes\", {\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n width: propTypes.number.isRequired,\n height: propTypes.number.isRequired,\n stackPercentComplete: propTypes.number.isRequired\n});\n\n_defineProperty(ImageThumbnail, \"defaultProps\", {\n error: false,\n stackPercentComplete: 0,\n width: 217,\n height: 123\n});\n\nvar css$f = \":root {\\n --series-count-background-color: #678696;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n}\\n.ThumbnailEntry {\\n cursor: pointer;\\n display: table;\\n}\\n.ThumbnailEntry .p-x-1 {\\n padding: 0 1rem;\\n}\\n.ThumbnailEntry .series-details {\\n display: flex;\\n flex-direction: row;\\n color: var(--text-primary-color);\\n font-size: 14px;\\n line-height: 1.3em;\\n margin-top: 5px;\\n margin-left: 1rem;\\n margin-right: 1rem;\\n max-width: 217px;\\n min-height: 36px;\\n position: relative;\\n word-wrap: break-word;\\n}\\n.ThumbnailEntry .series-details .series-description {\\n flex-grow: 1;\\n}\\n.ThumbnailEntry .series-details.info-only .series-description {\\n display: none;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information {\\n display: flex;\\n flex-grow: 1;\\n float: none;\\n max-width: none;\\n padding-right: 0;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item {\\n flex: 1;\\n text-align: center;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .icon,\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n display: inline;\\n float: none;\\n line-height: 25px;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n margin-left: 0;\\n width: auto;\\n}\\n.ThumbnailEntry .series-information {\\n padding-right: 4px;\\n max-width: 50px;\\n}\\n.ThumbnailEntry .series-information .item-frames .icon {\\n height: 18px;\\n}\\n.ThumbnailEntry .series-information .value {\\n color: var(--text-secondary-color);\\n display: inline-block;\\n float: right;\\n font-size: 12px;\\n margin-left: 4px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: calc(100% - 15px);\\n}\\n.ThumbnailEntry .series-information .icon {\\n color: var(--active-color);\\n display: inline-block;\\n float: left;\\n font-size: 10px;\\n font-weight: 900;\\n text-align: right;\\n width: 11px;\\n}\\n.ThumbnailEntry .series-information .icon div {\\n background-color: var(--series-count-background-color);\\n margin-top: 6px;\\n position: relative;\\n}\\n.ThumbnailEntry .series-information .icon div:after {\\n background-color: var(--active-color);\\n box-shadow: 1px 1px rgba(0,0,0,0.115);\\n left: -5px;\\n position: absolute;\\n top: -5px;\\n}\\n.ThumbnailEntry .series-information .icon div,\\n.ThumbnailEntry .series-information .icon div:after {\\n border: 1px solid var(--series-count-background-color);\\n content: '';\\n display: inline-block;\\n height: 11px;\\n width: 11px;\\n}\\n.image-thumbnail-clone {\\n z-index: 100000;\\n pointer-events: none;\\n}\\n.image-thumbnail-clone:hover {\\n border-color: var(--hover-color);\\n box-shadow: none;\\n}\\n\";\nstyleInject(css$f);\n\nvar ThumbnailEntry =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntry, _Component);\n\n function ThumbnailEntry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThumbnailEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThumbnailEntry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n if (_this.props.onClick) {\n _this.props.onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDoubleClick\", function () {\n if (_this.props.onDoubleClick) {\n _this.props.onDoubleClick();\n }\n });\n\n return _this;\n }\n\n _createClass(ThumbnailEntry, [{\n key: \"render\",\n value: function render() {\n var hasInstanceNumber = this.props.instanceNumber !== undefined;\n var className = classnames('ThumbnailEntry noselect', {\n active: this.props.active\n });\n return React.createElement(\"div\", {\n className: className,\n onClick: this.onClick,\n onDoubleClick: this.onDoubleClick,\n onMouseDown: this.onMouseDown\n }, React.createElement(\"div\", {\n className: \"p-x-1\"\n }, React.createElement(ImageThumbnail, {\n imageSrc: this.props.imageSrc,\n imageId: this.props.imageId,\n error: this.props.error,\n stackPercentComplete: this.props.stackPercentComplete\n })), React.createElement(\"div\", {\n className: 'series-details'\n }, React.createElement(\"div\", {\n className: \"series-description\"\n }, this.props.seriesDescription), React.createElement(\"div\", {\n className: \"series-information\"\n }, React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"S:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.seriesNumber)), hasInstanceNumber && React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"I:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.instanceNumber)), React.createElement(\"div\", {\n className: \"item item-frames clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, React.createElement(\"div\", null)), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.numImageFrames)))));\n }\n }]);\n\n return ThumbnailEntry;\n}(Component);\n\n_defineProperty(ThumbnailEntry, \"defaultProps\", {\n active: false,\n error: false,\n stackPercentComplete: 0\n});\n\n_defineProperty(ThumbnailEntry, \"propTypes\", {\n id: propTypes.string.isRequired,\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n active: propTypes.bool.isRequired,\n stackPercentComplete: propTypes.number,\n seriesDescription: propTypes.string,\n seriesNumber: propTypes.string,\n instanceNumber: propTypes.string,\n numImageFrames: propTypes.number,\n onDoubleClick: propTypes.func,\n onClick: propTypes.func\n});\n\n// if they have the same string type.\n\nvar Types$2 = {\n THUMBNAIL: 'thumbnail'\n};\nvar thumbnailSource = {\n /*canDrag(props) {\n return props.error === false;\n },*/\n beginDrag: function beginDrag(props) {\n return props;\n },\n endDrag: function endDrag(props, monitor) {\n //const item = monitor.getItem();\n var dropResult = monitor.getDropResult();\n }\n};\n\nvar ThumbnailEntryDragSource =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntryDragSource, _Component);\n\n function ThumbnailEntryDragSource() {\n _classCallCheck(this, ThumbnailEntryDragSource);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThumbnailEntryDragSource).apply(this, arguments));\n }\n\n _createClass(ThumbnailEntryDragSource, [{\n key: \"render\",\n value: function render() {\n var connectDragSource = this.props.connectDragSource;\n var dropEffect = 'copy';\n return connectDragSource(React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, this.props)), {\n dropEffect: dropEffect\n });\n }\n }]);\n\n return ThumbnailEntryDragSource;\n}(Component);\n\n_defineProperty(ThumbnailEntryDragSource, \"propTypes\", {\n connectDragSource: propTypes.func.isRequired,\n isDragging: propTypes.bool.isRequired\n});\n\n_defineProperty(ThumbnailEntryDragSource, \"defaultProps\", {\n isDragging: false\n});\n\nvar collect$2 = function collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n};\n\nvar ThumbnailEntryDragSource$1 = lib_4(Types$2.THUMBNAIL, thumbnailSource, collect$2)(ThumbnailEntryDragSource);\n\nvar css$g = \".StudyBrowser {\\n float: left;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n background-color: #000;\\n padding-bottom: 20px;\\n}\\n.StudyBrowser .scrollable-study-thumbnails {\\n height: 100%;\\n overflow-y: auto;\\n overflow-x: hidden;\\n padding-bottom: 50px;\\n padding-right: 16px;\\n padding-left: 4px;\\n margin-right: -16px;\\n display: flex;\\n flex-direction: column;\\n}\\n.StudyBrowser .scrollable-study-thumbnails::-webkit-scrollbar {\\n display: none;\\n}\\n.StudyBrowser .scrollable-study-thumbnails .ThumbnailEntryContainer {\\n margin: 0 auto;\\n padding-top: 1rem;\\n padding-bottom: 1.5rem;\\n}\\n.draggable {\\n cursor: copy;\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n}\\n\";\nstyleInject(css$g);\n\nvar StudyBrowser =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyBrowser, _Component);\n\n function StudyBrowser() {\n _classCallCheck(this, StudyBrowser);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudyBrowser).apply(this, arguments));\n }\n\n _createClass(StudyBrowser, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var studies = this.props.studies;\n var thumbnails = studies.map(function (study, studyIndex) {\n return study.thumbnails.map(function (thumb, thumbIndex) {\n if (_this.props.supportsDragAndDrop) {\n return React.createElement(ThumbnailEntryDragSource$1, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n })));\n }\n });\n });\n var components = thumbnails.flat();\n return React.createElement(\"div\", {\n className: \"StudyBrowser\"\n }, React.createElement(\"div\", {\n className: \"scrollable-study-thumbnails\"\n }, components));\n }\n }]);\n\n return StudyBrowser;\n}(Component);\n\n_defineProperty(StudyBrowser, \"defaultProps\", {\n studies: [],\n supportsDragAndDrop: true\n});\n\n_defineProperty(StudyBrowser, \"propTypes\", {\n studies: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n onThumbnailClick: propTypes.func,\n onThumbnailDoubleClick: propTypes.func\n});\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar css$h = \".studyListToolbar {\\n background-color: var(--ui-gray-darker);\\n height: 75px;\\n margin-bottom: 2px;\\n padding: 0 8%;\\n}\\n.studyListToolbar>div {\\n display: inline-block;\\n}\\n.studyListToolbar .header {\\n font-size: 22px;\\n font-weight: 300;\\n color: var(--table-text-secondary-color);\\n line-height: 75px;\\n}\\n.studyListToolbar .studylistToolbar {\\n height: 75px;\\n line-height: 75px;\\n}\\n.studyListToolbar .studyCount {\\n color: var(--large-numbers-color);\\n font-size: 40px;\\n font-weight: 100;\\n line-height: 75px;\\n}\\n.theadBackground {\\n height: 121px;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before,\\n.theadBackground:after {\\n content: '';\\n display: block;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before {\\n background-color: var(--ui-gray-darker);\\n height: 100%;\\n top: 0;\\n z-index: 1;\\n}\\n.theadBackground:after {\\n background-color: var(--large-numbers-color);\\n bottom: -1px;\\n height: 1px;\\n z-index: 3;\\n}\\n#studyListContainer {\\n width: 100%;\\n padding: 0 8%;\\n position: absolute;\\n z-index: 2;\\n}\\n#studyListContainer .loadingTextDiv {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n}\\n#studyListContainer .notFound {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n font-weight: 200;\\n text-align: center;\\n}\\n#studyListContainer table#tblStudyList tr {\\n height: 20px;\\n}\\n#studyListContainer table#tblStudyList thead {\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList thead tr th {\\n padding: 0;\\n border-bottom: solid 1px var(--ui-border-color-active);\\n width: 100%;\\n}\\n#studyListContainer table#tblStudyList thead tr th.studyDate {\\n min-width: 230px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell {\\n display: inline-block;\\n cursor: pointer;\\n width: 100%;\\n min-width: 95px;\\n margin: 0 auto;\\n color: var(--table-text-primary-color);\\n font-weight: 400;\\n padding: 20px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell span {\\n font-size: 15px;\\n float: left;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell i {\\n margin: 0 5px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:hover {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell.active,\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:active {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search {\\n height: 40px;\\n margin: 0 5px 20px 5px;\\n padding: 0 20px;\\n cursor: pointer;\\n border: none;\\n background-color: var(--input-background-color);\\n color: var(--input-placeholder-color);\\n font-size: 10pt;\\n font-weight: normal;\\n width: calc(100% - 10px);\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-webkit-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-ms-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search.invisible {\\n visibility: hidden;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:active,\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:hover {\\n background-color: var(--input-background-color);\\n}\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-year-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-month-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-day-field:not([aria-valuenow]) {\\n color: transparent;\\n}\\n#studyListContainer table#tblStudyList tbody tr {\\n padding: 5px;\\n background-color: #000;\\n}\\n#studyListContainer table#tblStudyList tbody tr:nth-child(even) {\\n background-color: var(--ui-gray-darker);\\n}\\n#studyListContainer table#tblStudyList tbody tr td {\\n height: 40px;\\n line-height: 40px;\\n color: var(--table-text-primary-color);\\n font-weight: 300;\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList tbody tr td.emptyValue {\\n color: var(--ui-gray-light);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover,\\n#studyListContainer table#tblStudyList tbody tr:active,\\n#studyListContainer table#tblStudyList tbody tr.active {\\n background-color: var(--table-hover-color);\\n color: var(--text-primary-color);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover td,\\n#studyListContainer table#tblStudyList tbody tr:active td,\\n#studyListContainer table#tblStudyList tbody tr.active td {\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n background-color: var(--table-hover-color);\\n}\\n@media only screen and (max-width: 1362px) {\\n #studyListContainer {\\n padding: 0 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 5%;\\n }\\n}\\n@media only screen and (max-width: 1161px) {\\n #studyListContainer {\\n padding: 0 $tablePaddingBigWidth;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 3%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 3%;\\n }\\n}\\n@media only screen and (max-width: 1069px) {\\n .theadBackground {\\n height: 101px;\\n }\\n .studylist-pagination > .row {\\n margin-right: 0;\\n }\\n .studyListToolbar {\\n padding: 0 5px;\\n }\\n #studyListContainer {\\n padding: 0;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th input.worklist-search {\\n padding: 10px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell {\\n padding: 10px 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell i {\\n width: auto;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer .worklistPagination .row {\\n margin-left: 0;\\n margin-right: 0;\\n }\\n}\\n\";\nstyleInject(css$h);\n\nvar css$i = \".studyListToolbar .addNewStudy {\\n margin: 0 10px;\\n}\\n.studyListToolbar .addNewStudy label {\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n cursor: pointer;\\n}\\n.studyListToolbar .addNewStudy:hover {\\n color: var(--hover-color);\\n}\\n.studyListToolbar .addNewStudy:active {\\n color: var(--active-color);\\n}\\n.studyListToolbar .addNewStudy input {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\n\";\nstyleInject(css$i);\n\nvar StudylistToolbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(StudylistToolbar, _PureComponent);\n\n function StudylistToolbar() {\n _classCallCheck(this, StudylistToolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudylistToolbar).apply(this, arguments));\n }\n\n _createClass(StudylistToolbar, [{\n key: \"clear\",\n value: function clear(e) {\n e.target.value = null;\n }\n }, {\n key: \"getImportTool\",\n value: function getImportTool() {\n if (this.props.onImport && this.props.studyListFunctionsEnabled) {\n return React.createElement(\"div\", {\n className: \"addNewStudy btn-file\"\n }, React.createElement(\"label\", {\n htmlFor: \"btnImport\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }), \"Import study\"), React.createElement(\"input\", {\n id: \"btnImport\",\n onChange: this.props.onImport,\n onClick: this.clear,\n className: \"js-import-files\",\n type: \"file\",\n webkitdirectory: \"true\",\n directory: \"true\",\n multiple: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"studylistToolbar\"\n }, this.getImportTool());\n }\n }]);\n\n return StudylistToolbar;\n}(PureComponent);\n\n_defineProperty(StudylistToolbar, \"propTypes\", {\n studyListFunctionsEnabled: propTypes.bool.isRequired,\n onImport: propTypes.func\n});\n\n_defineProperty(StudylistToolbar, \"defaultProps\", {\n studyListFunctionsEnabled: true\n});\n\nfunction LoadingText() {\n return React.createElement(\"div\", {\n className: \"loadingTextDiv\"\n }, React.createElement(\"h5\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spinner fa-pulse\"\n })));\n}\n\nvar css$j = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --primary-background-color: #000;\\n}\\n.pagination-area {\\n color: var(--text-secondary-color);\\n font-size: 13px;\\n font-weight: normal !important;\\n}\\n.pagination-area label {\\n font-weight: normal;\\n}\\n.pagination-area select {\\n margin: 5px;\\n background-color: var(--primary-background-color);\\n color: #fff;\\n}\\n.rows-per-page label.wrapperLabel {\\n display: inline-table !important;\\n margin: 0 4px;\\n}\\n.rows-per-page label.wrapperLabel select {\\n margin: 0px 4px 0px 4px;\\n width: 42px;\\n}\\n.page-buttons {\\n margin: 0;\\n text-align: right;\\n}\\n.page-buttons label {\\n font-weight: normal;\\n}\\n.page-buttons label ul.pagination-control {\\n margin: 0;\\n}\\n.page-buttons label ul.pagination-control li {\\n display: table-cell;\\n padding: 5px 2px;\\n}\\n.page-buttons label ul.pagination-control li button {\\n padding: 4px 8px;\\n background-color: var(--primary-background-color);\\n border-color: var(--ui-gray);\\n color: var(--ui-gray-darkest);\\n color: #fff;\\n text-decoration: none;\\n}\\n.page-buttons label ul.pagination-control li button:hover:enabled {\\n color: var(--active-color);\\n}\\n.page-buttons label ul.pagination-control li .active button {\\n background-color: var(--ui-gray);\\n border-color: #ddd;\\n color: #fff;\\n}\\n\";\nstyleInject(css$j);\n\nvar PaginationArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PaginationArea, _PureComponent);\n\n function PaginationArea() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PaginationArea);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationArea)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nextPage\", function () {\n _this.props.nextPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"prevPage\", function () {\n _this.props.prevPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onRowsPerPageChange\", function (event) {\n _this.props.onRowsPerPageChange(parseInt(event.target.value));\n });\n\n return _this;\n }\n\n _createClass(PaginationArea, [{\n key: \"renderPaginationButtons\",\n value: function renderPaginationButtons() {\n return React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-buttons noselect\"\n }, React.createElement(\"label\", null, React.createElement(\"ul\", {\n className: \"pagination-control no-margins\"\n }, React.createElement(\"li\", {\n className: \"page-item prev\"\n }, React.createElement(\"button\", {\n onClick: this.prevPage,\n disabled: this.props.currentPage === 0,\n className: \"btn page-link\"\n }, \"Previous\")), React.createElement(\"li\", {\n className: \"page-item next\"\n }, React.createElement(\"button\", {\n onClick: this.nextPage,\n disabled: this.props.currentPage === this.props.numberOfPages - 1,\n className: \"btn page-link\"\n }, \"Next\"))))));\n }\n }, {\n key: \"renderRowsPerPageDropdown\",\n value: function renderRowsPerPageDropdown() {\n return React.createElement(\"div\", {\n className: \"form-inline form-group rows-per-page\"\n }, React.createElement(\"span\", null, \"Show\"), React.createElement(\"select\", {\n onChange: this.onRowsPerPageChange,\n defaultValue: this.props.rowsPerPage\n }, this.props.pageOptions.map(function (pageNumber) {\n return React.createElement(\"option\", {\n key: pageNumber,\n value: pageNumber\n }, pageNumber);\n })), React.createElement(\"span\", null, \"rows per page\"));\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n name: \"paginationArea\"\n }, React.createElement(\"div\", {\n className: \"pagination-area\"\n }, React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"div\", {\n className: \"col-xs-4 col-sm-3 col-md-3\"\n }, this.renderRowsPerPageDropdown()), React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-number pull-right\"\n }, this.renderPaginationButtons())))));\n }\n }]);\n\n return PaginationArea;\n}(PureComponent);\n\n_defineProperty(PaginationArea, \"defaultProps\", {\n pageOptions: [5, 10, 25, 50, 100],\n rowsPerPage: 25,\n currentPage: 0,\n numberOfPages: 1\n});\n\n_defineProperty(PaginationArea, \"propTypes\", {\n pageOptions: propTypes.array.isRequired,\n rowsPerPage: propTypes.number.isRequired,\n currentPage: propTypes.number.isRequired,\n numberOfPages: propTypes.number.isRequired,\n nextPageFunc: propTypes.func,\n prevPageFunc: propTypes.func,\n onRowsPerPageChange: propTypes.func\n});\n\nvar StudyList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyList, _Component);\n\n function StudyList(props) {\n var _this;\n\n _classCallCheck(this, StudyList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyList).call(this, props));\n var sortData = {};\n var sortClasses = {\n patientName: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n patientId: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n accessionNumber: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDate: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n modality: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDescription: StudyList.DEFAULT_SORTABLE_ICON_CLS\n };\n\n if (props.defaultSort) {\n sortData.field = props.defaultSort.field;\n sortData.order = props.defaultSort.order;\n sortClasses[props.defaultSort.field] = props.defaultSort.order === 'desc' ? StudyList.DESC_SORT_ICON_CLS : StudyList.ASC_SORT_ICON_CLS;\n }\n\n _this.state = {\n loading: false,\n error: false,\n sortClasses: sortClasses,\n searchData: {\n sortData: sortData,\n currentPage: _this.props.currentPage,\n rowsPerPage: _this.props.rowsPerPage\n },\n highlightedItem: ''\n };\n _this.getChangeHandler = _this.getChangeHandler.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onInputKeydown = _this.onInputKeydown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.nextPage = _this.nextPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.prevPage = _this.prevPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onRowsPerPageChange = _this.onRowsPerPageChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(StudyList, [{\n key: \"getChangeHandler\",\n value: function getChangeHandler(key) {\n var _this2 = this;\n\n return function (event) {\n _this2.setSearchData(key, event.target.value);\n };\n }\n }, {\n key: \"setSearchData\",\n value: function setSearchData(key, value, callback) {\n var searchData = this.state.searchData;\n searchData[key] = value;\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"setSearchDataBatch\",\n value: function setSearchDataBatch(keyValues, callback) {\n var searchData = this.state.searchData;\n Object.keys(keyValues).forEach(function (key) {\n searchData[key] = keyValues[key];\n });\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"onInputKeydown\",\n value: function () {\n var _onInputKeydown = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(event) {\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation(); // reset the page because user is doing a new search\n\n this.setSearchData('currentPage', 0, this.search);\n }\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onInputKeydown(_x) {\n return _onInputKeydown.apply(this, arguments);\n }\n\n return onInputKeydown;\n }()\n }, {\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2() {\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n this.setState({\n loading: true,\n error: false\n });\n _context2.next = 4;\n return this.props.onSearch(this.state.searchData);\n\n case 4:\n _context2.next = 10;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2[\"catch\"](0);\n this.setState({\n error: true\n });\n throw new Error(_context2.t0);\n\n case 10:\n _context2.prev = 10;\n this.setState({\n loading: false\n });\n return _context2.finish(10);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6, 10, 13]]);\n }));\n\n function search() {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"renderNoMachingResults\",\n value: function renderNoMachingResults() {\n if (!this.props.studies.length && !this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"No matching results\");\n }\n }\n }, {\n key: \"renderHasError\",\n value: function renderHasError() {\n if (this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"There was an error fetching studies\");\n }\n }\n }, {\n key: \"renderIsLoading\",\n value: function renderIsLoading() {\n if (this.state.loading) {\n return React.createElement(\"div\", {\n className: \"loading\"\n }, React.createElement(LoadingText, null));\n }\n }\n }, {\n key: \"nextPage\",\n value: function nextPage(currentPage) {\n currentPage = currentPage + 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"prevPage\",\n value: function prevPage(currentPage) {\n currentPage = currentPage - 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"onRowsPerPageChange\",\n value: function onRowsPerPageChange(rowsPerPage) {\n this.setSearchDataBatch({\n rowsPerPage: rowsPerPage,\n currentPage: 0\n }, this.search);\n }\n }, {\n key: \"onSortClick\",\n value: function onSortClick(key) {\n var _this3 = this;\n\n return function () {\n var sortClasses = _this3.state.sortClasses;\n var order;\n\n if (sortClasses[key] === StudyList.ASC_SORT_ICON_CLS) {\n sortClasses[key] = StudyList.DESC_SORT_ICON_CLS;\n order = 'desc';\n } else {\n sortClasses[key] = StudyList.ASC_SORT_ICON_CLS;\n order = 'asc';\n }\n\n Object.keys(sortClasses).forEach(function (sortClassKey) {\n if (sortClassKey !== key) {\n sortClasses[sortClassKey] = StudyList.DEFAULT_SORTABLE_ICON_CLS;\n }\n });\n\n _this3.setState({\n sortClasses: sortClasses\n }, function () {\n _this3.setSearchData('sortData', {\n field: key,\n order: order\n }, _this3.search);\n });\n };\n }\n }, {\n key: \"onHighlightItem\",\n value: function onHighlightItem(studyItemUid) {\n this.setState({\n highlightedItem: studyItemUid\n });\n }\n }, {\n key: \"renderTableRow\",\n value: function renderTableRow(study) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: study.studyInstanceUID,\n className: this.state.highlightedItem === study.studyInstanceUID ? 'studylistStudy noselect active' : 'studylistStudy noselect',\n onClick: function onClick() {\n _this4.onHighlightItem(study.studyInstanceUID);\n },\n onMouseDown: function onMouseDown(event) {\n // middle/wheel click\n if (event.button === 1) {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n },\n onDoubleClick: function onDoubleClick() {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n }, React.createElement(\"td\", {\n className: \"patientName\"\n }, study.patientName), React.createElement(\"td\", {\n className: \"patientId\"\n }, study.patientId), React.createElement(\"td\", {\n className: \"accessionNumber\"\n }, study.accessionNumber), React.createElement(\"td\", {\n className: \"studyDate\"\n }, study.studyDate), React.createElement(\"td\", {\n className: \"modalities\"\n }, study.modalities), React.createElement(\"td\", {\n className: \"studyDescription\"\n }, study.studyDescription));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n className: \"StudyList\"\n }, React.createElement(\"div\", {\n className: \"studyListToolbar clearfix\"\n }, React.createElement(\"div\", {\n className: \"header pull-left\"\n }, \"Study List\"), React.createElement(\"div\", {\n className: \"studyCount pull-right\"\n }, this.props.studyCount), React.createElement(\"div\", {\n className: \"pull-right\"\n }, React.createElement(StudylistToolbar, {\n studyListFunctionsEnabled: this.props.studyListFunctionsEnabled,\n onImport: this.props.onImport\n }))), React.createElement(\"div\", {\n className: \"theadBackground\"\n }), React.createElement(\"div\", {\n id: \"studyListContainer\"\n }, React.createElement(\"table\", {\n id: \"tblStudyList\",\n className: \"studylistResult table noselect\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"patientName\"\n }, React.createElement(\"div\", {\n id: \"_patientName\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientName')\n }, React.createElement(\"span\", null, \"Patient Name\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientName\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientName\",\n value: this.state.patientName,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientName')\n })), React.createElement(\"th\", {\n className: \"patientId\"\n }, React.createElement(\"div\", {\n id: \"_patientId\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientId')\n }, React.createElement(\"span\", null, \"MRN\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientId\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientId\",\n value: this.state.patientId,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientId')\n })), React.createElement(\"th\", {\n className: \"accessionNumber\"\n }, React.createElement(\"div\", {\n id: \"_accessionNumber\",\n className: \"sortingCell\",\n onClick: this.onSortClick('accessionNumber')\n }, React.createElement(\"span\", null, \"Accession #\"), React.createElement(\"i\", {\n className: this.state.sortClasses.accessionNumber\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"accessionNumber\",\n value: this.state.accessionNumber,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('accessionNumber')\n })), React.createElement(\"th\", {\n className: \"studyDate\"\n }, React.createElement(\"div\", {\n id: \"_studyDate\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDate')\n }, React.createElement(\"span\", null, \"Study Date\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDate\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n name: \"daterange\",\n id: \"studyDate\",\n value: this.state.studyDateRange,\n onChange: this.getChangeHandler('studyDateRange')\n })), React.createElement(\"th\", {\n className: \"modality\"\n }, React.createElement(\"div\", {\n id: \"_modality\",\n className: \"sortingCell\",\n onClick: this.onSortClick('modality')\n }, React.createElement(\"span\", null, \"Modality\"), React.createElement(\"i\", {\n className: this.state.sortClasses.modality\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"modality\",\n onKeyDown: this.onInputKeydown,\n value: this.state.modality,\n onChange: this.getChangeHandler('modality')\n })), React.createElement(\"th\", {\n className: \"studyDescription\"\n }, React.createElement(\"div\", {\n id: \"_studyDescription\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDescription')\n }, React.createElement(\"span\", null, \"Study Description\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDescription\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"studyDescription\",\n onKeyDown: this.onInputKeydown,\n value: this.state.studyDescription,\n onChange: this.getChangeHandler('studyDescription')\n })))), React.createElement(\"tbody\", {\n id: \"studyListData\"\n }, this.props.studies.map(function (study) {\n return _this5.renderTableRow(study);\n }))), this.renderIsLoading(), this.renderHasError(), this.renderNoMachingResults(), React.createElement(PaginationArea, {\n currentPage: this.state.searchData.currentPage,\n nextPageFunc: this.nextPage,\n prevPageFunc: this.prevPage,\n onRowsPerPageChange: this.onRowsPerPageChange,\n rowsPerPage: this.state.searchData.rowsPerPage,\n numberOfPages: Math.ceil(this.props.studyCount / this.state.searchData.rowsPerPage)\n })));\n }\n }]);\n\n return StudyList;\n}(Component);\n\n_defineProperty(StudyList, \"propTypes\", {\n studies: propTypes.array.isRequired,\n onSelectItem: propTypes.func.isRequired,\n onSearch: propTypes.func.isRequired,\n studyCount: propTypes.number.isRequired,\n currentPage: propTypes.number,\n rowsPerPage: propTypes.number,\n studyListFunctionsEnabled: propTypes.bool,\n defaultSort: propTypes.shape({\n field: propTypes.string.isRequired,\n order: propTypes.oneOf(['desc', 'asc']).isRequired\n }),\n onImport: propTypes.func\n});\n\n_defineProperty(StudyList, \"defaultProps\", {\n currentPage: 0,\n rowsPerPage: 25\n});\n\n_defineProperty(StudyList, \"DEFAULT_SORTABLE_ICON_CLS\", 'fa fa-fw fa-sort');\n\n_defineProperty(StudyList, \"DESC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-desc');\n\n_defineProperty(StudyList, \"ASC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-asc');\n\nfunction SimpleToolbarButton(props) {\n var className = classnames(props.className, 'btn btn-sm btn-default');\n return React.createElement(\"button\", {\n id: props.id,\n type: \"button\",\n className: className,\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: props.title\n }, React.createElement(\"span\", {\n className: props.iconClassName\n }));\n}\nSimpleToolbarButton.propTypes = {\n iconClassName: propTypes.string,\n title: propTypes.string,\n className: propTypes.string,\n id: propTypes.string,\n onClick: propTypes.func\n};\n\nfunction getDefaultButtonData() {\n var buttonData = [];\n buttonData.push({\n id: 'wwwc',\n title: 'WW/WC',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-sun-o'\n });\n buttonData.push({\n id: 'wwwcRegion',\n title: 'Window by Region',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square'\n });\n buttonData.push({\n id: 'magnify',\n title: 'Magnify',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle'\n });\n buttonData.push({\n id: 'annotate',\n title: 'Annotation',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-h'\n });\n buttonData.push({\n id: 'invert',\n title: 'Invert',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-adjust'\n });\n buttonData.push({\n id: 'zoom',\n title: 'Zoom',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-search'\n });\n buttonData.push({\n id: 'pan',\n title: 'Pan',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows'\n });\n buttonData.push({\n id: 'stackScroll',\n title: 'Stack Scroll',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-bars'\n });\n buttonData.push({\n id: 'length',\n title: 'Length Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-v'\n });\n buttonData.push({\n id: 'angle',\n title: 'Angle Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-angle-left'\n });\n buttonData.push({\n id: 'dragProbe',\n title: 'Pixel Probe',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-dot-circle-o'\n });\n buttonData.push({\n id: 'ellipticalRoi',\n title: 'Elliptical ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle-o'\n });\n buttonData.push({\n id: 'rectangleRoi',\n title: 'Rectangle ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square-o'\n });\n buttonData.push({\n id: 'resetViewport',\n title: 'Reset Viewport',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-undo'\n });\n buttonData.push({\n id: 'clearTools',\n title: 'Clear tools',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-trash'\n });\n return buttonData;\n}\n\nvar Toolbar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Toolbar, _Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Toolbar).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: \"render\",\n value: function render() {\n var maybePlayClipButton;\n\n if (this.props.includePlayClipButton) {\n maybePlayClipButton = React.createElement(PlayClipButton, null);\n }\n\n var maybeLayoutButton;\n\n if (this.props.includeLayoutButton) {\n maybeLayoutButton = React.createElement(LayoutButton, null);\n }\n\n return React.createElement(\"div\", {\n id: \"toolbar\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, this.props.buttons.map(function (button, i) {\n return React.createElement(SimpleToolbarButton, _extends({}, button, {\n key: i\n }));\n }), maybePlayClipButton, maybeLayoutButton));\n }\n }]);\n\n return Toolbar;\n}(Component);\nToolbar.propTypes = {\n buttons: propTypes.array.isRequired,\n includeLayoutButton: propTypes.bool.isRequired,\n includePlayClipButton: propTypes.bool.isRequired\n};\nToolbar.defaultProps = {\n buttons: getDefaultButtonData(),\n includeLayoutButton: true,\n includePlayClipButton: true\n};\n\nvar css$k = \".ToolbarButton {\\n height: 48px;\\n color: var(--default-color);\\n float: left;\\n text-align: center;\\n padding: 0 1rem;\\n cursor: pointer;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none; /* Non-prefixed version, currently\\n supported by Chrome and Opera */\\n}\\n.ToolbarButton svg {\\n height: 21px;\\n width: 21px;\\n margin: 2px;\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n.ToolbarButton i {\\n font-size: 18px;\\n line-height: 30px;\\n}\\n.ToolbarButton:hover {\\n color: var(--hover-color);\\n}\\n.ToolbarButton:hover svg {\\n fill: var(--hover-color);\\n stroke: var(--hover-color);\\n}\\n.ToolbarButton:hover i {\\n color: var(--hover-color);\\n}\\n.ToolbarButton.active,\\n.ToolbarButton:active {\\n color: var(--active-color);\\n}\\n.ToolbarButton.active svg,\\n.ToolbarButton:active svg {\\n fill: var(--active-color);\\n stroke: var(--active-color);\\n}\\n.ToolbarButton.active i,\\n.ToolbarButton:active i {\\n color: var(--active-color);\\n}\\n.ToolbarButton span.toolbar-button-label {\\n font-size: 12px;\\n font-weight: 500;\\n display: block;\\n}\\n\";\nstyleInject(css$k);\n\nfunction ToolbarButton(props) {\n var onClick = function onClick(event) {\n if (props.onClick) {\n props.onClick(event, props);\n }\n\n if (props.setToolActive) {\n props.setToolActive(props);\n }\n };\n\n var className = classnames(props.className, {\n active: props.active\n });\n var active = props.active,\n svgUrlActive = props.svgUrlActive,\n iconClassesActive = props.iconClassesActive,\n textActive = props.textActive;\n var svgUrl = props.svgUrl;\n\n if (active && svgUrlActive) {\n svgUrl = svgUrlActive;\n }\n\n var iconClasses = props.iconClasses;\n\n if (active && iconClassesActive) {\n iconClasses = iconClassesActive;\n }\n\n var label = props.text;\n\n if (active && textActive) {\n label = textActive;\n }\n\n return React.createElement(\"div\", {\n className: className,\n onClick: onClick\n }, svgUrl && React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: svgUrl\n })), iconClasses && React.createElement(\"i\", {\n className: iconClasses\n }), React.createElement(\"span\", {\n className: \"toolbar-button-label\"\n }, label));\n}\nToolbarButton.defaultProps = {\n command: 'ToolbarButton',\n onClick: function onClick() {//console.log(`ToolbarButton does not have an onClick event`);\n },\n className: 'ToolbarButton'\n};\nToolbarButton.propTypes = {\n active: propTypes.bool.isRequired,\n className: propTypes.string.isRequired,\n text: propTypes.string.isRequired,\n textActive: propTypes.string,\n iconClasses: propTypes.string,\n iconClassesActive: propTypes.string,\n svgUrl: propTypes.string,\n svgUrlActive: propTypes.string,\n onClick: propTypes.func,\n setToolActive: propTypes.func\n};\n\nvar css$l = \".ToolbarSection {\\n float: left;\\n background-color: var(--primary-background-color);\\n border-radius: 8px;\\n}\\n\";\nstyleInject(css$l);\n\nvar ToolbarSection =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ToolbarSection, _PureComponent);\n\n function ToolbarSection() {\n _classCallCheck(this, ToolbarSection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ToolbarSection).apply(this, arguments));\n }\n\n _createClass(ToolbarSection, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var items = this.props.buttons.map(function (item, index) {\n return React.createElement(ToolbarButton, _extends({\n key: index\n }, item, {\n active: item.command === _this.props.activeCommand,\n setToolActive: _this.props.setToolActive\n }));\n });\n return React.createElement(\"div\", {\n className: 'ToolbarSection'\n }, items);\n }\n }]);\n\n return ToolbarSection;\n}(PureComponent);\n\nToolbarSection.propTypes = {\n buttons: propTypes.array.isRequired,\n activeCommand: propTypes.string,\n setToolActive: propTypes.func\n};\n\nvar range = function range(start, end) {\n return new Array(end - start).fill().map(function (d, i) {\n return i + start;\n });\n};\nvar allowedKeys = [8, 13, 27, 32, 46].concat([12, 106, 107, 109, 110, 111], _toConsumableArray(range(218, 220)), _toConsumableArray(range(185, 190)), _toConsumableArray(range(111, 131)), _toConsumableArray(range(32, 41)), _toConsumableArray(range(47, 58)), _toConsumableArray(range(64, 91)));\nvar specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 191: '/',\n 224: 'meta'\n};\n\nvar HotKeysPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HotKeysPreferences, _Component);\n\n function HotKeysPreferences(props) {\n var _this;\n\n _classCallCheck(this, HotKeysPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HotKeysPreferences).call(this, props));\n _this.columns = {};\n Object.keys(_this.props.hotKeysData).forEach(function (key) {\n var hotKey = _this.props.hotKeysData[key];\n\n if (_this.columns.hasOwnProperty(hotKey.column)) {\n _this.columns[hotKey.column].push(key);\n } else {\n _this.columns[hotKey.column] = [key];\n }\n });\n _this.columnClass = \"col-md-\".concat(12 / Object.keys(_this.columns).length || 1);\n _this.state = {\n hotKeys: _this.props.hotKeysData,\n errorMessages: {}\n };\n _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(HotKeysPreferences, [{\n key: \"getKeysPressedArray\",\n value: function getKeysPressedArray(event) {\n var keysPressedArray = [];\n\n if (event.ctrlKey && !event.altKey) {\n keysPressedArray.push('CTRL');\n }\n\n if (event.shiftKey && !event.altKey) {\n keysPressedArray.push('SHIFT');\n }\n\n if (event.altKey && !event.ctrlKey) {\n keysPressedArray.push('ALT');\n }\n\n return keysPressedArray;\n }\n }, {\n key: \"getConflictingCommand\",\n value: function getConflictingCommand(currentToolKey, hotKeyCommand) {\n var _this2 = this;\n\n return Object.keys(this.state.hotKeys).find(function (tool) {\n var value = _this2.state.hotKeys[tool].command;\n return value && value === hotKeyCommand && tool !== currentToolKey;\n });\n }\n }, {\n key: \"updateInputText\",\n value: function updateInputText(toolKey, event) {\n var displayPressedKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pressedKeys = this.getKeysPressedArray(event);\n\n if (displayPressedKey) {\n var specialKeyName = specialKeys[event.which];\n var keyName = specialKeyName || event.key || String.fromCharCode(event.keyCode);\n pressedKeys.push(keyName.toUpperCase());\n }\n\n this.updateHotKeysState(toolKey, pressedKeys.join('+'));\n }\n }, {\n key: \"updateHotKeysState\",\n value: function updateHotKeysState(toolKey, command) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var hotKeys = this.state.hotKeys;\n hotKeys[toolKey].command = command;\n this.setState(hotKeys, callback);\n }\n }, {\n key: \"updateErrorsState\",\n value: function updateErrorsState(toolKey, errorMessage) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var errorMessages = this.state.errorMessages;\n errorMessages[toolKey] = errorMessage;\n this.setState({\n errorMessages: errorMessages\n }, callback);\n }\n }, {\n key: \"onInputKeyDown\",\n value: function onInputKeyDown(event, toolKey) {\n // Prevent ESC key from propagating and closing the modal\n if (event.key === 'Escape') {\n event.stopPropagation();\n }\n\n if (allowedKeys.includes(event.keyCode)) {\n this.updateInputText(toolKey, event, true);\n } else {\n this.updateInputText(toolKey, event, false);\n }\n\n event.preventDefault();\n }\n }, {\n key: \"onChange\",\n value: function onChange(event, toolKey) {\n var _this3 = this;\n\n if (event.ctrlKey || event.altKey || event.shiftKey) {\n return;\n }\n\n var hotKey = this.state.hotKeys[toolKey];\n var command = hotKey.command;\n var pressedKeys = command.split('+');\n var lastPressedKey = pressedKeys[pressedKeys.length - 1].toUpperCase(); // clear the prior errors\n\n this.setState({\n errorMessages: {}\n }, function () {\n // Check if it has a valid modifier\n var isModifier = ['CTRL', 'ALT', 'SHIFT'].includes(lastPressedKey);\n\n if (isModifier) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n /*\n * Check if it has some conflict\n */\n\n\n var conflictedCommandKey = _this3.getConflictingCommand(toolKey, command);\n\n if (conflictedCommandKey) {\n var conflictedCommand = _this3.state.hotKeys[conflictedCommandKey];\n\n _this3.updateErrorsState(toolKey, \"\\\"\".concat(conflictedCommand.label, \"\\\" is already using the \\\"\").concat(conflictedCommand.command, \"\\\" shortcut.\"));\n\n _this3.updateErrorsState(conflictedCommandKey, '');\n\n _this3.updateHotKeysState(toolKey, '');\n\n return;\n }\n /*\n * Check if is a valid combination\n */\n\n\n var modifierCommand = pressedKeys.slice(0, pressedKeys.length - 1).join('+').toUpperCase();\n var disallowedCombinations$$1 = HotKeysPreferences.disallowedCombinations[modifierCommand];\n var hasDisallowedCombinations = disallowedCombinations$$1 ? disallowedCombinations$$1.includes(lastPressedKey) : false;\n\n if (hasDisallowedCombinations) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n });\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(toolKey, hotKey) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: toolKey\n }, React.createElement(\"td\", {\n className: \"text-right p-r-1\"\n }, hotKey.label), React.createElement(\"td\", {\n width: \"200\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel \".concat(this.state.errorMessages[toolKey] !== undefined ? 'state-error' : '', \" \"),\n ref: function ref(input) {\n return _this4[toolKey] = input;\n },\n \"data-key\": \"defaultTool\"\n }, React.createElement(\"input\", {\n readOnly: true,\n type: \"text\",\n value: hotKey.command,\n vali: \"true\",\n className: \"form-control hotkey text-center\",\n onKeyDown: function onKeyDown(event) {\n return _this4.onInputKeyDown(event, toolKey);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.onChange(event, toolKey);\n }\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }), React.createElement(\"span\", {\n className: \"errorMessage\"\n }, this.state.errorMessages[toolKey]))));\n }\n }, {\n key: \"renderColumn\",\n value: function renderColumn(columnIndex, hotkeysColumn) {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n key: columnIndex,\n className: this.columnClass\n }, React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"text-right p-r-1\"\n }, \"Function\"), React.createElement(\"th\", {\n className: \"text-center\"\n }, \"Shortcut\"))), React.createElement(\"tbody\", null, hotkeysColumn.map(function (keyTool) {\n return _this5.renderRow(keyTool, _this5.state.hotKeys[keyTool]);\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return React.createElement(\"div\", {\n className: \"row\"\n }, Object.keys(this.columns).sort().map(function (columnIndex) {\n return _this6.renderColumn(columnIndex, _this6.columns[columnIndex]);\n }));\n }\n }]);\n\n return HotKeysPreferences;\n}(Component);\n\n_defineProperty(HotKeysPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$m = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n.presetIndex {\\n padding: 0px 10px 0px 10px;\\n}\\n\";\nstyleInject(css$m);\n\nvar WindowLevelPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(WindowLevelPreferences, _Component);\n\n function WindowLevelPreferences(props) {\n var _this;\n\n _classCallCheck(this, WindowLevelPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WindowLevelPreferences).call(this, props));\n _this.state = {\n data: _this.props.windowLevelData\n };\n return _this;\n }\n\n _createClass(WindowLevelPreferences, [{\n key: \"onChange\",\n value: function onChange(event, key, field) {\n var data = this.state.data;\n var entry = data[key];\n entry[field] = event.target.value;\n this.setState({\n data: data\n });\n\n if (this.props.onChange) {\n this.props.onChange(data);\n }\n }\n }, {\n key: \"getWLPreferencesRows\",\n value: function getWLPreferencesRows(key) {\n var _this2 = this;\n\n var entry = this.state.data[key];\n return React.createElement(\"tr\", {\n key: key\n }, React.createElement(\"td\", {\n className: \"p-r-1 text-center\"\n }, key), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.description,\n type: \"text\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'description');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.window,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'window');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.level,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'level');\n }\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"p-x-1 text-center presetIndex\"\n }, \"Preset\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Description\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Window\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Level\"))), React.createElement(\"tbody\", null, Object.keys(this.state.data).map(function (key) {\n return _this3.getWLPreferencesRows(key);\n })));\n }\n }]);\n\n return WindowLevelPreferences;\n}(Component);\n\n_defineProperty(WindowLevelPreferences, \"propTypes\", {\n windowLevelData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$n = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n\";\nstyleInject(css$n);\n\nvar UserPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferences, _Component);\n\n function UserPreferences() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, UserPreferences);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(UserPreferences)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n tabIndex: 0\n });\n\n return _this;\n }\n\n _createClass(UserPreferences, [{\n key: \"tabClick\",\n value: function tabClick(tabIndex) {\n this.setState({\n tabIndex: tabIndex\n });\n }\n }, {\n key: \"renderHotkeysTab\",\n value: function renderHotkeysTab() {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(HotKeysPreferences, {\n hotKeysData: this.props.hotKeysData\n })));\n }\n }, {\n key: \"renderWindowLevelTab\",\n value: function renderWindowLevelTab() {\n if (this.props.windowLevelData) {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(WindowLevelPreferences, {\n windowLevelData: this.props.windowLevelData\n })));\n }\n }\n }, {\n key: \"renderTabs\",\n value: function renderTabs(tabIndex) {\n if (tabIndex === 0) {\n return this.renderHotkeysTab();\n } else {\n return this.renderWindowLevelTab();\n }\n }\n }, {\n key: \"getTabClass\",\n value: function getTabClass(tabIndex) {\n return tabIndex === this.state.tabIndex ? 'nav-link active' : 'nav-link';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"dialog-separator-after\"\n }, React.createElement(\"ul\", {\n className: \"nav nav-tabs\"\n }, React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(0);\n },\n className: this.getTabClass(0)\n }, React.createElement(\"button\", null, \"Hotkeys\")), React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(1);\n },\n className: this.getTabClass(1)\n }, React.createElement(\"button\", null, \"Window Level\")))), this.renderTabs(this.state.tabIndex));\n }\n }]);\n\n return UserPreferences;\n}(Component);\n\n_defineProperty(UserPreferences, \"defaultProps\", {\n hotKeysData: {},\n windowLevelData: {}\n});\n\n_defineProperty(UserPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n windowLevelData: propTypes.object.isRequired\n});\n\nvar createChainableTypeChecker_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(createChainableTypeChecker_1);\n\nvar componentOrElement = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(componentOrElement);\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar ownerDocument_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(ownerDocument_1);\n\nvar activeElement_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = interopRequireDefault(ownerDocument_1);\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(activeElement_1);\n\nvar inDOM = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(inDOM);\n\nvar contains = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(contains);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning$1 = function() {};\n\nif (__DEV__) {\n warning$1 = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nvar warning_1 = warning$1;\n\nvar deprecated_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecated;\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] != null) {\n var messageKey = componentName + '.' + propName;\n\n (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n warned[messageKey] = true;\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(deprecated_1);\n\nvar elementType_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(elementType_1);\n\nvar hasClass_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hasClass_1);\n\nvar addClass_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(addClass_1);\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nvar removeClass = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\nvar _class = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = interopRequireDefault(addClass_1);\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = interopRequireDefault(removeClass);\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;\n});\n\nunwrapExports(_class);\nvar _class_1 = _class.addClass;\nvar _class_2 = _class.removeClass;\nvar _class_3 = _class.hasClass;\n\nvar camelize_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelize_1);\n\nvar camelizeStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = interopRequireDefault(camelize_1);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelizeStyle);\n\nvar hyphenate_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenate_1);\n\nvar hyphenateStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = interopRequireDefault(hyphenate_1);\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenateStyle);\n\nvar getComputedStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(getComputedStyle);\n\nvar removeStyle_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(removeStyle_1);\n\nvar properties = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}\n});\n\nunwrapExports(properties);\nvar properties_1 = properties.animationEnd;\nvar properties_2 = properties.animationDelay;\nvar properties_3 = properties.animationTiming;\nvar properties_4 = properties.animationDuration;\nvar properties_5 = properties.animationName;\nvar properties_6 = properties.transitionEnd;\nvar properties_7 = properties.transitionDuration;\nvar properties_8 = properties.transitionDelay;\nvar properties_9 = properties.transitionTiming;\nvar properties_10 = properties.transitionProperty;\nvar properties_11 = properties.transform;\n\nvar isTransform_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isTransform_1);\n\nvar style_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar _hyphenateStyle = interopRequireDefault(hyphenateStyle);\n\nvar _getComputedStyle2 = interopRequireDefault(getComputedStyle);\n\nvar _removeStyle = interopRequireDefault(removeStyle_1);\n\n\n\nvar _isTransform = interopRequireDefault(isTransform_1);\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(style_1);\n\nvar scrollbarSize_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(scrollbarSize_1);\n\nvar isWindow = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isWindow);\n\nvar isOverflowing_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\n\n\nvar _isWindow2 = _interopRequireDefault(isWindow);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument2.default)(node);\n var win = (0, _isWindow2.default)(doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow2.default)(container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isOverflowing_1);\n\nvar manageAriaHidden = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n});\n\nunwrapExports(manageAriaHidden);\nvar manageAriaHidden_1 = manageAriaHidden.ariaHidden;\nvar manageAriaHidden_2 = manageAriaHidden.hideSiblings;\nvar manageAriaHidden_3 = manageAriaHidden.showSiblings;\n\nvar ModalManager_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _class2 = _interopRequireDefault(_class);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\nfunction setContainerStyle(state, container) {\n var style = { overflow: 'hidden' };\n\n // we are only interested in the actual `style` here\n // becasue we will override it\n state.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (state.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n }\n\n (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n var style = _ref.style;\n\n\n Object.keys(style).forEach(function (key) {\n return container.style[key] = style[key];\n });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n var _this = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n _ref2$handleContainer = _ref2.handleContainerOverflow,\n handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n _classCallCheck(this, ModalManager);\n\n this.add = function (modal, container, className) {\n var modalIdx = _this.modals.indexOf(modal);\n var containerIdx = _this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = _this.modals.length;\n _this.modals.push(modal);\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.hideSiblings)(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n _this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n\n overflowing: (0, _isOverflowing2.default)(container)\n };\n\n if (_this.handleContainerOverflow) {\n setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n _this.containers.push(container);\n _this.data.push(data);\n\n return modalIdx;\n };\n\n this.remove = function (modal) {\n var modalIdx = _this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(_this.data, modal);\n var data = _this.data[containerIdx];\n var container = _this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n _this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (data.modals.length === 0) {\n data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n if (_this.handleContainerOverflow) {\n removeContainerStyle(data, container);\n }\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.showSiblings)(container, modal.mountNode);\n }\n _this.containers.splice(containerIdx, 1);\n _this.data.splice(containerIdx, 1);\n } else if (_this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n (0, manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n this.isTopModal = function (modal) {\n return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n };\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ModalManager_1);\n\nvar getContainer_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getContainer;\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(getContainer_1);\n\nvar ownerDocument$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ownerDocument$1);\n\nvar LegacyPortal = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(LegacyPortal);\n\nvar Portal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\n\n\nvar _LegacyPortal2 = _interopRequireDefault(LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Portal_1);\n\nvar RefHolder_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes$$1 = {\n children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n _inherits(RefHolder, _React$Component);\n\n function RefHolder() {\n _classCallCheck(this, RefHolder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n RefHolder.prototype.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes$$1;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(RefHolder_1);\n\nvar on_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(on_1);\n\nvar off_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(off_1);\n\nvar addEventListener = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\n\n\nvar _on2 = _interopRequireDefault(on_1);\n\n\n\nvar _off2 = _interopRequireDefault(off_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addEventListener);\n\nvar addFocusListener_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = void 0;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function remove() {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function remove() {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addFocusListener_1);\n\nvar Modal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _activeElement2 = _interopRequireDefault(activeElement_1);\n\n\n\nvar _contains2 = _interopRequireDefault(contains);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _deprecated2 = _interopRequireDefault(deprecated_1);\n\n\n\nvar _elementType2 = _interopRequireDefault(elementType_1);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\n\n\nvar _ModalManager2 = _interopRequireDefault(ModalManager_1);\n\n\n\nvar _Portal2 = _interopRequireDefault(Portal_1);\n\n\n\nvar _RefHolder2 = _interopRequireDefault(RefHolder_1);\n\n\n\nvar _addEventListener2 = _interopRequireDefault(addEventListener);\n\n\n\nvar _addFocusListener2 = _interopRequireDefault(addFocusListener_1);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n function Modal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Modal.prototype.omitProps = function omitProps(props, propTypes$$1) {\n\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes$$1, prop)) {\n newProps[prop] = props[prop];\n }\n });\n\n return newProps;\n };\n\n Modal.prototype.render = function render() {\n var _props = this.props,\n show = _props.show,\n container = _props.container,\n children = _props.children,\n Transition = _props.transition,\n backdrop = _props.backdrop,\n className = _props.className,\n style = _props.style,\n onExit = _props.onExit,\n onExiting = _props.onExiting,\n onEnter = _props.onEnter,\n onEntering = _props.onEntering,\n onEntered = _props.onEntered;\n\n\n var dialog = _react2.default.Children.only(children);\n var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n var mountModal = show || Transition && !this.state.exited;\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props,\n role = _dialog$props.role,\n tabIndex = _dialog$props.tabIndex;\n\n\n if (role === undefined || tabIndex === undefined) {\n dialog = (0, React.cloneElement)(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2.default.createElement(\n Transition,\n {\n appear: true,\n unmountOnExit: true,\n 'in': show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2.default.createElement(\n _Portal2.default,\n {\n ref: this.setMountNode,\n container: container,\n onRendered: this.onPortalRendered\n },\n _react2.default.createElement(\n 'div',\n _extends({\n ref: this.setModalNodeRef,\n role: role || 'dialog'\n }, filteredProps, {\n style: style,\n className: className\n }),\n backdrop && this.renderBackdrop(),\n _react2.default.createElement(\n _RefHolder2.default,\n { ref: this.setDialogRef },\n dialog\n )\n )\n );\n };\n\n Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n if (!this.props.show && nextProps.show) {\n this.checkForFocus();\n }\n };\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n show = _props2.show,\n transition = _props2.transition;\n\n\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n Modal.prototype.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) {\n return;\n }\n\n var dialogElement = this.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n\n if (!dialogElement.hasAttribute('tabIndex')) {\n (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n dialogElement.setAttribute('tabIndex', -1);\n }\n\n dialogElement.focus();\n }\n };\n\n Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n Modal.prototype.getDialogElement = function getDialogElement() {\n return _reactDom2.default.findDOMNode(this.dialog);\n };\n\n Modal.prototype.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes2.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes2.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes2.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => }\n * ```\n */\n renderBackdrop: _propTypes2.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes2.default.func,\n\n /**\n * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n * @deprecated\n */\n onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes2.default.func,\n\n /**\n * A style object for the backdrop component.\n */\n backdropStyle: _propTypes2.default.object,\n\n /**\n * A css class or classes for the backdrop component.\n */\n backdropClassName: _propTypes2.default.string,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes2.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes2.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the dialog component.\n */\n transition: _elementType2.default,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType2.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes2.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes2.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react2.default.createElement('div', props);\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = { exited: !this.props.show };\n\n this.renderBackdrop = function () {\n var _props3 = _this2.props,\n backdropStyle = _props3.backdropStyle,\n backdropClassName = _props3.backdropClassName,\n renderBackdrop = _props3.renderBackdrop,\n Transition = _props3.backdropTransition;\n\n\n var backdropRef = function backdropRef(ref) {\n return _this2.backdrop = ref;\n };\n\n var backdrop = renderBackdrop({\n ref: backdropRef,\n style: backdropStyle,\n className: backdropClassName,\n onClick: _this2.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2.default.createElement(\n Transition,\n {\n appear: true,\n 'in': _this2.props.show\n },\n backdrop\n );\n }\n\n return backdrop;\n };\n\n this.onPortalRendered = function () {\n _this2.autoFocus();\n\n if (_this2.props.onShow) {\n _this2.props.onShow();\n }\n };\n\n this.onShow = function () {\n var doc = (0, _ownerDocument2.default)(_this2);\n var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n };\n\n this.onHide = function () {\n _this2.props.manager.remove(_this2);\n\n _this2._onDocumentKeydownListener.remove();\n\n _this2._onDocumentKeyupListener.remove();\n\n _this2._onFocusinListener.remove();\n\n if (_this2.props.restoreFocus) {\n _this2.restoreLastFocus();\n }\n };\n\n this.setMountNode = function (ref) {\n _this2.mountNode = ref ? ref.getMountNode() : ref;\n };\n\n this.setModalNodeRef = function (ref) {\n _this2.modalNode = ref;\n };\n\n this.setDialogRef = function (ref) {\n _this2.dialog = ref;\n };\n\n this.handleHidden = function () {\n _this2.setState({ exited: true });\n _this2.onHide();\n\n if (_this2.props.onExited) {\n var _props4;\n\n (_props4 = _this2.props).onExited.apply(_props4, arguments);\n }\n };\n\n this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this2.props.onBackdropClick) {\n _this2.props.onBackdropClick(e);\n }\n\n if (_this2.props.backdrop === true) {\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyDown = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyDown) {\n _this2.props.onEscapeKeyDown(e);\n }\n\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyUp = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyUp) {\n _this2.props.onEscapeKeyUp(e);\n }\n }\n };\n\n this.checkForFocus = function () {\n if (_inDOM2.default) {\n _this2.lastFocus = (0, _activeElement2.default)();\n }\n };\n\n this.enforceFocus = function () {\n if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n return;\n }\n\n var dialogElement = _this2.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n dialogElement.focus();\n }\n };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Modal_1);\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({\n polyfill: polyfill\n});\n\nvar PropTypes = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.'); // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]);\n\nexports.classNamesShape = classNamesShape;\n});\n\nunwrapExports(PropTypes);\nvar PropTypes_1 = PropTypes.transitionTimeout;\nvar PropTypes_2 = PropTypes.classNamesShape;\nvar PropTypes_3 = PropTypes.timeoutsShape;\n\nvar Transition_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes$$1 = _interopRequireWildcard(propTypes);\n\nvar _react = _interopRequireDefault(React);\n\nvar _reactDom = _interopRequireDefault(reactDom);\n\n\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {(state) => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n * this.setState({ in: true });\n * }\n *\n * render() {\n * return (\n *
\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter;\n appear = timeout.appear;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n _this2.onTransitionEnd(node, timeouts.enter, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes$$1.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element.\n * This function is called with the current transition status\n * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n * to apply context specific props to a component.\n *\n * ```jsx\n * \n * {(status) => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes$$1.oneOfType([PropTypes$$1.func.isRequired, PropTypes$$1.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes$$1.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes$$1.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes$$1.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes$$1.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes$$1.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes$$1.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided\n *\n * You may specify a single timeout for all transitions like: `timeout={500}`,\n * or individually like:\n *\n * ```jsx\n * timeout={{\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * @type {number | { enter?: number, exit?: number }}\n */\n timeout: function timeout(props) {\n var pt = process.env.NODE_ENV !== \"production\" ? PropTypes.timeoutsShape : {}; if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes$$1.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, reactLifecyclesCompat_es.polyfill)(Transition);\n\nexports.default = _default;\n});\n\nunwrapExports(Transition_1);\nvar Transition_2 = Transition_1.EXITING;\nvar Transition_3 = Transition_1.ENTERED;\nvar Transition_4 = Transition_1.ENTERING;\nvar Transition_5 = Transition_1.EXITED;\nvar Transition_6 = Transition_1.UNMOUNTED;\n\nvar Fade_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _fadeStyles;\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _Transition2 = _interopRequireDefault(Transition_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[Transition_1.ENTERING] = 'in', _fadeStyles[Transition_1.ENTERED] = 'in', _fadeStyles);\n\nvar Fade = function (_React$Component) {\n _inherits(Fade, _React$Component);\n\n function Fade(props, context) {\n _classCallCheck(this, Fade);\n\n return _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n }\n\n Fade.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['className', 'children']);\n\n return _react2.default.createElement(\n _Transition2.default,\n props,\n function (status, innerProps) {\n return _react2.default.cloneElement(children, _extends({}, innerProps, {\n className: (0, _classnames2.default)('fade', className, children.props.className, fadeStyles[status])\n }));\n }\n );\n };\n\n return Fade;\n}(_react2.default.Component);\n\nexports.default = Fade;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Fade_1);\n\nvar Body = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalBody = function (_React$Component) {\n _inherits(ModalBody, _React$Component);\n\n function ModalBody() {\n _classCallCheck(this, ModalBody);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalBody.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalBody.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalBody.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-body') }),\n children\n );\n };\n\n return ModalBody;\n}(_react2.default.Component);\n\nModalBody.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalBody;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Body);\n\nvar Dismiss_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar chain = function chain(a, b) {\n return function () {\n a && a.apply(undefined, arguments);\n b && b.apply(undefined, arguments);\n };\n};\n\nvar Dismiss = function (_React$Component) {\n _inherits(Dismiss, _React$Component);\n\n function Dismiss() {\n _classCallCheck(this, Dismiss);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Dismiss.prototype.render = function render() {\n var _props = this.props,\n Tag = _props.component,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['component', 'children']);\n\n return _react2.default.createElement(\n Tag,\n _extends({}, props, {\n onClick: chain(props.onClick, this.context.onModalHide)\n }),\n children\n );\n };\n\n return Dismiss;\n}(_react2.default.Component);\n\nDismiss.propTypes = {\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n};\nDismiss.defaultProps = {\n component: 'button'\n};\nDismiss.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = Dismiss;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Dismiss_1);\n\nvar Header = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalHeader = function (_React$Component) {\n _inherits(ModalHeader, _React$Component);\n\n function ModalHeader() {\n _classCallCheck(this, ModalHeader);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalHeader.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalHeader.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n closeButton = _props.closeButton,\n children = _props.children,\n className = _props.className,\n label = _props['aria-label'],\n props = _objectWithoutProperties(_props, ['modalPrefix', 'closeButton', 'children', 'className', 'aria-label']);\n\n var prefix = modalPrefix || ModalHeader.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-header')\n }),\n closeButton && _react2.default.createElement(\n _Dismiss2.default,\n {\n className: 'close',\n 'aria-label': label\n },\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n )\n ),\n children\n );\n };\n\n return ModalHeader;\n}(_react2.default.Component);\n\nModalHeader._isModalHeader = true;\nModalHeader.propTypes = {\n closeButton: _propTypes2.default.bool,\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string,\n\n 'aria-label': _propTypes2.default.string\n};\nModalHeader.defaultProps = {\n closeButton: false,\n 'aria-label': 'Close Modal'\n};\nModalHeader.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = ModalHeader;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Header);\n\nvar Title = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalTitle = function (_React$Component) {\n _inherits(ModalTitle, _React$Component);\n\n function ModalTitle() {\n _classCallCheck(this, ModalTitle);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalTitle.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalTitle.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'className']);\n\n var prefix = modalPrefix || ModalTitle.getDefaultPrefix();\n\n return _react2.default.createElement('h4', _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-title')\n }));\n };\n\n return ModalTitle;\n}(_react2.default.Component);\n\nModalTitle.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\nexports.default = ModalTitle;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Title);\n\nvar Footer = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalFooter = function (_React$Component) {\n _inherits(ModalFooter, _React$Component);\n\n function ModalFooter() {\n _classCallCheck(this, ModalFooter);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalFooter.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalFooter.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalFooter.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-footer') }),\n children\n );\n };\n\n return ModalFooter;\n}(_react2.default.Component);\n\nModalFooter.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalFooter;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Footer);\n\nvar Modal_1$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\n\n\nvar _Modal2 = _interopRequireDefault(Modal_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nvar _Fade2 = _interopRequireDefault(Fade_1);\n\n\n\nvar _Body2 = _interopRequireDefault(Body);\n\n\n\nvar _Header2 = _interopRequireDefault(Header);\n\n\n\nvar _Title2 = _interopRequireDefault(Title);\n\n\n\nvar _Footer2 = _interopRequireDefault(Footer);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar baseIndex = {};\nvar PREFIX = 'modal';\n\nvar getZIndex = void 0;\n\nvar omit = function omit(obj, keys) {\n return Object.keys(obj).reduce(function (o, key) {\n if (keys.indexOf(key) === -1) o[key] = obj[key];\n return o;\n }, {});\n};\n\nfunction DialogTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.TRANSITION_DURATION }));\n}\nfunction BackdropTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));\n}\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n Modal.getDefaultPrefix = function getDefaultPrefix() {\n return PREFIX;\n };\n\n Modal.prototype.getChildContext = function getChildContext() {\n return this._context || (this._context = { onModalHide: this.props.onHide });\n };\n\n function Modal() {\n _classCallCheck(this, Modal);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n _this.handleEntering = _this.handleEntering.bind(_this);\n _this.handleExiting = _this.handleExiting.bind(_this);\n\n _this.state = {\n classes: ''\n };\n return _this;\n }\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n getZIndex = getZIndex || function () {\n var modal = document.createElement('div'),\n backdrop = document.createElement('div'),\n zIndexFactor = void 0;\n\n modal.className = 'modal hide';\n backdrop.className = 'modal-backdrop hide';\n\n document.body.appendChild(modal);\n document.body.appendChild(backdrop);\n\n baseIndex.modal = +(0, _style2.default)(modal, 'z-index');\n baseIndex.backdrop = +(0, _style2.default)(backdrop, 'z-index');\n zIndexFactor = baseIndex.modal - baseIndex.backdrop;\n\n document.body.removeChild(modal);\n document.body.removeChild(backdrop);\n\n return function (type) {\n return baseIndex[type] + zIndexFactor * (_this2.props.manager.modals.length - 1);\n };\n }();\n };\n\n Modal.prototype.handleEntering = function handleEntering() {\n this._show.apply(this, arguments);\n\n if (this.props.onEntering) {\n this.props.onEntering();\n }\n };\n\n Modal.prototype.handleExiting = function handleExiting() {\n this._removeAttentionClasses();\n if (this.props.onExiting) {\n this.props.onExiting();\n }\n };\n\n Modal.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n keyboard = _props.keyboard,\n transition = _props.transition,\n modalPrefix = _props.modalPrefix,\n dialogClassName = _props.dialogClassName,\n container = _props.container,\n onEnter = _props.onEnter,\n onEntered = _props.onEntered,\n onExit = _props.onExit,\n onExited = _props.onExited,\n props = _objectWithoutProperties(_props, ['className', 'children', 'keyboard', 'transition', 'modalPrefix', 'dialogClassName', 'container', 'onEnter', 'onEntered', 'onExit', 'onExited']);\n\n var _state = this.state,\n dialog = _state.dialog,\n classes = _state.classes,\n backdrop = _state.backdrop;\n\n\n delete props.manager;\n var elementProps = omit(props, Object.keys(Modal.propTypes));\n\n var prefix = modalPrefix || Modal.getDefaultPrefix();\n\n if (transition === true) transition = DialogTransition;\n\n var modal = _react2.default.createElement(\n 'div',\n _extends({}, elementProps, {\n ref: function ref(r) {\n return _this3.dialog = r;\n },\n style: dialog,\n className: (0, _classnames2.default)(className, prefix, { in: props.show && !transition }),\n onClick: this.props.backdrop ? function (e) {\n return _this3.handleBackdropClick(e);\n } : null\n }),\n _react2.default.createElement(\n 'div',\n {\n key: 'modal',\n ref: function ref(r) {\n return _this3.innerRef = r;\n },\n className: (0, _classnames2.default)(prefix + '-dialog', dialogClassName, classes, (props.small || props.sm) && prefix + '-sm', (props.large || props.lg) && prefix + '-lg')\n },\n _react2.default.createElement(\n 'div',\n { className: prefix + '-content' },\n children\n )\n )\n );\n\n return _react2.default.createElement(\n _Modal2.default,\n {\n keyboard: keyboard,\n ref: function ref(_ref) {\n _this3.modal = _ref && _ref.modal;\n _this3.backdrop = _ref && _ref.backdrop;\n },\n container: container,\n backdrop: props.backdrop,\n show: props.show,\n backdropStyle: backdrop,\n backdropClassName: prefix + '-backdrop',\n containerClassName: prefix + '-open',\n transition: transition || undefined,\n backdropTransition: transition ? BackdropTransition : undefined,\n onHide: this.props.onHide,\n onEnter: onEnter,\n onEntering: this.handleEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: this.handleExiting,\n onExited: onExited\n },\n modal\n );\n };\n\n Modal.prototype.attention = function attention() {\n var _this4 = this;\n\n var attentionClass = this.props.attentionClass;\n\n\n if (attentionClass) this.setState({ classes: '' }, function () {\n if (_this4.props.show) {\n // eslint-disable-next-line no-unused-expressions\n _this4.innerRef.offsetWidth;\n _this4.setState({\n classes: attentionClass + ' animated'\n });\n }\n });\n };\n\n Modal.prototype.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) return;\n if (this.props.backdrop === 'static') return this.attention();\n\n this.props.onHide();\n };\n\n Modal.prototype._show = function _show() {\n if (this.props.show) this.setState(this._getStyles());\n };\n\n Modal.prototype._getStyles = function _getStyles() {\n if (!_inDOM2.default) return {};\n\n var node = (0, reactDom.findDOMNode)(this.dialog),\n doc = (0, _ownerDocument2.default)(node),\n scrollHt = node.scrollHeight,\n bodyIsOverflowing = (0, _isOverflowing2.default)(this.props.container || doc.body),\n modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;\n\n return {\n dialog: {\n zIndex: getZIndex('modal'),\n paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0,\n paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0\n },\n backdrop: {\n zIndex: getZIndex('backdrop')\n }\n };\n };\n\n Modal.prototype._removeAttentionClasses = function _removeAttentionClasses() {\n this.setState({ classes: '' });\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = {\n show: _propTypes2.default.bool,\n\n /** sizes **/\n small: _propTypes2.default.bool,\n sm: _propTypes2.default.bool,\n large: _propTypes2.default.bool,\n lg: _propTypes2.default.bool,\n /** --- **/\n\n backdrop: _propTypes2.default.oneOf(['static', true, false]),\n keyboard: _propTypes2.default.bool,\n animate: _propTypes2.default.bool,\n transition: _propTypes2.default.any,\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onHide: _propTypes2.default.func,\n onEnter: _propTypes2.default.func,\n onEntering: _propTypes2.default.func,\n onEntered: _propTypes2.default.func,\n onExit: _propTypes2.default.func,\n onExiting: _propTypes2.default.func,\n onExited: _propTypes2.default.func,\n\n modalPrefix: _propTypes2.default.string,\n dialogClassName: _propTypes2.default.string,\n attentionClass: _propTypes2.default.string\n};\nModal.defaultProps = {\n backdrop: true,\n keyboard: true,\n animate: true,\n transition: true,\n container: _inDOM2.default ? document.body : null,\n attentionClass: 'shake',\n manager: (_Modal2.default.getDefaultProps ? _Modal2.default.getDefaultProps() : _Modal2.default.defaultProps).manager\n};\nModal.childContextTypes = {\n onModalHide: _propTypes2.default.func\n};\n\n\nModal.injectCSSPrefix = function (prefix) {\n PREFIX = prefix;\n};\n\nfunction getDefaultPrefix() {\n return PREFIX;\n}\n\n_Body2.default.getDefaultPrefix = getDefaultPrefix;\n_Header2.default.getDefaultPrefix = getDefaultPrefix;\n_Title2.default.getDefaultPrefix = getDefaultPrefix;\n_Footer2.default.getDefaultPrefix = getDefaultPrefix;\n\nModal.Body = _Body2.default;\nModal.Header = _Header2.default;\nModal.Title = _Title2.default;\nModal.Footer = _Footer2.default;\nModal.Dismiss = _Dismiss2.default;\n\nModal.BaseModal = Modal;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nvar Modal$1 = unwrapExports(Modal_1$1);\n\nvar css$o = \"/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/*\\nAnimate.css - http://daneden.me/animate\\nLicensed under the ☺ license (http://licence.visualidiot.com/)\\nCopyright (c) 2012 Dan Eden*/\\n.animated {\\n -webkit-animation-duration: 1s;\\n -moz-animation-duration: 1s;\\n -o-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n@-webkit-keyframes shake {\\n 0%,\\n 100% {\\n -webkit-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -webkit-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -webkit-transform: translateX(10px);\\n }\\n}\\n@-moz-keyframes shake {\\n 0%,\\n 100% {\\n -moz-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -moz-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -moz-transform: translateX(10px);\\n }\\n}\\n@-o-keyframes shake {\\n 0%,\\n 100% {\\n -o-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -o-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -o-transform: translateX(10px);\\n }\\n}\\n@keyframes shake {\\n 0%,\\n 100% {\\n transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n transform: translateX(10px);\\n }\\n}\\n.shake {\\n -webkit-animation-name: shake;\\n -moz-animation-name: shake;\\n -o-animation-name: shake;\\n animation-name: shake;\\n}\\n.modal {\\n display: block;\\n}\\n.modal-content > .close {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n}\\n@media (min-width: 768px) {\\n .modal-sm > .modal-dialog {\\n width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg > .modal-dialog {\\n width: 900px;\\n }\\n}\\n\";\nstyleInject(css$o);\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\nvar css$p = \":root {\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --ui-border-color: #44626f;\\n}\\n.modal-dialog .modal-content {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-border-color);\\n color: var(--text-secondary-color);\\n border: 0;\\n}\\n.modal-dialog .modal-content .modal-header,\\n.modal-dialog .modal-content .modal-footer {\\n border-color: var(--ui-border-color);\\n}\\n.modal-dialog .modal-content .dialog-separator,\\n.modal-dialog .modal-content .dialog-separator-before,\\n.modal-dialog .modal-content .dialog-separator-after {\\n position: relative;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-before:before,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n background-color: #000;\\n content: ' ';\\n display: block;\\n height: 3px;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator-before:before {\\n top: -3px;\\n}\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n bottom: -3px;\\n}\\n.modal-dialog .modal-content .modal-body {\\n color: var(--text-primary-color);\\n padding: 16px 22px 0px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar {\\n width: 6px;\\n background-color: var(--ui-gray-dark);\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar-thumb {\\n background-color: var(--ui-gray-light);\\n border-radius: 5px;\\n}\\n.modal-dialog .modal-content .modal-header {\\n border-bottom-width: 3px;\\n border-bottom-style: solid;\\n border-bottom-color: #000;\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-header h4 {\\n color: var(--text-secondary-color);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 24px;\\n padding-right: 24px;\\n}\\n.modal-dialog .modal-content .modal-footer {\\n border-top: 0;\\n padding-top: 0;\\n}\\n.modal-dialog .card-round {\\n background-color: var(--ui-gray-dark);\\n padding: 10px;\\n}\\n.modal-dialog .modal-header {\\n position: relative;\\n}\\n.button-close,\\n.modal-dialog button.close {\\n color: var(--text-secondary-color);\\n height: 25px;\\n opacity: 1;\\n overflow: hidden;\\n text-align: center;\\n text-shadow: none;\\n width: 25px;\\n font-size: 25px;\\n font-weight: lighter;\\n}\\n\";\nstyleInject(css$p);\n\nvar UserPreferencesModal =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferencesModal, _Component);\n\n // TODO: Make this component more generic to allow things other than W/L and hotkeys...\n function UserPreferencesModal(props) {\n var _this;\n\n _classCallCheck(this, UserPreferencesModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UserPreferencesModal).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"save\", function () {\n _this.props.onSave({\n windowLevelData: _this.state.windowLevelData,\n hotKeysData: _this.state.hotKeysData\n });\n });\n\n _this.state = {\n windowLevelData: lodash_clonedeep(props.windowLevelData),\n hotKeysData: lodash_clonedeep(props.hotKeysData)\n };\n return _this;\n }\n\n _createClass(UserPreferencesModal, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prev, next) {\n var newStateData = {};\n\n if (!lodash_isequal(prev.windowLevelData, next.windowLevelData)) {\n newStateData.windowLevelData = prev.windowLevelData;\n }\n\n if (!lodash_isequal(prev.hotKeysData, next.hotKeysData)) {\n newStateData.hotKeysData = prev.hotKeysData;\n }\n\n if (newStateData.hotKeysData || newStateData.windowLevelData) {\n this.setState(newStateData);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Modal$1, {\n show: this.props.isOpen,\n onHide: this.props.onCancel,\n \"aria-labelledby\": \"ModalHeader\",\n className: \"modal fade themed in\",\n backdrop: false,\n large: true,\n keyboard: false\n }, React.createElement(Modal$1.Header, {\n closeButton: true\n }, React.createElement(Modal$1.Title, null, \"User Preferences\")), React.createElement(Modal$1.Body, null, React.createElement(UserPreferences, {\n windowLevelData: this.state.windowLevelData,\n hotKeysData: this.state.hotKeysData\n })), React.createElement(Modal$1.Footer, null, React.createElement(\"button\", {\n className: \"btn btn-danger pull-left\",\n onClick: this.props.onResetToDefaults\n }, \"Reset to Defaults\"), React.createElement(Modal$1.Dismiss, {\n className: \"btn btn-default\"\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.save\n }, \"Save\")));\n }\n }]);\n\n return UserPreferencesModal;\n}(Component);\n\n_defineProperty(UserPreferencesModal, \"propTypes\", {\n isOpen: propTypes.bool.isRequired,\n onCancel: propTypes.func,\n onSave: propTypes.func,\n onResetToDefaults: propTypes.func,\n windowLevelData: propTypes.object,\n hotKeysData: propTypes.object\n});\n\n_defineProperty(UserPreferencesModal, \"defaultProps\", {\n isOpen: false\n});\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = _baseRest(function(arrays) {\n return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));\n});\n\nvar union_1 = union;\n\nvar EnterLeaveCounter_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = union_1(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without_1(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n});\n\nunwrapExports(EnterLeaveCounter_1);\n\nvar BrowserDetector = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.isFirefox = memoize_1(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = memoize_1(function () { return Boolean(window.safari); });\n});\n\nunwrapExports(BrowserDetector);\nvar BrowserDetector_1 = BrowserDetector.isFirefox;\nvar BrowserDetector_2 = BrowserDetector.isSafari;\n\nvar MonotonicInterpolant_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n});\n\nunwrapExports(MonotonicInterpolant_1);\n\nvar OffsetUtils = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n});\n\nunwrapExports(OffsetUtils);\nvar OffsetUtils_1 = OffsetUtils.getNodeClientOffset;\nvar OffsetUtils_2 = OffsetUtils.getEventClientOffset;\nvar OffsetUtils_3 = OffsetUtils.getDragPreviewOffset;\n\nvar NativeTypes = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n});\n\nunwrapExports(NativeTypes);\nvar NativeTypes_1 = NativeTypes.FILE;\nvar NativeTypes_2 = NativeTypes.URL;\nvar NativeTypes_3 = NativeTypes.TEXT;\n\nvar NativeDragSources = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, null);\n return result != null ? result : defaultValue;\n}\nvar nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n },\n _a[NativeTypes.URL] = {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n _a[NativeTypes.TEXT] = {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n _a);\nfunction createNativeDragSource(type) {\n var _a = nativeTypesConfig[type], exposeProperty = _a.exposeProperty, matchesTypes = _a.matchesTypes, getData = _a.getData;\n return /** @class */ (function () {\n function NativeDragSource() {\n var _a;\n this.item = (_a = {},\n Object.defineProperty(_a, exposeProperty, {\n get: function () {\n // tslint:disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + exposeProperty + \"\\\" until the drop event.\");\n return null;\n },\n enumerable: true,\n configurable: true\n }),\n _a);\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n }());\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n});\n\nunwrapExports(NativeDragSources);\nvar NativeDragSources_1 = NativeDragSources.createNativeDragSource;\nvar NativeDragSources_2 = NativeDragSources.matchNativeItemType;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$a.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq_1(value, objectProto$a[key]) && !hasOwnProperty$9.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nvar defaults_1 = defaults;\n\nvar HTML5Backend_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return ((!!document && document.body.contains(node)) ||\n (!!_this.window && _this.window.document.body.contains(node)));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (!dataTransfer.types &&\n (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n else {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.context = manager.getContext();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n if (this.context && this.context.window) {\n return this.context.window;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return defaults_1(sourceNodeOptions || {}, {\n dropEffect: this.altKeyPressed ? 'copy' : 'move',\n });\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return defaults_1(sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false,\n });\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n var SourceType = NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n});\n\nunwrapExports(HTML5Backend_1);\n\nvar getEmptyImage_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.default = getEmptyImage;\n});\n\nunwrapExports(getEmptyImage_1);\n\nvar lib$2 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nexports.getEmptyImage = getEmptyImage_1.default;\n\nexports.NativeTypes = NativeTypes;\nfunction createHTML5Backend(manager) {\n return new HTML5Backend_1.default(manager);\n}\nexports.default = createHTML5Backend;\n});\n\nvar HTML5Backend$1 = unwrapExports(lib$2);\nvar lib_1$1 = lib$2.getEmptyImage;\nvar lib_2$1 = lib$2.NativeTypes;\n\n// TODO: Find a way for this context to be used in the parent application as well.\n\nfunction ViewerbaseDragDropContext(DecoratedClass) {\n return lib_1(HTML5Backend$1, null, true)(DecoratedClass);\n}\n\nexport { CineDialog, ExampleDropTarget$1 as ExampleDropTarget, LayoutButton, LayoutChooser, LayoutManager, LayoutPanelDropTarget$1 as LayoutPanelDropTarget, MeasurementTable, MeasurementTableItem, PlayClipButton, RoundedButtonGroup, ScrollableArea, SelectTree, SimpleDialog, StudyBrowser, StudyList, TableList, TableListItem, ThumbnailEntry, Toolbar, ToolbarSection, UserPreferences, UserPreferencesModal, ViewerbaseDragDropContext, Dropdown };\n//# sourceMappingURL=index.es.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport { Dropdown } from \"react-viewerbase\";\nimport './Header.css';\nimport list from './HeaderMenuList.json';\n//import Icons from \"../../images/icons.svg\";\n\nconst Icons = '/icons.svg';\n\nfunction Header({ home, location }) {\n const { state } = location\n\n return (\n
\n
\n {\n state && state.studyLink &&\n \n Back to Viewer\n \n }\n\n \n \n \n \n
Open Health Imaging Foundation
\n
\n\n {!home &&\n Study list\n }\n
\n\n\n
\n \n INVESTIGATIONAL USE ONLY\n \n \n
\n\n
\n )\n}\n\nHeader.propTypes = {\n home: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired\n};\n\nHeader.defaultProps = {\n home: true\n};\n\nexport default withRouter(Header)\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","import { connect } from 'react-redux';\nimport { StudyBrowser } from 'react-viewerbase';\nimport cloneDeep from 'lodash.clonedeep';\n\n// TODO\n// - Determine in which display set is active from Redux (activeViewportIndex and layout viewportData)\n// - Pass in errors and stack loading progress from Redux\nconst mapStateToProps = (state, ownProps) => {\n // If we know that the stack loading progress details have changed,\n // we can try to update the component state so that the thumbnail\n // progress bar is updated\n const stackLoadingProgressMap = state.loading.progress;\n const studiesWithLoadingData = cloneDeep(ownProps.studies);\n\n studiesWithLoadingData.forEach(study => {\n study.thumbnails.forEach(data => {\n const { displaySetInstanceUid } = data\n const stackId = `StackProgress:${displaySetInstanceUid}`;\n const stackProgressData = stackLoadingProgressMap[stackId];\n\n let stackPercentComplete = 0;\n if (stackProgressData) {\n stackPercentComplete = stackProgressData.percentComplete;\n }\n\n data.stackPercentComplete = stackPercentComplete;\n })\n });\n\n return {\n studies: studiesWithLoadingData\n };\n};\n\nconst ConnectedStudyBrowser = connect(\n mapStateToProps,\n null\n)(StudyBrowser);\n\nexport default ConnectedStudyBrowser;\n","import { connect } from 'react-redux';\nimport { LayoutManager } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\n\nconst mapStateToProps = state => {\n const viewportPluginIds = state.plugins.availablePlugins.filter(plugin => plugin.type === OHIF.plugins.PLUGIN_TYPES.VIEWPORT).map(plugin => plugin.id);\n const availablePlugins = {}\n viewportPluginIds.forEach(id => {\n const plugin = OHIF.plugins.availablePlugins.find(plugin => plugin.id === id);\n if (plugin) {\n availablePlugins[id] = plugin.component;\n }\n });\n\n // TODO Use something like state.plugins.defaultPlugin[OHIF.plugins.PLUGIN_TYPES.VIEWPORT]\n let defaultPlugin;\n if (viewportPluginIds && viewportPluginIds.length) {\n defaultPlugin = viewportPluginIds[0];\n }\n\n return {\n layout: state.viewports.layout,\n activeViewportIndex: state.viewports.activeViewportIndex,\n availablePlugins,\n defaultPlugin\n };\n};\n\nconst ConnectedLayoutManager = connect(\n mapStateToProps,\n null\n)(LayoutManager);\n\nexport default ConnectedLayoutManager;\n","import { Component } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport cornerstoneMath from \"cornerstone-math\";\nimport { OHIF } from 'ohif-core';\nimport ConnectedLayoutManager from './ConnectedLayoutManager.js';\nimport './ViewerMain.css';\n\n// Attempt to fix weird undefined dep issue\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\n\nclass ViewerMain extends Component {\n state = {\n viewportData: [],\n };\n\n static propTypes = {\n studies: PropTypes.array.isRequired\n };\n\n getDisplaySetsWithImages(studies) {\n const displaySets = [];\n studies.forEach((study) => {\n study.displaySets.forEach(dSet => {\n if (dSet.images.length) {\n displaySets.push(dSet);\n }\n });\n });\n\n return displaySets;\n }\n\n findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {\n const study = studies.find(study => {\n return study.studyInstanceUid === studyInstanceUid;\n });\n\n if (!study) {\n return;\n }\n\n return study.displaySets.find(displaySet => {\n return displaySet.displaySetInstanceUid === displaySetInstanceUid;\n });\n }\n\n componentDidMount() {\n // Add beforeUnload event handler to check for unsaved changes\n //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Get all the display sets for the viewer studies\n const displaySets = this.getDisplaySetsWithImages(this.props.studies);\n\n this.setState({\n viewportData: displaySets\n });\n }\n\n setViewportData = ({viewportIndex, item}) => {\n // TODO: Replace this with mapDispatchToProps call\n // if we decide to put viewport info into redux\n\n // Note: Use Slice because React does a shallow equality check. Mutating the array\n // would not trigger a re-render. We have to create a copy.\n debugger;\n console.warn(item);\n const updatedViewportData = this.state.viewportData.slice(0);\n\n const displaySet = this.findDisplaySet(this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid);\n\n console.warn(displaySet);\n\n updatedViewportData[viewportIndex] = Object.assign({}, displaySet);\n\n this.setState({\n viewportData: updatedViewportData\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n\n componentWillUnmount() {\n // Remove beforeUnload event handler...\n //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Destroy the synchronizer used to update reference lines\n OHIF.viewer.updateImageSynchronizer.destroy();\n\n // TODO: Instruct all plugins to clean up themselves\n //\n // Clear references to all stacks in the StackManager\n //StackManager.clearStacks();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n }\n}\n\nexport default ViewerMain;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedStudyBrowser from './ConnectedStudyBrowser.js';\nimport ViewerMain from './ViewerMain.js';\nimport './FlexboxLayout.css';\n\nclass FlexboxLayout extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n studiesForBrowser: []\n };\n\n componentDidMount() {\n const studiesForBrowser = this.getStudiesForBrowser();\n\n this.setState({\n studiesForBrowser\n });\n }\n\n getStudiesForBrowser = () => {\n const { studies } = this.props;\n\n // TODO[react]:\n // - Add sorting of display sets\n // - Add useMiddleSeriesInstanceAsThumbnail\n // - Add showStackLoadingProgressBar option\n return studies.map((study) => {\n const { studyInstanceUid } = study;\n\n const thumbnails = study.displaySets.map((displaySet) => {\n const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet;\n const imageId = displaySet.images[0].getImageId();\n\n return {\n imageId,\n displaySetInstanceUid,\n seriesDescription,\n seriesNumber,\n instanceNumber,\n numImageFrames,\n };\n });\n\n return {\n studyInstanceUid,\n thumbnails\n };\n });\n }\n\n render() {\n let mainContentClassName = \"main-content\"\n if (this.props.leftSidebarOpen) {\n mainContentClassName += ' sidebar-left-open';\n }\n\n if (this.props.rightSidebarOpen) {\n mainContentClassName += ' sidebar-right-open';\n }\n\n // TODO[react]: Add measurementLightTable\n return (\n
\n
\n \n
\n
\n \n
\n {/*
\n {{> measurementLightTable (clone this)}}\n
*/}\n
\n );\n }\n}\n\nexport default FlexboxLayout;\n","import { connect } from 'react-redux';\nimport FlexboxLayout from './FlexboxLayout';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen,\n };\n};\n\nconst ConnectedFlexboxLayout = connect(\n mapStateToProps,\n null\n)(FlexboxLayout);\n\nexport default ConnectedFlexboxLayout;\n","import { connect } from 'react-redux';\nimport { ToolbarSection } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setToolActive } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n return {\n buttons: state.tools.buttons,\n activeCommand: activeButton && activeButton.command\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n setToolActive: tool => {\n dispatch(setToolActive(tool.command))\n }\n };\n};\n\nconst ConnectedToolbarSection = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarSection);\n\nexport default ConnectedToolbarSection;\n","import { connect } from 'react-redux';\nimport { LayoutButton } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setLayout } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n return {\n currentLayout: state.viewports.layout,\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n // TODO: Change if layout switched becomes more complex\n onChange: selectedCell => {\n let viewports = [];\n const rows = selectedCell.row + 1;\n const columns = selectedCell.col + 1;\n const numViewports = rows * columns;\n for (let i = 0; i < numViewports; i++) {\n viewports.push({\n height: `${100 / rows}%`,\n width: `${100 / columns}%`\n });\n }\n const layout = {\n viewports\n };\n\n dispatch(setLayout(layout))\n }\n };\n};\n\nconst ConnectedLayoutButton = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutButton);\n\nexport default ConnectedLayoutButton;\n","import { connect } from 'react-redux';\nimport { CineDialog } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\nimport cloneDeep from 'lodash.clonedeep';\n\nconst { setViewportSpecificData } = OHIF.redux.actions;\n\n// TODO: I'm guessing this function will be used in other connect locations\n// so we might want to put it somewhere shared\nfunction getActiveViewportSpecificData(state) {\n const { viewportSpecificData, activeViewportIndex } = state.viewports;\n return viewportSpecificData[activeViewportIndex];\n}\n\nconst mapStateToProps = state => {\n // TODO:\n // - Test if including CineDialog in the toolbarRow will prevent it\n // from hovering over the rest of the UI when visible.\n //\n // - Create custom ToolbarButton which just shows Play state\n // - Connect this ToolbarButton to Redux\n const activeViewportSpecificData = getActiveViewportSpecificData(state);\n\n let stack = {\n imageIds: [],\n currentImageIdIndex: 0\n };\n if (activeViewportSpecificData && activeViewportSpecificData.stack) {\n stack = activeViewportSpecificData.stack\n }\n\n let cine = {\n isPlaying: false,\n cineFrameRate: 24\n };\n if (activeViewportSpecificData && activeViewportSpecificData.cine) {\n cine = activeViewportSpecificData.cine\n }\n\n\n // TODO: activeViewportStackData won't currently change anything on\n // CornerstoneViewport. The updates are too frequent and it's killing\n // performance. Need to revisit how we can do this.\n return {\n activeViewportStackData: stack,\n activeViewportCineData: cine,\n activeViewportIndex: state.viewports.activeViewportIndex\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n dispatchSetViewportSpecificData: (viewportIndex, data) => {\n dispatch(setViewportSpecificData(viewportIndex, data));\n },\n };\n};\n\nconst mergeProps = (propsFromState, propsFromDispatch, ownProps) => {\n const { activeViewportStackData, activeViewportCineData, activeViewportIndex } = propsFromState;\n\n return {\n cineFrameRate: activeViewportCineData.cineFrameRate,\n isPlaying: activeViewportCineData.isPlaying,\n onPlayPauseChanged: isPlaying => {\n const cine = cloneDeep(activeViewportCineData);\n cine.isPlaying = !cine.isPlaying;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onFrameRateChanged: frameRate => {\n const cine = cloneDeep(activeViewportCineData);\n cine.cineFrameRate = frameRate;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onClickNextButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n const largestPossibleIndex = stack.imageIds.length - 1;\n stack.currentImageIdIndex = Math.min(stack.currentImageIdIndex + 1, largestPossibleIndex)\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickBackButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = Math.max(stack.currentImageIdIndex - 1, 0);\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToStart: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = 0;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToEnd: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = stack.imageIds.length;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n }\n };\n};\n\nconst ConnectedCineDialog = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(CineDialog);\n\nexport default ConnectedCineDialog;\n","import React, { Component } from \"react\";\nimport ConnectedToolbarSection from './ConnectedToolbarSection';\nimport ConnectedLayoutButton from './ConnectedLayoutButton';\nimport ConnectedCineDialog from './ConnectedCineDialog.js';\nimport PropTypes from 'prop-types';\nimport { RoundedButtonGroup } from 'react-viewerbase';\nimport './ToolbarRow.css';\n//import Icons from \"../images/icons.svg\"\n\nconst Icons = '/icons.svg';\n\nclass ToolbarRow extends Component {\n static propTypes = {\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n setLeftSidebarOpen: PropTypes.func,\n setRightSidebarOpen: PropTypes.func\n };\n\n static defaultProps = {\n leftSidebarOpen: false,\n rightSidebarOpen: false\n };\n\n onLeftSidebarValueChanged = (value) => {\n this.props.setLeftSidebarOpen(!!value);\n }\n\n render() {\n const leftSidebarToggle = [{\n value: 'studies',\n svgLink: `${Icons}#icon-studies`,\n svgWidth: 15,\n svgHeight: 13,\n bottomLabel: 'Series',\n }];\n\n const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null;\n\n return (
\n
\n \n
\n \n \n {/* TODO: Putting cine dialog here for now */}\n
\n \n
\n
\n {/* > roundedButtonGroup rightSidebarToggleButtonData */}\n
\n
\n );\n }\n}\n\nexport default ToolbarRow;\n","export const setLeftSidebarOpen = state => ({\n type: 'SET_LEFT_SIDEBAR_OPEN',\n state\n});\n\nexport const setRightSidebarOpen = state => ({\n type: 'SET_RIGHT_SIDEBAR_OPEN',\n state\n});\n\nconst actions = {\n setLeftSidebarOpen,\n setRightSidebarOpen\n};\n\nexport default actions;\n","import { connect } from 'react-redux';\nimport ToolbarRow from './ToolbarRow';\nimport { setLeftSidebarOpen, setRightSidebarOpen } from '../redux/actions.js';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen\n };\n};\n\n\nconst mapDispatchToProps = dispatch => {\n return {\n setLeftSidebarOpen: state => {\n dispatch(setLeftSidebarOpen(state))\n },\n setRightSidebarOpen: state => {\n dispatch(setRightSidebarOpen(state))\n }\n };\n};\n\nconst ConnectedToolbarRow = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarRow);\n\nexport default ConnectedToolbarRow;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nclass StudyLoadingMonitor extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n setStudyLoadingProgress: PropTypes.func.isRequired,\n clearStudyLoadingProgress: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n // TODO: This is pretty ugly. The thing is that the StudyLoadingListener\n // needs to update the Redux store, but shouldn't know that it exists.\n // I am therefore passing in some functions to update the store instead,\n // but this should definitely be cleaned up somehow.\n const options = {\n _setProgressData: (progressId, progressData) => {\n this.props.setStudyLoadingProgress(progressId, progressData)\n },\n _clearProgressById: (progressId) => {\n this.props.clearStudyLoadingProgress(progressId)\n }\n }\n\n const { StudyLoadingListener } = OHIF.classes;\n this.studyLoadingListener = StudyLoadingListener.getInstance(options);\n this.studyLoadingListener.clear();\n this.studyLoadingListener.addStudies(this.props.studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Destroy stack loading listeners when we close the viewer\n this.studyLoadingListener.clear();\n }\n}\n\n\nexport default StudyLoadingMonitor;\n","import { connect } from 'react-redux';\nimport StudyLoadingMonitor from '../components/StudyLoadingMonitor.js';\nimport OHIF from 'ohif-core'\n\nconst { setStudyLoadingProgress, clearStudyLoadingProgress } = OHIF.redux.actions;\n\nconst mapDispatchToProps = dispatch => {\n return {\n setStudyLoadingProgress: (progressId, progressData) => {\n dispatch(setStudyLoadingProgress(progressId, progressData))\n },\n clearStudyLoadingProgress: progressId => {\n dispatch(clearStudyLoadingProgress(progressId))\n }\n };\n};\n\nconst ConnectedStudyLoadingMonitor = connect(\n null,\n mapDispatchToProps\n)(StudyLoadingMonitor);\n\nexport default ConnectedStudyLoadingMonitor;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nconst { StudyPrefetcher } = OHIF.classes;\n\nclass StudyPrefetcherComponent extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n componentDidMount() {\n const { studies } = this.props;\n\n this.studyPrefetcher = StudyPrefetcher.getInstance();\n this.studyPrefetcher.setStudies(studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Stop prefetching when we close the viewer\n this.studyPrefetcher.destroy();\n }\n}\n\n\nexport default StudyPrefetcherComponent;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport OHIF from 'ohif-core';\n//import { CineDialog } from 'react-viewerbase';\n\nimport Header from '../components/Header'\nimport ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';\nimport ConnectedToolbarRow from \"./ConnectedToolbarRow\";\nimport ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js';\nimport StudyPrefetcher from '../components/StudyPrefetcher.js';\nimport './Viewer.css';\n\nconst { StackManager } = OHIF.utils;\n\n/**\n * Inits OHIF Hanging Protocol's onReady.\n * It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine\n * Hanging Protocol will use OHIF LayoutManager to render viewports properly\n */\n/*const initHangingProtocol = () => {\n // When Hanging Protocol is ready\n HP.ProtocolStore.onReady(() => {\n\n // Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata\n const studyMetadataList = OHIF.viewer.StudyMetadataList.all();\n\n // Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata\n const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();\n\n // Get prior studies map\n const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);\n\n // Creates Protocol Engine object with required arguments\n const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);\n\n // Sets up Hanging Protocol engine\n HP.setEngine(ProtocolEngine);\n });\n};*/\n\n\nOHIF.viewer.defaultTool = {\n left: 'wwwc',\n right: 'zoom',\n middle: 'pan'\n};\n\nOHIF.viewer.refLinesEnabled = true;\n\n/*const viewportUtils = OHIF.viewerbase.viewportUtils;\n\nOHIF.viewer.functionList = {\n toggleCineDialog: viewportUtils.toggleCineDialog,\n toggleCinePlay: viewportUtils.toggleCinePlay,\n clearTools: viewportUtils.clearTools,\n resetViewport: viewportUtils.resetViewport,\n invert: viewportUtils.invert\n};*/\n\n// Create the synchronizer used to update reference lines\nOHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);\n\n// Metadata configuration\nconst metadataProvider = new OHIF.cornerstone.MetadataProvider();\ncornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));\n\nStackManager.setMetadataProvider(metadataProvider);\n\nclass Viewer extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n render() {\n return (<>\n
\n
\n {/**/}\n
\n
\n \n \n \n \n
\n \n );\n }\n}\n\n\nexport default Viewer;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport Viewer from \"./Viewer.js\";\n\nconst { createDisplaySets } = OHIF.utils;\n\nclass ViewerRetrieveStudyData extends Component {\n static propTypes = {\n studyInstanceUids: PropTypes.array.isRequired,\n seriesInstanceUids: PropTypes.array,\n server: PropTypes.object\n };\n\n state = {\n studies: null,\n error: null\n }\n\n componentDidMount() {\n // TODO: Avoid using timepoints here\n //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };\n const { studyInstanceUids, seriesInstanceUids, server } = this.props;\n const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)\n\n // Render the viewer when the data is ready\n promise.then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({\n studies: updatedStudies,\n });\n }).catch(error => {\n this.setState({\n error: true,\n });\n\n throw new Error(error);\n });\n\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default ViewerRetrieveStudyData;\n","import { connect } from 'react-redux';\nimport ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';\n\nconst isActive = (a) => a.active === true;\n\nconst mapStateToProps = state => {\n const activeServer = state.servers.servers.find(isActive);\n\n return {\n server: activeServer,\n };\n};\n\nconst ConnectedViewerRetrieveStudyData = connect(\n mapStateToProps,\n null\n)(ViewerRetrieveStudyData);\n\nexport default ConnectedViewerRetrieveStudyData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ConnectedViewerRetrieveStudyData from \"../connectedComponents/ConnectedViewerRetrieveStudyData\";\n\nfunction ViewerRouting({ match }) {\n const { studyInstanceUids, seriesInstanceUids } = match.params;\n\n let studyUIDs;\n let seriesUIDs;\n\n if (studyInstanceUids && !seriesInstanceUids) {\n studyUIDs = studyInstanceUids.split(';');\n } else if (studyInstanceUids && seriesInstanceUids) {\n studyUIDs = [match.params.studyInstanceUid];\n seriesUIDs = match.params.seriesInstanceUids.split(';');\n }\n\n return (\n \n );\n}\n\nViewerRouting.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n studyInstanceUids: PropTypes.string.isRequired,\n seriesInstanceUids: PropTypes.string\n })\n })\n};\n\nexport default ViewerRouting;\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport qs from 'query-string'\nimport Viewer from \"../connectedComponents/Viewer\";\nimport OHIF from 'ohif-core';\n\nconst { createDisplaySets } = OHIF.utils;\n\nfunction parseQueryAndFetchStudies(query) {\n return new Promise((resolve, reject) => {\n const url = query.url;\n\n if (!url) {\n reject(new Error('No URL was specified. Use ?url=$yourURL'));\n }\n\n // Define a request to the server to retrieve the study data\n // as JSON, given a URL that was in the Route\n const oReq = new XMLHttpRequest();\n\n // Add event listeners for request failure\n oReq.addEventListener('error', (error) => {\n OHIF.log.warn('An error occurred while retrieving the JSON data');\n reject(error)\n });\n\n // When the JSON has been returned, parse it into a JavaScript Object\n // and render the OHIF Viewer with this data\n oReq.addEventListener('load', () => {\n // Parse the response content\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText\n if (!oReq.responseText) {\n OHIF.log.warn('Response was undefined');\n reject(new Error('Response was undefined'));\n }\n\n OHIF.log.info(JSON.stringify(oReq.responseText, null, 2));\n\n const data = JSON.parse(oReq.responseText);\n if (data.servers && query.studyInstanceUids) {\n const server = data.servers.dicomWeb[0];\n server.type = 'dicomWeb';\n\n const studyInstanceUids = query.studyInstanceUids.split(';');\n const seriesInstanceUids = [];\n\n OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => {\n resolve(studies);\n }, error => {\n reject(error);\n });\n } else {\n resolve(data.studies);\n }\n });\n\n // Open the Request to the server for the JSON data\n // In this case we have a server-side route called /api/\n // which responds to GET requests with the study data\n OHIF.log.info(`Sending Request to: ${url}`);\n oReq.open('GET', url);\n oReq.setRequestHeader('Accept', 'application/json')\n\n // Fire the request to the server\n oReq.send();\n });\n}\n\nclass StandaloneRouting extends Component {\n state = {\n studies: null,\n error: null\n }\n\n static propTypes = {\n location: PropTypes.object,\n store: PropTypes.object\n };\n\n componentDidMount() {\n const query = qs.parse(this.props.location.search);\n parseQueryAndFetchStudies(query).then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({ studies: updatedStudies });\n }, error => {\n this.setState({ error });\n });\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default StandaloneRouting;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ViewerRetrieveStudyData from \"../connectedComponents/ViewerRetrieveStudyData.js\";\n\nfunction IHEInvokeImageDisplay({ match }) {\n const requestType = match.params.query.requestType;\n let studyInstanceUids;\n //let patientUids;\n let displayStudyList = false;\n\n if (requestType === \"STUDY\") {\n studyInstanceUids = match.params.query.studyUID.split(';');\n } else if (requestType === \"STUDYBASE64\") {\n const uids = this.params.query.studyUID;\n const decodedData = window.atob(uids);\n studyInstanceUids = decodedData.split(';');\n } else if (requestType === \"PATIENT\") {\n //patientUidspatientUids = this.params.query.patientID.split(';');\n displayStudyList = true\n } else {\n displayStudyList = true\n }\n\n if (displayStudyList) {\n return ('')//);\n }\n\n return (\n \n );\n}\n\nIHEInvokeImageDisplay.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n query: PropTypes.shape({\n requestType: PropTypes.string.isRequired,\n studyUID: PropTypes.string,\n patientID: PropTypes.string\n })\n })\n })\n};\n\nexport default IHEInvokeImageDisplay;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { ViewerbaseDragDropContext } from 'react-viewerbase';\nimport ViewerRouting from \"./routes/ViewerRouting.js\";\nimport StandaloneRouting from './routes/StandaloneRouting.js';\nimport IHEInvokeImageDisplay from './routes/IHEInvokeImageDisplay.js';\n//import CallbackPage from './CallbackPage.js';\n//import userManager from \"./userManager.js\";\nimport './OHIFStandaloneViewer.css';\nimport './variables.css';\nimport './theme-tide.css';\n\nconst reload = () => window.location.reload();\n\n/*function LoadingUser() {\n return (
Loading user...
);\n}*/\n\nclass App extends Component {\n static propTypes = {\n history: PropTypes.object.isRequired,\n user: PropTypes.object\n }\n\n componentDidMount() {\n this.unlisten = this.props.history.listen((location, action) => {\n if (this.props.setContext) {\n this.props.setContext(window.location.pathname);\n }\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n render() {\n const user = this.props.user;\n\n /*if (!user || user.expired) {\n // TODO: redirect to OAuth page if necessary\n return \n \n {\n userManager.signinRedirect();\n }}/>\n \n ;\n }*/\n\n return (\n \n \n \n \n \n \n\n \n \n {/* {\n userManager.signinRedirect();\n }}\n />*/\n /**/}\n \n
Sorry, this page does not exist.
}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {};\n /*return {\n user: state.oidc.user,\n };*/\n};\n\nconst ConnectedApp = connect(\n mapStateToProps,\n null\n)(App);\n\nexport default ViewerbaseDragDropContext(withRouter(ConnectedApp));\n","import React, { PureComponent, Component } from 'react';\n\n/*function metaDataProvider(type, imageId) {\n const metaData = cornerstoneWADOImageLoader.wadors.metaDataManager.get(\n imageId\n );\n\n if (!metaData) {\n return;\n }\n\n if (\n metaData[type] !== undefined &&\n metaData[type].Value !== undefined &&\n metaData[type].Value.length\n ) {\n return metaData[type].Value[0];\n }\n\n if (type === 'instance') {\n return metaData;\n }\n}\n\ncornerstone.metaData.addProvider(metaDataProvider);*/\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".scroll {\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scroll .scroll-holder {\\n height: calc(100% - 20px);\\n margin-top: 5px;\\n position: relative;\\n width: 12px;\\n}\\n.scroll .scroll-holder .imageSlider {\\n height: 12px;\\n left: 12px;\\n padding: 0;\\n position: absolute;\\n top: 0;\\n transform: rotate(90deg);\\n transform-origin: top left;\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider:focus {\\n outline: none;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-focus-outer {\\n border: none;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-runnable-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 5px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 2px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-track {\\n animate: 0.2s;\\n background: transparent;\\n border: none;\\n border-width: 15px 0;\\n color: rgba(0,0,0,0);\\n cursor: pointer;\\n height: 12px;\\n width: 100%;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-lower {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-upper {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb {\\n -webkit-appearance: none !important;\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -webkit-grab;\\n height: 12px;\\n margin-top: -4px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb:active {\\n background-color: #20a5d6;\\n cursor: -webkit-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -moz-grab;\\n height: 12px;\\n width: 39px;\\n z-index: 7;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb:active {\\n background-color: #20a5d6;\\n cursor: -moz-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: ns-resize;\\n height: 12px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb:active {\\n background-color: #20a5d6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-tooltip {\\n display: none;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .imageSlider {\\n left: 50px;\\n }\\n}\\n\";\nstyleInject(css);\n\nvar ImageScrollbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageScrollbar, _PureComponent);\n\n function ImageScrollbar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ImageScrollbar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ImageScrollbar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (event) {\n var intValue = parseInt(event.target.value, 10);\n\n _this.props.onInputCallback(intValue);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n // We don't allow direct keyboard up/down input on the\n // image sliders since the natural direction is reversed (0 is at the top)\n // Store the KeyCodes in an object for readability\n var keys = {\n DOWN: 40,\n UP: 38\n }; // TODO: Enable scroll down / scroll up without depending on ohif-core\n\n if (event.which === keys.DOWN) {\n //OHIF.commands.run('scrollDown');\n event.preventDefault();\n } else if (event.which === keys.UP) {\n //OHIF.commands.run('scrollUp');\n event.preventDefault();\n }\n });\n\n return _this;\n }\n\n _createClass(ImageScrollbar, [{\n key: \"render\",\n value: function render() {\n if (this.props.max === 0) {\n return null;\n }\n\n this.style = {\n width: \"\".concat(this.props.height)\n };\n return React.createElement(\"div\", {\n className: \"scroll\"\n }, React.createElement(\"div\", {\n className: \"scroll-holder\"\n }, React.createElement(\"input\", {\n className: \"imageSlider\",\n style: this.style,\n type: \"range\",\n min: \"0\",\n max: this.props.max,\n step: \"1\",\n value: this.props.value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown\n })));\n }\n }]);\n\n return ImageScrollbar;\n}(PureComponent);\n\n_defineProperty(ImageScrollbar, \"propTypes\", {\n value: propTypes.number.isRequired,\n max: propTypes.number.isRequired,\n height: propTypes.string.isRequired,\n onInputCallback: propTypes.func.isRequired\n});\n\n/**\n * Formats a patient name for display purposes\n */\nfunction formatPN(name) {\n if (!name) {\n return;\n } // Convert the first ^ to a ', '. String.replace() only affects\n // the first appearance of the character.\n\n\n var commaBetweenFirstAndLast = name.replace('^', ', '); // Replace any remaining '^' characters with spaces\n\n var cleaned = commaBetweenFirstAndLast.replace(/\\^/g, ' '); // Trim any extraneous whitespace\n\n return cleaned.trim();\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory();\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && ('object' !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.23.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n});\n\nfunction formatDA(date) {\n var strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';\n\n if (!date) {\n return;\n }\n\n var dateAsMoment = moment(date, 'YYYYMMDD');\n return dateAsMoment.format(strFormat);\n}\n\nfunction formatTM(time) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';\n\n if (!time) {\n return;\n } // DICOM Time is stored as HHmmss.SSS, where:\n // HH 24 hour time:\n // m mm 0..59 Minutes\n // s ss 0..59 Seconds\n // S SS SSS 0..999 Fractional seconds\n //\n // See MomentJS: http://momentjs.com/docs/#/parsing/string-format/\n\n\n var dateTime = moment(time, 'HHmmss.SSS');\n return dateTime.format(format);\n}\n\nfunction formatNumberPrecision(number, precision) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\nfunction isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar helpers = {\n formatPN: formatPN,\n formatDA: formatDA,\n formatTM: formatTM,\n formatNumberPrecision: formatNumberPrecision,\n isValidNumber: isValidNumber\n};\n\nvar css$1 = \".imageViewerViewport.empty ~ .ViewportOverlay {\\n display: none;\\n}\\n.ViewportOverlay {\\n color: #9ccef9;\\n}\\n.ViewportOverlay .overlay-element {\\n position: absolute;\\n font-weight: 400;\\n text-shadow: 1px 1px #000;\\n pointer-events: none;\\n}\\n.ViewportOverlay .top-left {\\n top: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .top-center {\\n top: 20px;\\n padding-top: 20px;\\n width: 100%;\\n text-align: center;\\n}\\n.ViewportOverlay .top-right {\\n top: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay .bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .bottom-right {\\n bottom: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay.controlsVisible .topright,\\n.ViewportOverlay.controlsVisible .bottomright {\\n right: calc(20px + 19px);\\n}\\n.ViewportOverlay svg {\\n color: #9ccef9;\\n fill: #9ccef9;\\n stroke: #9ccef9;\\n background-color: transparent;\\n margin: 2px;\\n width: 18px;\\n height: 18px;\\n}\\n\";\nstyleInject(css$1);\n\nvar formatPN$1 = helpers.formatPN,\n formatDA$1 = helpers.formatDA,\n formatNumberPrecision$1 = helpers.formatNumberPrecision,\n formatTM$1 = helpers.formatTM,\n isValidNumber$1 = helpers.isValidNumber;\n/*function getCompression(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n if (\n instance.lossyImageCompression === '01' &&\n instance.lossyImageCompressionRatio !== ''\n ) {\n const compressionMethod = instance.lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n instance.lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n\nfunction getImageDimensions(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n return `${instance.columns} x ${instance.rows}`;\n}*/\n\nvar ViewportOverlay =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOverlay, _PureComponent);\n\n function ViewportOverlay() {\n _classCallCheck(this, ViewportOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOverlay).apply(this, arguments));\n }\n\n _createClass(ViewportOverlay, [{\n key: \"render\",\n value: function render() {\n var zoom = this.props.viewport.scale * 100;\n var imageId = this.props.imageId; //const patientMetadata = cornerstone.metaData.get('patient', imageId);\n //const studyMetadata = cornerstone.metaData.get('study', imageId);\n //const seriesMetadata = cornerstone.metaData.get('generalSeriesModule', imageId);\n //const instanceMetadata = cornerstone.metaData.get('instance', imageId);\n\n var patientName = ''; //patientMetadata.name;\n\n var patientId = ''; //patientMetadata.id;\n\n /*const { studyDate, studyTime, studyDescription } = studyMetadata;\n const { seriesNumber, seriesDescription } = seriesMetadata;\n const { instanceNumber, frameTime, thickness, spacingBetweenSlices, sliceLocation } = instanceMetadata;*/\n //const frameRate = formatNumberPrecision(1000 / frameTime, 1);\n //const compression = getCompression(imageId);\n\n var windowWidth = this.props.viewport.voi.windowWidth || 0;\n var windowCenter = this.props.viewport.voi.windowCenter || 0;\n var wwwc = \"W: \".concat(windowWidth.toFixed(0), \" L: \").concat(windowCenter.toFixed(0));\n var imageIndex = this.props.stack.imageIds.indexOf(this.props.imageId) + 1;\n var numImages = this.props.stack.imageIds.length; //const imageDimensions = getImageDimensions(imageId);\n\n var studyDescription = '';\n var studyDate = null;\n var studyTime = null;\n var compression = null;\n var seriesNumber = null;\n var instanceNumber = null;\n var frameRate = null;\n var imageDimensions = null;\n var sliceLocation = null;\n var seriesDescription = null;\n var normal = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId)), React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Zoom: \", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\"), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, React.createElement(\"span\", null, isValidNumber$1(sliceLocation) ? \"Loc: \".concat(formatNumberPrecision$1(sliceLocation, 2), \" mm\") : ''), React.createElement(\"span\", null, ''), React.createElement(\"span\", null, '')), React.createElement(\"div\", null, seriesDescription))));\n var rightOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n var leftOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n return React.createElement(\"div\", {\n className: \"ViewportOverlay\"\n }, normal);\n }\n }]);\n\n return ViewportOverlay;\n}(PureComponent);\n\nViewportOverlay.propTypes = {\n viewport: propTypes.object.isRequired,\n imageId: propTypes.string.isRequired,\n stack: propTypes.object.isRequired\n};\n\nvar css$2 = \".imageViewerLoadingIndicator {\\n color: #91b9cd;\\n}\\n.faded {\\n opacity: 0.5;\\n}\\n.imageViewerErrorLoadingIndicator {\\n color: #e29e4a;\\n}\\n.imageViewerErrorLoadingIndicator p,\\n.imageViewerErrorLoadingIndicator h4 {\\n padding: 4px 0;\\n text-align: center;\\n word-wrap: break-word;\\n}\\n.imageViewerErrorLoadingIndicator p {\\n font-size: 11pt;\\n}\\n.loadingIndicator {\\n background-color: rgba(0,0,0,0.75);\\n font-size: 18px;\\n height: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index: 1;\\n}\\n.loadingIndicator .indicatorContents {\\n font-size: 30px;\\n font-weight: 300;\\n position: absolute;\\n text-align: center;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 100%;\\n}\\n\";\nstyleInject(css$2);\n\nvar LoadingIndicator =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LoadingIndicator, _PureComponent);\n\n function LoadingIndicator() {\n _classCallCheck(this, LoadingIndicator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LoadingIndicator).apply(this, arguments));\n }\n\n _createClass(LoadingIndicator, [{\n key: \"render\",\n value: function render() {\n // TODO[react]: Pass this in as a prop reactively\n //const percentComplete = Session.get('CornerstoneLoadProgress' + this.viewportIndex);\n var percComplete;\n\n if (this.props.percentComplete && this.props.percentComplete !== 100) {\n percComplete = \"\".concat(this.props.percentComplete, \"%\");\n }\n\n return React.createElement(React.Fragment, null, this.props.error ? React.createElement(\"div\", {\n className: \"imageViewerErrorLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"h4\", null, \"Error Loading Image\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, this.props.error.message))) : React.createElement(\"div\", {\n className: \"imageViewerLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"p\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spin fa-circle-o-notch fa-fw\"\n }), ' ', percComplete))));\n }\n }]);\n\n return LoadingIndicator;\n}(PureComponent);\n\n_defineProperty(LoadingIndicator, \"propTypes\", {\n percentComplete: propTypes.number,\n error: propTypes.object\n});\n\n_defineProperty(LoadingIndicator, \"defaultProps\", {\n percentComplete: 0,\n error: null\n});\n\nvar css$3 = \".ViewportOrientationMarkers {\\n pointer-events: none;\\n font-size: 15px;\\n color: #ccc;\\n line-height: 18px;\\n}\\n.ViewportOrientationMarkers .orientation-marker {\\n position: absolute;\\n}\\n.ViewportOrientationMarkers .top-mid {\\n top: 5px;\\n left: 50%;\\n}\\n.ViewportOrientationMarkers .left-mid {\\n top: 47%;\\n left: 5px;\\n}\\n\";\nstyleInject(css$3);\n\n/**\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param imageId The Cornerstone ImageId\n * @param viewport The current viewport\n */\n\nfunction getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools) {\n var imagePlane = cornerstone.metaData.get('imagePlane', imageId);\n\n if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {\n return;\n }\n\n var rowString = cornerstoneTools.orientation.getOrientationString(imagePlane.rowCosines);\n var columnString = cornerstoneTools.orientation.getOrientationString(imagePlane.columnCosines);\n var oppositeRowString = cornerstoneTools.orientation.invertOrientationString(rowString);\n var oppositeColumnString = cornerstoneTools.orientation.invertOrientationString(columnString);\n var markers = {\n top: oppositeColumnString,\n left: oppositeRowString\n }; // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n\n if (viewport.vflip) {\n markers.top = cornerstoneTools.orientation.invertOrientationString(markers.top);\n }\n\n if (viewport.hflip) {\n markers.left = cornerstoneTools.orientation.invertOrientationString(markers.left);\n } // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n\n\n if (viewport.rotation === 90 || viewport.rotation === -270) {\n return {\n top: markers.left,\n left: cornerstoneTools.orientation.invertOrientationString(markers.top)\n };\n } else if (viewport.rotation === -90 || viewport.rotation === 270) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.left),\n left: markers.top\n };\n } else if (viewport.rotation === 180 || viewport.rotation === -180) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.top),\n left: cornerstoneTools.orientation.invertOrientationString(markers.left)\n };\n }\n\n return markers;\n}\n\nvar ViewportOrientationMarkers =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOrientationMarkers, _PureComponent);\n\n function ViewportOrientationMarkers() {\n _classCallCheck(this, ViewportOrientationMarkers);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOrientationMarkers).apply(this, arguments));\n }\n\n _createClass(ViewportOrientationMarkers, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageId = _this$props.imageId,\n viewport = _this$props.viewport,\n cornerstone = _this$props.cornerstone,\n cornerstoneTools = _this$props.cornerstoneTools;\n var markers = getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools);\n\n if (!markers) {\n return '';\n }\n\n return React.createElement(\"div\", {\n className: \"ViewportOrientationMarkers noselect\"\n }, React.createElement(\"div\", {\n className: \"top-mid orientation-marker\"\n }, markers.top), React.createElement(\"div\", {\n className: \"left-mid orientation-marker\"\n }, markers.left));\n }\n }]);\n\n return ViewportOrientationMarkers;\n}(PureComponent);\n\nViewportOrientationMarkers.propTypes = {\n imageId: propTypes.string.isRequired,\n viewport: propTypes.object.isRequired\n};\n\nvar css$4 = \".CornerstoneViewport {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n\\n.viewport-element {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n background-color: black;\\n\\n /* Prevent the blue outline in Chrome when a viewport is selected */\\n outline: 0 !important;\\n\\n /* Prevents the entire page from getting larger\\n when the magnify tool is near the sides/corners of the page */\\n overflow: hidden;\\n}\\n\\n.viewportInstructions {\\n display: block;\\n font-size: 13px;\\n /*theme('color', '$textSecondaryColor')*/\\n color: #91b9cd;\\n line-height: 18px;\\n pointer-events: none; /* Necessary for drag/drop through to cornerstone element below */\\n text-align: center;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n margin: auto;\\n height: 20px;\\n}\\n\\n/* These are some good CSS settings for a circular magnifying glass\\n Try removing the border-radius to make a square magnifying glass */\\n.magnifyTool {\\n border: 4px white solid;\\n box-shadow: 2px 2px 10px #1e1e1e;\\n border-radius: 50%;\\n display: none;\\n cursor: none;\\n}\\n\";\nstyleInject(css$4);\n\nvar EVENT_RESIZE = 'resize';\n\nfunction setToolsPassive(cornerstoneTools, tools) {\n tools.forEach(function (tool) {\n cornerstoneTools.setToolPassive(tool);\n });\n}\n\nfunction initializeTools(cornerstoneTools, tools) {\n Array.from(tools).forEach(function (tool) {\n var apiTool = cornerstoneTools[\"\".concat(tool.name, \"Tool\")];\n\n if (apiTool) {\n cornerstoneTools.addTool(apiTool, tool.configuration);\n } else {\n throw new Error(\"Tool not found: \".concat(tool.name, \"Tool\"));\n }\n });\n}\n\nvar CornerstoneViewport =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CornerstoneViewport, _Component);\n\n function CornerstoneViewport(props) {\n var _this;\n\n _classCallCheck(this, CornerstoneViewport);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CornerstoneViewport).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onContextMenu\", function (event) {\n // Preventing the default behaviour for right-click is essential to\n // allow right-click tools to work.\n event.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWindowResize\", function () {\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageRendered\", function () {\n var viewport = _this.cornerstone.getViewport(_this.element);\n\n _this.setState({\n viewport: viewport\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onNewImage\", function () {\n var image = _this.cornerstone.getImage(_this.element);\n\n _this.setState({\n imageId: image.imageId\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setActiveTool\", function (activeTool) {\n // TODO: allow this config as props\n var leftMouseTools = ['Bidirectional', 'Wwwc', 'Length', 'Angle', 'StackScroll'];\n setToolsPassive(_this.cornerstoneTools, leftMouseTools); // pan is the default tool for middle mouse button\n\n var isPanToolActive = activeTool === 'Pan';\n var panOptions = {\n mouseButtonMask: isPanToolActive ? [1, 4] : [4],\n isTouchActive: isPanToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Pan', panOptions); // zoom is the default tool for right mouse button\n\n\n var isZoomToolActive = activeTool === 'Zoom';\n var zoomOptions = {\n mouseButtonMask: isZoomToolActive ? [1, 2] : [2],\n isTouchActive: isZoomToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Zoom', zoomOptions);\n\n _this.cornerstoneTools.setToolActive(activeTool, {\n mouseButtonMask: 1,\n isTouchActive: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onStackScroll\", function (event) {\n _this.setViewportActive();\n\n var element = event.currentTarget;\n\n var stackData = _this.cornerstoneTools.getToolState(element, 'stack');\n\n var stack = stackData.data[0];\n\n _this.hideExtraButtons();\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageLoaded\", function () {\n _this.setState({\n numImagesLoaded: _this.state.numImagesLoaded + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"startLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n _this.loadHandlerTimeout = setTimeout(function () {\n _this.setState({\n isLoading: true\n });\n }, CornerstoneViewport.loadIndicatorDelay);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"doneLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n\n _this.setState({\n isLoading: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMeasurementAddedOrRemoved\", function () {\n console.log('onMeasurementAddedOrRemoved');\n /* const { toolType, measurementData } = event.detail;\n // TODO: Pass in as prop?\n const toolsOfInterest = ['Bidirectional'];\n this.hideExtraButtons();\n if (toolsOfInterest.includes(toolType)) {\n const image = cornerstone.getImage(this.element);\n const viewport = cornerstone.getViewport(this.element);\n const type = {\n cornerstonetoolsmeasurementadded: 'added',\n cornerstonetoolsmeasurementremoved: 'removed'\n };\n const action = type[event.type];\n if (action === 'added') {\n measurementData._id = guid();\n measurementData.viewport = cloneDeep(viewport);\n }\n this.props.measurementsAddedOrRemoved(\n action,\n image.imageId,\n toolType,\n measurementData\n );\n }*/\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setViewportActive\", function () {\n if (!_this.props.isActive && _this.props.setViewportActive) {\n _this.props.setViewportActive();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMouseClick\", function (event) {\n _this.setViewportActive();\n\n if (event.detail.event.which === 3) {\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: false\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchPress\", function (event) {\n _this.setViewportActive();\n\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: true\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function () {\n _this.setViewportActive();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCloseToolContextMenu\", function () {\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"imageSliderOnInputCallback\", function (value) {\n _this.setViewportActive();\n\n var stack = _this.state.stack;\n stack.currentImageIdIndex = value;\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n // TODO: For some reason this isn't working?\n\n\n _this.scrollToIndex(_this.element, value);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hideExtraButtons\", function () {\n if (_this.state.bidirectionalAddLabelShow === true) {\n _this.setState({\n bidirectionalAddLabelShow: false\n });\n }\n\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _this.cornerstone = props.cornerstone;\n _this.cornerstoneTools = props.cornerstoneTools;\n _this.scrollToIndex = _this.cornerstoneTools.import('util/scrollToIndex'); // TODO: Allow viewport as a prop\n\n var _stack = props.viewportData.stack;\n _this.state = {\n stack: _stack,\n displaySetInstanceUid: props.viewportData.displaySetInstanceUid,\n imageId: _stack.imageIds[0],\n viewportHeight: '100%',\n isLoading: false,\n numImagesLoaded: 0,\n error: null,\n viewport: _this.cornerstone.getDefaultViewport(null, undefined)\n };\n var loadHandlerManager = _this.cornerstoneTools.loadHandlerManager;\n loadHandlerManager.setStartLoadHandler(_this.startLoadingHandler);\n loadHandlerManager.setEndLoadHandler(_this.doneLoadingHandler);\n _this.debouncedResize = lodash_debounce(function () {\n try {\n _this.cornerstone.getEnabledElement(_this.element);\n } catch (error) {\n console.error(error);\n return;\n }\n\n _this.cornerstone.resize(_this.element, true);\n\n _this.setState({\n viewportHeight: \"\".concat(_this.element.clientHeight - 20, \"px\")\n });\n }, 300);\n return _this;\n }\n\n _createClass(CornerstoneViewport, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var isLoading = this.state.isLoading || this.state.numImagesLoaded < 1;\n var displayLoadingIndicator = isLoading || this.state.error;\n var className = 'CornerstoneViewport';\n\n if (this.props.isActive) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"viewport-element\",\n onContextMenu: this.onContextMenu,\n ref: function ref(input) {\n _this2.element = input;\n }\n }, displayLoadingIndicator && React.createElement(LoadingIndicator, {\n error: this.state.error\n }), React.createElement(\"canvas\", {\n className: \"cornerstone-canvas\"\n }), React.createElement(ViewportOverlay, {\n stack: this.state.stack,\n viewport: this.state.viewport,\n imageId: this.state.imageId,\n numImagesLoaded: this.state.numImagesLoaded\n }), React.createElement(ViewportOrientationMarkers, {\n imageId: this.state.imageId,\n viewport: this.state.viewport,\n cornerstone: this.props.cornerstone,\n cornerstoneTools: this.props.cornerstoneTools\n })), React.createElement(ImageScrollbar, {\n onInputCallback: this.imageSliderOnInputCallback,\n max: this.state.stack.imageIds.length - 1,\n value: this.state.stack.currentImageIdIndex,\n height: this.state.viewportHeight\n }), this.props.children);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this3 = this;\n\n var element = this.element;\n this.eventHandlerData = [{\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.IMAGE_RENDERED,\n handler: this.onImageRendered\n }, {\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.NEW_IMAGE,\n handler: this.onNewImage\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.STACK_SCROLL,\n handler: this.onStackScroll\n },\n /*{\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_ADDED,\n handler: this.onMeasurementAddedOrRemoved\n },\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_REMOVED,\n handler: this.onMeasurementAddedOrRemoved\n },*/\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_CLICK,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_DOWN,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_PRESS,\n handler: this.onTouchPress\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_START,\n handler: this.onTouchStart\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_CLICK,\n handler: this.onDoubleClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_TAP,\n handler: this.onDoubleClick\n }, {\n eventTarget: window,\n eventType: EVENT_RESIZE,\n handler: this.onWindowResize\n }, {\n eventTarget: this.cornerstone.events,\n eventType: this.cornerstone.EVENTS.IMAGE_LOADED,\n handler: this.onImageLoaded\n }]; // Enable the DOM Element for use with Cornerstone\n\n this.cornerstone.enable(element, this.props.cornerstoneOptions); // Handle the case where the imageId isn't loaded correctly and the\n // imagePromise returns undefined\n // To test, uncomment the next line\n //let imageId = 'AfileThatDoesntWork'; // For testing only!\n\n var imageId = this.state.imageId;\n var imagePromise;\n\n try {\n imagePromise = this.cornerstone.loadAndCacheImage(imageId);\n } catch (error) {\n console.error(error);\n\n if (!imagePromise) {\n this.setState({\n error: error\n });\n return;\n }\n } // Load the first image in the stack\n\n\n imagePromise.then(function (image) {\n try {\n _this3.cornerstone.getEnabledElement(element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n } // Set Soft Tissue preset for all images by default\n\n\n var viewport = _this3.cornerstone.getDefaultViewportForImage(element, image);\n\n viewport.voi = {\n windowWidth: 400,\n windowCenter: 40\n }; // Display the first image\n\n _this3.cornerstone.displayImage(element, image, viewport); // Clear any previous tool state\n\n\n _this3.cornerstoneTools.clearToolState(_this3.element, 'stack');\n /* Add the stack tool state to the enabled element, and\n add stack state managers for the stack tool, CINE tool, and reference lines\n */\n\n\n var stack = _this3.state.stack;\n\n _this3.cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);\n\n _this3.cornerstoneTools.addToolState(element, 'stack', stack);\n\n if (_this3.props.enableStackPrefetch) {\n _this3.cornerstoneTools.stackPrefetch.enable(_this3.element);\n }\n\n var tools = [{\n name: 'Bidirectional',\n configuration: {\n getMeasurementLocationCallback: _this3.bidirectionalToolLabellingCallback,\n shadow: true,\n drawHandlesOnHover: true\n }\n }, {\n name: 'Wwwc'\n }, {\n name: 'Zoom',\n configuration: {\n minScale: 0.3,\n maxScale: 25,\n preventZoomOutsideImage: true\n }\n }, {\n name: 'Length'\n }, {\n name: 'Angle'\n }, {\n name: 'Pan'\n }, {\n name: 'StackScroll'\n }, {\n name: 'PanMultiTouch'\n }, {\n name: 'ZoomTouchPinch'\n }, {\n name: 'StackScrollMouseWheel'\n }, {\n name: 'StackScrollMultiTouch'\n }];\n initializeTools(_this3.cornerstoneTools, tools);\n\n _this3.setActiveTool(_this3.props.activeTool);\n /* For touch devices, by default we activate:\n - Pinch to zoom\n - Two-finger Pan\n - Three (or more) finger Stack Scroll\n */\n\n\n _this3.cornerstoneTools.setToolActive('PanMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('ZoomTouchPinch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('StackScrollMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n }); // TODO: We should probably configure this somewhere else\n\n\n _this3.cornerstoneTools.stackPrefetch.setConfiguration({\n maxImagesToPrefetch: Infinity,\n preserveExistingPool: false,\n maxSimultaneousRequests: 6\n });\n /* For mouse devices, by default we turn on:\n - Stack scrolling by mouse wheel\n - Stack scrolling by keyboard up / down arrow keys\n - Pan with middle click\n - Zoom with right click\n */\n\n\n _this3.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.addEventListener(eventType, handler);\n });\n\n _this3.setState({\n viewportHeight: \"\".concat(_this3.element.clientHeight - 20, \"px\")\n });\n }, function (error) {\n console.error(error);\n\n _this3.setState({\n error: error\n });\n });\n }\n }, {\n key: \"onDoubleClick\",\n value: function onDoubleClick() {\n console.log('onDoubleClick');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.removeEventListener(eventType, handler);\n });\n var element = this.element; // Remove all tools for the destroyed element\n // TODO[cornerstoneTools]: Make this happen internally\n // toolManager.removeToolsForElement(element);\n // Clear the stack prefetch data\n // TODO[cornerstoneTools]: Make this happen internally\n\n this.cornerstoneTools.clearToolState(element, 'stackPrefetch'); // Disable the viewport element with Cornerstone\n // This also triggers the removal of the element from all available\n // synchronizers, such as the one used for reference lines.\n\n this.cornerstone.disable(element); // Try to stop any currently playing clips\n // Otherwise the interval will continuously throw errors\n // TODO[cornerstoneTools]: Make this happen internally\n\n try {\n var enabledElement = this.cornerstone.getEnabledElement(element);\n\n if (enabledElement) {\n this.cornerstoneTools.stopClip(element);\n }\n } catch (error) {//console.warn(error);\n }\n\n if (this.props.clearViewportSpecificData) {\n this.props.clearViewportSpecificData();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n // TODO: Add a real object shallow comparison here?\n if (this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid) {\n var _this$props$viewportD = this.props.viewportData,\n displaySetInstanceUid = _this$props$viewportD.displaySetInstanceUid,\n studyInstanceUid = _this$props$viewportD.studyInstanceUid;\n var currentImageIdIndex = this.props.viewportData.stack.currentImageIdIndex; // Create shortcut to displaySet\n\n /*const study = OHIF.viewer.Studies.findBy({\n studyInstanceUid,\n });\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });*/\n\n var stack = this.props.viewportData.stack;\n var stackData = this.cornerstoneTools.getToolState(this.element, 'stack');\n var currentStack = stackData && stackData.data[0];\n\n if (!currentStack) {\n currentStack = {\n currentImageIdIndex: currentImageIdIndex,\n imageIds: stack.imageIds\n };\n this.cornerstoneTools.addStackStateManager(this.element, ['stack']);\n this.cornerstoneTools.addToolState(this.element, 'stack', currentStack);\n } else {\n // TODO: we should make something like setToolState by an ID\n currentStack.currentImageIdIndex = currentImageIdIndex;\n currentStack.imageIds = stack.imageIds;\n }\n\n var imageId = currentStack.imageIds[currentImageIdIndex];\n var viewportSpecificData = {\n displaySetInstanceUid: displaySetInstanceUid,\n studyInstanceUid: studyInstanceUid,\n stack: stack,\n imageId: imageId\n };\n this.setState(viewportSpecificData);\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData(viewportSpecificData);\n }*/\n\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n this.cornerstone.loadAndCacheImage(imageId).then(function (image) {\n try {\n _this4.cornerstone.getEnabledElement(_this4.element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n }\n\n var viewport = _this4.cornerstone.getDefaultViewportForImage(_this4.element, image); // Workaround for Cornerstone issue #304\n\n\n viewport.displayedArea.brhc = {\n x: image.width,\n y: image.height\n };\n\n _this4.cornerstone.displayImage(_this4.element, image, viewport);\n\n _this4.cornerstoneTools.stackPrefetch.enable(_this4.element);\n });\n }\n\n if (this.props.activeTool !== prevProps.activeTool) {\n this.setActiveTool(this.props.activeTool); // TODO: Why do we need to do this in v3?\n\n this.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.debouncedResize();\n }\n\n if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === true) {\n this.cornerstoneTools.stackPrefetch.enable(this.element);\n } else if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === false) {\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n }\n\n if (this.props.cineToolData.isPlaying !== prevProps.cineToolData.isPlaying) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element);\n } else {\n this.cornerstoneTools.stopClip(this.element);\n }\n }\n\n if (this.props.cineToolData.cineFrameRate !== prevProps.cineToolData.cineFrameRate) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element, this.props.cineToolData.cineFrameRate);\n } else {\n this.cornerstoneTools.stopClip(this.element, this.props.cineToolData.cineFrameRate);\n }\n }\n }\n }]);\n\n return CornerstoneViewport;\n}(Component);\n\n_defineProperty(CornerstoneViewport, \"defaultProps\", {\n activeTool: 'Wwwc',\n viewportData: {\n stack: {\n imageIds: [],\n currentImageIdIndex: 0\n }\n },\n isActive: false,\n cornerstoneOptions: {},\n enableStackPrefetch: true,\n cineToolData: {\n isPlaying: false,\n cineFrameRate: 24\n }\n});\n\n_defineProperty(CornerstoneViewport, \"propTypes\", {\n cornerstone: propTypes.object.isRequired,\n cornerstoneTools: propTypes.object.isRequired,\n children: propTypes.node,\n activeTool: propTypes.string,\n viewportData: propTypes.object.isRequired,\n measurementsAddedOrRemoved: propTypes.func,\n measurementsChanged: propTypes.func,\n isActive: propTypes.bool.isRequired,\n cornerstoneOptions: propTypes.object,\n setViewportActive: propTypes.func,\n setViewportSpecificData: propTypes.func,\n clearViewportSpecificData: propTypes.func,\n layout: propTypes.object,\n cineToolData: propTypes.object\n});\n\n_defineProperty(CornerstoneViewport, \"loadIndicatorDelay\", 45);\n\nexport default CornerstoneViewport;\n//# sourceMappingURL=index.es.js.map\n","import { connect } from 'react-redux';\nimport CornerstoneViewport from 'react-cornerstone-viewport';\nimport OHIF from 'ohif-core'\nimport cornerstone from \"cornerstone-core\";\nimport cornerstoneTools from \"cornerstone-tools\";\n\nconst { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;\n\nconst mapStateToProps = (state, ownProps) => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n // If this is the active viewport, enable prefetching.\n const { viewportIndex } = ownProps;//.viewportData;\n const isActive = viewportIndex === state.viewports.activeViewportIndex;\n const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {};\n\n return {\n layout: state.viewports.layout,\n isActive,\n activeTool: activeButton && activeButton.command,\n enableStackPrefetch: isActive,\n //stack: viewportSpecificData.stack,\n cineToolData: viewportSpecificData.cine,\n cornerstone,\n cornerstoneTools\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n const { viewportIndex } = ownProps;\n\n return {\n setViewportActive: () => {\n dispatch(setViewportActive(viewportIndex))\n },\n\n setViewportSpecificData: (data) => {\n dispatch(setViewportSpecificData(viewportIndex, data))\n },\n\n clearViewportSpecificData: () => {\n dispatch(clearViewportSpecificData(viewportIndex));\n }\n };\n};\n\nconst ConnectedCornerstoneViewport = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CornerstoneViewport);\n\nexport default ConnectedCornerstoneViewport;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction OHIFComponentPlugin(props) {\n return ({props.children});\n}\n\nOHIFComponentPlugin.propTypes = {\n id: PropTypes.string.isRequired,\n init: PropTypes.func.isRequired,\n destroy: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default OHIFComponentPlugin;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';\nimport OHIFComponentPlugin from './OHIFComponentPlugin.js';\n\nconst { StackManager } = OHIF.utils;\n\nclass OHIFCornerstoneViewportPlugin extends Component {\n static propTypes = {\n studies: PropTypes.object,\n displaySet: PropTypes.object,\n viewportIndex: PropTypes.number,\n };\n\n static id = 'CornerstoneViewportPlugin';\n\n static init() {\n console.log('CornerstoneViewportPlugin init()');\n }\n\n static destroy() {\n console.log('CornerstoneViewportPlugin destroy()');\n StackManager.clearStacks();\n }\n\n static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {\n // Create shortcut to displaySet\n const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);\n\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });\n\n // Get stack from Stack Manager\n return StackManager.findOrCreateStack(study, displaySet);\n }\n\n static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {\n const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);\n\n // Clone the stack here so we don't mutate it later\n const stack = Object.assign({}, currentStack);\n stack.currentImageIdIndex = 0;\n\n return stack;\n }\n\n render() {\n const { viewportIndex } = this.props;\n const { studies, displaySet } = this.props.viewportData;\n const { studyInstanceUid, displaySetInstanceUid } = displaySet;\n const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);\n const viewportData = {\n studyInstanceUid,\n displaySetInstanceUid,\n stack\n };\n\n const { id, init, destroy } = OHIFCornerstoneViewportPlugin;\n const pluginProps = { id, init, destroy };\n\n return (\n \n \n \n );\n }\n}\n\n\nexport default OHIFCornerstoneViewportPlugin;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers } from 'redux';\nimport PropTypes from 'prop-types';\nimport OHIF from 'ohif-core';\nimport './config';\nimport ui from './redux/ui.js'\nimport OHIFStandaloneViewer from './OHIFStandaloneViewer';\nimport OHIFCornerstoneViewportPlugin from './connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js';\n//import { loadUser, reducer as oidcReducer, OidcProvider} from 'redux-oidc';\n//import userManager from './userManager.js';\n//import Icons from \"./images/icons.svg\"\n\nconst Icons = 'icons.svg';\n\nconst reducers = OHIF.redux.reducers;\nreducers.ui = ui;\n//reducers.oidc = oidcReducer;\n\nconst combined = combineReducers(reducers)\n\nconst store = createStore(combined);\n//loadUser(store, userManager);\n\nconst defaultButtons = [\n {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: `${Icons}#icon-tools-stack-scroll`,\n active: false\n },\n {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: `${Icons}#icon-tools-zoom`,\n active: false\n },\n {\n command: 'Wwwc',\n type: 'tool',\n text: 'Levels',\n svgUrl: `${Icons}#icon-tools-levels`,\n active: true\n },\n {\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: `${Icons}#icon-tools-pan`,\n active: false\n },\n {\n command: 'Length',\n type: 'tool',\n text: 'Length',\n svgUrl: `${Icons}#icon-tools-measure-temp`,\n active: false\n },\n /*{\n command: 'Annotate',\n type: 'tool',\n text: 'Annotate',\n svgUrl: `${Icons}#icon-tools-measure-non-target`,\n active: false\n },*/\n {\n command: 'Angle',\n type: 'tool',\n text: 'Angle',\n iconClasses: 'fa fa-angle-left',\n active: false\n },\n {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: `${Icons}#icon-tools-measure-target`,\n active: false\n },\n {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: `${Icons}#icon-tools-reset`,\n active: false\n },\n];\n\nconst buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);\n\nstore.dispatch(buttonsAction);\n\nconst pluginAction = OHIF.redux.actions.addPlugin({\n id: 'cornerstone',\n type: 'viewport',\n component: OHIFCornerstoneViewportPlugin\n});\n\nstore.dispatch(pluginAction);\n\nconst servers = {\n dicomWeb: [\n {\n \"name\": \"DCM4CHEE\",\n //\"wadoUriRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoUriRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoUriRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado\",\n \"qidoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"qidoSupportsIncludeField\": true,\n \"imageRendering\": \"wadors\",\n \"thumbnailRendering\": \"wadors\",\n \"requestOptions\": {\n \"requestFromBrowser\": true,\n \"logRequests\": true,\n \"logResponses\": false,\n \"logTiming\": true,\n //\"auth\": \"admin:admin\"\n //\"auth\": \"cloud:healthcare\"\n }\n }\n ]\n};\n\nOHIF.utils.addServers(servers, store);\n\n// TODO[react] Use a provider when the whole tree is React\nwindow.store = store;\n\nclass App extends Component {\n static propTypes = {\n routerBasename: PropTypes.string\n }\n\n render() {\n return (\n \n {/**/}\n \n \n \n {/**/}\n \n );\n }\n}\n\nexport default App;\n"],"names":["_typeof","printWarning","ReactPropTypesSecret","require$$0","assign","checkPropTypes","require$$1","__DEV__","warning","_extends","invariant","HashChangeEvent","_classCallCheck","_possibleConstructorReturn","_inherits","PropTypes","createHistory","pathToRegexp","_objectWithoutProperties","patternCache","cacheLimit","cacheCount","addLeadingSlash","stripBasename","defineProperty","getOwnPropertySymbols","getPrototypeOf","Component","hoistStatics","_assertThisInitialized","REACT_STATICS","KNOWN_STATICS","ReactIs","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","isValidElementType","ponyfill","$$observable","isPlainObject","defaultSelectorFactory","cornerstone","window","cornerstoneTools","cornerstoneWADOImageLoader","cornerstoneMath","external","this","define","info","homepage","Hammer","init","dicomParser","OHIF","ROOT_URL","location","pathname","includes","origin","config","maxWebWorkers","Math","max","navigator","hardwareConcurrency","startWebWorkersOnDemand","webWorkerPath","taskConfiguration","decodeTask","loadCodecsOnStartup","initializeCodecsOnStartup","codecsPath","usePDFJS","strict","webWorkerManager","initialize","user","getAccessToken","state","store","getState","oidc","access_token","configure","beforeSend","xhr","headers","DICOMWeb","getAuthorizationHeader","Authorization","setRequestHeader","fontFamily","textStyle","setFont","toolStyle","setToolWidth","toolColors","setToolColor","setActiveColor","touchProximity","defaultState","leftSidebarOpen","rightSidebarOpen","ui","action","type","Object","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","objectAssign","styleInject","Icons","Header","home","studyLink","list","propTypes","bool","isRequired","object","defaultProps","withRouter","global","mapStateToProps","ownProps","stackLoadingProgressMap","loading","progress","studiesWithLoadingData","cloneDeep","studies","forEach","study","thumbnails","data","displaySetInstanceUid","stackId","stackProgressData","stackPercentComplete","percentComplete","ConnectedStudyBrowser","connect","StudyBrowser","viewportPluginIds","plugins","availablePlugins","filter","plugin","PLUGIN_TYPES","VIEWPORT","map","id","find","component","defaultPlugin","length","layout","viewports","activeViewportIndex","ConnectedLayoutManager","LayoutManager","ViewerMain","viewportData","viewportIndex","item","console","warn","updatedViewportData","slice","displaySet","findDisplaySet","props","studyInstanceUid","setState","displaySets","dSet","images","push","getDisplaySetsWithImages","setViewportData","viewer","updateImageSynchronizer","destroy","array","FlexboxLayout","studiesForBrowser","seriesDescription","seriesNumber","instanceNumber","numImageFrames","imageId","getImageId","getStudiesForBrowser","mainContentClassName","ConnectedFlexboxLayout","setToolActive","redux","actions","activeButton","tools","buttons","tool","active","activeCommand","command","mapDispatchToProps","dispatch","ConnectedToolbarSection","ToolbarSection","setLayout","currentLayout","onChange","selectedCell","rows","row","columns","col","numViewports","i","height","width","ConnectedLayoutButton","LayoutButton","setViewportSpecificData","getActiveViewportSpecificData","viewportSpecificData","activeViewportSpecificData","stack","imageIds","currentImageIdIndex","cine","isPlaying","cineFrameRate","activeViewportStackData","activeViewportCineData","dispatchSetViewportSpecificData","mergeProps","propsFromState","propsFromDispatch","onPlayPauseChanged","onFrameRateChanged","frameRate","onClickNextButton","largestPossibleIndex","min","onClickBackButton","onClickSkipToStart","onClickSkipToEnd","ConnectedCineDialog","CineDialog","ToolbarRow","value","setLeftSidebarOpen","leftSidebarToggle","svgLink","svgWidth","svgHeight","bottomLabel","leftSidebarValue","padding","onLeftSidebarValueChanged","marginLeft","display","func","setRightSidebarOpen","ConnectedToolbarRow","StudyLoadingMonitor","options","_setProgressData","progressId","progressData","setStudyLoadingProgress","_clearProgressById","clearStudyLoadingProgress","StudyLoadingListener","classes","studyLoadingListener","getInstance","clear","addStudies","ConnectedStudyLoadingMonitor","StudyPrefetcher","StudyPrefetcherComponent","studyPrefetcher","setStudies","StackManager","utils","defaultTool","left","right","middle","refLinesEnabled","Synchronizer","metadataProvider","MetadataProvider","metaData","addProvider","provider","bind","setMetadataProvider","Viewer","createDisplaySets","ViewerRetrieveStudyData","error","studyInstanceUids","seriesInstanceUids","server","promise","retrieveStudiesMetadata","then","updatedStudies","catch","Error","JSON","stringify","isActive","a","activeServer","servers","ConnectedViewerRetrieveStudyData","ViewerRouting","match","params","studyUIDs","seriesUIDs","split","shape","string","parseQueryAndFetchStudies","query","Promise","resolve","reject","url","oReq","XMLHttpRequest","addEventListener","log","responseText","parse","dicomWeb","open","send","StandaloneRouting","qs","search","IHEInvokeImageDisplay","requestType","displayStudyList","studyUID","uids","decodedData","atob","patientID","reload","App","unlisten","history","listen","setContext","ConnectedApp","ViewerbaseDragDropContext","setViewportActive","clearViewportSpecificData","activeTool","enableStackPrefetch","cineToolData","ConnectedCornerstoneViewport","CornerstoneViewport","OHIFComponentPlugin","children","node","OHIFCornerstoneViewportPlugin","getPluginViewportData","pluginProps","clearStacks","set","findOrCreateStack","number","currentStack","getCornerstoneStack","reducers","combined","combineReducers","createStore","defaultButtons","text","svgUrl","iconClasses","buttonsAction","setAvailableButtons","pluginAction","addPlugin","addServers","routerBasename"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,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AAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,C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O,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,C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MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,C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,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC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C,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,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CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,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C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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AAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,C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C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,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E,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACjwJ;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GAC9jK;EACD,YAAY,EAAE;IACZ,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACh3J;EACD,SAAS,EAAE;IACT,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACh+J;EACD,IAAI,EAAE;I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AE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MACnW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MACjZ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,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AAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;MAC5pC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE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C,MAAM,EAAE;MAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;MAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;MAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC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,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CA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kB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI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AC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,6DAA6D,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,C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AAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,C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E,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAA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,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC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AC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC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C,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAKA,2BAAeM,yBAAyB,CAAChP,UAAU,CAAC+O,YAAD,CAAX,CAAxC;;ACzGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file +{"version":3,"file":"index.es.js","sources":["../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router-dom/node_modules/warning/warning.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/warning/warning.js","../node_modules/invariant/invariant.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/history/es/PathUtils.js","../node_modules/history/es/LocationUtils.js","../node_modules/history/es/createTransitionManager.js","../node_modules/history/es/DOMUtils.js","../node_modules/history/es/createBrowserHistory.js","../node_modules/history/es/createHashHistory.js","../node_modules/history/es/createMemoryHistory.js","../node_modules/react-router/node_modules/warning/warning.js","../node_modules/react-router/es/Router.js","../node_modules/react-router-dom/es/Router.js","../node_modules/react-router-dom/es/BrowserRouter.js","../node_modules/react-router-dom/es/HashRouter.js","../node_modules/react-router-dom/es/Link.js","../node_modules/react-router/es/MemoryRouter.js","../node_modules/react-router-dom/es/MemoryRouter.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/path-to-regexp/index.js","../node_modules/react-router/es/matchPath.js","../node_modules/react-router/es/Route.js","../node_modules/react-router-dom/es/Route.js","../node_modules/react-router-dom/es/NavLink.js","../node_modules/react-router/es/Prompt.js","../node_modules/react-router-dom/es/Prompt.js","../node_modules/react-router/es/generatePath.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router-dom/es/Redirect.js","../node_modules/react-router/es/StaticRouter.js","../node_modules/react-router-dom/es/StaticRouter.js","../node_modules/react-router/es/Switch.js","../node_modules/react-router-dom/es/Switch.js","../node_modules/react-router-dom/es/generatePath.js","../node_modules/react-router-dom/es/matchPath.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router-dom/es/withRouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/utils/isPlainObject.js","../node_modules/react-redux/es/utils/warning.js","../node_modules/react-redux/es/utils/verifyPlainObject.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/verifySubselectors.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../../ohif-core/dist/index.es.js","../node_modules/dicom-parser/dist/dicomParser.min.js","../node_modules/cornerstone-core/dist/cornerstone.js","../node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js","../node_modules/cornerstone-math/dist/cornerstoneMath.min.js","../node_modules/cornerstone-tools/dist/cornerstoneTools.min.js","../node_modules/hammerjs/hammer.js","../src/config.js","../src/redux/ui.js","../../react-viewerbase/dist/index.es.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/Header/Header.js","../node_modules/lodash.clonedeep/index.js","../src/connectedComponents/ConnectedStudyBrowser.js","../src/connectedComponents/ConnectedLayoutManager.js","../src/connectedComponents/ViewerMain.js","../src/connectedComponents/FlexboxLayout.js","../src/connectedComponents/ConnectedFlexboxLayout.js","../src/connectedComponents/ConnectedToolbarSection.js","../src/connectedComponents/ConnectedLayoutButton.js","../src/connectedComponents/ConnectedCineDialog.js","../src/connectedComponents/ToolbarRow.js","../src/redux/actions.js","../src/connectedComponents/ConnectedToolbarRow.js","../src/components/StudyLoadingMonitor.js","../src/connectedComponents/ConnectedStudyLoadingMonitor.js","../src/components/StudyPrefetcher.js","../src/connectedComponents/Viewer.js","../src/connectedComponents/ViewerRetrieveStudyData.js","../src/connectedComponents/ConnectedViewerRetrieveStudyData.js","../src/routes/ViewerRouting.js","../node_modules/strict-uri-encode/index.js","../node_modules/query-string/index.js","../src/routes/StandaloneRouting.js","../src/routes/IHEInvokeImageDisplay.js","../src/OHIFStandaloneViewer.js","../../react-cornerstone-viewport/dist/index.es.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/ConnectedCornerstoneViewport.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFComponentPlugin.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js","../src/App.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createHashHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n _inherits(HashRouter, _React$Component);\n\n function HashRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, HashRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n HashRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\");\n };\n\n HashRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n basename: PropTypes.string,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"]),\n children: PropTypes.node\n};\n\n\nexport default HashRouter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware .\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use outside a \");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n _inherits(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MemoryRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\");\n };\n\n MemoryRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default MemoryRouter;","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from \"react-router/es/MemoryRouter\";\n\nexport default MemoryRouter;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // already computed the match for us\n\n invariant(router, \"You should not use or withRouter() outside a \");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from \n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n _inherits(Prompt, _React$Component);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Prompt.prototype.enable = function enable(message) {\n if (this.unblock) this.unblock();\n\n this.unblock = this.context.router.history.block(message);\n };\n\n Prompt.prototype.disable = function disable() {\n if (this.unblock) {\n this.unblock();\n this.unblock = null;\n }\n };\n\n Prompt.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.props.when) this.enable(this.props.message);\n };\n\n Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.when) {\n if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n } else {\n this.disable();\n }\n };\n\n Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n this.disable();\n };\n\n Prompt.prototype.render = function render() {\n return null;\n };\n\n return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n when: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n when: true\n};\nPrompt.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n block: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Prompt;","// Written in this round about way for babel-transform-imports\nimport Prompt from \"react-router/es/Prompt\";\n\nexport default Prompt;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var compiledGenerator = pathToRegexp.compile(pattern);\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n\n this.perform();\n };\n\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n\n return to;\n };\n\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n\n var to = this.computeTo(this.props);\n\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n\n Redirect.prototype.render = function render() {\n return null;\n };\n\n return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n computedMatch: PropTypes.object, // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport Router from \"./Router\";\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n};\n\nvar addBasename = function addBasename(basename, location) {\n if (!basename) return location;\n\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n if (!basename) return location;\n\n var base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n};\n\nvar createURL = function createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n return function () {\n invariant(false, \"You cannot %s with \", methodName);\n };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = function (_React$Component) {\n _inherits(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, StaticRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n return addLeadingSlash(_this.props.basename + createURL(path));\n }, _this.handlePush = function (location) {\n var _this$props = _this.props,\n basename = _this$props.basename,\n context = _this$props.context;\n\n context.action = \"PUSH\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleReplace = function (location) {\n var _this$props2 = _this.props,\n basename = _this$props2.basename,\n context = _this$props2.context;\n\n context.action = \"REPLACE\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleListen = function () {\n return noop;\n }, _this.handleBlock = function () {\n return noop;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n StaticRouter.prototype.getChildContext = function getChildContext() {\n return {\n router: {\n staticContext: this.props.context\n }\n };\n };\n\n StaticRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\");\n };\n\n StaticRouter.prototype.render = function render() {\n var _props = this.props,\n basename = _props.basename,\n context = _props.context,\n location = _props.location,\n props = _objectWithoutProperties(_props, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: this.createHref,\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return React.createElement(Router, _extends({}, props, { history: history }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object.isRequired,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n basename: \"\",\n location: \"/\"\n};\nStaticRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;","// Written in this round about way for babel-transform-imports\nimport StaticRouter from \"react-router/es/StaticRouter\";\n\nexport default StaticRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport generatePath from \"react-router/es/generatePath\";\n\nexport default generatePath;","// Written in this round about way for babel-transform-imports\nimport matchPath from \"react-router/es/matchPath\";\n\nexport default matchPath;","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.state = {\n storeState: store.getState(),\n store: store\n };\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.subscribe();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n if (this.unsubscribe) this.unsubscribe();\n this.subscribe();\n }\n };\n\n _proto.subscribe = function subscribe() {\n var _this2 = this;\n\n var store = this.props.store;\n this.unsubscribe = store.subscribe(function () {\n var newStoreState = store.getState();\n\n if (!_this2._isMounted) {\n return;\n }\n\n _this2.setState(function (providerState) {\n // If the value is the same, skip the unnecessary state update.\n if (providerState.storeState === newStoreState) {\n return null;\n }\n\n return {\n storeState: newStoreState\n };\n });\n }); // Actions might have been dispatched between render and mount - handle those\n\n var postMountStoreState = store.getState();\n\n if (postMountStoreState !== this.state.storeState) {\n this.setState({\n storeState: postMountStoreState\n });\n }\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.7.0\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, PureComponent } from 'react';\nimport { isValidElementType } from 'react-is';\nimport { ReactReduxContext } from './Context';\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React-Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n var OuterBaseComponent = Component;\n var FinalWrappedComponent = WrappedComponent;\n\n if (pure) {\n OuterBaseComponent = PureComponent;\n }\n\n function makeDerivedPropsSelector() {\n var lastProps;\n var lastState;\n var lastDerivedProps;\n var lastStore;\n var sourceSelector;\n return function selectDerivedProps(state, props, store) {\n if (pure && lastProps === props && lastState === state) {\n return lastDerivedProps;\n }\n\n if (store !== lastStore) {\n lastStore = store;\n sourceSelector = selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n\n lastProps = props;\n lastState = state;\n var nextProps = sourceSelector(state, props);\n\n if (lastDerivedProps === nextProps) {\n return lastDerivedProps;\n }\n\n lastDerivedProps = nextProps;\n return lastDerivedProps;\n };\n }\n\n function makeChildElementSelector() {\n var lastChildProps, lastForwardRef, lastChildElement;\n return function selectChildElement(childProps, forwardRef) {\n if (childProps !== lastChildProps || forwardRef !== lastForwardRef) {\n lastChildProps = childProps;\n lastForwardRef = forwardRef;\n lastChildElement = React.createElement(FinalWrappedComponent, _extends({}, childProps, {\n ref: forwardRef\n }));\n }\n\n return lastChildElement;\n };\n }\n\n var Connect =\n /*#__PURE__*/\n function (_OuterBaseComponent) {\n _inheritsLoose(Connect, _OuterBaseComponent);\n\n function Connect(props) {\n var _this;\n\n _this = _OuterBaseComponent.call(this, props) || this;\n invariant(forwardRef ? !props.wrapperProps[storeKey] : !props[storeKey], 'Passing redux store in props has been removed and does not do anything. ' + customStoreWarningMessage);\n _this.selectDerivedProps = makeDerivedPropsSelector();\n _this.selectChildElement = makeChildElementSelector();\n _this.renderWrappedComponent = _this.renderWrappedComponent.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.renderWrappedComponent = function renderWrappedComponent(value) {\n invariant(value, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var storeState = value.storeState,\n store = value.store;\n var wrapperProps = this.props;\n var forwardedRef;\n\n if (forwardRef) {\n wrapperProps = this.props.wrapperProps;\n forwardedRef = this.props.forwardedRef;\n }\n\n var derivedProps = this.selectDerivedProps(storeState, wrapperProps, store);\n return this.selectChildElement(derivedProps, forwardedRef);\n };\n\n _proto.render = function render() {\n var ContextToUse = this.props.context || Context;\n return React.createElement(ContextToUse.Consumer, null, this.renderWrappedComponent);\n };\n\n return Connect;\n }(OuterBaseComponent);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, {\n wrapperProps: props,\n forwardedRef: ref\n });\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar cornerstone = window.cornerstone;\nvar cornerstoneTools = window.cornerstoneTools;\nvar cornerstoneWADOImageLoader = window.cornerstoneWADOImageLoader;\nvar cornerstoneMath = window.cornerstoneMath;\nvar external = {\n set cornerstone(cs) {\n cornerstone = cs;\n },\n\n get cornerstone() {\n return cornerstone;\n },\n\n set cornerstoneTools(tools) {\n cornerstoneTools = tools;\n },\n\n get cornerstoneTools() {\n return cornerstoneTools;\n },\n\n set cornerstoneWADOImageLoader(wado) {\n cornerstoneWADOImageLoader = wado;\n },\n\n get cornerstoneWADOImageLoader() {\n return cornerstoneWADOImageLoader;\n },\n\n set cornerstoneMath(math) {\n cornerstoneMath = math;\n },\n\n get cornerstoneMath() {\n return cornerstoneMath;\n }\n\n};\n\nfunction getBoundingBox(context, textLines, x, y, options) {\n var cornerstoneTools = external.cornerstoneTools;\n\n if (Object.prototype.toString.call(textLines) !== '[object Array]') {\n textLines = [textLines];\n }\n\n var padding = 5;\n var font = cornerstoneTools.textStyle.getFont();\n var fontSize = cornerstoneTools.textStyle.getFontSize();\n context.save();\n context.font = font;\n context.textBaseline = 'top'; // Find the longest text width in the array of text data\n\n var maxWidth = 0;\n textLines.forEach(function (text) {\n // Get the text width in the current font\n var width = context.measureText(text).width; // Find the maximum with for all the text rows;\n\n maxWidth = Math.max(maxWidth, width);\n }); // Calculate the bounding box for this text box\n\n var boundingBox = {\n width: maxWidth + padding * 2,\n height: padding + textLines.length * (fontSize + padding)\n };\n\n if (options && options.centering && options.centering.x === true) {\n x -= boundingBox.width / 2;\n }\n\n if (options && options.centering && options.centering.y === true) {\n y -= boundingBox.height / 2;\n }\n\n boundingBox.left = x;\n boundingBox.top = y;\n context.restore(); // Return the bounding box so it can be used for pointNearHandle\n\n return boundingBox;\n}\n\nfunction pixelToPage(element, position) {\n var cornerstone = external.cornerstone;\n var enabledElement = cornerstone.getEnabledElement(element);\n var result = {\n x: 0,\n y: 0\n }; // Stop here if the cornerstone element is not enabled or position is not an object\n\n if (!enabledElement || _typeof(position) !== 'object') {\n return result;\n }\n\n var canvas = enabledElement.canvas;\n var canvasOffset = $(canvas).offset();\n result.x += canvasOffset.left;\n result.y += canvasOffset.top;\n var canvasPosition = cornerstone.pixelToCanvas(element, position);\n result.x += canvasPosition.x;\n result.y += canvasPosition.y;\n return result;\n}\n\nfunction repositionTextBox(eventData, measurementData, config) {\n var cornerstone = external.cornerstone; // Stop here if it's not a measurement creating\n\n if (!measurementData.isCreating) {\n return;\n }\n\n var element = eventData.element;\n var enabledElement = cornerstone.getEnabledElement(element);\n var image = enabledElement.image;\n var allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;\n var allow = {\n T: !allowedBorders || allowedBorders.includes('T'),\n R: !allowedBorders || allowedBorders.includes('R'),\n B: !allowedBorders || allowedBorders.includes('B'),\n L: !allowedBorders || allowedBorders.includes('L')\n };\n\n var getAvailableBlankAreas = function getAvailableBlankAreas(enabledElement, labelWidth, labelHeight) {\n var element = enabledElement.element,\n canvas = enabledElement.canvas,\n image = enabledElement.image;\n var topLeft = cornerstone.pixelToCanvas(element, {\n x: 0,\n y: 0\n });\n var bottomRight = cornerstone.pixelToCanvas(element, {\n x: image.width,\n y: image.height\n });\n var $canvas = $(canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var result = {};\n result['x-1'] = allow.L && topLeft.x > labelWidth;\n result['y-1'] = allow.T && topLeft.y > labelHeight;\n result.x1 = allow.R && canvasWidth - bottomRight.x > labelWidth;\n result.y1 = allow.B && canvasHeight - bottomRight.y > labelHeight;\n return result;\n };\n\n var getRenderingInformation = function getRenderingInformation(limits, tool) {\n var mid = {};\n mid.x = limits.x / 2;\n mid.y = limits.y / 2;\n var directions = {};\n directions.x = tool.x < mid.x ? -1 : 1;\n directions.y = tool.y < mid.y ? -1 : 1;\n var diffX = directions.x < 0 ? tool.x : limits.x - tool.x;\n var diffY = directions.y < 0 ? tool.y : limits.y - tool.y;\n var cornerAxis = diffY < diffX ? 'y' : 'x';\n var map = {\n 'x-1': 'L',\n 'y-1': 'T',\n x1: 'R',\n y1: 'B'\n };\n var current = 0;\n\n while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {\n // Invert the direction for the next iteration\n directions[cornerAxis] *= -1; // Invert the tempCornerAxis\n\n cornerAxis = cornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n return {\n directions: directions,\n cornerAxis: cornerAxis\n };\n };\n\n var calculateAxisCenter = function calculateAxisCenter(axis, start, end) {\n var a = start[axis];\n var b = end[axis];\n var lowest = Math.min(a, b);\n var highest = Math.max(a, b);\n return lowest + (highest - lowest) / 2;\n };\n\n var getTextBoxSizeInPixels = function getTextBoxSizeInPixels(element, bounds) {\n var topLeft = cornerstone.pageToPixel(element, 0, 0);\n var bottomRight = cornerstone.pageToPixel(element, bounds.x, bounds.y);\n return {\n x: bottomRight.x - topLeft.x,\n y: bottomRight.y - topLeft.y\n };\n };\n\n function getTextBoxOffset(config, cornerAxis, toolAxis, boxSize) {\n config = config || {};\n var centering = config.centering || {};\n var centerX = !!centering.x;\n var centerY = !!centering.y;\n var halfBoxSizeX = boxSize.x / 2;\n var halfBoxSizeY = boxSize.y / 2;\n var offset = {\n x: [],\n y: []\n };\n\n if (cornerAxis === 'x') {\n var offsetY = centerY ? 0 : halfBoxSizeY;\n offset.x[-1] = centerX ? halfBoxSizeX : 0;\n offset.x[1] = centerX ? -halfBoxSizeX : -boxSize.x;\n offset.y[-1] = offsetY;\n offset.y[1] = offsetY;\n } else {\n var offsetX = centerX ? 0 : halfBoxSizeX;\n offset.x[-1] = offsetX;\n offset.x[1] = offsetX;\n offset.y[-1] = centerY ? halfBoxSizeY : 0;\n offset.y[1] = centerY ? -halfBoxSizeY : -boxSize.y;\n }\n\n return offset;\n }\n\n var handles = measurementData.handles;\n var textBox = handles.textBox;\n var $canvas = $(enabledElement.canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var offset = $canvas.offset();\n var canvasDimensions = {\n x: canvasWidth,\n y: canvasHeight\n };\n var bounds = {};\n bounds.x = textBox.boundingBox.width;\n bounds.y = textBox.boundingBox.height;\n\n var getHandlePosition = function getHandlePosition(key) {\n var _handles$key = handles[key],\n x = _handles$key.x,\n y = _handles$key.y;\n return {\n x: x,\n y: y\n };\n };\n\n var start = getHandlePosition('start');\n var end = getHandlePosition('end');\n var tool = {};\n tool.x = calculateAxisCenter('x', start, end);\n tool.y = calculateAxisCenter('y', start, end);\n var limits = {};\n limits.x = image.width;\n limits.y = image.height;\n\n var _getRenderingInformat = getRenderingInformation(limits, tool),\n directions = _getRenderingInformat.directions,\n cornerAxis = _getRenderingInformat.cornerAxis;\n\n var availableAreas = getAvailableBlankAreas(enabledElement, bounds.x, bounds.y);\n var tempDirections = Object.assign({}, directions);\n var tempCornerAxis = cornerAxis;\n var foundPlace = false;\n var current = 0;\n\n while (current < 4) {\n if (availableAreas[tempCornerAxis + tempDirections[tempCornerAxis]]) {\n foundPlace = true;\n break;\n } // Invert the direction for the next iteration\n\n\n tempDirections[tempCornerAxis] *= -1; // Invert the tempCornerAxis\n\n tempCornerAxis = tempCornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n var cornerAxisPosition;\n\n if (foundPlace) {\n directions = Object.assign({}, directions, tempDirections);\n cornerAxis = tempCornerAxis;\n cornerAxisPosition = directions[cornerAxis] < 0 ? 0 : limits[cornerAxis];\n } else {\n limits = Object.assign({}, limits, canvasDimensions);\n var toolPositionOnCanvas = cornerstone.pixelToCanvas(element, tool);\n var renderingInformation = getRenderingInformation(limits, toolPositionOnCanvas);\n directions = renderingInformation.directions;\n cornerAxis = renderingInformation.cornerAxis;\n var position = {\n x: directions.x < 0 ? offset.left : offset.left + canvasWidth,\n y: directions.y < 0 ? offset.top : offset.top + canvasHeight\n };\n var pixelPosition = cornerstone.pageToPixel(element, position.x, position.y);\n cornerAxisPosition = pixelPosition[cornerAxis];\n }\n\n var toolAxis = cornerAxis === 'x' ? 'y' : 'x';\n var boxSize = getTextBoxSizeInPixels(element, bounds);\n textBox[cornerAxis] = cornerAxisPosition;\n textBox[toolAxis] = tool[toolAxis]; // Adjust the text box position reducing its size from the corner axis\n\n var textBoxOffset = getTextBoxOffset(config, cornerAxis, toolAxis, boxSize);\n textBox[cornerAxis] += textBoxOffset[cornerAxis][directions[cornerAxis]]; // Preventing the text box from partially going outside the canvas area\n\n var topLeft = cornerstone.pixelToCanvas(element, textBox);\n var bottomRight = {\n x: topLeft.x + bounds.x,\n y: topLeft.y + bounds.y\n };\n var canvasBorders = {\n x0: offset.left,\n y0: offset.top,\n x1: offset.left + canvasWidth,\n y1: offset.top + canvasHeight\n };\n\n if (topLeft[toolAxis] < 0) {\n var x = canvasBorders.x0;\n var y = canvasBorders.y0;\n\n var _pixelPosition = cornerstone.pageToPixel(element, x, y);\n\n textBox[toolAxis] = _pixelPosition[toolAxis];\n } else if (bottomRight[toolAxis] > canvasDimensions[toolAxis]) {\n var _x = canvasBorders.x1 - bounds.x;\n\n var _y = canvasBorders.y1 - bounds.y;\n\n var _pixelPosition2 = cornerstone.pageToPixel(element, _x, _y);\n\n textBox[toolAxis] = _pixelPosition2[toolAxis];\n }\n}\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar REGEX_TAG = /^x[0-9a-fx]{8}$/;\nvar DICOMTagDescriptions = Object.create(Object.prototype, {\n _descriptions: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n },\n tagNumberToString: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function tagNumberToString(tag) {\n var string; // by default, undefined is returned...\n\n if (this.isValidTagNumber(tag)) {\n // if it's a number, build its hexadecimal representation...\n string = 'x' + ('00000000' + tag.toString(16)).substr(-8);\n }\n\n return string;\n }\n },\n isValidTagNumber: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTagNumber(tag) {\n return _typeof(tag) === NUMBER && tag >= 0 && tag <= 0xffffffff;\n }\n },\n isValidTag: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTag(tag) {\n return _typeof(tag) === STRING ? REGEX_TAG.test(tag) : this.isValidTagNumber(tag);\n }\n },\n find: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function find(name) {\n var description; // by default, undefined is returned...\n\n if (_typeof(name) !== STRING) {\n // if it's a number, a tag string will be returned...\n name = this.tagNumberToString(name);\n }\n\n if (_typeof(name) === STRING) {\n description = this._descriptions[name];\n }\n\n return description;\n }\n },\n init: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function init(descriptionMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _descriptions = this._descriptions;\n\n for (var tag in descriptionMap) {\n if (_hasOwn.call(descriptionMap, tag)) {\n if (!this.isValidTag(tag)) {\n // Skip in case tag is not valid...\n console.info(\"DICOMTagDescriptions: Invalid tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n }\n\n if (tag in _descriptions) {\n // Skip in case the tag is duplicated...\n console.info(\"DICOMTagDescriptions: Duplicated tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n } // Save keyword...\n\n\n var keyword = descriptionMap[tag]; // Create a description entry and freeze it...\n\n var entry = Object.create(null);\n entry.tag = tag;\n entry.keyword = keyword;\n Object.freeze(entry); // Add tag references to entry...\n\n _descriptions[tag] = entry; // Add keyword references to entry (if not present already)...\n\n if (keyword in _descriptions) {\n var currentEntry = _descriptions[keyword];\n console.info(\"DICOMTagDescriptions: Using <\".concat(currentEntry.tag, \",\").concat(currentEntry.keyword, \"> instead of <\").concat(entry.tag, \",\").concat(entry.keyword, \"> for keyword \\\"\").concat(keyword, \"\\\"...\"));\n } else {\n _descriptions[keyword] = entry;\n }\n }\n } // Freeze internal description map...\n\n\n Object.freeze(_descriptions); // Freeze itself...\n\n Object.freeze(this);\n }\n }\n});\n/**\n * Map with DICOM Tag Descriptions\n */\n\nvar initialTagDescriptionMap = {\n x00020000: 'FileMetaInfoGroupLength',\n x00020001: 'FileMetaInfoVersion',\n x00020002: 'MediaStorageSOPClassUID',\n x00020003: 'MediaStorageSOPInstanceUID',\n x00020010: 'TransferSyntaxUID',\n x00020012: 'ImplementationClassUID',\n x00020013: 'ImplementationVersionName',\n x00020016: 'SourceApplicationEntityTitle',\n x00020100: 'PrivateInformationCreatorUID',\n x00020102: 'PrivateInformation',\n x00041130: 'FileSetID',\n x00041141: 'FileSetDescriptorFileID',\n x00041142: 'SpecificCharacterSetOfFile',\n x00041200: 'FirstDirectoryRecordOffset',\n x00041202: 'LastDirectoryRecordOffset',\n x00041212: 'FileSetConsistencyFlag',\n x00041220: 'DirectoryRecordSequence',\n x00041400: 'OffsetOfNextDirectoryRecord',\n x00041410: 'RecordInUseFlag',\n x00041420: 'LowerLevelDirectoryEntityOffset',\n x00041430: 'DirectoryRecordType',\n x00041432: 'PrivateRecordUID',\n x00041500: 'ReferencedFileID',\n x00041504: 'MRDRDirectoryRecordOffset',\n x00041510: 'ReferencedSOPClassUIDInFile',\n x00041511: 'ReferencedSOPInstanceUIDInFile',\n x00041512: 'ReferencedTransferSyntaxUIDInFile',\n x0004151a: 'ReferencedRelatedSOPClassUIDInFile',\n x00041600: 'NumberOfReferences',\n x00080000: 'IdentifyingGroupLength',\n x00080001: 'LengthToEnd',\n x00080005: 'SpecificCharacterSet',\n x00080006: 'LanguageCodeSequence',\n x00080008: 'ImageType',\n x00080010: 'RecognitionCode',\n x00080012: 'InstanceCreationDate',\n x00080013: 'InstanceCreationTime',\n x00080014: 'InstanceCreatorUID',\n x00080016: 'SOPClassUID',\n x00080018: 'SOPInstanceUID',\n x0008001a: 'RelatedGeneralSOPClassUID',\n x0008001b: 'OriginalSpecializedSOPClassUID',\n x00080020: 'StudyDate',\n x00080021: 'SeriesDate',\n x00080022: 'AcquisitionDate',\n x00080023: 'ContentDate',\n x00080024: 'OverlayDate',\n x00080025: 'CurveDate',\n x0008002a: 'AcquisitionDateTime',\n x00080030: 'StudyTime',\n x00080031: 'SeriesTime',\n x00080032: 'AcquisitionTime',\n x00080033: 'ContentTime',\n x00080034: 'OverlayTime',\n x00080035: 'CurveTime',\n x00080040: 'DataSetType',\n x00080041: 'DataSetSubtype',\n x00080042: 'NuclearMedicineSeriesType',\n x00080050: 'AccessionNumber',\n x00080052: 'QueryRetrieveLevel',\n x00080054: 'RetrieveAETitle',\n x00080056: 'InstanceAvailability',\n x00080058: 'FailedSOPInstanceUIDList',\n x00080060: 'Modality',\n x00080061: 'ModalitiesInStudy',\n x00080062: 'SOPClassesInStudy',\n x00080064: 'ConversionType',\n x00080068: 'PresentationIntentType',\n x00080070: 'Manufacturer',\n x00080080: 'InstitutionName',\n x00080081: 'InstitutionAddress',\n x00080082: 'InstitutionCodeSequence',\n x00080090: 'ReferringPhysicianName',\n x00080092: 'ReferringPhysicianAddress',\n x00080094: 'ReferringPhysicianTelephoneNumber',\n x00080096: 'ReferringPhysicianIDSequence',\n x00080100: 'CodeValue',\n x00080102: 'CodingSchemeDesignator',\n x00080103: 'CodingSchemeVersion',\n x00080104: 'CodeMeaning',\n x00080105: 'MappingResource',\n x00080106: 'ContextGroupVersion',\n x00080107: 'ContextGroupLocalVersion',\n x0008010b: 'ContextGroupExtensionFlag',\n x0008010c: 'CodingSchemeUID',\n x0008010d: 'ContextGroupExtensionCreatorUID',\n x0008010f: 'ContextIdentifier',\n x00080110: 'CodingSchemeIDSequence',\n x00080112: 'CodingSchemeRegistry',\n x00080114: 'CodingSchemeExternalID',\n x00080115: 'CodingSchemeName',\n x00080116: 'CodingSchemeResponsibleOrganization',\n x00080117: 'ContextUID',\n x00080201: 'TimezoneOffsetFromUTC',\n x00081000: 'NetworkID',\n x00081010: 'StationName',\n x00081030: 'StudyDescription',\n x00081032: 'ProcedureCodeSequence',\n x0008103e: 'SeriesDescription',\n x00081040: 'InstitutionalDepartmentName',\n x00081048: 'PhysiciansOfRecord',\n x00081049: 'PhysiciansOfRecordIDSequence',\n x00081050: 'PerformingPhysicianName',\n x00081052: 'PerformingPhysicianIDSequence',\n x00081060: 'NameOfPhysicianReadingStudy',\n x00081062: 'PhysicianReadingStudyIDSequence',\n x00081070: 'OperatorsName',\n x00081072: 'OperatorIDSequence',\n x00081080: 'AdmittingDiagnosesDescription',\n x00081084: 'AdmittingDiagnosesCodeSequence',\n x00081090: 'ManufacturersModelName',\n x00081100: 'ReferencedResultsSequence',\n x00081110: 'ReferencedStudySequence',\n x00081111: 'ReferencedPerformedProcedureStepSequence',\n x00081115: 'ReferencedSeriesSequence',\n x00081120: 'ReferencedPatientSequence',\n x00081125: 'ReferencedVisitSequence',\n x00081130: 'ReferencedOverlaySequence',\n x0008113a: 'ReferencedWaveformSequence',\n x00081140: 'ReferencedImageSequence',\n x00081145: 'ReferencedCurveSequence',\n x0008114a: 'ReferencedInstanceSequence',\n x00081150: 'ReferencedSOPClassUID',\n x00081155: 'ReferencedSOPInstanceUID',\n x0008115a: 'SOPClassesSupported',\n x00081160: 'ReferencedFrameNumber',\n x00081161: 'SimpleFrameList',\n x00081162: 'CalculatedFrameList',\n x00081163: 'TimeRange',\n x00081164: 'FrameExtractionSequence',\n x00081195: 'TransactionUID',\n x00081197: 'FailureReason',\n x00081198: 'FailedSOPSequence',\n x00081199: 'ReferencedSOPSequence',\n x00081200: 'OtherReferencedStudiesSequence',\n x00081250: 'RelatedSeriesSequence',\n x00082110: 'LossyImageCompressionRetired',\n x00082111: 'DerivationDescription',\n x00082112: 'SourceImageSequence',\n x00082120: 'StageName',\n x00082122: 'StageNumber',\n x00082124: 'NumberOfStages',\n x00082127: 'ViewName',\n x00082128: 'ViewNumber',\n x00082129: 'NumberOfEventTimers',\n x0008212a: 'NumberOfViewsInStage',\n x00082130: 'EventElapsedTimes',\n x00082132: 'EventTimerNames',\n x00082133: 'EventTimerSequence',\n x00082134: 'EventTimeOffset',\n x00082135: 'EventCodeSequence',\n x00082142: 'StartTrim',\n x00082143: 'StopTrim',\n x00082144: 'RecommendedDisplayFrameRate',\n x00082200: 'TransducerPosition',\n x00082204: 'TransducerOrientation',\n x00082208: 'AnatomicStructure',\n x00082218: 'AnatomicRegionSequence',\n x00082220: 'AnatomicRegionModifierSequence',\n x00082228: 'PrimaryAnatomicStructureSequence',\n x00082229: 'AnatomicStructureOrRegionSequence',\n x00082230: 'AnatomicStructureModifierSequence',\n x00082240: 'TransducerPositionSequence',\n x00082242: 'TransducerPositionModifierSequence',\n x00082244: 'TransducerOrientationSequence',\n x00082246: 'TransducerOrientationModifierSeq',\n x00082253: 'AnatomicEntrancePortalCodeSeqTrial',\n x00082255: 'AnatomicApproachDirCodeSeqTrial',\n x00082256: 'AnatomicPerspectiveDescrTrial',\n x00082257: 'AnatomicPerspectiveCodeSeqTrial',\n x00083001: 'AlternateRepresentationSequence',\n x00083010: 'IrradiationEventUID',\n x00084000: 'IdentifyingComments',\n x00089007: 'FrameType',\n x00089092: 'ReferencedImageEvidenceSequence',\n x00089121: 'ReferencedRawDataSequence',\n x00089123: 'CreatorVersionUID',\n x00089124: 'DerivationImageSequence',\n x00089154: 'SourceImageEvidenceSequence',\n x00089205: 'PixelPresentation',\n x00089206: 'VolumetricProperties',\n x00089207: 'VolumeBasedCalculationTechnique',\n x00089208: 'ComplexImageComponent',\n x00089209: 'AcquisitionContrast',\n x00089215: 'DerivationCodeSequence',\n x00089237: 'GrayscalePresentationStateSequence',\n x00089410: 'ReferencedOtherPlaneSequence',\n x00089458: 'FrameDisplaySequence',\n x00089459: 'RecommendedDisplayFrameRateInFloat',\n x00089460: 'SkipFrameRangeFlag',\n // x00091001: 'FullFidelity',\n // x00091002: 'SuiteID',\n // x00091004: 'ProductID',\n // x00091027: 'ImageActualDate',\n // x00091030: 'ServiceID',\n // x00091031: 'MobileLocationNumber',\n // x000910e3: 'EquipmentUID',\n // x000910e6: 'GenesisVersionNow',\n // x000910e7: 'ExamRecordChecksum',\n // x000910e9: 'ActualSeriesDataTimeStamp',\n x00100000: 'PatientGroupLength',\n x00100010: 'PatientName',\n x00100020: 'PatientID',\n x00100021: 'IssuerOfPatientID',\n x00100022: 'TypeOfPatientID',\n x00100030: 'PatientBirthDate',\n x00100032: 'PatientBirthTime',\n x00100040: 'PatientSex',\n x00100050: 'PatientInsurancePlanCodeSequence',\n x00100101: 'PatientPrimaryLanguageCodeSeq',\n x00100102: 'PatientPrimaryLanguageCodeModSeq',\n x00101000: 'OtherPatientIDs',\n x00101001: 'OtherPatientNames',\n x00101002: 'OtherPatientIDsSequence',\n x00101005: 'PatientBirthName',\n x00101010: 'PatientAge',\n x00101020: 'PatientSize',\n x00101030: 'PatientWeight',\n x00101040: 'PatientAddress',\n x00101050: 'InsurancePlanIdentification',\n x00101060: 'PatientMotherBirthName',\n x00101080: 'MilitaryRank',\n x00101081: 'BranchOfService',\n x00101090: 'MedicalRecordLocator',\n x00102000: 'MedicalAlerts',\n x00102110: 'Allergies',\n x00102150: 'CountryOfResidence',\n x00102152: 'RegionOfResidence',\n x00102154: 'PatientTelephoneNumbers',\n x00102160: 'EthnicGroup',\n x00102180: 'Occupation',\n x001021a0: 'SmokingStatus',\n x001021b0: 'AdditionalPatientHistory',\n x001021c0: 'PregnancyStatus',\n x001021d0: 'LastMenstrualDate',\n x001021f0: 'PatientReligiousPreference',\n x00102201: 'PatientSpeciesDescription',\n x00102202: 'PatientSpeciesCodeSequence',\n x00102203: 'PatientSexNeutered',\n x00102210: 'AnatomicalOrientationType',\n x00102292: 'PatientBreedDescription',\n x00102293: 'PatientBreedCodeSequence',\n x00102294: 'BreedRegistrationSequence',\n x00102295: 'BreedRegistrationNumber',\n x00102296: 'BreedRegistryCodeSequence',\n x00102297: 'ResponsiblePerson',\n x00102298: 'ResponsiblePersonRole',\n x00102299: 'ResponsibleOrganization',\n x00104000: 'PatientComments',\n x00109431: 'ExaminedBodyThickness',\n x00111010: 'PatientStatus',\n x00120010: 'ClinicalTrialSponsorName',\n x00120020: 'ClinicalTrialProtocolID',\n x00120021: 'ClinicalTrialProtocolName',\n x00120030: 'ClinicalTrialSiteID',\n x00120031: 'ClinicalTrialSiteName',\n x00120040: 'ClinicalTrialSubjectID',\n x00120042: 'ClinicalTrialSubjectReadingID',\n x00120050: 'ClinicalTrialTimePointID',\n x00120051: 'ClinicalTrialTimePointDescription',\n x00120060: 'ClinicalTrialCoordinatingCenter',\n x00120062: 'PatientIdentityRemoved',\n x00120063: 'DeidentificationMethod',\n x00120064: 'DeidentificationMethodCodeSequence',\n x00120071: 'ClinicalTrialSeriesID',\n x00120072: 'ClinicalTrialSeriesDescription',\n x00120084: 'DistributionType',\n x00120085: 'ConsentForDistributionFlag',\n x00180000: 'AcquisitionGroupLength',\n x00180010: 'ContrastBolusAgent',\n x00180012: 'ContrastBolusAgentSequence',\n x00180014: 'ContrastBolusAdministrationRoute',\n x00180015: 'BodyPartExamined',\n x00180020: 'ScanningSequence',\n x00180021: 'SequenceVariant',\n x00180022: 'ScanOptions',\n x00180023: 'MRAcquisitionType',\n x00180024: 'SequenceName',\n x00180025: 'AngioFlag',\n x00180026: 'InterventionDrugInformationSeq',\n x00180027: 'InterventionDrugStopTime',\n x00180028: 'InterventionDrugDose',\n x00180029: 'InterventionDrugSequence',\n x0018002a: 'AdditionalDrugSequence',\n x00180030: 'Radionuclide',\n x00180031: 'Radiopharmaceutical',\n x00180032: 'EnergyWindowCenterline',\n x00180033: 'EnergyWindowTotalWidth',\n x00180034: 'InterventionDrugName',\n x00180035: 'InterventionDrugStartTime',\n x00180036: 'InterventionSequence',\n x00180037: 'TherapyType',\n x00180038: 'InterventionStatus',\n x00180039: 'TherapyDescription',\n x0018003a: 'InterventionDescription',\n x00180040: 'CineRate',\n x00180042: 'InitialCineRunState',\n x00180050: 'SliceThickness',\n x00180060: 'KVP',\n x00180070: 'CountsAccumulated',\n x00180071: 'AcquisitionTerminationCondition',\n x00180072: 'EffectiveDuration',\n x00180073: 'AcquisitionStartCondition',\n x00180074: 'AcquisitionStartConditionData',\n x00180075: 'AcquisitionEndConditionData',\n x00180080: 'RepetitionTime',\n x00180081: 'EchoTime',\n x00180082: 'InversionTime',\n x00180083: 'NumberOfAverages',\n x00180084: 'ImagingFrequency',\n x00180085: 'ImagedNucleus',\n x00180086: 'EchoNumber',\n x00180087: 'MagneticFieldStrength',\n x00180088: 'SpacingBetweenSlices',\n x00180089: 'NumberOfPhaseEncodingSteps',\n x00180090: 'DataCollectionDiameter',\n x00180091: 'EchoTrainLength',\n x00180093: 'PercentSampling',\n x00180094: 'PercentPhaseFieldOfView',\n x00180095: 'PixelBandwidth',\n x00181000: 'DeviceSerialNumber',\n x00181002: 'DeviceUID',\n x00181003: 'DeviceID',\n x00181004: 'PlateID',\n x00181005: 'GeneratorID',\n x00181006: 'GridID',\n x00181007: 'CassetteID',\n x00181008: 'GantryID',\n x00181010: 'SecondaryCaptureDeviceID',\n x00181011: 'HardcopyCreationDeviceID',\n x00181012: 'DateOfSecondaryCapture',\n x00181014: 'TimeOfSecondaryCapture',\n x00181016: 'SecondaryCaptureDeviceManufacturer',\n x00181017: 'HardcopyDeviceManufacturer',\n x00181018: 'SecondaryCaptureDeviceModelName',\n x00181019: 'SecondaryCaptureDeviceSoftwareVers',\n x0018101a: 'HardcopyDeviceSoftwareVersion',\n x0018101b: 'HardcopyDeviceModelName',\n x00181020: 'SoftwareVersion',\n x00181022: 'VideoImageFormatAcquired',\n x00181023: 'DigitalImageFormatAcquired',\n x00181030: 'ProtocolName',\n x00181040: 'ContrastBolusRoute',\n x00181041: 'ContrastBolusVolume',\n x00181042: 'ContrastBolusStartTime',\n x00181043: 'ContrastBolusStopTime',\n x00181044: 'ContrastBolusTotalDose',\n x00181045: 'SyringeCounts',\n x00181046: 'ContrastFlowRate',\n x00181047: 'ContrastFlowDuration',\n x00181048: 'ContrastBolusIngredient',\n x00181049: 'ContrastBolusConcentration',\n x00181050: 'SpatialResolution',\n x00181060: 'TriggerTime',\n x00181061: 'TriggerSourceOrType',\n x00181062: 'NominalInterval',\n x00181063: 'FrameTime',\n x00181064: 'CardiacFramingType',\n x00181065: 'FrameTimeVector',\n x00181066: 'FrameDelay',\n x00181067: 'ImageTriggerDelay',\n x00181068: 'MultiplexGroupTimeOffset',\n x00181069: 'TriggerTimeOffset',\n x0018106a: 'SynchronizationTrigger',\n x0018106c: 'SynchronizationChannel',\n x0018106e: 'TriggerSamplePosition',\n x00181070: 'RadiopharmaceuticalRoute',\n x00181071: 'RadiopharmaceuticalVolume',\n x00181072: 'RadiopharmaceuticalStartTime',\n x00181073: 'RadiopharmaceuticalStopTime',\n x00181074: 'RadionuclideTotalDose',\n x00181075: 'RadionuclideHalfLife',\n x00181076: 'RadionuclidePositronFraction',\n x00181077: 'RadiopharmaceuticalSpecActivity',\n x00181078: 'RadiopharmaceuticalStartDateTime',\n x00181079: 'RadiopharmaceuticalStopDateTime',\n x00181080: 'BeatRejectionFlag',\n x00181081: 'LowRRValue',\n x00181082: 'HighRRValue',\n x00181083: 'IntervalsAcquired',\n x00181084: 'IntervalsRejected',\n x00181085: 'PVCRejection',\n x00181086: 'SkipBeats',\n x00181088: 'HeartRate',\n x00181090: 'CardiacNumberOfImages',\n x00181094: 'TriggerWindow',\n x00181100: 'ReconstructionDiameter',\n x00181110: 'DistanceSourceToDetector',\n x00181111: 'DistanceSourceToPatient',\n x00181114: 'EstimatedRadiographicMagnification',\n x00181120: 'GantryDetectorTilt',\n x00181121: 'GantryDetectorSlew',\n x00181130: 'TableHeight',\n x00181131: 'TableTraverse',\n x00181134: 'TableMotion',\n x00181135: 'TableVerticalIncrement',\n x00181136: 'TableLateralIncrement',\n x00181137: 'TableLongitudinalIncrement',\n x00181138: 'TableAngle',\n x0018113a: 'TableType',\n x00181140: 'RotationDirection',\n x00181141: 'AngularPosition',\n x00181142: 'RadialPosition',\n x00181143: 'ScanArc',\n x00181144: 'AngularStep',\n x00181145: 'CenterOfRotationOffset',\n x00181146: 'RotationOffset',\n x00181147: 'FieldOfViewShape',\n x00181149: 'FieldOfViewDimensions',\n x00181150: 'ExposureTime',\n x00181151: 'XRayTubeCurrent',\n x00181152: 'Exposure',\n x00181153: 'ExposureInMicroAmpSec',\n x00181154: 'AveragePulseWidth',\n x00181155: 'RadiationSetting',\n x00181156: 'RectificationType',\n x0018115a: 'RadiationMode',\n x0018115e: 'ImageAreaDoseProduct',\n x00181160: 'FilterType',\n x00181161: 'TypeOfFilters',\n x00181162: 'IntensifierSize',\n x00181164: 'ImagerPixelSpacing',\n x00181166: 'Grid',\n x00181170: 'GeneratorPower',\n x00181180: 'CollimatorGridName',\n x00181181: 'CollimatorType',\n x00181182: 'FocalDistance',\n x00181183: 'XFocusCenter',\n x00181184: 'YFocusCenter',\n x00181190: 'FocalSpots',\n x00181191: 'AnodeTargetMaterial',\n x001811a0: 'BodyPartThickness',\n x001811a2: 'CompressionForce',\n x00181200: 'DateOfLastCalibration',\n x00181201: 'TimeOfLastCalibration',\n x00181210: 'ConvolutionKernel',\n x00181240: 'UpperLowerPixelValues',\n x00181242: 'ActualFrameDuration',\n x00181243: 'CountRate',\n x00181244: 'PreferredPlaybackSequencing',\n x00181250: 'ReceiveCoilName',\n x00181251: 'TransmitCoilName',\n x00181260: 'PlateType',\n x00181261: 'PhosphorType',\n x00181300: 'ScanVelocity',\n x00181301: 'WholeBodyTechnique',\n x00181302: 'ScanLength',\n x00181310: 'AcquisitionMatrix',\n x00181312: 'InPlanePhaseEncodingDirection',\n x00181314: 'FlipAngle',\n x00181315: 'VariableFlipAngleFlag',\n x00181316: 'SAR',\n x00181318: 'DB-Dt',\n x00181400: 'AcquisitionDeviceProcessingDescr',\n x00181401: 'AcquisitionDeviceProcessingCode',\n x00181402: 'CassetteOrientation',\n x00181403: 'CassetteSize',\n x00181404: 'ExposuresOnPlate',\n x00181405: 'RelativeXRayExposure',\n x00181450: 'ColumnAngulation',\n x00181460: 'TomoLayerHeight',\n x00181470: 'TomoAngle',\n x00181480: 'TomoTime',\n x00181490: 'TomoType',\n x00181491: 'TomoClass',\n x00181495: 'NumberOfTomosynthesisSourceImages',\n x00181500: 'PositionerMotion',\n x00181508: 'PositionerType',\n x00181510: 'PositionerPrimaryAngle',\n x00181511: 'PositionerSecondaryAngle',\n x00181520: 'PositionerPrimaryAngleIncrement',\n x00181521: 'PositionerSecondaryAngleIncrement',\n x00181530: 'DetectorPrimaryAngle',\n x00181531: 'DetectorSecondaryAngle',\n x00181600: 'ShutterShape',\n x00181602: 'ShutterLeftVerticalEdge',\n x00181604: 'ShutterRightVerticalEdge',\n x00181606: 'ShutterUpperHorizontalEdge',\n x00181608: 'ShutterLowerHorizontalEdge',\n x00181610: 'CenterOfCircularShutter',\n x00181612: 'RadiusOfCircularShutter',\n x00181620: 'VerticesOfPolygonalShutter',\n x00181622: 'ShutterPresentationValue',\n x00181623: 'ShutterOverlayGroup',\n x00181624: 'ShutterPresentationColorCIELabVal',\n x00181700: 'CollimatorShape',\n x00181702: 'CollimatorLeftVerticalEdge',\n x00181704: 'CollimatorRightVerticalEdge',\n x00181706: 'CollimatorUpperHorizontalEdge',\n x00181708: 'CollimatorLowerHorizontalEdge',\n x00181710: 'CenterOfCircularCollimator',\n x00181712: 'RadiusOfCircularCollimator',\n x00181720: 'VerticesOfPolygonalCollimator',\n x00181800: 'AcquisitionTimeSynchronized',\n x00181801: 'TimeSource',\n x00181802: 'TimeDistributionProtocol',\n x00181803: 'NTPSourceAddress',\n x00182001: 'PageNumberVector',\n x00182002: 'FrameLabelVector',\n x00182003: 'FramePrimaryAngleVector',\n x00182004: 'FrameSecondaryAngleVector',\n x00182005: 'SliceLocationVector',\n x00182006: 'DisplayWindowLabelVector',\n x00182010: 'NominalScannedPixelSpacing',\n x00182020: 'DigitizingDeviceTransportDirection',\n x00182030: 'RotationOfScannedFilm',\n x00183100: 'IVUSAcquisition',\n x00183101: 'IVUSPullbackRate',\n x00183102: 'IVUSGatedRate',\n x00183103: 'IVUSPullbackStartFrameNumber',\n x00183104: 'IVUSPullbackStopFrameNumber',\n x00183105: 'LesionNumber',\n x00184000: 'AcquisitionComments',\n x00185000: 'OutputPower',\n x00185010: 'TransducerData',\n x00185012: 'FocusDepth',\n x00185020: 'ProcessingFunction',\n x00185021: 'PostprocessingFunction',\n x00185022: 'MechanicalIndex',\n x00185024: 'BoneThermalIndex',\n x00185026: 'CranialThermalIndex',\n x00185027: 'SoftTissueThermalIndex',\n x00185028: 'SoftTissueFocusThermalIndex',\n x00185029: 'SoftTissueSurfaceThermalIndex',\n x00185030: 'DynamicRange',\n x00185040: 'TotalGain',\n x00185050: 'DepthOfScanField',\n x00185100: 'PatientPosition',\n x00185101: 'ViewPosition',\n x00185104: 'ProjectionEponymousNameCodeSeq',\n x00185210: 'ImageTransformationMatrix',\n x00185212: 'ImageTranslationVector',\n x00186000: 'Sensitivity',\n x00186011: 'SequenceOfUltrasoundRegions',\n x00186012: 'RegionSpatialFormat',\n x00186014: 'RegionDataType',\n x00186016: 'RegionFlags',\n x00186018: 'RegionLocationMinX0',\n x0018601a: 'RegionLocationMinY0',\n x0018601c: 'RegionLocationMaxX1',\n x0018601e: 'RegionLocationMaxY1',\n x00186020: 'ReferencePixelX0',\n x00186022: 'ReferencePixelY0',\n x00186024: 'PhysicalUnitsXDirection',\n x00186026: 'PhysicalUnitsYDirection',\n x00186028: 'ReferencePixelPhysicalValueX',\n x0018602a: 'ReferencePixelPhysicalValueY',\n x0018602c: 'PhysicalDeltaX',\n x0018602e: 'PhysicalDeltaY',\n x00186030: 'TransducerFrequency',\n x00186031: 'TransducerType',\n x00186032: 'PulseRepetitionFrequency',\n x00186034: 'DopplerCorrectionAngle',\n x00186036: 'SteeringAngle',\n x00186038: 'DopplerSampleVolumeXPosRetired',\n x00186039: 'DopplerSampleVolumeXPosition',\n x0018603a: 'DopplerSampleVolumeYPosRetired',\n x0018603b: 'DopplerSampleVolumeYPosition',\n x0018603c: 'TMLinePositionX0Retired',\n x0018603d: 'TMLinePositionX0',\n x0018603e: 'TMLinePositionY0Retired',\n x0018603f: 'TMLinePositionY0',\n x00186040: 'TMLinePositionX1Retired',\n x00186041: 'TMLinePositionX1',\n x00186042: 'TMLinePositionY1Retired',\n x00186043: 'TMLinePositionY1',\n x00186044: 'PixelComponentOrganization',\n x00186046: 'PixelComponentMask',\n x00186048: 'PixelComponentRangeStart',\n x0018604a: 'PixelComponentRangeStop',\n x0018604c: 'PixelComponentPhysicalUnits',\n x0018604e: 'PixelComponentDataType',\n x00186050: 'NumberOfTableBreakPoints',\n x00186052: 'TableOfXBreakPoints',\n x00186054: 'TableOfYBreakPoints',\n x00186056: 'NumberOfTableEntries',\n x00186058: 'TableOfPixelValues',\n x0018605a: 'TableOfParameterValues',\n x00186060: 'RWaveTimeVector',\n x00187000: 'DetectorConditionsNominalFlag',\n x00187001: 'DetectorTemperature',\n x00187004: 'DetectorType',\n x00187005: 'DetectorConfiguration',\n x00187006: 'DetectorDescription',\n x00187008: 'DetectorMode',\n x0018700a: 'DetectorID',\n x0018700c: 'DateOfLastDetectorCalibration',\n x0018700e: 'TimeOfLastDetectorCalibration',\n x00187010: 'DetectorExposuresSinceCalibration',\n x00187011: 'DetectorExposuresSinceManufactured',\n x00187012: 'DetectorTimeSinceLastExposure',\n x00187014: 'DetectorActiveTime',\n x00187016: 'DetectorActiveOffsetFromExposure',\n x0018701a: 'DetectorBinning',\n x00187020: 'DetectorElementPhysicalSize',\n x00187022: 'DetectorElementSpacing',\n x00187024: 'DetectorActiveShape',\n x00187026: 'DetectorActiveDimensions',\n x00187028: 'DetectorActiveOrigin',\n x0018702a: 'DetectorManufacturerName',\n x0018702b: 'DetectorManufacturersModelName',\n x00187030: 'FieldOfViewOrigin',\n x00187032: 'FieldOfViewRotation',\n x00187034: 'FieldOfViewHorizontalFlip',\n x00187040: 'GridAbsorbingMaterial',\n x00187041: 'GridSpacingMaterial',\n x00187042: 'GridThickness',\n x00187044: 'GridPitch',\n x00187046: 'GridAspectRatio',\n x00187048: 'GridPeriod',\n x0018704c: 'GridFocalDistance',\n x00187050: 'FilterMaterial',\n x00187052: 'FilterThicknessMinimum',\n x00187054: 'FilterThicknessMaximum',\n x00187060: 'ExposureControlMode',\n x00187062: 'ExposureControlModeDescription',\n x00187064: 'ExposureStatus',\n x00187065: 'PhototimerSetting',\n x00188150: 'ExposureTimeInMicroSec',\n x00188151: 'XRayTubeCurrentInMicroAmps',\n x00189004: 'ContentQualification',\n x00189005: 'PulseSequenceName',\n x00189006: 'MRImagingModifierSequence',\n x00189008: 'EchoPulseSequence',\n x00189009: 'InversionRecovery',\n x00189010: 'FlowCompensation',\n x00189011: 'MultipleSpinEcho',\n x00189012: 'MultiPlanarExcitation',\n x00189014: 'PhaseContrast',\n x00189015: 'TimeOfFlightContrast',\n x00189016: 'Spoiling',\n x00189017: 'SteadyStatePulseSequence',\n x00189018: 'EchoPlanarPulseSequence',\n x00189019: 'TagAngleFirstAxis',\n x00189020: 'MagnetizationTransfer',\n x00189021: 'T2Preparation',\n x00189022: 'BloodSignalNulling',\n x00189024: 'SaturationRecovery',\n x00189025: 'SpectrallySelectedSuppression',\n x00189026: 'SpectrallySelectedExcitation',\n x00189027: 'SpatialPresaturation',\n x00189028: 'Tagging',\n x00189029: 'OversamplingPhase',\n x00189030: 'TagSpacingFirstDimension',\n x00189032: 'GeometryOfKSpaceTraversal',\n x00189033: 'SegmentedKSpaceTraversal',\n x00189034: 'RectilinearPhaseEncodeReordering',\n x00189035: 'TagThickness',\n x00189036: 'PartialFourierDirection',\n x00189037: 'CardiacSynchronizationTechnique',\n x00189041: 'ReceiveCoilManufacturerName',\n x00189042: 'MRReceiveCoilSequence',\n x00189043: 'ReceiveCoilType',\n x00189044: 'QuadratureReceiveCoil',\n x00189045: 'MultiCoilDefinitionSequence',\n x00189046: 'MultiCoilConfiguration',\n x00189047: 'MultiCoilElementName',\n x00189048: 'MultiCoilElementUsed',\n x00189049: 'MRTransmitCoilSequence',\n x00189050: 'TransmitCoilManufacturerName',\n x00189051: 'TransmitCoilType',\n x00189052: 'SpectralWidth',\n x00189053: 'ChemicalShiftReference',\n x00189054: 'VolumeLocalizationTechnique',\n x00189058: 'MRAcquisitionFrequencyEncodeSteps',\n x00189059: 'Decoupling',\n x00189060: 'DecoupledNucleus',\n x00189061: 'DecouplingFrequency',\n x00189062: 'DecouplingMethod',\n x00189063: 'DecouplingChemicalShiftReference',\n x00189064: 'KSpaceFiltering',\n x00189065: 'TimeDomainFiltering',\n x00189066: 'NumberOfZeroFills',\n x00189067: 'BaselineCorrection',\n x00189069: 'ParallelReductionFactorInPlane',\n x00189070: 'CardiacRRIntervalSpecified',\n x00189073: 'AcquisitionDuration',\n x00189074: 'FrameAcquisitionDateTime',\n x00189075: 'DiffusionDirectionality',\n x00189076: 'DiffusionGradientDirectionSequence',\n x00189077: 'ParallelAcquisition',\n x00189078: 'ParallelAcquisitionTechnique',\n x00189079: 'InversionTimes',\n x00189080: 'MetaboliteMapDescription',\n x00189081: 'PartialFourier',\n x00189082: 'EffectiveEchoTime',\n x00189083: 'MetaboliteMapCodeSequence',\n x00189084: 'ChemicalShiftSequence',\n x00189085: 'CardiacSignalSource',\n x00189087: 'DiffusionBValue',\n x00189089: 'DiffusionGradientOrientation',\n x00189090: 'VelocityEncodingDirection',\n x00189091: 'VelocityEncodingMinimumValue',\n x00189093: 'NumberOfKSpaceTrajectories',\n x00189094: 'CoverageOfKSpace',\n x00189095: 'SpectroscopyAcquisitionPhaseRows',\n x00189096: 'ParallelReductFactorInPlaneRetired',\n x00189098: 'TransmitterFrequency',\n x00189100: 'ResonantNucleus',\n x00189101: 'FrequencyCorrection',\n x00189103: 'MRSpectroscopyFOV-GeometrySequence',\n x00189104: 'SlabThickness',\n x00189105: 'SlabOrientation',\n x00189106: 'MidSlabPosition',\n x00189107: 'MRSpatialSaturationSequence',\n x00189112: 'MRTimingAndRelatedParametersSeq',\n x00189114: 'MREchoSequence',\n x00189115: 'MRModifierSequence',\n x00189117: 'MRDiffusionSequence',\n x00189118: 'CardiacTriggerSequence',\n x00189119: 'MRAveragesSequence',\n x00189125: 'MRFOV-GeometrySequence',\n x00189126: 'VolumeLocalizationSequence',\n x00189127: 'SpectroscopyAcquisitionDataColumns',\n x00189147: 'DiffusionAnisotropyType',\n x00189151: 'FrameReferenceDateTime',\n x00189152: 'MRMetaboliteMapSequence',\n x00189155: 'ParallelReductionFactorOutOfPlane',\n x00189159: 'SpectroscopyOutOfPlanePhaseSteps',\n x00189166: 'BulkMotionStatus',\n x00189168: 'ParallelReductionFactSecondInPlane',\n x00189169: 'CardiacBeatRejectionTechnique',\n x00189170: 'RespiratoryMotionCompTechnique',\n x00189171: 'RespiratorySignalSource',\n x00189172: 'BulkMotionCompensationTechnique',\n x00189173: 'BulkMotionSignalSource',\n x00189174: 'ApplicableSafetyStandardAgency',\n x00189175: 'ApplicableSafetyStandardDescr',\n x00189176: 'OperatingModeSequence',\n x00189177: 'OperatingModeType',\n x00189178: 'OperatingMode',\n x00189179: 'SpecificAbsorptionRateDefinition',\n x00189180: 'GradientOutputType',\n x00189181: 'SpecificAbsorptionRateValue',\n x00189182: 'GradientOutput',\n x00189183: 'FlowCompensationDirection',\n x00189184: 'TaggingDelay',\n x00189185: 'RespiratoryMotionCompTechDescr',\n x00189186: 'RespiratorySignalSourceID',\n x00189195: 'ChemicalShiftsMinIntegrateLimitHz',\n x00189196: 'ChemicalShiftsMaxIntegrateLimitHz',\n x00189197: 'MRVelocityEncodingSequence',\n x00189198: 'FirstOrderPhaseCorrection',\n x00189199: 'WaterReferencedPhaseCorrection',\n x00189200: 'MRSpectroscopyAcquisitionType',\n x00189214: 'RespiratoryCyclePosition',\n x00189217: 'VelocityEncodingMaximumValue',\n x00189218: 'TagSpacingSecondDimension',\n x00189219: 'TagAngleSecondAxis',\n x00189220: 'FrameAcquisitionDuration',\n x00189226: 'MRImageFrameTypeSequence',\n x00189227: 'MRSpectroscopyFrameTypeSequence',\n x00189231: 'MRAcqPhaseEncodingStepsInPlane',\n x00189232: 'MRAcqPhaseEncodingStepsOutOfPlane',\n x00189234: 'SpectroscopyAcqPhaseColumns',\n x00189236: 'CardiacCyclePosition',\n x00189239: 'SpecificAbsorptionRateSequence',\n x00189240: 'RFEchoTrainLength',\n x00189241: 'GradientEchoTrainLength',\n x00189295: 'ChemicalShiftsMinIntegrateLimitPPM',\n x00189296: 'ChemicalShiftsMaxIntegrateLimitPPM',\n x00189301: 'CTAcquisitionTypeSequence',\n x00189302: 'AcquisitionType',\n x00189303: 'TubeAngle',\n x00189304: 'CTAcquisitionDetailsSequence',\n x00189305: 'RevolutionTime',\n x00189306: 'SingleCollimationWidth',\n x00189307: 'TotalCollimationWidth',\n x00189308: 'CTTableDynamicsSequence',\n x00189309: 'TableSpeed',\n x00189310: 'TableFeedPerRotation',\n x00189311: 'SpiralPitchFactor',\n x00189312: 'CTGeometrySequence',\n x00189313: 'DataCollectionCenterPatient',\n x00189314: 'CTReconstructionSequence',\n x00189315: 'ReconstructionAlgorithm',\n x00189316: 'ConvolutionKernelGroup',\n x00189317: 'ReconstructionFieldOfView',\n x00189318: 'ReconstructionTargetCenterPatient',\n x00189319: 'ReconstructionAngle',\n x00189320: 'ImageFilter',\n x00189321: 'CTExposureSequence',\n x00189322: 'ReconstructionPixelSpacing',\n x00189323: 'ExposureModulationType',\n x00189324: 'EstimatedDoseSaving',\n x00189325: 'CTXRayDetailsSequence',\n x00189326: 'CTPositionSequence',\n x00189327: 'TablePosition',\n x00189328: 'ExposureTimeInMilliSec',\n x00189329: 'CTImageFrameTypeSequence',\n x00189330: 'XRayTubeCurrentInMilliAmps',\n x00189332: 'ExposureInMilliAmpSec',\n x00189333: 'ConstantVolumeFlag',\n x00189334: 'FluoroscopyFlag',\n x00189335: 'SourceToDataCollectionCenterDist',\n x00189337: 'ContrastBolusAgentNumber',\n x00189338: 'ContrastBolusIngredientCodeSeq',\n x00189340: 'ContrastAdministrationProfileSeq',\n x00189341: 'ContrastBolusUsageSequence',\n x00189342: 'ContrastBolusAgentAdministered',\n x00189343: 'ContrastBolusAgentDetected',\n x00189344: 'ContrastBolusAgentPhase',\n x00189345: 'CTDIvol',\n x00189346: 'CTDIPhantomTypeCodeSequence',\n x00189351: 'CalciumScoringMassFactorPatient',\n x00189352: 'CalciumScoringMassFactorDevice',\n x00189353: 'EnergyWeightingFactor',\n x00189360: 'CTAdditionalXRaySourceSequence',\n x00189401: 'ProjectionPixelCalibrationSequence',\n x00189402: 'DistanceSourceToIsocenter',\n x00189403: 'DistanceObjectToTableTop',\n x00189404: 'ObjectPixelSpacingInCenterOfBeam',\n x00189405: 'PositionerPositionSequence',\n x00189406: 'TablePositionSequence',\n x00189407: 'CollimatorShapeSequence',\n x00189412: 'XA-XRFFrameCharacteristicsSequence',\n x00189417: 'FrameAcquisitionSequence',\n x00189420: 'XRayReceptorType',\n x00189423: 'AcquisitionProtocolName',\n x00189424: 'AcquisitionProtocolDescription',\n x00189425: 'ContrastBolusIngredientOpaque',\n x00189426: 'DistanceReceptorPlaneToDetHousing',\n x00189427: 'IntensifierActiveShape',\n x00189428: 'IntensifierActiveDimensions',\n x00189429: 'PhysicalDetectorSize',\n x00189430: 'PositionOfIsocenterProjection',\n x00189432: 'FieldOfViewSequence',\n x00189433: 'FieldOfViewDescription',\n x00189434: 'ExposureControlSensingRegionsSeq',\n x00189435: 'ExposureControlSensingRegionShape',\n x00189436: 'ExposureControlSensRegionLeftEdge',\n x00189437: 'ExposureControlSensRegionRightEdge',\n x00189440: 'CenterOfCircExposControlSensRegion',\n x00189441: 'RadiusOfCircExposControlSensRegion',\n x00189447: 'ColumnAngulationPatient',\n x00189449: 'BeamAngle',\n x00189451: 'FrameDetectorParametersSequence',\n x00189452: 'CalculatedAnatomyThickness',\n x00189455: 'CalibrationSequence',\n x00189456: 'ObjectThicknessSequence',\n x00189457: 'PlaneIdentification',\n x00189461: 'FieldOfViewDimensionsInFloat',\n x00189462: 'IsocenterReferenceSystemSequence',\n x00189463: 'PositionerIsocenterPrimaryAngle',\n x00189464: 'PositionerIsocenterSecondaryAngle',\n x00189465: 'PositionerIsocenterDetRotAngle',\n x00189466: 'TableXPositionToIsocenter',\n x00189467: 'TableYPositionToIsocenter',\n x00189468: 'TableZPositionToIsocenter',\n x00189469: 'TableHorizontalRotationAngle',\n x00189470: 'TableHeadTiltAngle',\n x00189471: 'TableCradleTiltAngle',\n x00189472: 'FrameDisplayShutterSequence',\n x00189473: 'AcquiredImageAreaDoseProduct',\n x00189474: 'CArmPositionerTabletopRelationship',\n x00189476: 'XRayGeometrySequence',\n x00189477: 'IrradiationEventIDSequence',\n x00189504: 'XRay3DFrameTypeSequence',\n x00189506: 'ContributingSourcesSequence',\n x00189507: 'XRay3DAcquisitionSequence',\n x00189508: 'PrimaryPositionerScanArc',\n x00189509: 'SecondaryPositionerScanArc',\n x00189510: 'PrimaryPositionerScanStartAngle',\n x00189511: 'SecondaryPositionerScanStartAngle',\n x00189514: 'PrimaryPositionerIncrement',\n x00189515: 'SecondaryPositionerIncrement',\n x00189516: 'StartAcquisitionDateTime',\n x00189517: 'EndAcquisitionDateTime',\n x00189524: 'ApplicationName',\n x00189525: 'ApplicationVersion',\n x00189526: 'ApplicationManufacturer',\n x00189527: 'AlgorithmType',\n x00189528: 'AlgorithmDescription',\n x00189530: 'XRay3DReconstructionSequence',\n x00189531: 'ReconstructionDescription',\n x00189538: 'PerProjectionAcquisitionSequence',\n x00189601: 'DiffusionBMatrixSequence',\n x00189602: 'DiffusionBValueXX',\n x00189603: 'DiffusionBValueXY',\n x00189604: 'DiffusionBValueXZ',\n x00189605: 'DiffusionBValueYY',\n x00189606: 'DiffusionBValueYZ',\n x00189607: 'DiffusionBValueZZ',\n x00189701: 'DecayCorrectionDateTime',\n x00189715: 'StartDensityThreshold',\n x00189722: 'TerminationTimeThreshold',\n x00189725: 'DetectorGeometry',\n x00189727: 'AxialDetectorDimension',\n x00189735: 'PETPositionSequence',\n x00189739: 'NumberOfIterations',\n x00189740: 'NumberOfSubsets',\n x00189751: 'PETFrameTypeSequence',\n x00189756: 'ReconstructionType',\n x00189758: 'DecayCorrected',\n x00189759: 'AttenuationCorrected',\n x00189760: 'ScatterCorrected',\n x00189761: 'DeadTimeCorrected',\n x00189762: 'GantryMotionCorrected',\n x00189763: 'PatientMotionCorrected',\n x00189765: 'RandomsCorrected',\n x00189767: 'SensitivityCalibrated',\n x00189801: 'DepthsOfFocus',\n x00189804: 'ExclusionStartDatetime',\n x00189805: 'ExclusionDuration',\n x00189807: 'ImageDataTypeSequence',\n x00189808: 'DataType',\n x0018980b: 'AliasedDataType',\n x0018a001: 'ContributingEquipmentSequence',\n x0018a002: 'ContributionDateTime',\n x0018a003: 'ContributionDescription',\n // x00191002: 'NumberOfCellsIInDetector',\n // x00191003: 'CellNumberAtTheta',\n // x00191004: 'CellSpacing',\n // x0019100f: 'HorizFrameOfRef',\n // x00191011: 'SeriesContrast',\n // x00191012: 'LastPseq',\n // x00191013: 'StartNumberForBaseline',\n // x00191014: 'EndNumberForBaseline',\n // x00191015: 'StartNumberForEnhancedScans',\n // x00191016: 'EndNumberForEnhancedScans',\n // x00191017: 'SeriesPlane',\n // x00191018: 'FirstScanRas',\n // x00191019: 'FirstScanLocation',\n // x0019101a: 'LastScanRas',\n // x0019101b: 'LastScanLoc',\n // x0019101e: 'DisplayFieldOfView',\n // x00191023: 'TableSpeed',\n // x00191024: 'MidScanTime',\n // x00191025: 'MidScanFlag',\n // x00191026: 'DegreesOfAzimuth',\n // x00191027: 'GantryPeriod',\n // x0019102a: 'XRayOnPosition',\n // x0019102b: 'XRayOffPosition',\n // x0019102c: 'NumberOfTriggers',\n // x0019102e: 'AngleOfFirstView',\n // x0019102f: 'TriggerFrequency',\n // x00191039: 'ScanFOVType',\n // x00191040: 'StatReconFlag',\n // x00191041: 'ComputeType',\n // x00191042: 'SegmentNumber',\n // x00191043: 'TotalSegmentsRequested',\n // x00191044: 'InterscanDelay',\n // x00191047: 'ViewCompressionFactor',\n // x0019104a: 'TotalNoOfRefChannels',\n // x0019104b: 'DataSizeForScanData',\n // x00191052: 'ReconPostProcflag',\n // x00191057: 'CTWaterNumber',\n // x00191058: 'CTBoneNumber',\n // x0019105a: 'AcquisitionDuration',\n // x0019105e: 'NumberOfChannels',\n // x0019105f: 'IncrementBetweenChannels',\n // x00191060: 'StartingView',\n // x00191061: 'NumberOfViews',\n // x00191062: 'IncrementBetweenViews',\n // x0019106a: 'DependantOnNoViewsProcessed',\n // x0019106b: 'FieldOfViewInDetectorCells',\n // x00191070: 'ValueOfBackProjectionButton',\n // x00191071: 'SetIfFatqEstimatesWereUsed',\n // x00191072: 'ZChanAvgOverViews',\n // x00191073: 'AvgOfLeftRefChansOverViews',\n // x00191074: 'MaxLeftChanOverViews',\n // x00191075: 'AvgOfRightRefChansOverViews',\n // x00191076: 'MaxRightChanOverViews',\n // x0019107d: 'SecondEcho',\n // x0019107e: 'NumberOfEchoes',\n // x0019107f: 'TableDelta',\n // x00191081: 'Contiguous',\n // x00191084: 'PeakSAR',\n // x00191085: 'MonitorSAR',\n // x00191087: 'CardiacRepetitionTime',\n // x00191088: 'ImagesPerCardiacCycle',\n // x0019108a: 'ActualReceiveGainAnalog',\n // x0019108b: 'ActualReceiveGainDigital',\n // x0019108d: 'DelayAfterTrigger',\n // x0019108f: 'Swappf',\n // x00191090: 'PauseInterval',\n // x00191091: 'PulseTime',\n // x00191092: 'SliceOffsetOnFreqAxis',\n // x00191093: 'CenterFrequency',\n // x00191094: 'TransmitGain',\n // x00191095: 'AnalogReceiverGain',\n // x00191096: 'DigitalReceiverGain',\n // x00191097: 'BitmapDefiningCVs',\n // x00191098: 'CenterFreqMethod',\n // x0019109b: 'PulseSeqMode',\n // x0019109c: 'PulseSeqName',\n // x0019109d: 'PulseSeqDate',\n // x0019109e: 'InternalPulseSeqName',\n // x0019109f: 'TransmittingCoil',\n // x001910a0: 'SurfaceCoilType',\n // x001910a1: 'ExtremityCoilFlag',\n // x001910a2: 'RawDataRunNumber',\n // x001910a3: 'CalibratedFieldStrength',\n // x001910a4: 'SATFatWaterBone',\n // x001910a5: 'ReceiveBandwidth',\n // x001910a7: 'UserData01',\n // x001910a8: 'UserData02',\n // x001910a9: 'UserData03',\n // x001910aa: 'UserData04',\n // x001910ab: 'UserData05',\n // x001910ac: 'UserData06',\n // x001910ad: 'UserData07',\n // x001910ae: 'UserData08',\n // x001910af: 'UserData09',\n // x001910b0: 'UserData10',\n // x001910b1: 'UserData11',\n // x001910b2: 'UserData12',\n // x001910b3: 'UserData13',\n // x001910b4: 'UserData14',\n // x001910b5: 'UserData15',\n // x001910b6: 'UserData16',\n // x001910b7: 'UserData17',\n // x001910b8: 'UserData18',\n // x001910b9: 'UserData19',\n // x001910ba: 'UserData20',\n // x001910bb: 'UserData21',\n // x001910bc: 'UserData22',\n // x001910bd: 'UserData23',\n // x001910be: 'ProjectionAngle',\n // x001910c0: 'SaturationPlanes',\n // x001910c1: 'SurfaceCoilIntensity',\n // x001910c2: 'SATLocationR',\n // x001910c3: 'SATLocationL',\n // x001910c4: 'SATLocationA',\n // x001910c5: 'SATLocationP',\n // x001910c6: 'SATLocationH',\n // x001910c7: 'SATLocationF',\n // x001910c8: 'SATThicknessR-L',\n // x001910c9: 'SATThicknessA-P',\n // x001910ca: 'SATThicknessH-F',\n // x001910cb: 'PrescribedFlowAxis',\n // x001910cc: 'VelocityEncoding',\n // x001910cd: 'ThicknessDisclaimer',\n // x001910ce: 'PrescanType',\n // x001910cf: 'PrescanStatus',\n // x001910d0: 'RawDataType',\n // x001910d2: 'ProjectionAlgorithm',\n // x001910d3: 'ProjectionAlgorithm',\n // x001910d5: 'FractionalEcho',\n // x001910d6: 'PrepPulse',\n // x001910d7: 'CardiacPhases',\n // x001910d8: 'VariableEchoflag',\n // x001910d9: 'ConcatenatedSAT',\n // x001910da: 'ReferenceChannelUsed',\n // x001910db: 'BackProjectorCoefficient',\n // x001910dc: 'PrimarySpeedCorrectionUsed',\n // x001910dd: 'OverrangeCorrectionUsed',\n // x001910de: 'DynamicZAlphaValue',\n // x001910df: 'UserData',\n // x001910e0: 'UserData',\n // x001910e2: 'VelocityEncodeScale',\n // x001910f2: 'FastPhases',\n // x001910f9: 'TransmissionGain',\n x00200000: 'RelationshipGroupLength',\n x0020000d: 'StudyInstanceUID',\n x0020000e: 'SeriesInstanceUID',\n x00200010: 'StudyID',\n x00200011: 'SeriesNumber',\n x00200012: 'AcquisitionNumber',\n x00200013: 'InstanceNumber',\n x00200014: 'IsotopeNumber',\n x00200015: 'PhaseNumber',\n x00200016: 'IntervalNumber',\n x00200017: 'TimeSlotNumber',\n x00200018: 'AngleNumber',\n x00200019: 'ItemNumber',\n x00200020: 'PatientOrientation',\n x00200022: 'OverlayNumber',\n x00200024: 'CurveNumber',\n x00200026: 'LookupTableNumber',\n x00200030: 'ImagePosition',\n x00200032: 'ImagePositionPatient',\n x00200035: 'ImageOrientation',\n x00200037: 'ImageOrientationPatient',\n x00200050: 'Location',\n x00200052: 'FrameOfReferenceUID',\n x00200060: 'Laterality',\n x00200062: 'ImageLaterality',\n x00200070: 'ImageGeometryType',\n x00200080: 'MaskingImage',\n x00200100: 'TemporalPositionIdentifier',\n x00200105: 'NumberOfTemporalPositions',\n x00200110: 'TemporalResolution',\n x00200200: 'SynchronizationFrameOfReferenceUID',\n x00201000: 'SeriesInStudy',\n x00201001: 'AcquisitionsInSeries',\n x00201002: 'ImagesInAcquisition',\n x00201003: 'ImagesInSeries',\n x00201004: 'AcquisitionsInStudy',\n x00201005: 'ImagesInStudy',\n x00201020: 'Reference',\n x00201040: 'PositionReferenceIndicator',\n x00201041: 'SliceLocation',\n x00201070: 'OtherStudyNumbers',\n x00201200: 'NumberOfPatientRelatedStudies',\n x00201202: 'NumberOfPatientRelatedSeries',\n x00201204: 'NumberOfPatientRelatedInstances',\n x00201206: 'NumberOfStudyRelatedSeries',\n x00201208: 'NumberOfStudyRelatedInstances',\n x00201209: 'NumberOfSeriesRelatedInstances',\n x002031xx: 'SourceImageIDs',\n x00203401: 'ModifyingDeviceID',\n x00203402: 'ModifiedImageID',\n x00203403: 'ModifiedImageDate',\n x00203404: 'ModifyingDeviceManufacturer',\n x00203405: 'ModifiedImageTime',\n x00203406: 'ModifiedImageDescription',\n x00204000: 'ImageComments',\n x00205000: 'OriginalImageIdentification',\n x00205002: 'OriginalImageIdentNomenclature',\n x00209056: 'StackID',\n x00209057: 'InStackPositionNumber',\n x00209071: 'FrameAnatomySequence',\n x00209072: 'FrameLaterality',\n x00209111: 'FrameContentSequence',\n x00209113: 'PlanePositionSequence',\n x00209116: 'PlaneOrientationSequence',\n x00209128: 'TemporalPositionIndex',\n x00209153: 'TriggerDelayTime',\n x00209156: 'FrameAcquisitionNumber',\n x00209157: 'DimensionIndexValues',\n x00209158: 'FrameComments',\n x00209161: 'ConcatenationUID',\n x00209162: 'InConcatenationNumber',\n x00209163: 'InConcatenationTotalNumber',\n x00209164: 'DimensionOrganizationUID',\n x00209165: 'DimensionIndexPointer',\n x00209167: 'FunctionalGroupPointer',\n x00209213: 'DimensionIndexPrivateCreator',\n x00209221: 'DimensionOrganizationSequence',\n x00209222: 'DimensionIndexSequence',\n x00209228: 'ConcatenationFrameOffsetNumber',\n x00209238: 'FunctionalGroupPrivateCreator',\n x00209241: 'NominalPercentageOfCardiacPhase',\n x00209245: 'NominalPercentOfRespiratoryPhase',\n x00209246: 'StartingRespiratoryAmplitude',\n x00209247: 'StartingRespiratoryPhase',\n x00209248: 'EndingRespiratoryAmplitude',\n x00209249: 'EndingRespiratoryPhase',\n x00209250: 'RespiratoryTriggerType',\n x00209251: 'RRIntervalTimeNominal',\n x00209252: 'ActualCardiacTriggerDelayTime',\n x00209253: 'RespiratorySynchronizationSequence',\n x00209254: 'RespiratoryIntervalTime',\n x00209255: 'NominalRespiratoryTriggerDelayTime',\n x00209256: 'RespiratoryTriggerDelayThreshold',\n x00209257: 'ActualRespiratoryTriggerDelayTime',\n x00209301: 'ImagePositionVolume',\n x00209302: 'ImageOrientationVolume',\n x00209308: 'ApexPosition',\n x00209421: 'DimensionDescriptionLabel',\n x00209450: 'PatientOrientationInFrameSequence',\n x00209453: 'FrameLabel',\n x00209518: 'AcquisitionIndex',\n x00209529: 'ContributingSOPInstancesRefSeq',\n x00209536: 'ReconstructionIndex',\n // x00211003: 'SeriesFromWhichPrescribed',\n // x00211005: 'GenesisVersionNow',\n // x00211007: 'SeriesRecordChecksum',\n // x00211018: 'GenesisVersionNow',\n // x00211019: 'AcqreconRecordChecksum',\n // x00211020: 'TableStartLocation',\n // x00211035: 'SeriesFromWhichPrescribed',\n // x00211036: 'ImageFromWhichPrescribed',\n // x00211037: 'ScreenFormat',\n // x0021104a: 'AnatomicalReferenceForScout',\n // x0021104f: 'LocationsInAcquisition',\n // x00211050: 'GraphicallyPrescribed',\n // x00211051: 'RotationFromSourceXRot',\n // x00211052: 'RotationFromSourceYRot',\n // x00211053: 'RotationFromSourceZRot',\n // x00211054: 'ImagePosition',\n // x00211055: 'ImageOrientation',\n // x00211056: 'IntegerSlop',\n // x00211057: 'IntegerSlop',\n // x00211058: 'IntegerSlop',\n // x00211059: 'IntegerSlop',\n // x0021105a: 'IntegerSlop',\n // x0021105b: 'FloatSlop',\n // x0021105c: 'FloatSlop',\n // x0021105d: 'FloatSlop',\n // x0021105e: 'FloatSlop',\n // x0021105f: 'FloatSlop',\n // x00211081: 'AutoWindowLevelAlpha',\n // x00211082: 'AutoWindowLevelBeta',\n // x00211083: 'AutoWindowLevelWindow',\n // x00211084: 'ToWindowLevelLevel',\n // x00211090: 'TubeFocalSpotPosition',\n // x00211091: 'BiopsyPosition',\n // x00211092: 'BiopsyTLocation',\n // x00211093: 'BiopsyRefLocation',\n x00220001: 'LightPathFilterPassThroughWavelen',\n x00220002: 'LightPathFilterPassBand',\n x00220003: 'ImagePathFilterPassThroughWavelen',\n x00220004: 'ImagePathFilterPassBand',\n x00220005: 'PatientEyeMovementCommanded',\n x00220006: 'PatientEyeMovementCommandCodeSeq',\n x00220007: 'SphericalLensPower',\n x00220008: 'CylinderLensPower',\n x00220009: 'CylinderAxis',\n x0022000a: 'EmmetropicMagnification',\n x0022000b: 'IntraOcularPressure',\n x0022000c: 'HorizontalFieldOfView',\n x0022000d: 'PupilDilated',\n x0022000e: 'DegreeOfDilation',\n x00220010: 'StereoBaselineAngle',\n x00220011: 'StereoBaselineDisplacement',\n x00220012: 'StereoHorizontalPixelOffset',\n x00220013: 'StereoVerticalPixelOffset',\n x00220014: 'StereoRotation',\n x00220015: 'AcquisitionDeviceTypeCodeSequence',\n x00220016: 'IlluminationTypeCodeSequence',\n x00220017: 'LightPathFilterTypeStackCodeSeq',\n x00220018: 'ImagePathFilterTypeStackCodeSeq',\n x00220019: 'LensesCodeSequence',\n x0022001a: 'ChannelDescriptionCodeSequence',\n x0022001b: 'RefractiveStateSequence',\n x0022001c: 'MydriaticAgentCodeSequence',\n x0022001d: 'RelativeImagePositionCodeSequence',\n x00220020: 'StereoPairsSequence',\n x00220021: 'LeftImageSequence',\n x00220022: 'RightImageSequence',\n x00220030: 'AxialLengthOfTheEye',\n x00220031: 'OphthalmicFrameLocationSequence',\n x00220032: 'ReferenceCoordinates',\n x00220035: 'DepthSpatialResolution',\n x00220036: 'MaximumDepthDistortion',\n x00220037: 'AlongScanSpatialResolution',\n x00220038: 'MaximumAlongScanDistortion',\n x00220039: 'OphthalmicImageOrientation',\n x00220041: 'DepthOfTransverseImage',\n x00220042: 'MydriaticAgentConcUnitsSeq',\n x00220048: 'AcrossScanSpatialResolution',\n x00220049: 'MaximumAcrossScanDistortion',\n x0022004e: 'MydriaticAgentConcentration',\n x00220055: 'IlluminationWaveLength',\n x00220056: 'IlluminationPower',\n x00220057: 'IlluminationBandwidth',\n x00220058: 'MydriaticAgentSequence',\n // x00231001: 'NumberOfSeriesInStudy',\n // x00231002: 'NumberOfUnarchivedSeries',\n // x00231010: 'ReferenceImageField',\n // x00231050: 'SummaryImage',\n // x00231070: 'StartTimeSecsInFirstAxial',\n // x00231074: 'NoofUpdatesToHeader',\n // x0023107d: 'IndicatesIfTheStudyHasCompleteInfo',\n // x00251006: 'LastPulseSequenceUsed',\n // x00251007: 'ImagesInSeries',\n // x00251010: 'LandmarkCounter',\n // x00251011: 'NumberOfAcquisitions',\n // x00251014: 'IndicatesNoofUpdatesToHeader',\n // x00251017: 'SeriesCompleteFlag',\n // x00251018: 'NumberOfImagesArchived',\n // x00251019: 'LastImageNumberUsed',\n // x0025101a: 'PrimaryReceiverSuiteAndHost',\n // x00271006: 'ImageArchiveFlag',\n // x00271010: 'ScoutType',\n // x0027101c: 'VmaMamp',\n // x0027101d: 'VmaPhase',\n // x0027101e: 'VmaMod',\n // x0027101f: 'VmaClip',\n // x00271020: 'SmartScanOnOffFlag',\n // x00271030: 'ForeignImageRevision',\n // x00271031: 'ImagingMode',\n // x00271032: 'PulseSequence',\n // x00271033: 'ImagingOptions',\n // x00271035: 'PlaneType',\n // x00271036: 'ObliquePlane',\n // x00271040: 'RASLetterOfImageLocation',\n // x00271041: 'ImageLocation',\n // x00271042: 'CenterRCoordOfPlaneImage',\n // x00271043: 'CenterACoordOfPlaneImage',\n // x00271044: 'CenterSCoordOfPlaneImage',\n // x00271045: 'NormalRCoord',\n // x00271046: 'NormalACoord',\n // x00271047: 'NormalSCoord',\n // x00271048: 'RCoordOfTopRightCorner',\n // x00271049: 'ACoordOfTopRightCorner',\n // x0027104a: 'SCoordOfTopRightCorner',\n // x0027104b: 'RCoordOfBottomRightCorner',\n // x0027104c: 'ACoordOfBottomRightCorner',\n // x0027104d: 'SCoordOfBottomRightCorner',\n // x00271050: 'TableStartLocation',\n // x00271051: 'TableEndLocation',\n // x00271052: 'RASLetterForSideOfImage',\n // x00271053: 'RASLetterForAnteriorPosterior',\n // x00271054: 'RASLetterForScoutStartLoc',\n // x00271055: 'RASLetterForScoutEndLoc',\n // x00271060: 'ImageDimensionX',\n // x00271061: 'ImageDimensionY',\n // x00271062: 'NumberOfExcitations',\n x00280000: 'ImagePresentationGroupLength',\n x00280002: 'SamplesPerPixel',\n x00280003: 'SamplesPerPixelUsed',\n x00280004: 'PhotometricInterpretation',\n x00280005: 'ImageDimensions',\n x00280006: 'PlanarConfiguration',\n x00280008: 'NumberOfFrames',\n x00280009: 'FrameIncrementPointer',\n x0028000a: 'FrameDimensionPointer',\n x00280010: 'Rows',\n x00280011: 'Columns',\n x00280012: 'Planes',\n x00280014: 'UltrasoundColorDataPresent',\n x00280030: 'PixelSpacing',\n x00280031: 'ZoomFactor',\n x00280032: 'ZoomCenter',\n x00280034: 'PixelAspectRatio',\n x00280040: 'ImageFormat',\n x00280050: 'ManipulatedImage',\n x00280051: 'CorrectedImage',\n x0028005f: 'CompressionRecognitionCode',\n x00280060: 'CompressionCode',\n x00280061: 'CompressionOriginator',\n x00280062: 'CompressionLabel',\n x00280063: 'CompressionDescription',\n x00280065: 'CompressionSequence',\n x00280066: 'CompressionStepPointers',\n x00280068: 'RepeatInterval',\n x00280069: 'BitsGrouped',\n x00280070: 'PerimeterTable',\n x00280071: 'PerimeterValue',\n x00280080: 'PredictorRows',\n x00280081: 'PredictorColumns',\n x00280082: 'PredictorConstants',\n x00280090: 'BlockedPixels',\n x00280091: 'BlockRows',\n x00280092: 'BlockColumns',\n x00280093: 'RowOverlap',\n x00280094: 'ColumnOverlap',\n x00280100: 'BitsAllocated',\n x00280101: 'BitsStored',\n x00280102: 'HighBit',\n x00280103: 'PixelRepresentation',\n x00280104: 'SmallestValidPixelValue',\n x00280105: 'LargestValidPixelValue',\n x00280106: 'SmallestImagePixelValue',\n x00280107: 'LargestImagePixelValue',\n x00280108: 'SmallestPixelValueInSeries',\n x00280109: 'LargestPixelValueInSeries',\n x00280110: 'SmallestImagePixelValueInPlane',\n x00280111: 'LargestImagePixelValueInPlane',\n x00280120: 'PixelPaddingValue',\n x00280121: 'PixelPaddingRangeLimit',\n x00280200: 'ImageLocation',\n x00280300: 'QualityControlImage',\n x00280301: 'BurnedInAnnotation',\n x00280400: 'TransformLabel',\n x00280401: 'TransformVersionNumber',\n x00280402: 'NumberOfTransformSteps',\n x00280403: 'SequenceOfCompressedData',\n x00280404: 'DetailsOfCoefficients',\n x002804x2: 'CoefficientCoding',\n x002804x3: 'CoefficientCodingPointers',\n x00280700: 'DCTLabel',\n x00280701: 'DataBlockDescription',\n x00280702: 'DataBlock',\n x00280710: 'NormalizationFactorFormat',\n x00280720: 'ZonalMapNumberFormat',\n x00280721: 'ZonalMapLocation',\n x00280722: 'ZonalMapFormat',\n x00280730: 'AdaptiveMapFormat',\n x00280740: 'CodeNumberFormat',\n x002808x0: 'CodeLabel',\n x002808x2: 'NumberOfTables',\n x002808x3: 'CodeTableLocation',\n x002808x4: 'BitsForCodeWord',\n x002808x8: 'ImageDataLocation',\n x00280a02: 'PixelSpacingCalibrationType',\n x00280a04: 'PixelSpacingCalibrationDescription',\n x00281040: 'PixelIntensityRelationship',\n x00281041: 'PixelIntensityRelationshipSign',\n x00281050: 'WindowCenter',\n x00281051: 'WindowWidth',\n x00281052: 'RescaleIntercept',\n x00281053: 'RescaleSlope',\n x00281054: 'RescaleType',\n x00281055: 'WindowCenterAndWidthExplanation',\n x00281056: 'VOI_LUTFunction',\n x00281080: 'GrayScale',\n x00281090: 'RecommendedViewingMode',\n x00281100: 'GrayLookupTableDescriptor',\n x00281101: 'RedPaletteColorTableDescriptor',\n x00281102: 'GreenPaletteColorTableDescriptor',\n x00281103: 'BluePaletteColorTableDescriptor',\n x00281111: 'LargeRedPaletteColorTableDescr',\n x00281112: 'LargeGreenPaletteColorTableDescr',\n x00281113: 'LargeBluePaletteColorTableDescr',\n x00281199: 'PaletteColorTableUID',\n x00281200: 'GrayLookupTableData',\n x00281201: 'RedPaletteColorTableData',\n x00281202: 'GreenPaletteColorTableData',\n x00281203: 'BluePaletteColorTableData',\n x00281211: 'LargeRedPaletteColorTableData',\n x00281212: 'LargeGreenPaletteColorTableData',\n x00281213: 'LargeBluePaletteColorTableData',\n x00281214: 'LargePaletteColorLookupTableUID',\n x00281221: 'SegmentedRedColorTableData',\n x00281222: 'SegmentedGreenColorTableData',\n x00281223: 'SegmentedBlueColorTableData',\n x00281300: 'BreastImplantPresent',\n x00281350: 'PartialView',\n x00281351: 'PartialViewDescription',\n x00281352: 'PartialViewCodeSequence',\n x0028135a: 'SpatialLocationsPreserved',\n x00281402: 'DataPathAssignment',\n x00281404: 'BlendingLUT1Sequence',\n x00281406: 'BlendingWeightConstant',\n x00281408: 'BlendingLookupTableData',\n x0028140c: 'BlendingLUT2Sequence',\n x0028140e: 'DataPathID',\n x0028140f: 'RGBLUTTransferFunction',\n x00281410: 'AlphaLUTTransferFunction',\n x00282000: 'ICCProfile',\n x00282110: 'LossyImageCompression',\n x00282112: 'LossyImageCompressionRatio',\n x00282114: 'LossyImageCompressionMethod',\n x00283000: 'ModalityLUTSequence',\n x00283002: 'LUTDescriptor',\n x00283003: 'LUTExplanation',\n x00283004: 'ModalityLUTType',\n x00283006: 'LUTData',\n x00283010: 'VOILUTSequence',\n x00283110: 'SoftcopyVOILUTSequence',\n x00284000: 'ImagePresentationComments',\n x00285000: 'BiPlaneAcquisitionSequence',\n x00286010: 'RepresentativeFrameNumber',\n x00286020: 'FrameNumbersOfInterest',\n x00286022: 'FrameOfInterestDescription',\n x00286023: 'FrameOfInterestType',\n x00286030: 'MaskPointers',\n x00286040: 'RWavePointer',\n x00286100: 'MaskSubtractionSequence',\n x00286101: 'MaskOperation',\n x00286102: 'ApplicableFrameRange',\n x00286110: 'MaskFrameNumbers',\n x00286112: 'ContrastFrameAveraging',\n x00286114: 'MaskSubPixelShift',\n x00286120: 'TIDOffset',\n x00286190: 'MaskOperationExplanation',\n x00287fe0: 'PixelDataProviderURL',\n x00289001: 'DataPointRows',\n x00289002: 'DataPointColumns',\n x00289003: 'SignalDomainColumns',\n x00289099: 'LargestMonochromePixelValue',\n x00289108: 'DataRepresentation',\n x00289110: 'PixelMeasuresSequence',\n x00289132: 'FrameVOILUTSequence',\n x00289145: 'PixelValueTransformationSequence',\n x00289235: 'SignalDomainRows',\n x00289411: 'DisplayFilterPercentage',\n x00289415: 'FramePixelShiftSequence',\n x00289416: 'SubtractionItemID',\n x00289422: 'PixelIntensityRelationshipLUTSeq',\n x00289443: 'FramePixelDataPropertiesSequence',\n x00289444: 'GeometricalProperties',\n x00289445: 'GeometricMaximumDistortion',\n x00289446: 'ImageProcessingApplied',\n x00289454: 'MaskSelectionMode',\n x00289474: 'LUTFunction',\n x00289478: 'MaskVisibilityPercentage',\n x00289501: 'PixelShiftSequence',\n x00289502: 'RegionPixelShiftSequence',\n x00289503: 'VerticesOfTheRegion',\n x00289506: 'PixelShiftFrameRange',\n x00289507: 'LUTFrameRange',\n x00289520: 'ImageToEquipmentMappingMatrix',\n x00289537: 'EquipmentCoordinateSystemID',\n // x00291004: 'LowerRangeOfPixels1a',\n // x00291005: 'LowerRangeOfPixels1b',\n // x00291006: 'LowerRangeOfPixels1c',\n // x00291007: 'LowerRangeOfPixels1d',\n // x00291008: 'LowerRangeOfPixels1e',\n // x00291009: 'LowerRangeOfPixels1f',\n // x0029100a: 'LowerRangeOfPixels1g',\n // x00291015: 'LowerRangeOfPixels1h',\n // x00291016: 'LowerRangeOfPixels1i',\n // x00291017: 'LowerRangeOfPixels2',\n // x00291018: 'UpperRangeOfPixels2',\n // x0029101a: 'LenOfTotHdrInBytes',\n // x00291026: 'VersionOfTheHdrStruct',\n // x00291034: 'AdvantageCompOverflow',\n // x00291035: 'AdvantageCompUnderflow',\n x00320000: 'StudyGroupLength',\n x0032000a: 'StudyStatusID',\n x0032000c: 'StudyPriorityID',\n x00320012: 'StudyIDIssuer',\n x00320032: 'StudyVerifiedDate',\n x00320033: 'StudyVerifiedTime',\n x00320034: 'StudyReadDate',\n x00320035: 'StudyReadTime',\n x00321000: 'ScheduledStudyStartDate',\n x00321001: 'ScheduledStudyStartTime',\n x00321010: 'ScheduledStudyStopDate',\n x00321011: 'ScheduledStudyStopTime',\n x00321020: 'ScheduledStudyLocation',\n x00321021: 'ScheduledStudyLocationAETitle',\n x00321030: 'ReasonForStudy',\n x00321031: 'RequestingPhysicianIDSequence',\n x00321032: 'RequestingPhysician',\n x00321033: 'RequestingService',\n x00321040: 'StudyArrivalDate',\n x00321041: 'StudyArrivalTime',\n x00321050: 'StudyCompletionDate',\n x00321051: 'StudyCompletionTime',\n x00321055: 'StudyComponentStatusID',\n x00321060: 'RequestedProcedureDescription',\n x00321064: 'RequestedProcedureCodeSequence',\n x00321070: 'RequestedContrastAgent',\n x00324000: 'StudyComments',\n x00380004: 'ReferencedPatientAliasSequence',\n x00380008: 'VisitStatusID',\n x00380010: 'AdmissionID',\n x00380011: 'IssuerOfAdmissionID',\n x00380016: 'RouteOfAdmissions',\n x0038001a: 'ScheduledAdmissionDate',\n x0038001b: 'ScheduledAdmissionTime',\n x0038001c: 'ScheduledDischargeDate',\n x0038001d: 'ScheduledDischargeTime',\n x0038001e: 'ScheduledPatientInstitResidence',\n x00380020: 'AdmittingDate',\n x00380021: 'AdmittingTime',\n x00380030: 'DischargeDate',\n x00380032: 'DischargeTime',\n x00380040: 'DischargeDiagnosisDescription',\n x00380044: 'DischargeDiagnosisCodeSequence',\n x00380050: 'SpecialNeeds',\n x00380060: 'ServiceEpisodeID',\n x00380061: 'IssuerOfServiceEpisodeID',\n x00380062: 'ServiceEpisodeDescription',\n x00380100: 'PertinentDocumentsSequence',\n x00380300: 'CurrentPatientLocation',\n x00380400: 'PatientInstitutionResidence',\n x00380500: 'PatientState',\n x00380502: 'PatientClinicalTrialParticipSeq',\n x00384000: 'VisitComments',\n x003a0004: 'WaveformOriginality',\n x003a0005: 'NumberOfWaveformChannels',\n x003a0010: 'NumberOfWaveformSamples',\n x003a001a: 'SamplingFrequency',\n x003a0020: 'MultiplexGroupLabel',\n x003a0200: 'ChannelDefinitionSequence',\n x003a0202: 'WaveformChannelNumber',\n x003a0203: 'ChannelLabel',\n x003a0205: 'ChannelStatus',\n x003a0208: 'ChannelSourceSequence',\n x003a0209: 'ChannelSourceModifiersSequence',\n x003a020a: 'SourceWaveformSequence',\n x003a020c: 'ChannelDerivationDescription',\n x003a0210: 'ChannelSensitivity',\n x003a0211: 'ChannelSensitivityUnitsSequence',\n x003a0212: 'ChannelSensitivityCorrectionFactor',\n x003a0213: 'ChannelBaseline',\n x003a0214: 'ChannelTimeSkew',\n x003a0215: 'ChannelSampleSkew',\n x003a0218: 'ChannelOffset',\n x003a021a: 'WaveformBitsStored',\n x003a0220: 'FilterLowFrequency',\n x003a0221: 'FilterHighFrequency',\n x003a0222: 'NotchFilterFrequency',\n x003a0223: 'NotchFilterBandwidth',\n x003a0230: 'WaveformDataDisplayScale',\n x003a0231: 'WaveformDisplayBkgCIELabValue',\n x003a0240: 'WaveformPresentationGroupSequence',\n x003a0241: 'PresentationGroupNumber',\n x003a0242: 'ChannelDisplaySequence',\n x003a0244: 'ChannelRecommendDisplayCIELabValue',\n x003a0245: 'ChannelPosition',\n x003a0246: 'DisplayShadingFlag',\n x003a0247: 'FractionalChannelDisplayScale',\n x003a0248: 'AbsoluteChannelDisplayScale',\n x003a0300: 'MultiplexAudioChannelsDescrCodeSeq',\n x003a0301: 'ChannelIdentificationCode',\n x003a0302: 'ChannelMode',\n x00400001: 'ScheduledStationAETitle',\n x00400002: 'ScheduledProcedureStepStartDate',\n x00400003: 'ScheduledProcedureStepStartTime',\n x00400004: 'ScheduledProcedureStepEndDate',\n x00400005: 'ScheduledProcedureStepEndTime',\n x00400006: 'ScheduledPerformingPhysiciansName',\n x00400007: 'ScheduledProcedureStepDescription',\n x00400008: 'ScheduledProtocolCodeSequence',\n x00400009: 'ScheduledProcedureStepID',\n x0040000a: 'StageCodeSequence',\n x0040000b: 'ScheduledPerformingPhysicianIDSeq',\n x00400010: 'ScheduledStationName',\n x00400011: 'ScheduledProcedureStepLocation',\n x00400012: 'PreMedication',\n x00400020: 'ScheduledProcedureStepStatus',\n x00400031: 'LocalNamespaceEntityID',\n x00400032: 'UniversalEntityID',\n x00400033: 'UniversalEntityIDType',\n x00400035: 'IdentifierTypeCode',\n x00400036: 'AssigningFacilitySequence',\n x00400100: 'ScheduledProcedureStepSequence',\n x00400220: 'ReferencedNonImageCompositeSOPSeq',\n x00400241: 'PerformedStationAETitle',\n x00400242: 'PerformedStationName',\n x00400243: 'PerformedLocation',\n x00400244: 'PerformedProcedureStepStartDate',\n x00400245: 'PerformedProcedureStepStartTime',\n x00400250: 'PerformedProcedureStepEndDate',\n x00400251: 'PerformedProcedureStepEndTime',\n x00400252: 'PerformedProcedureStepStatus',\n x00400253: 'PerformedProcedureStepID',\n x00400254: 'PerformedProcedureStepDescription',\n x00400255: 'PerformedProcedureTypeDescription',\n x00400260: 'PerformedProtocolCodeSequence',\n x00400261: 'PerformedProtocolType',\n x00400270: 'ScheduledStepAttributesSequence',\n x00400275: 'RequestAttributesSequence',\n x00400280: 'CommentsOnPerformedProcedureStep',\n x00400281: 'ProcStepDiscontinueReasonCodeSeq',\n x00400293: 'QuantitySequence',\n x00400294: 'Quantity',\n x00400295: 'MeasuringUnitsSequence',\n x00400296: 'BillingItemSequence',\n x00400300: 'TotalTimeOfFluoroscopy',\n x00400301: 'TotalNumberOfExposures',\n x00400302: 'EntranceDose',\n x00400303: 'ExposedArea',\n x00400306: 'DistanceSourceToEntrance',\n x00400307: 'DistanceSourceToSupport',\n x0040030e: 'ExposureDoseSequence',\n x00400310: 'CommentsOnRadiationDose',\n x00400312: 'XRayOutput',\n x00400314: 'HalfValueLayer',\n x00400316: 'OrganDose',\n x00400318: 'OrganExposed',\n x00400320: 'BillingProcedureStepSequence',\n x00400321: 'FilmConsumptionSequence',\n x00400324: 'BillingSuppliesAndDevicesSequence',\n x00400330: 'ReferencedProcedureStepSequence',\n x00400340: 'PerformedSeriesSequence',\n x00400400: 'CommentsOnScheduledProcedureStep',\n x00400440: 'ProtocolContextSequence',\n x00400441: 'ContentItemModifierSequence',\n x0040050a: 'SpecimenAccessionNumber',\n x00400512: 'ContainerIdentifier',\n x0040051a: 'ContainerDescription',\n x00400550: 'SpecimenSequence',\n x00400551: 'SpecimenIdentifier',\n x00400552: 'SpecimenDescriptionSequenceTrial',\n x00400553: 'SpecimenDescriptionTrial',\n x00400554: 'SpecimenUID',\n x00400555: 'AcquisitionContextSequence',\n x00400556: 'AcquisitionContextDescription',\n x0040059a: 'SpecimenTypeCodeSequence',\n x00400600: 'SpecimenShortDescription',\n x004006fa: 'SlideIdentifier',\n x0040071a: 'ImageCenterPointCoordinatesSeq',\n x0040072a: 'XOffsetInSlideCoordinateSystem',\n x0040073a: 'YOffsetInSlideCoordinateSystem',\n x0040074a: 'ZOffsetInSlideCoordinateSystem',\n x004008d8: 'PixelSpacingSequence',\n x004008da: 'CoordinateSystemAxisCodeSequence',\n x004008ea: 'MeasurementUnitsCodeSequence',\n x004009f8: 'VitalStainCodeSequenceTrial',\n x00401001: 'RequestedProcedureID',\n x00401002: 'ReasonForRequestedProcedure',\n x00401003: 'RequestedProcedurePriority',\n x00401004: 'PatientTransportArrangements',\n x00401005: 'RequestedProcedureLocation',\n x00401006: 'PlacerOrderNumber-Procedure',\n x00401007: 'FillerOrderNumber-Procedure',\n x00401008: 'ConfidentialityCode',\n x00401009: 'ReportingPriority',\n x0040100a: 'ReasonForRequestedProcedureCodeSeq',\n x00401010: 'NamesOfIntendedRecipientsOfResults',\n x00401011: 'IntendedRecipientsOfResultsIDSeq',\n x00401101: 'PersonIdentificationCodeSequence',\n x00401102: 'PersonAddress',\n x00401103: 'PersonTelephoneNumbers',\n x00401400: 'RequestedProcedureComments',\n x00402001: 'ReasonForImagingServiceRequest',\n x00402004: 'IssueDateOfImagingServiceRequest',\n x00402005: 'IssueTimeOfImagingServiceRequest',\n x00402006: 'PlacerOrderNumberImagingServiceRequestRetired',\n x00402007: 'FillerOrderNumberImagingServiceRequestRetired',\n x00402008: 'OrderEnteredBy',\n x00402009: 'OrderEntererLocation',\n x00402010: 'OrderCallbackPhoneNumber',\n x00402016: 'PlacerOrderNum-ImagingServiceReq',\n x00402017: 'FillerOrderNum-ImagingServiceReq',\n x00402400: 'ImagingServiceRequestComments',\n x00403001: 'ConfidentialityOnPatientDataDescr',\n x00404001: 'GenPurposeScheduledProcStepStatus',\n x00404002: 'GenPurposePerformedProcStepStatus',\n x00404003: 'GenPurposeSchedProcStepPriority',\n x00404004: 'SchedProcessingApplicationsCodeSeq',\n x00404005: 'SchedProcedureStepStartDateAndTime',\n x00404006: 'MultipleCopiesFlag',\n x00404007: 'PerformedProcessingAppsCodeSeq',\n x00404009: 'HumanPerformerCodeSequence',\n x00404010: 'SchedProcStepModificationDateTime',\n x00404011: 'ExpectedCompletionDateAndTime',\n x00404015: 'ResultingGenPurposePerfProcStepSeq',\n x00404016: 'RefGenPurposeSchedProcStepSeq',\n x00404018: 'ScheduledWorkitemCodeSequence',\n x00404019: 'PerformedWorkitemCodeSequence',\n x00404020: 'InputAvailabilityFlag',\n x00404021: 'InputInformationSequence',\n x00404022: 'RelevantInformationSequence',\n x00404023: 'RefGenPurSchedProcStepTransUID',\n x00404025: 'ScheduledStationNameCodeSequence',\n x00404026: 'ScheduledStationClassCodeSequence',\n x00404027: 'SchedStationGeographicLocCodeSeq',\n x00404028: 'PerformedStationNameCodeSequence',\n x00404029: 'PerformedStationClassCodeSequence',\n x00404030: 'PerformedStationGeogLocCodeSeq',\n x00404031: 'RequestedSubsequentWorkItemCodeSeq',\n x00404032: 'NonDICOMOutputCodeSequence',\n x00404033: 'OutputInformationSequence',\n x00404034: 'ScheduledHumanPerformersSequence',\n x00404035: 'ActualHumanPerformersSequence',\n x00404036: 'HumanPerformersOrganization',\n x00404037: 'HumanPerformerName',\n x00404040: 'RawDataHandling',\n x00408302: 'EntranceDoseInMilliGy',\n x00409094: 'RefImageRealWorldValueMappingSeq',\n x00409096: 'RealWorldValueMappingSequence',\n x00409098: 'PixelValueMappingCodeSequence',\n x00409210: 'LUTLabel',\n x00409211: 'RealWorldValueLastValueMapped',\n x00409212: 'RealWorldValueLUTData',\n x00409216: 'RealWorldValueFirstValueMapped',\n x00409224: 'RealWorldValueIntercept',\n x00409225: 'RealWorldValueSlope',\n x0040a010: 'RelationshipType',\n x0040a027: 'VerifyingOrganization',\n x0040a030: 'VerificationDateTime',\n x0040a032: 'ObservationDateTime',\n x0040a040: 'ValueType',\n x0040a043: 'ConceptNameCodeSequence',\n x0040a050: 'ContinuityOfContent',\n x0040a073: 'VerifyingObserverSequence',\n x0040a075: 'VerifyingObserverName',\n x0040a078: 'AuthorObserverSequence',\n x0040a07a: 'ParticipantSequence',\n x0040a07c: 'CustodialOrganizationSequence',\n x0040a080: 'ParticipationType',\n x0040a082: 'ParticipationDateTime',\n x0040a084: 'ObserverType',\n x0040a088: 'VerifyingObserverIdentCodeSequence',\n x0040a090: 'EquivalentCDADocumentSequence',\n x0040a0b0: 'ReferencedWaveformChannels',\n x0040a120: 'DateTime',\n x0040a121: 'Date',\n x0040a122: 'Time',\n x0040a123: 'PersonName',\n x0040a124: 'UID',\n x0040a130: 'TemporalRangeType',\n x0040a132: 'ReferencedSamplePositions',\n x0040a136: 'ReferencedFrameNumbers',\n x0040a138: 'ReferencedTimeOffsets',\n x0040a13a: 'ReferencedDateTime',\n x0040a160: 'TextValue',\n x0040a168: 'ConceptCodeSequence',\n x0040a170: 'PurposeOfReferenceCodeSequence',\n x0040a180: 'AnnotationGroupNumber',\n x0040a195: 'ModifierCodeSequence',\n x0040a300: 'MeasuredValueSequence',\n x0040a301: 'NumericValueQualifierCodeSequence',\n x0040a30a: 'NumericValue',\n x0040a353: 'AddressTrial',\n x0040a354: 'TelephoneNumberTrial',\n x0040a360: 'PredecessorDocumentsSequence',\n x0040a370: 'ReferencedRequestSequence',\n x0040a372: 'PerformedProcedureCodeSequence',\n x0040a375: 'CurrentRequestedProcEvidenceSeq',\n x0040a385: 'PertinentOtherEvidenceSequence',\n x0040a390: 'HL7StructuredDocumentRefSeq',\n x0040a491: 'CompletionFlag',\n x0040a492: 'CompletionFlagDescription',\n x0040a493: 'VerificationFlag',\n x0040a494: 'ArchiveRequested',\n x0040a496: 'PreliminaryFlag',\n x0040a504: 'ContentTemplateSequence',\n x0040a525: 'IdenticalDocumentsSequence',\n x0040a730: 'ContentSequence',\n x0040b020: 'AnnotationSequence',\n x0040db00: 'TemplateIdentifier',\n x0040db06: 'TemplateVersion',\n x0040db07: 'TemplateLocalVersion',\n x0040db0b: 'TemplateExtensionFlag',\n x0040db0c: 'TemplateExtensionOrganizationUID',\n x0040db0d: 'TemplateExtensionCreatorUID',\n x0040db73: 'ReferencedContentItemIdentifier',\n x0040e001: 'HL7InstanceIdentifier',\n x0040e004: 'HL7DocumentEffectiveTime',\n x0040e006: 'HL7DocumentTypeCodeSequence',\n x0040e010: 'RetrieveURI',\n x0040e011: 'RetrieveLocationUID',\n x00420010: 'DocumentTitle',\n x00420011: 'EncapsulatedDocument',\n x00420012: 'MIMETypeOfEncapsulatedDocument',\n x00420013: 'SourceInstanceSequence',\n x00420014: 'ListOfMIMETypes',\n // x00431001: 'BitmapOfPrescanOptions',\n // x00431002: 'GradientOffsetInX',\n // x00431003: 'GradientOffsetInY',\n // x00431004: 'GradientOffsetInZ',\n // x00431005: 'ImgIsOriginalOrUnoriginal',\n // x00431006: 'NumberOfEPIShots',\n // x00431007: 'ViewsPerSegment',\n // x00431008: 'RespiratoryRateBpm',\n // x00431009: 'RespiratoryTriggerPoint',\n // x0043100a: 'TypeOfReceiverUsed',\n // x0043100b: 'PeakRateOfChangeOfGradientField',\n // x0043100c: 'LimitsInUnitsOfPercent',\n // x0043100d: 'PSDEstimatedLimit',\n // x0043100e: 'PSDEstimatedLimitInTeslaPerSecond',\n // x0043100f: 'Saravghead',\n // x00431010: 'WindowValue',\n // x00431011: 'TotalInputViews',\n // x00431012: 'X-RayChain',\n // x00431013: 'DeconKernelParameters',\n // x00431014: 'CalibrationParameters',\n // x00431015: 'TotalOutputViews',\n // x00431016: 'NumberOfOverranges',\n // x00431017: 'IBHImageScaleFactors',\n // x00431018: 'BBHCoefficients',\n // x00431019: 'NumberOfBBHChainsToBlend',\n // x0043101a: 'StartingChannelNumber',\n // x0043101b: 'PpscanParameters',\n // x0043101c: 'GEImageIntegrity',\n // x0043101d: 'LevelValue',\n // x0043101e: 'DeltaStartTime',\n // x0043101f: 'MaxOverrangesInAView',\n // x00431020: 'AvgOverrangesAllViews',\n // x00431021: 'CorrectedAfterGlowTerms',\n // x00431025: 'ReferenceChannels',\n // x00431026: 'NoViewsRefChansBlocked',\n // x00431027: 'ScanPitchRatio',\n // x00431028: 'UniqueImageIden',\n // x00431029: 'HistogramTables',\n // x0043102a: 'UserDefinedData',\n // x0043102b: 'PrivateScanOptions',\n // x0043102c: 'EffectiveEchoSpacing',\n // x0043102d: 'StringSlopField1',\n // x0043102e: 'StringSlopField2',\n // x0043102f: 'RawDataType',\n // x00431030: 'RawDataType',\n // x00431031: 'RACordOfTargetReconCenter',\n // x00431032: 'RawDataType',\n // x00431033: 'NegScanspacing',\n // x00431034: 'OffsetFrequency',\n // x00431035: 'UserUsageTag',\n // x00431036: 'UserFillMapMSW',\n // x00431037: 'UserFillMapLSW',\n // x00431038: 'User25-48',\n // x00431039: 'SlopInt6-9',\n // x00431040: 'TriggerOnPosition',\n // x00431041: 'DegreeOfRotation',\n // x00431042: 'DASTriggerSource',\n // x00431043: 'DASFpaGain',\n // x00431044: 'DASOutputSource',\n // x00431045: 'DASAdInput',\n // x00431046: 'DASCalMode',\n // x00431047: 'DASCalFrequency',\n // x00431048: 'DASRegXm',\n // x00431049: 'DASAutoZero',\n // x0043104a: 'StartingChannelOfView',\n // x0043104b: 'DASXmPattern',\n // x0043104c: 'TGGCTriggerMode',\n // x0043104d: 'StartScanToXrayOnDelay',\n // x0043104e: 'DurationOfXrayOn',\n // x00431060: 'SlopInt10-17',\n // x00431061: 'ScannerStudyEntityUID',\n // x00431062: 'ScannerStudyID',\n // x0043106f: 'ScannerTableEntry',\n x00440001: 'ProductPackageIdentifier',\n x00440002: 'SubstanceAdministrationApproval',\n x00440003: 'ApprovalStatusFurtherDescription',\n x00440004: 'ApprovalStatusDateTime',\n x00440007: 'ProductTypeCodeSequence',\n x00440008: 'ProductName',\n x00440009: 'ProductDescription',\n x0044000a: 'ProductLotIdentifier',\n x0044000b: 'ProductExpirationDateTime',\n x00440010: 'SubstanceAdministrationDateTime',\n x00440011: 'SubstanceAdministrationNotes',\n x00440012: 'SubstanceAdministrationDeviceID',\n x00440013: 'ProductParameterSequence',\n x00440019: 'SubstanceAdminParameterSeq',\n // x00451001: 'NumberOfMacroRowsInDetector',\n // x00451002: 'MacroWidthAtISOCenter',\n // x00451003: 'DASType',\n // x00451004: 'DASGain',\n // x00451005: 'DASTemperature',\n // x00451006: 'TableDirectionInOrOut',\n // x00451007: 'ZSmoothingFactor',\n // x00451008: 'ViewWeightingMode',\n // x00451009: 'SigmaRowNumberWhichRowsWereUsed',\n // x0045100a: 'MinimumDasValueFoundInTheScanData',\n // x0045100b: 'MaximumOffsetShiftValueUsed',\n // x0045100c: 'NumberOfViewsShifted',\n // x0045100d: 'ZTrackingFlag',\n // x0045100e: 'MeanZError',\n // x0045100f: 'ZTrackingMaximumError',\n // x00451010: 'StartingViewForRow2a',\n // x00451011: 'NumberOfViewsInRow2a',\n // x00451012: 'StartingViewForRow1a',\n // x00451013: 'SigmaMode',\n // x00451014: 'NumberOfViewsInRow1a',\n // x00451015: 'StartingViewForRow2b',\n // x00451016: 'NumberOfViewsInRow2b',\n // x00451017: 'StartingViewForRow1b',\n // x00451018: 'NumberOfViewsInRow1b',\n // x00451019: 'AirFilterCalibrationDate',\n // x0045101a: 'AirFilterCalibrationTime',\n // x0045101b: 'PhantomCalibrationDate',\n // x0045101c: 'PhantomCalibrationTime',\n // x0045101d: 'ZSlopeCalibrationDate',\n // x0045101e: 'ZSlopeCalibrationTime',\n // x0045101f: 'CrosstalkCalibrationDate',\n // x00451020: 'CrosstalkCalibrationTime',\n // x00451021: 'IterboneOptionFlag',\n // x00451022: 'PeristalticFlagOption',\n x00460012: 'LensDescription',\n x00460014: 'RightLensSequence',\n x00460015: 'LeftLensSequence',\n x00460018: 'CylinderSequence',\n x00460028: 'PrismSequence',\n x00460030: 'HorizontalPrismPower',\n x00460032: 'HorizontalPrismBase',\n x00460034: 'VerticalPrismPower',\n x00460036: 'VerticalPrismBase',\n x00460038: 'LensSegmentType',\n x00460040: 'OpticalTransmittance',\n x00460042: 'ChannelWidth',\n x00460044: 'PupilSize',\n x00460046: 'CornealSize',\n x00460060: 'DistancePupillaryDistance',\n x00460062: 'NearPupillaryDistance',\n x00460064: 'OtherPupillaryDistance',\n x00460075: 'RadiusOfCurvature',\n x00460076: 'KeratometricPower',\n x00460077: 'KeratometricAxis',\n x00460092: 'BackgroundColor',\n x00460094: 'Optotype',\n x00460095: 'OptotypePresentation',\n x00460100: 'AddNearSequence',\n x00460101: 'AddIntermediateSequence',\n x00460102: 'AddOtherSequence',\n x00460104: 'AddPower',\n x00460106: 'ViewingDistance',\n x00460125: 'ViewingDistanceType',\n x00460135: 'VisualAcuityModifiers',\n x00460137: 'DecimalVisualAcuity',\n x00460139: 'OptotypeDetailedDefinition',\n x00460146: 'SpherePower',\n x00460147: 'CylinderPower',\n x00500004: 'CalibrationImage',\n x00500010: 'DeviceSequence',\n x00500014: 'DeviceLength',\n x00500015: 'ContainerComponentWidth',\n x00500016: 'DeviceDiameter',\n x00500017: 'DeviceDiameterUnits',\n x00500018: 'DeviceVolume',\n x00500019: 'InterMarkerDistance',\n x0050001b: 'ContainerComponentID',\n x00500020: 'DeviceDescription',\n x00540010: 'EnergyWindowVector',\n x00540011: 'NumberOfEnergyWindows',\n x00540012: 'EnergyWindowInformationSequence',\n x00540013: 'EnergyWindowRangeSequence',\n x00540014: 'EnergyWindowLowerLimit',\n x00540015: 'EnergyWindowUpperLimit',\n x00540016: 'RadiopharmaceuticalInformationSeq',\n x00540017: 'ResidualSyringeCounts',\n x00540018: 'EnergyWindowName',\n x00540020: 'DetectorVector',\n x00540021: 'NumberOfDetectors',\n x00540022: 'DetectorInformationSequence',\n x00540030: 'PhaseVector',\n x00540031: 'NumberOfPhases',\n x00540032: 'PhaseInformationSequence',\n x00540033: 'NumberOfFramesInPhase',\n x00540036: 'PhaseDelay',\n x00540038: 'PauseBetweenFrames',\n x00540039: 'PhaseDescription',\n x00540050: 'RotationVector',\n x00540051: 'NumberOfRotations',\n x00540052: 'RotationInformationSequence',\n x00540053: 'NumberOfFramesInRotation',\n x00540060: 'RRIntervalVector',\n x00540061: 'NumberOfRRIntervals',\n x00540062: 'GatedInformationSequence',\n x00540063: 'DataInformationSequence',\n x00540070: 'TimeSlotVector',\n x00540071: 'NumberOfTimeSlots',\n x00540072: 'TimeSlotInformationSequence',\n x00540073: 'TimeSlotTime',\n x00540080: 'SliceVector',\n x00540081: 'NumberOfSlices',\n x00540090: 'AngularViewVector',\n x00540100: 'TimeSliceVector',\n x00540101: 'NumberOfTimeSlices',\n x00540200: 'StartAngle',\n x00540202: 'TypeOfDetectorMotion',\n x00540210: 'TriggerVector',\n x00540211: 'NumberOfTriggersInPhase',\n x00540220: 'ViewCodeSequence',\n x00540222: 'ViewModifierCodeSequence',\n x00540300: 'RadionuclideCodeSequence',\n x00540302: 'AdministrationRouteCodeSequence',\n x00540304: 'RadiopharmaceuticalCodeSequence',\n x00540306: 'CalibrationDataSequence',\n x00540308: 'EnergyWindowNumber',\n x00540400: 'ImageID',\n x00540410: 'PatientOrientationCodeSequence',\n x00540412: 'PatientOrientationModifierCodeSeq',\n x00540414: 'PatientGantryRelationshipCodeSeq',\n x00540500: 'SliceProgressionDirection',\n x00541000: 'SeriesType',\n x00541001: 'Units',\n x00541002: 'CountsSource',\n x00541004: 'ReprojectionMethod',\n x00541100: 'RandomsCorrectionMethod',\n x00541101: 'AttenuationCorrectionMethod',\n x00541102: 'DecayCorrection',\n x00541103: 'ReconstructionMethod',\n x00541104: 'DetectorLinesOfResponseUsed',\n x00541105: 'ScatterCorrectionMethod',\n x00541200: 'AxialAcceptance',\n x00541201: 'AxialMash',\n x00541202: 'TransverseMash',\n x00541203: 'DetectorElementSize',\n x00541210: 'CoincidenceWindowWidth',\n x00541220: 'SecondaryCountsType',\n x00541300: 'FrameReferenceTime',\n x00541310: 'PrimaryCountsAccumulated',\n x00541311: 'SecondaryCountsAccumulated',\n x00541320: 'SliceSensitivityFactor',\n x00541321: 'DecayFactor',\n x00541322: 'DoseCalibrationFactor',\n x00541323: 'ScatterFractionFactor',\n x00541324: 'DeadTimeFactor',\n x00541330: 'ImageIndex',\n x00541400: 'CountsIncluded',\n x00541401: 'DeadTimeCorrectionFlag',\n x00603000: 'HistogramSequence',\n x00603002: 'HistogramNumberOfBins',\n x00603004: 'HistogramFirstBinValue',\n x00603006: 'HistogramLastBinValue',\n x00603008: 'HistogramBinWidth',\n x00603010: 'HistogramExplanation',\n x00603020: 'HistogramData',\n x00620001: 'SegmentationType',\n x00620002: 'SegmentSequence',\n x00620003: 'SegmentedPropertyCategoryCodeSeq',\n x00620004: 'SegmentNumber',\n x00620005: 'SegmentLabel',\n x00620006: 'SegmentDescription',\n x00620008: 'SegmentAlgorithmType',\n x00620009: 'SegmentAlgorithmName',\n x0062000a: 'SegmentIdentificationSequence',\n x0062000b: 'ReferencedSegmentNumber',\n x0062000c: 'RecommendedDisplayGrayscaleValue',\n x0062000d: 'RecommendedDisplayCIELabValue',\n x0062000e: 'MaximumFractionalValue',\n x0062000f: 'SegmentedPropertyTypeCodeSequence',\n x00620010: 'SegmentationFractionalType',\n x00640002: 'DeformableRegistrationSequence',\n x00640003: 'SourceFrameOfReferenceUID',\n x00640005: 'DeformableRegistrationGridSequence',\n x00640007: 'GridDimensions',\n x00640008: 'GridResolution',\n x00640009: 'VectorGridData',\n x0064000f: 'PreDeformationMatrixRegistSeq',\n x00640010: 'PostDeformationMatrixRegistSeq',\n x00660001: 'NumberOfSurfaces',\n x00660002: 'SurfaceSequence',\n x00660003: 'SurfaceNumber',\n x00660004: 'SurfaceComments',\n x00660009: 'SurfaceProcessing',\n x0066000a: 'SurfaceProcessingRatio',\n x0066000e: 'FiniteVolume',\n x00660010: 'Manifold',\n x00660011: 'SurfacePointsSequence',\n x00660015: 'NumberOfSurfacePoints',\n x00660016: 'PointCoordinatesData',\n x00660017: 'PointPositionAccuracy',\n x00660018: 'MeanPointDistance',\n x00660019: 'MaximumPointDistance',\n x0066001b: 'AxisOfRotation',\n x0066001c: 'CenterOfRotation',\n x0066001e: 'NumberOfVectors',\n x0066001f: 'VectorDimensionality',\n x00660020: 'VectorAccuracy',\n x00660021: 'VectorCoordinateData',\n x00660023: 'TrianglePointIndexList',\n x00660024: 'EdgePointIndexList',\n x00660025: 'VertexPointIndexList',\n x00660026: 'TriangleStripSequence',\n x00660027: 'TriangleFanSequence',\n x00660028: 'LineSequence',\n x00660029: 'PrimitivePointIndexList',\n x0066002a: 'SurfaceCount',\n x0066002f: 'AlgorithmFamilyCodeSequ',\n x00660031: 'AlgorithmVersion',\n x00660032: 'AlgorithmParameters',\n x00660034: 'FacetSequence',\n x00660036: 'AlgorithmName',\n x00700001: 'GraphicAnnotationSequence',\n x00700002: 'GraphicLayer',\n x00700003: 'BoundingBoxAnnotationUnits',\n x00700004: 'AnchorPointAnnotationUnits',\n x00700005: 'GraphicAnnotationUnits',\n x00700006: 'UnformattedTextValue',\n x00700008: 'TextObjectSequence',\n x00700009: 'GraphicObjectSequence',\n x00700010: 'BoundingBoxTopLeftHandCorner',\n x00700011: 'BoundingBoxBottomRightHandCorner',\n x00700012: 'BoundingBoxTextHorizJustification',\n x00700014: 'AnchorPoint',\n x00700015: 'AnchorPointVisibility',\n x00700020: 'GraphicDimensions',\n x00700021: 'NumberOfGraphicPoints',\n x00700022: 'GraphicData',\n x00700023: 'GraphicType',\n x00700024: 'GraphicFilled',\n x00700040: 'ImageRotationRetired',\n x00700041: 'ImageHorizontalFlip',\n x00700042: 'ImageRotation',\n x00700050: 'DisplayedAreaTopLeftTrial',\n x00700051: 'DisplayedAreaBottomRightTrial',\n x00700052: 'DisplayedAreaTopLeft',\n x00700053: 'DisplayedAreaBottomRight',\n x0070005a: 'DisplayedAreaSelectionSequence',\n x00700060: 'GraphicLayerSequence',\n x00700062: 'GraphicLayerOrder',\n x00700066: 'GraphicLayerRecDisplayGraysclValue',\n x00700067: 'GraphicLayerRecDisplayRGBValue',\n x00700068: 'GraphicLayerDescription',\n x00700080: 'ContentLabel',\n x00700081: 'ContentDescription',\n x00700082: 'PresentationCreationDate',\n x00700083: 'PresentationCreationTime',\n x00700084: 'ContentCreatorName',\n x00700086: 'ContentCreatorIDCodeSequence',\n x00700100: 'PresentationSizeMode',\n x00700101: 'PresentationPixelSpacing',\n x00700102: 'PresentationPixelAspectRatio',\n x00700103: 'PresentationPixelMagRatio',\n x00700306: 'ShapeType',\n x00700308: 'RegistrationSequence',\n x00700309: 'MatrixRegistrationSequence',\n x0070030a: 'MatrixSequence',\n x0070030c: 'FrameOfRefTransformationMatrixType',\n x0070030d: 'RegistrationTypeCodeSequence',\n x0070030f: 'FiducialDescription',\n x00700310: 'FiducialIdentifier',\n x00700311: 'FiducialIdentifierCodeSequence',\n x00700312: 'ContourUncertaintyRadius',\n x00700314: 'UsedFiducialsSequence',\n x00700318: 'GraphicCoordinatesDataSequence',\n x0070031a: 'FiducialUID',\n x0070031c: 'FiducialSetSequence',\n x0070031e: 'FiducialSequence',\n x00700401: 'GraphicLayerRecomDisplayCIELabVal',\n x00700402: 'BlendingSequence',\n x00700403: 'RelativeOpacity',\n x00700404: 'ReferencedSpatialRegistrationSeq',\n x00700405: 'BlendingPosition',\n x00720002: 'HangingProtocolName',\n x00720004: 'HangingProtocolDescription',\n x00720006: 'HangingProtocolLevel',\n x00720008: 'HangingProtocolCreator',\n x0072000a: 'HangingProtocolCreationDateTime',\n x0072000c: 'HangingProtocolDefinitionSequence',\n x0072000e: 'HangingProtocolUserIDCodeSequence',\n x00720010: 'HangingProtocolUserGroupName',\n x00720012: 'SourceHangingProtocolSequence',\n x00720014: 'NumberOfPriorsReferenced',\n x00720020: 'ImageSetsSequence',\n x00720022: 'ImageSetSelectorSequence',\n x00720024: 'ImageSetSelectorUsageFlag',\n x00720026: 'SelectorAttribute',\n x00720028: 'SelectorValueNumber',\n x00720030: 'TimeBasedImageSetsSequence',\n x00720032: 'ImageSetNumber',\n x00720034: 'ImageSetSelectorCategory',\n x00720038: 'RelativeTime',\n x0072003a: 'RelativeTimeUnits',\n x0072003c: 'AbstractPriorValue',\n x0072003e: 'AbstractPriorCodeSequence',\n x00720040: 'ImageSetLabel',\n x00720050: 'SelectorAttributeVR',\n x00720052: 'SelectorSequencePointer',\n x00720054: 'SelectorSeqPointerPrivateCreator',\n x00720056: 'SelectorAttributePrivateCreator',\n x00720060: 'SelectorATValue',\n x00720062: 'SelectorCSValue',\n x00720064: 'SelectorISValue',\n x00720066: 'SelectorLOValue',\n x00720068: 'SelectorLTValue',\n x0072006a: 'SelectorPNValue',\n x0072006c: 'SelectorSHValue',\n x0072006e: 'SelectorSTValue',\n x00720070: 'SelectorUTValue',\n x00720072: 'SelectorDSValue',\n x00720074: 'SelectorFDValue',\n x00720076: 'SelectorFLValue',\n x00720078: 'SelectorULValue',\n x0072007a: 'SelectorUSValue',\n x0072007c: 'SelectorSLValue',\n x0072007e: 'SelectorSSValue',\n x00720080: 'SelectorCodeSequenceValue',\n x00720100: 'NumberOfScreens',\n x00720102: 'NominalScreenDefinitionSequence',\n x00720104: 'NumberOfVerticalPixels',\n x00720106: 'NumberOfHorizontalPixels',\n x00720108: 'DisplayEnvironmentSpatialPosition',\n x0072010a: 'ScreenMinimumGrayscaleBitDepth',\n x0072010c: 'ScreenMinimumColorBitDepth',\n x0072010e: 'ApplicationMaximumRepaintTime',\n x00720200: 'DisplaySetsSequence',\n x00720202: 'DisplaySetNumber',\n x00720203: 'DisplaySetLabel',\n x00720204: 'DisplaySetPresentationGroup',\n x00720206: 'DisplaySetPresentationGroupDescr',\n x00720208: 'PartialDataDisplayHandling',\n x00720210: 'SynchronizedScrollingSequence',\n x00720212: 'DisplaySetScrollingGroup',\n x00720214: 'NavigationIndicatorSequence',\n x00720216: 'NavigationDisplaySet',\n x00720218: 'ReferenceDisplaySets',\n x00720300: 'ImageBoxesSequence',\n x00720302: 'ImageBoxNumber',\n x00720304: 'ImageBoxLayoutType',\n x00720306: 'ImageBoxTileHorizontalDimension',\n x00720308: 'ImageBoxTileVerticalDimension',\n x00720310: 'ImageBoxScrollDirection',\n x00720312: 'ImageBoxSmallScrollType',\n x00720314: 'ImageBoxSmallScrollAmount',\n x00720316: 'ImageBoxLargeScrollType',\n x00720318: 'ImageBoxLargeScrollAmount',\n x00720320: 'ImageBoxOverlapPriority',\n x00720330: 'CineRelativeToRealTime',\n x00720400: 'FilterOperationsSequence',\n x00720402: 'FilterByCategory',\n x00720404: 'FilterByAttributePresence',\n x00720406: 'FilterByOperator',\n x00720432: 'SynchronizedImageBoxList',\n x00720434: 'TypeOfSynchronization',\n x00720500: 'BlendingOperationType',\n x00720510: 'ReformattingOperationType',\n x00720512: 'ReformattingThickness',\n x00720514: 'ReformattingInterval',\n x00720516: 'ReformattingOpInitialViewDir',\n x00720520: 'RenderingType3D',\n x00720600: 'SortingOperationsSequence',\n x00720602: 'SortByCategory',\n x00720604: 'SortingDirection',\n x00720700: 'DisplaySetPatientOrientation',\n x00720702: 'VOIType',\n x00720704: 'PseudoColorType',\n x00720706: 'ShowGrayscaleInverted',\n x00720710: 'ShowImageTrueSizeFlag',\n x00720712: 'ShowGraphicAnnotationFlag',\n x00720714: 'ShowPatientDemographicsFlag',\n x00720716: 'ShowAcquisitionTechniquesFlag',\n x00720717: 'DisplaySetHorizontalJustification',\n x00720718: 'DisplaySetVerticalJustification',\n x00741000: 'UnifiedProcedureStepState',\n x00741002: 'UPSProgressInformationSequence',\n x00741004: 'UnifiedProcedureStepProgress',\n x00741006: 'UnifiedProcedureStepProgressDescr',\n x00741008: 'UnifiedProcedureStepComURISeq',\n x0074100a: 'ContactURI',\n x0074100c: 'ContactDisplayName',\n x00741020: 'BeamTaskSequence',\n x00741022: 'BeamTaskType',\n x00741024: 'BeamOrderIndex',\n x00741030: 'DeliveryVerificationImageSequence',\n x00741032: 'VerificationImageTiming',\n x00741034: 'DoubleExposureFlag',\n x00741036: 'DoubleExposureOrdering',\n x00741038: 'DoubleExposureMeterset',\n x0074103a: 'DoubleExposureFieldDelta',\n x00741040: 'RelatedReferenceRTImageSequence',\n x00741042: 'GeneralMachineVerificationSequence',\n x00741044: 'ConventionalMachineVerificationSeq',\n x00741046: 'IonMachineVerificationSequence',\n x00741048: 'FailedAttributesSequence',\n x0074104a: 'OverriddenAttributesSequence',\n x0074104c: 'ConventionalControlPointVerifySeq',\n x0074104e: 'IonControlPointVerificationSeq',\n x00741050: 'AttributeOccurrenceSequence',\n x00741052: 'AttributeOccurrencePointer',\n x00741054: 'AttributeItemSelector',\n x00741056: 'AttributeOccurrencePrivateCreator',\n x00741200: 'ScheduledProcedureStepPriority',\n x00741202: 'StudyListLabel',\n x00741204: 'ProcedureStepLabel',\n x00741210: 'ScheduledProcessingParametersSeq',\n x00741212: 'PerformedProcessingParametersSeq',\n x00741216: 'UPSPerformedProcedureSequence',\n x00741220: 'RelatedProcedureStepSequence',\n x00741222: 'ProcedureStepRelationshipType',\n x00741230: 'DeletionLock',\n x00741234: 'ReceivingAE',\n x00741236: 'RequestingAE',\n x00741238: 'ReasonForCancellation',\n x00741242: 'SCPStatus',\n x00741244: 'SubscriptionListStatus',\n x00741246: 'UPSListStatus',\n x00880130: 'StorageMediaFileSetID',\n x00880140: 'StorageMediaFileSetUID',\n x00880200: 'IconImageSequence',\n x00880904: 'TopicTitle',\n x00880906: 'TopicSubject',\n x00880910: 'TopicAuthor',\n x00880912: 'TopicKeywords',\n x01000410: 'SOPInstanceStatus',\n x01000420: 'SOPAuthorizationDateAndTime',\n x01000424: 'SOPAuthorizationComment',\n x01000426: 'AuthorizationEquipmentCertNumber',\n x04000005: 'MACIDNumber',\n x04000010: 'MACCalculationTransferSyntaxUID',\n x04000015: 'MACAlgorithm',\n x04000020: 'DataElementsSigned',\n x04000100: 'DigitalSignatureUID',\n x04000105: 'DigitalSignatureDateTime',\n x04000110: 'CertificateType',\n x04000115: 'CertificateOfSigner',\n x04000120: 'Signature',\n x04000305: 'CertifiedTimestampType',\n x04000310: 'CertifiedTimestamp',\n x04000401: 'DigitalSignaturePurposeCodeSeq',\n x04000402: 'ReferencedDigitalSignatureSeq',\n x04000403: 'ReferencedSOPInstanceMACSeq',\n x04000404: 'MAC',\n x04000500: 'EncryptedAttributesSequence',\n x04000510: 'EncryptedContentTransferSyntaxUID',\n x04000520: 'EncryptedContent',\n x04000550: 'ModifiedAttributesSequence',\n x04000561: 'OriginalAttributesSequence',\n x04000562: 'AttributeModificationDateTime',\n x04000563: 'ModifyingSystem',\n x04000564: 'SourceOfPreviousValues',\n x04000565: 'ReasonForTheAttributeModification',\n x1000xxx0: 'EscapeTriplet',\n x1000xxx1: 'RunLengthTriplet',\n x1000xxx2: 'HuffmanTableSize',\n x1000xxx3: 'HuffmanTableTriplet',\n x1000xxx4: 'ShiftTableSize',\n x1000xxx5: 'ShiftTableTriplet',\n x1010xxxx: 'ZonalMap',\n x20000010: 'NumberOfCopies',\n x2000001e: 'PrinterConfigurationSequence',\n x20000020: 'PrintPriority',\n x20000030: 'MediumType',\n x20000040: 'FilmDestination',\n x20000050: 'FilmSessionLabel',\n x20000060: 'MemoryAllocation',\n x20000061: 'MaximumMemoryAllocation',\n x20000062: 'ColorImagePrintingFlag',\n x20000063: 'CollationFlag',\n x20000065: 'AnnotationFlag',\n x20000067: 'ImageOverlayFlag',\n x20000069: 'PresentationLUTFlag',\n x2000006a: 'ImageBoxPresentationLUTFlag',\n x200000a0: 'MemoryBitDepth',\n x200000a1: 'PrintingBitDepth',\n x200000a2: 'MediaInstalledSequence',\n x200000a4: 'OtherMediaAvailableSequence',\n x200000a8: 'SupportedImageDisplayFormatSeq',\n x20000500: 'ReferencedFilmBoxSequence',\n x20000510: 'ReferencedStoredPrintSequence',\n x20100010: 'ImageDisplayFormat',\n x20100030: 'AnnotationDisplayFormatID',\n x20100040: 'FilmOrientation',\n x20100050: 'FilmSizeID',\n x20100052: 'PrinterResolutionID',\n x20100054: 'DefaultPrinterResolutionID',\n x20100060: 'MagnificationType',\n x20100080: 'SmoothingType',\n x201000a6: 'DefaultMagnificationType',\n x201000a7: 'OtherMagnificationTypesAvailable',\n x201000a8: 'DefaultSmoothingType',\n x201000a9: 'OtherSmoothingTypesAvailable',\n x20100100: 'BorderDensity',\n x20100110: 'EmptyImageDensity',\n x20100120: 'MinDensity',\n x20100130: 'MaxDensity',\n x20100140: 'Trim',\n x20100150: 'ConfigurationInformation',\n x20100152: 'ConfigurationInformationDescr',\n x20100154: 'MaximumCollatedFilms',\n x2010015e: 'Illumination',\n x20100160: 'ReflectedAmbientLight',\n x20100376: 'PrinterPixelSpacing',\n x20100500: 'ReferencedFilmSessionSequence',\n x20100510: 'ReferencedImageBoxSequence',\n x20100520: 'ReferencedBasicAnnotationBoxSeq',\n x20200010: 'ImageBoxPosition',\n x20200020: 'Polarity',\n x20200030: 'RequestedImageSize',\n x20200040: 'RequestedDecimate-CropBehavior',\n x20200050: 'RequestedResolutionID',\n x202000a0: 'RequestedImageSizeFlag',\n x202000a2: 'DecimateCropResult',\n x20200110: 'BasicGrayscaleImageSequence',\n x20200111: 'BasicColorImageSequence',\n x20200130: 'ReferencedImageOverlayBoxSequence',\n x20200140: 'ReferencedVOILUTBoxSequence',\n x20300010: 'AnnotationPosition',\n x20300020: 'TextString',\n x20400010: 'ReferencedOverlayPlaneSequence',\n x20400011: 'ReferencedOverlayPlaneGroups',\n x20400020: 'OverlayPixelDataSequence',\n x20400060: 'OverlayMagnificationType',\n x20400070: 'OverlaySmoothingType',\n x20400072: 'OverlayOrImageMagnification',\n x20400074: 'MagnifyToNumberOfColumns',\n x20400080: 'OverlayForegroundDensity',\n x20400082: 'OverlayBackgroundDensity',\n x20400090: 'OverlayMode',\n x20400100: 'ThresholdDensity',\n x20400500: 'ReferencedImageBoxSequenceRetired',\n x20500010: 'PresentationLUTSequence',\n x20500020: 'PresentationLUTShape',\n x20500500: 'ReferencedPresentationLUTSequence',\n x21000010: 'PrintJobID',\n x21000020: 'ExecutionStatus',\n x21000030: 'ExecutionStatusInfo',\n x21000040: 'CreationDate',\n x21000050: 'CreationTime',\n x21000070: 'Originator',\n x21000140: 'DestinationAE',\n x21000160: 'OwnerID',\n x21000170: 'NumberOfFilms',\n x21000500: 'ReferencedPrintJobSequencePullStoredPrint',\n x21100010: 'PrinterStatus',\n x21100020: 'PrinterStatusInfo',\n x21100030: 'PrinterName',\n x21100099: 'PrintQueueID',\n x21200010: 'QueueStatus',\n x21200050: 'PrintJobDescriptionSequence',\n x21200070: 'ReferencedPrintJobSequence',\n x21300010: 'PrintManagementCapabilitiesSeq',\n x21300015: 'PrinterCharacteristicsSequence',\n x21300030: 'FilmBoxContentSequence',\n x21300040: 'ImageBoxContentSequence',\n x21300050: 'AnnotationContentSequence',\n x21300060: 'ImageOverlayBoxContentSequence',\n x21300080: 'PresentationLUTContentSequence',\n x213000a0: 'ProposedStudySequence',\n x213000c0: 'OriginalImageSequence',\n x22000001: 'LabelFromInfoExtractedFromInstance',\n x22000002: 'LabelText',\n x22000003: 'LabelStyleSelection',\n x22000004: 'MediaDisposition',\n x22000005: 'BarcodeValue',\n x22000006: 'BarcodeSymbology',\n x22000007: 'AllowMediaSplitting',\n x22000008: 'IncludeNonDICOMObjects',\n x22000009: 'IncludeDisplayApplication',\n x2200000a: 'SaveCompInstancesAfterMediaCreate',\n x2200000b: 'TotalNumberMediaPiecesCreated',\n x2200000c: 'RequestedMediaApplicationProfile',\n x2200000d: 'ReferencedStorageMediaSequence',\n x2200000e: 'FailureAttributes',\n x2200000f: 'AllowLossyCompression',\n x22000020: 'RequestPriority',\n x30020002: 'RTImageLabel',\n x30020003: 'RTImageName',\n x30020004: 'RTImageDescription',\n x3002000a: 'ReportedValuesOrigin',\n x3002000c: 'RTImagePlane',\n x3002000d: 'XRayImageReceptorTranslation',\n x3002000e: 'XRayImageReceptorAngle',\n x30020010: 'RTImageOrientation',\n x30020011: 'ImagePlanePixelSpacing',\n x30020012: 'RTImagePosition',\n x30020020: 'RadiationMachineName',\n x30020022: 'RadiationMachineSAD',\n x30020024: 'RadiationMachineSSD',\n x30020026: 'RTImageSID',\n x30020028: 'SourceToReferenceObjectDistance',\n x30020029: 'FractionNumber',\n x30020030: 'ExposureSequence',\n x30020032: 'MetersetExposure',\n x30020034: 'DiaphragmPosition',\n x30020040: 'FluenceMapSequence',\n x30020041: 'FluenceDataSource',\n x30020042: 'FluenceDataScale',\n x30020051: 'FluenceMode',\n x30020052: 'FluenceModeID',\n x30040001: 'DVHType',\n x30040002: 'DoseUnits',\n x30040004: 'DoseType',\n x30040006: 'DoseComment',\n x30040008: 'NormalizationPoint',\n x3004000a: 'DoseSummationType',\n x3004000c: 'GridFrameOffsetVector',\n x3004000e: 'DoseGridScaling',\n x30040010: 'RTDoseROISequence',\n x30040012: 'DoseValue',\n x30040014: 'TissueHeterogeneityCorrection',\n x30040040: 'DVHNormalizationPoint',\n x30040042: 'DVHNormalizationDoseValue',\n x30040050: 'DVHSequence',\n x30040052: 'DVHDoseScaling',\n x30040054: 'DVHVolumeUnits',\n x30040056: 'DVHNumberOfBins',\n x30040058: 'DVHData',\n x30040060: 'DVHReferencedROISequence',\n x30040062: 'DVHROIContributionType',\n x30040070: 'DVHMinimumDose',\n x30040072: 'DVHMaximumDose',\n x30040074: 'DVHMeanDose',\n x30060002: 'StructureSetLabel',\n x30060004: 'StructureSetName',\n x30060006: 'StructureSetDescription',\n x30060008: 'StructureSetDate',\n x30060009: 'StructureSetTime',\n x30060010: 'ReferencedFrameOfReferenceSequence',\n x30060012: 'RTReferencedStudySequence',\n x30060014: 'RTReferencedSeriesSequence',\n x30060016: 'ContourImageSequence',\n x30060020: 'StructureSetROISequence',\n x30060022: 'ROINumber',\n x30060024: 'ReferencedFrameOfReferenceUID',\n x30060026: 'ROIName',\n x30060028: 'ROIDescription',\n x3006002a: 'ROIDisplayColor',\n x3006002c: 'ROIVolume',\n x30060030: 'RTRelatedROISequence',\n x30060033: 'RTROIRelationship',\n x30060036: 'ROIGenerationAlgorithm',\n x30060038: 'ROIGenerationDescription',\n x30060039: 'ROIContourSequence',\n x30060040: 'ContourSequence',\n x30060042: 'ContourGeometricType',\n x30060044: 'ContourSlabThickness',\n x30060045: 'ContourOffsetVector',\n x30060046: 'NumberOfContourPoints',\n x30060048: 'ContourNumber',\n x30060049: 'AttachedContours',\n x30060050: 'ContourData',\n x30060080: 'RTROIObservationsSequence',\n x30060082: 'ObservationNumber',\n x30060084: 'ReferencedROINumber',\n x30060085: 'ROIObservationLabel',\n x30060086: 'RTROIIdentificationCodeSequence',\n x30060088: 'ROIObservationDescription',\n x300600a0: 'RelatedRTROIObservationsSequence',\n x300600a4: 'RTROIInterpretedType',\n x300600a6: 'ROIInterpreter',\n x300600b0: 'ROIPhysicalPropertiesSequence',\n x300600b2: 'ROIPhysicalProperty',\n x300600b4: 'ROIPhysicalPropertyValue',\n x300600b6: 'ROIElementalCompositionSequence',\n x300600b7: 'ROIElementalCompAtomicNumber',\n x300600b8: 'ROIElementalCompAtomicMassFraction',\n x300600c0: 'FrameOfReferenceRelationshipSeq',\n x300600c2: 'RelatedFrameOfReferenceUID',\n x300600c4: 'FrameOfReferenceTransformType',\n x300600c6: 'FrameOfReferenceTransformMatrix',\n x300600c8: 'FrameOfReferenceTransformComment',\n x30080010: 'MeasuredDoseReferenceSequence',\n x30080012: 'MeasuredDoseDescription',\n x30080014: 'MeasuredDoseType',\n x30080016: 'MeasuredDoseValue',\n x30080020: 'TreatmentSessionBeamSequence',\n x30080021: 'TreatmentSessionIonBeamSequence',\n x30080022: 'CurrentFractionNumber',\n x30080024: 'TreatmentControlPointDate',\n x30080025: 'TreatmentControlPointTime',\n x3008002a: 'TreatmentTerminationStatus',\n x3008002b: 'TreatmentTerminationCode',\n x3008002c: 'TreatmentVerificationStatus',\n x30080030: 'ReferencedTreatmentRecordSequence',\n x30080032: 'SpecifiedPrimaryMeterset',\n x30080033: 'SpecifiedSecondaryMeterset',\n x30080036: 'DeliveredPrimaryMeterset',\n x30080037: 'DeliveredSecondaryMeterset',\n x3008003a: 'SpecifiedTreatmentTime',\n x3008003b: 'DeliveredTreatmentTime',\n x30080040: 'ControlPointDeliverySequence',\n x30080041: 'IonControlPointDeliverySequence',\n x30080042: 'SpecifiedMeterset',\n x30080044: 'DeliveredMeterset',\n x30080045: 'MetersetRateSet',\n x30080046: 'MetersetRateDelivered',\n x30080047: 'ScanSpotMetersetsDelivered',\n x30080048: 'DoseRateDelivered',\n x30080050: 'TreatmentSummaryCalcDoseRefSeq',\n x30080052: 'CumulativeDoseToDoseReference',\n x30080054: 'FirstTreatmentDate',\n x30080056: 'MostRecentTreatmentDate',\n x3008005a: 'NumberOfFractionsDelivered',\n x30080060: 'OverrideSequence',\n x30080061: 'ParameterSequencePointer',\n x30080062: 'OverrideParameterPointer',\n x30080063: 'ParameterItemIndex',\n x30080064: 'MeasuredDoseReferenceNumber',\n x30080065: 'ParameterPointer',\n x30080066: 'OverrideReason',\n x30080068: 'CorrectedParameterSequence',\n x3008006a: 'CorrectionValue',\n x30080070: 'CalculatedDoseReferenceSequence',\n x30080072: 'CalculatedDoseReferenceNumber',\n x30080074: 'CalculatedDoseReferenceDescription',\n x30080076: 'CalculatedDoseReferenceDoseValue',\n x30080078: 'StartMeterset',\n x3008007a: 'EndMeterset',\n x30080080: 'ReferencedMeasuredDoseReferenceSeq',\n x30080082: 'ReferencedMeasuredDoseReferenceNum',\n x30080090: 'ReferencedCalculatedDoseRefSeq',\n x30080092: 'ReferencedCalculatedDoseRefNumber',\n x300800a0: 'BeamLimitingDeviceLeafPairsSeq',\n x300800b0: 'RecordedWedgeSequence',\n x300800c0: 'RecordedCompensatorSequence',\n x300800d0: 'RecordedBlockSequence',\n x300800e0: 'TreatmentSummaryMeasuredDoseRefSeq',\n x300800f0: 'RecordedSnoutSequence',\n x300800f2: 'RecordedRangeShifterSequence',\n x300800f4: 'RecordedLateralSpreadingDeviceSeq',\n x300800f6: 'RecordedRangeModulatorSequence',\n x30080100: 'RecordedSourceSequence',\n x30080105: 'SourceSerialNumber',\n x30080110: 'TreatmentSessionAppSetupSeq',\n x30080116: 'ApplicationSetupCheck',\n x30080120: 'RecordedBrachyAccessoryDeviceSeq',\n x30080122: 'ReferencedBrachyAccessoryDeviceNum',\n x30080130: 'RecordedChannelSequence',\n x30080132: 'SpecifiedChannelTotalTime',\n x30080134: 'DeliveredChannelTotalTime',\n x30080136: 'SpecifiedNumberOfPulses',\n x30080138: 'DeliveredNumberOfPulses',\n x3008013a: 'SpecifiedPulseRepetitionInterval',\n x3008013c: 'DeliveredPulseRepetitionInterval',\n x30080140: 'RecordedSourceApplicatorSequence',\n x30080142: 'ReferencedSourceApplicatorNumber',\n x30080150: 'RecordedChannelShieldSequence',\n x30080152: 'ReferencedChannelShieldNumber',\n x30080160: 'BrachyControlPointDeliveredSeq',\n x30080162: 'SafePositionExitDate',\n x30080164: 'SafePositionExitTime',\n x30080166: 'SafePositionReturnDate',\n x30080168: 'SafePositionReturnTime',\n x30080200: 'CurrentTreatmentStatus',\n x30080202: 'TreatmentStatusComment',\n x30080220: 'FractionGroupSummarySequence',\n x30080223: 'ReferencedFractionNumber',\n x30080224: 'FractionGroupType',\n x30080230: 'BeamStopperPosition',\n x30080240: 'FractionStatusSummarySequence',\n x30080250: 'TreatmentDate',\n x30080251: 'TreatmentTime',\n x300a0002: 'RTPlanLabel',\n x300a0003: 'RTPlanName',\n x300a0004: 'RTPlanDescription',\n x300a0006: 'RTPlanDate',\n x300a0007: 'RTPlanTime',\n x300a0009: 'TreatmentProtocols',\n x300a000a: 'PlanIntent',\n x300a000b: 'TreatmentSites',\n x300a000c: 'RTPlanGeometry',\n x300a000e: 'PrescriptionDescription',\n x300a0010: 'DoseReferenceSequence',\n x300a0012: 'DoseReferenceNumber',\n x300a0013: 'DoseReferenceUID',\n x300a0014: 'DoseReferenceStructureType',\n x300a0015: 'NominalBeamEnergyUnit',\n x300a0016: 'DoseReferenceDescription',\n x300a0018: 'DoseReferencePointCoordinates',\n x300a001a: 'NominalPriorDose',\n x300a0020: 'DoseReferenceType',\n x300a0021: 'ConstraintWeight',\n x300a0022: 'DeliveryWarningDose',\n x300a0023: 'DeliveryMaximumDose',\n x300a0025: 'TargetMinimumDose',\n x300a0026: 'TargetPrescriptionDose',\n x300a0027: 'TargetMaximumDose',\n x300a0028: 'TargetUnderdoseVolumeFraction',\n x300a002a: 'OrganAtRiskFullVolumeDose',\n x300a002b: 'OrganAtRiskLimitDose',\n x300a002c: 'OrganAtRiskMaximumDose',\n x300a002d: 'OrganAtRiskOverdoseVolumeFraction',\n x300a0040: 'ToleranceTableSequence',\n x300a0042: 'ToleranceTableNumber',\n x300a0043: 'ToleranceTableLabel',\n x300a0044: 'GantryAngleTolerance',\n x300a0046: 'BeamLimitingDeviceAngleTolerance',\n x300a0048: 'BeamLimitingDeviceToleranceSeq',\n x300a004a: 'BeamLimitingDevicePositionTol',\n x300a004b: 'SnoutPositionTolerance',\n x300a004c: 'PatientSupportAngleTolerance',\n x300a004e: 'TableTopEccentricAngleTolerance',\n x300a004f: 'TableTopPitchAngleTolerance',\n x300a0050: 'TableTopRollAngleTolerance',\n x300a0051: 'TableTopVerticalPositionTolerance',\n x300a0052: 'TableTopLongitudinalPositionTol',\n x300a0053: 'TableTopLateralPositionTolerance',\n x300a0055: 'RTPlanRelationship',\n x300a0070: 'FractionGroupSequence',\n x300a0071: 'FractionGroupNumber',\n x300a0072: 'FractionGroupDescription',\n x300a0078: 'NumberOfFractionsPlanned',\n x300a0079: 'NumberFractionPatternDigitsPerDay',\n x300a007a: 'RepeatFractionCycleLength',\n x300a007b: 'FractionPattern',\n x300a0080: 'NumberOfBeams',\n x300a0082: 'BeamDoseSpecificationPoint',\n x300a0084: 'BeamDose',\n x300a0086: 'BeamMeterset',\n x300a0088: 'BeamDosePointDepth',\n x300a0089: 'BeamDosePointEquivalentDepth',\n x300a008a: 'BeamDosePointSSD',\n x300a00a0: 'NumberOfBrachyApplicationSetups',\n x300a00a2: 'BrachyAppSetupDoseSpecPoint',\n x300a00a4: 'BrachyApplicationSetupDose',\n x300a00b0: 'BeamSequence',\n x300a00b2: 'TreatmentMachineName',\n x300a00b3: 'PrimaryDosimeterUnit',\n x300a00b4: 'SourceAxisDistance',\n x300a00b6: 'BeamLimitingDeviceSequence',\n x300a00b8: 'RTBeamLimitingDeviceType',\n x300a00ba: 'SourceToBeamLimitingDeviceDistance',\n x300a00bb: 'IsocenterToBeamLimitingDeviceDist',\n x300a00bc: 'NumberOfLeafJawPairs',\n x300a00be: 'LeafPositionBoundaries',\n x300a00c0: 'BeamNumber',\n x300a00c2: 'BeamName',\n x300a00c3: 'BeamDescription',\n x300a00c4: 'BeamType',\n x300a00c6: 'RadiationType',\n x300a00c7: 'HighDoseTechniqueType',\n x300a00c8: 'ReferenceImageNumber',\n x300a00ca: 'PlannedVerificationImageSequence',\n x300a00cc: 'ImagingDeviceSpecificAcqParams',\n x300a00ce: 'TreatmentDeliveryType',\n x300a00d0: 'NumberOfWedges',\n x300a00d1: 'WedgeSequence',\n x300a00d2: 'WedgeNumber',\n x300a00d3: 'WedgeType',\n x300a00d4: 'WedgeID',\n x300a00d5: 'WedgeAngle',\n x300a00d6: 'WedgeFactor',\n x300a00d7: 'TotalWedgeTrayWaterEquivThickness',\n x300a00d8: 'WedgeOrientation',\n x300a00d9: 'IsocenterToWedgeTrayDistance',\n x300a00da: 'SourceToWedgeTrayDistance',\n x300a00db: 'WedgeThinEdgePosition',\n x300a00dc: 'BolusID',\n x300a00dd: 'BolusDescription',\n x300a00e0: 'NumberOfCompensators',\n x300a00e1: 'MaterialID',\n x300a00e2: 'TotalCompensatorTrayFactor',\n x300a00e3: 'CompensatorSequence',\n x300a00e4: 'CompensatorNumber',\n x300a00e5: 'CompensatorID',\n x300a00e6: 'SourceToCompensatorTrayDistance',\n x300a00e7: 'CompensatorRows',\n x300a00e8: 'CompensatorColumns',\n x300a00e9: 'CompensatorPixelSpacing',\n x300a00ea: 'CompensatorPosition',\n x300a00eb: 'CompensatorTransmissionData',\n x300a00ec: 'CompensatorThicknessData',\n x300a00ed: 'NumberOfBoli',\n x300a00ee: 'CompensatorType',\n x300a00f0: 'NumberOfBlocks',\n x300a00f2: 'TotalBlockTrayFactor',\n x300a00f3: 'TotalBlockTrayWaterEquivThickness',\n x300a00f4: 'BlockSequence',\n x300a00f5: 'BlockTrayID',\n x300a00f6: 'SourceToBlockTrayDistance',\n x300a00f7: 'IsocenterToBlockTrayDistance',\n x300a00f8: 'BlockType',\n x300a00f9: 'AccessoryCode',\n x300a00fa: 'BlockDivergence',\n x300a00fb: 'BlockMountingPosition',\n x300a00fc: 'BlockNumber',\n x300a00fe: 'BlockName',\n x300a0100: 'BlockThickness',\n x300a0102: 'BlockTransmission',\n x300a0104: 'BlockNumberOfPoints',\n x300a0106: 'BlockData',\n x300a0107: 'ApplicatorSequence',\n x300a0108: 'ApplicatorID',\n x300a0109: 'ApplicatorType',\n x300a010a: 'ApplicatorDescription',\n x300a010c: 'CumulativeDoseReferenceCoefficient',\n x300a010e: 'FinalCumulativeMetersetWeight',\n x300a0110: 'NumberOfControlPoints',\n x300a0111: 'ControlPointSequence',\n x300a0112: 'ControlPointIndex',\n x300a0114: 'NominalBeamEnergy',\n x300a0115: 'DoseRateSet',\n x300a0116: 'WedgePositionSequence',\n x300a0118: 'WedgePosition',\n x300a011a: 'BeamLimitingDevicePositionSequence',\n x300a011c: 'LeafJawPositions',\n x300a011e: 'GantryAngle',\n x300a011f: 'GantryRotationDirection',\n x300a0120: 'BeamLimitingDeviceAngle',\n x300a0121: 'BeamLimitingDeviceRotateDirection',\n x300a0122: 'PatientSupportAngle',\n x300a0123: 'PatientSupportRotationDirection',\n x300a0124: 'TableTopEccentricAxisDistance',\n x300a0125: 'TableTopEccentricAngle',\n x300a0126: 'TableTopEccentricRotateDirection',\n x300a0128: 'TableTopVerticalPosition',\n x300a0129: 'TableTopLongitudinalPosition',\n x300a012a: 'TableTopLateralPosition',\n x300a012c: 'IsocenterPosition',\n x300a012e: 'SurfaceEntryPoint',\n x300a0130: 'SourceToSurfaceDistance',\n x300a0134: 'CumulativeMetersetWeight',\n x300a0140: 'TableTopPitchAngle',\n x300a0142: 'TableTopPitchRotationDirection',\n x300a0144: 'TableTopRollAngle',\n x300a0146: 'TableTopRollRotationDirection',\n x300a0148: 'HeadFixationAngle',\n x300a014a: 'GantryPitchAngle',\n x300a014c: 'GantryPitchRotationDirection',\n x300a014e: 'GantryPitchAngleTolerance',\n x300a0180: 'PatientSetupSequence',\n x300a0182: 'PatientSetupNumber',\n x300a0183: 'PatientSetupLabel',\n x300a0184: 'PatientAdditionalPosition',\n x300a0190: 'FixationDeviceSequence',\n x300a0192: 'FixationDeviceType',\n x300a0194: 'FixationDeviceLabel',\n x300a0196: 'FixationDeviceDescription',\n x300a0198: 'FixationDevicePosition',\n x300a0199: 'FixationDevicePitchAngle',\n x300a019a: 'FixationDeviceRollAngle',\n x300a01a0: 'ShieldingDeviceSequence',\n x300a01a2: 'ShieldingDeviceType',\n x300a01a4: 'ShieldingDeviceLabel',\n x300a01a6: 'ShieldingDeviceDescription',\n x300a01a8: 'ShieldingDevicePosition',\n x300a01b0: 'SetupTechnique',\n x300a01b2: 'SetupTechniqueDescription',\n x300a01b4: 'SetupDeviceSequence',\n x300a01b6: 'SetupDeviceType',\n x300a01b8: 'SetupDeviceLabel',\n x300a01ba: 'SetupDeviceDescription',\n x300a01bc: 'SetupDeviceParameter',\n x300a01d0: 'SetupReferenceDescription',\n x300a01d2: 'TableTopVerticalSetupDisplacement',\n x300a01d4: 'TableTopLongitudinalSetupDisplace',\n x300a01d6: 'TableTopLateralSetupDisplacement',\n x300a0200: 'BrachyTreatmentTechnique',\n x300a0202: 'BrachyTreatmentType',\n x300a0206: 'TreatmentMachineSequence',\n x300a0210: 'SourceSequence',\n x300a0212: 'SourceNumber',\n x300a0214: 'SourceType',\n x300a0216: 'SourceManufacturer',\n x300a0218: 'ActiveSourceDiameter',\n x300a021a: 'ActiveSourceLength',\n x300a0222: 'SourceEncapsulationNomThickness',\n x300a0224: 'SourceEncapsulationNomTransmission',\n x300a0226: 'SourceIsotopeName',\n x300a0228: 'SourceIsotopeHalfLife',\n x300a0229: 'SourceStrengthUnits',\n x300a022a: 'ReferenceAirKermaRate',\n x300a022b: 'SourceStrength',\n x300a022c: 'SourceStrengthReferenceDate',\n x300a022e: 'SourceStrengthReferenceTime',\n x300a0230: 'ApplicationSetupSequence',\n x300a0232: 'ApplicationSetupType',\n x300a0234: 'ApplicationSetupNumber',\n x300a0236: 'ApplicationSetupName',\n x300a0238: 'ApplicationSetupManufacturer',\n x300a0240: 'TemplateNumber',\n x300a0242: 'TemplateType',\n x300a0244: 'TemplateName',\n x300a0250: 'TotalReferenceAirKerma',\n x300a0260: 'BrachyAccessoryDeviceSequence',\n x300a0262: 'BrachyAccessoryDeviceNumber',\n x300a0263: 'BrachyAccessoryDeviceID',\n x300a0264: 'BrachyAccessoryDeviceType',\n x300a0266: 'BrachyAccessoryDeviceName',\n x300a026a: 'BrachyAccessoryDeviceNomThickness',\n x300a026c: 'BrachyAccessoryDevNomTransmission',\n x300a0280: 'ChannelSequence',\n x300a0282: 'ChannelNumber',\n x300a0284: 'ChannelLength',\n x300a0286: 'ChannelTotalTime',\n x300a0288: 'SourceMovementType',\n x300a028a: 'NumberOfPulses',\n x300a028c: 'PulseRepetitionInterval',\n x300a0290: 'SourceApplicatorNumber',\n x300a0291: 'SourceApplicatorID',\n x300a0292: 'SourceApplicatorType',\n x300a0294: 'SourceApplicatorName',\n x300a0296: 'SourceApplicatorLength',\n x300a0298: 'SourceApplicatorManufacturer',\n x300a029c: 'SourceApplicatorWallNomThickness',\n x300a029e: 'SourceApplicatorWallNomTrans',\n x300a02a0: 'SourceApplicatorStepSize',\n x300a02a2: 'TransferTubeNumber',\n x300a02a4: 'TransferTubeLength',\n x300a02b0: 'ChannelShieldSequence',\n x300a02b2: 'ChannelShieldNumber',\n x300a02b3: 'ChannelShieldID',\n x300a02b4: 'ChannelShieldName',\n x300a02b8: 'ChannelShieldNominalThickness',\n x300a02ba: 'ChannelShieldNominalTransmission',\n x300a02c8: 'FinalCumulativeTimeWeight',\n x300a02d0: 'BrachyControlPointSequence',\n x300a02d2: 'ControlPointRelativePosition',\n x300a02d4: 'ControlPoint3DPosition',\n x300a02d6: 'CumulativeTimeWeight',\n x300a02e0: 'CompensatorDivergence',\n x300a02e1: 'CompensatorMountingPosition',\n x300a02e2: 'SourceToCompensatorDistance',\n x300a02e3: 'TotalCompTrayWaterEquivThickness',\n x300a02e4: 'IsocenterToCompensatorTrayDistance',\n x300a02e5: 'CompensatorColumnOffset',\n x300a02e6: 'IsocenterToCompensatorDistances',\n x300a02e7: 'CompensatorRelStoppingPowerRatio',\n x300a02e8: 'CompensatorMillingToolDiameter',\n x300a02ea: 'IonRangeCompensatorSequence',\n x300a02eb: 'CompensatorDescription',\n x300a0302: 'RadiationMassNumber',\n x300a0304: 'RadiationAtomicNumber',\n x300a0306: 'RadiationChargeState',\n x300a0308: 'ScanMode',\n x300a030a: 'VirtualSourceAxisDistances',\n x300a030c: 'SnoutSequence',\n x300a030d: 'SnoutPosition',\n x300a030f: 'SnoutID',\n x300a0312: 'NumberOfRangeShifters',\n x300a0314: 'RangeShifterSequence',\n x300a0316: 'RangeShifterNumber',\n x300a0318: 'RangeShifterID',\n x300a0320: 'RangeShifterType',\n x300a0322: 'RangeShifterDescription',\n x300a0330: 'NumberOfLateralSpreadingDevices',\n x300a0332: 'LateralSpreadingDeviceSequence',\n x300a0334: 'LateralSpreadingDeviceNumber',\n x300a0336: 'LateralSpreadingDeviceID',\n x300a0338: 'LateralSpreadingDeviceType',\n x300a033a: 'LateralSpreadingDeviceDescription',\n x300a033c: 'LateralSpreadingDevWaterEquivThick',\n x300a0340: 'NumberOfRangeModulators',\n x300a0342: 'RangeModulatorSequence',\n x300a0344: 'RangeModulatorNumber',\n x300a0346: 'RangeModulatorID',\n x300a0348: 'RangeModulatorType',\n x300a034a: 'RangeModulatorDescription',\n x300a034c: 'BeamCurrentModulationID',\n x300a0350: 'PatientSupportType',\n x300a0352: 'PatientSupportID',\n x300a0354: 'PatientSupportAccessoryCode',\n x300a0356: 'FixationLightAzimuthalAngle',\n x300a0358: 'FixationLightPolarAngle',\n x300a035a: 'MetersetRate',\n x300a0360: 'RangeShifterSettingsSequence',\n x300a0362: 'RangeShifterSetting',\n x300a0364: 'IsocenterToRangeShifterDistance',\n x300a0366: 'RangeShifterWaterEquivThickness',\n x300a0370: 'LateralSpreadingDeviceSettingsSeq',\n x300a0372: 'LateralSpreadingDeviceSetting',\n x300a0374: 'IsocenterToLateralSpreadingDevDist',\n x300a0380: 'RangeModulatorSettingsSequence',\n x300a0382: 'RangeModulatorGatingStartValue',\n x300a0384: 'RangeModulatorGatingStopValue',\n x300a038a: 'IsocenterToRangeModulatorDistance',\n x300a0390: 'ScanSpotTuneID',\n x300a0392: 'NumberOfScanSpotPositions',\n x300a0394: 'ScanSpotPositionMap',\n x300a0396: 'ScanSpotMetersetWeights',\n x300a0398: 'ScanningSpotSize',\n x300a039a: 'NumberOfPaintings',\n x300a03a0: 'IonToleranceTableSequence',\n x300a03a2: 'IonBeamSequence',\n x300a03a4: 'IonBeamLimitingDeviceSequence',\n x300a03a6: 'IonBlockSequence',\n x300a03a8: 'IonControlPointSequence',\n x300a03aa: 'IonWedgeSequence',\n x300a03ac: 'IonWedgePositionSequence',\n x300a0401: 'ReferencedSetupImageSequence',\n x300a0402: 'SetupImageComment',\n x300a0410: 'MotionSynchronizationSequence',\n x300a0412: 'ControlPointOrientation',\n x300a0420: 'GeneralAccessorySequence',\n x300a0421: 'GeneralAccessoryID',\n x300a0422: 'GeneralAccessoryDescription',\n x300a0423: 'GeneralAccessoryType',\n x300a0424: 'GeneralAccessoryNumber',\n x300c0002: 'ReferencedRTPlanSequence',\n x300c0004: 'ReferencedBeamSequence',\n x300c0006: 'ReferencedBeamNumber',\n x300c0007: 'ReferencedReferenceImageNumber',\n x300c0008: 'StartCumulativeMetersetWeight',\n x300c0009: 'EndCumulativeMetersetWeight',\n x300c000a: 'ReferencedBrachyAppSetupSeq',\n x300c000c: 'ReferencedBrachyAppSetupNumber',\n x300c000e: 'ReferencedSourceNumber',\n x300c0020: 'ReferencedFractionGroupSequence',\n x300c0022: 'ReferencedFractionGroupNumber',\n x300c0040: 'ReferencedVerificationImageSeq',\n x300c0042: 'ReferencedReferenceImageSequence',\n x300c0050: 'ReferencedDoseReferenceSequence',\n x300c0051: 'ReferencedDoseReferenceNumber',\n x300c0055: 'BrachyReferencedDoseReferenceSeq',\n x300c0060: 'ReferencedStructureSetSequence',\n x300c006a: 'ReferencedPatientSetupNumber',\n x300c0080: 'ReferencedDoseSequence',\n x300c00a0: 'ReferencedToleranceTableNumber',\n x300c00b0: 'ReferencedBolusSequence',\n x300c00c0: 'ReferencedWedgeNumber',\n x300c00d0: 'ReferencedCompensatorNumber',\n x300c00e0: 'ReferencedBlockNumber',\n x300c00f0: 'ReferencedControlPointIndex',\n x300c00f2: 'ReferencedControlPointSequence',\n x300c00f4: 'ReferencedStartControlPointIndex',\n x300c00f6: 'ReferencedStopControlPointIndex',\n x300c0100: 'ReferencedRangeShifterNumber',\n x300c0102: 'ReferencedLateralSpreadingDevNum',\n x300c0104: 'ReferencedRangeModulatorNumber',\n x300e0002: 'ApprovalStatus',\n x300e0004: 'ReviewDate',\n x300e0005: 'ReviewTime',\n x300e0008: 'ReviewerName',\n x40000000: 'TextGroupLength',\n x40000010: 'Arbitrary',\n x40004000: 'TextComments',\n x40080040: 'ResultsID',\n x40080042: 'ResultsIDIssuer',\n x40080050: 'ReferencedInterpretationSequence',\n x40080100: 'InterpretationRecordedDate',\n x40080101: 'InterpretationRecordedTime',\n x40080102: 'InterpretationRecorder',\n x40080103: 'ReferenceToRecordedSound',\n x40080108: 'InterpretationTranscriptionDate',\n x40080109: 'InterpretationTranscriptionTime',\n x4008010a: 'InterpretationTranscriber',\n x4008010b: 'InterpretationText',\n x4008010c: 'InterpretationAuthor',\n x40080111: 'InterpretationApproverSequence',\n x40080112: 'InterpretationApprovalDate',\n x40080113: 'InterpretationApprovalTime',\n x40080114: 'PhysicianApprovingInterpretation',\n x40080115: 'InterpretationDiagnosisDescription',\n x40080117: 'InterpretationDiagnosisCodeSeq',\n x40080118: 'ResultsDistributionListSequence',\n x40080119: 'DistributionName',\n x4008011a: 'DistributionAddress',\n x40080200: 'InterpretationID',\n x40080202: 'InterpretationIDIssuer',\n x40080210: 'InterpretationTypeID',\n x40080212: 'InterpretationStatusID',\n x40080300: 'Impressions',\n x40084000: 'ResultsComments',\n x4ffe0001: 'MACParametersSequence',\n x50xx0005: 'CurveDimensions',\n x50xx0010: 'NumberOfPoints',\n x50xx0020: 'TypeOfData',\n x50xx0022: 'CurveDescription',\n x50xx0030: 'AxisUnits',\n x50xx0040: 'AxisLabels',\n x50xx0103: 'DataValueRepresentation',\n x50xx0104: 'MinimumCoordinateValue',\n x50xx0105: 'MaximumCoordinateValue',\n x50xx0106: 'CurveRange',\n x50xx0110: 'CurveDataDescriptor',\n x50xx0112: 'CoordinateStartValue',\n x50xx0114: 'CoordinateStepValue',\n x50xx1001: 'CurveActivationLayer',\n x50xx2000: 'AudioType',\n x50xx2002: 'AudioSampleFormat',\n x50xx2004: 'NumberOfChannels',\n x50xx2006: 'NumberOfSamples',\n x50xx2008: 'SampleRate',\n x50xx200a: 'TotalTime',\n x50xx200c: 'AudioSampleData',\n x50xx200e: 'AudioComments',\n x50xx2500: 'CurveLabel',\n x50xx2600: 'CurveReferencedOverlaySequence',\n x50xx2610: 'ReferencedOverlayGroup',\n x50xx3000: 'CurveData',\n x52009229: 'SharedFunctionalGroupsSequence',\n x52009230: 'PerFrameFunctionalGroupsSequence',\n x54000100: 'WaveformSequence',\n x54000110: 'ChannelMinimumValue',\n x54000112: 'ChannelMaximumValue',\n x54001004: 'WaveformBitsAllocated',\n x54001006: 'WaveformSampleInterpretation',\n x5400100a: 'WaveformPaddingValue',\n x54001010: 'WaveformData',\n x56000010: 'FirstOrderPhaseCorrectionAngle',\n x56000020: 'SpectroscopyData',\n x60000000: 'OverlayGroupLength',\n x60xx0010: 'OverlayRows',\n x60xx0011: 'OverlayColumns',\n x60xx0012: 'OverlayPlanes',\n x60xx0015: 'NumberOfFramesInOverlay',\n x60xx0022: 'OverlayDescription',\n x60xx0040: 'OverlayType',\n x60xx0045: 'OverlaySubtype',\n x60xx0050: 'OverlayOrigin',\n x60xx0051: 'ImageFrameOrigin',\n x60xx0052: 'OverlayPlaneOrigin',\n x60xx0060: 'OverlayCompressionCode',\n x60xx0061: 'OverlayCompressionOriginator',\n x60xx0062: 'OverlayCompressionLabel',\n x60xx0063: 'OverlayCompressionDescription',\n x60xx0066: 'OverlayCompressionStepPointers',\n x60xx0068: 'OverlayRepeatInterval',\n x60xx0069: 'OverlayBitsGrouped',\n x60xx0100: 'OverlayBitsAllocated',\n x60xx0102: 'OverlayBitPosition',\n x60xx0110: 'OverlayFormat',\n x60xx0200: 'OverlayLocation',\n x60xx0800: 'OverlayCodeLabel',\n x60xx0802: 'OverlayNumberOfTables',\n x60xx0803: 'OverlayCodeTableLocation',\n x60xx0804: 'OverlayBitsForCodeWord',\n x60xx1001: 'OverlayActivationLayer',\n x60xx1100: 'OverlayDescriptorGray',\n x60xx1101: 'OverlayDescriptorRed',\n x60xx1102: 'OverlayDescriptorGreen',\n x60xx1103: 'OverlayDescriptorBlue',\n x60xx1200: 'OverlaysGray',\n x60xx1201: 'OverlaysRed',\n x60xx1202: 'OverlaysGreen',\n x60xx1203: 'OverlaysBlue',\n x60xx1301: 'ROIArea',\n x60xx1302: 'ROIMean',\n x60xx1303: 'ROIStandardDeviation',\n x60xx1500: 'OverlayLabel',\n x60xx3000: 'OverlayData',\n x60xx4000: 'OverlayComments',\n x7fxx0000: 'PixelDataGroupLength',\n x7fxx0010: 'PixelData',\n x7fxx0011: 'VariableNextDataGroup',\n x7fxx0020: 'VariableCoefficientsSDVN',\n x7fxx0030: 'VariableCoefficientsSDHN',\n x7fxx0040: 'VariableCoefficientsSDDN',\n xfffafffa: 'DigitalSignaturesSequence',\n xfffcfffc: 'DataSetTrailingPadding',\n xfffee000: 'StartOfItem',\n xfffee00d: 'EndOfItems',\n xfffee0dd: 'EndOfSequence'\n};\nDICOMTagDescriptions.init(initialTagDescriptionMap); // Discard original map...\n\ninitialTagDescriptionMap = null;\n\n/**\n * A small set of utilities to help parsing DICOM element values.\n * In the future the functionality provided by this library might\n * be incorporated into dicomParser library.\n */\n\nvar parsingUtils = {\n /**\n * Check if supplied argument is a valid instance of the dicomParser.DataSet class.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @returns {Boolean} Returns true if data is a valid instance of the dicomParser.DataSet class.\n */\n isValidDataSet: function isValidDataSet(data) {\n var dicomParser = external.dicomParser;\n return data instanceof dicomParser.DataSet;\n },\n\n /**\n * Parses an element tag according to the 'AT' VR definition.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {String} A string representation of a data element tag or null if the field is not present or data is not long enough.\n */\n attributeTag: function attributeTag(data, tag) {\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length === 4) {\n var parser = data.byteArrayParser.readUint16,\n bytes = data.byteArray,\n offset = element.dataOffset;\n return 'x' + ('00000000' + (parser(bytes, offset) * 256 * 256 + parser(bytes, offset + 2)).toString(16)).substr(-8);\n }\n }\n\n return null;\n },\n\n /**\n * Parses the string representation of a multi-valued element into an array of strings. If the parser\n * parameter is passed and is a function, it will be applied to each element of the resulting array.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @param parser {Function} An optional parser function that can be applied to each element of the array.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n multiValue: function multiValue(data, tag, parser) {\n var dicomParser = external.dicomParser;\n\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length > 0) {\n var string = dicomParser.readFixedString(data.byteArray, element.dataOffset, element.length);\n\n if (typeof string === 'string' && string.length > 0) {\n if (typeof parser !== 'function') {\n parser = null;\n }\n\n return string.split('\\\\').map(function (value) {\n value = value.trim();\n return parser !== null ? parser(value) : value;\n });\n }\n }\n }\n\n return null;\n },\n\n /**\n * Parses a string to an array of floats for a multi-valued element.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n floatArray: function floatArray(data, tag) {\n return this.multiValue(data, tag, parseFloat);\n }\n};\n\n/**\n * Returns the specified element as a dicom attribute group/element.\n *\n * @param element - The group/element of the element (e.g. '00280009')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getAttribute(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return convertToInt(element.Value);\n}\n\nfunction convertToInt(input) {\n function padFour(input) {\n var l = input.length;\n if (l == 0) return '0000';\n if (l == 1) return '000' + input;\n if (l == 2) return '00' + input;\n if (l == 3) return '0' + input;\n return input;\n }\n\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n for (var j = 0; j < input[i].length; j++) {\n output += padFour(input[i].charCodeAt(j).toString(16));\n }\n }\n\n return parseInt(output, 16);\n}\n\nvar btoa = function btoa(val) {\n return new Buffer(val).toString('base64');\n};\n\n// These should be overridden by the implementation\nvar user = {\n userLoggedIn: function userLoggedIn() {\n return false;\n },\n getUserId: function getUserId() {\n return null;\n },\n getName: function getName() {\n return null;\n },\n getAccessToken: function getAccessToken() {\n return null;\n },\n login: function login() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n logout: function logout() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n getData: function getData(key) {\n return null;\n },\n setData: function setData(key, value) {\n return null;\n }\n};\n\n/**\n * Returns the Authorization header as part of an Object.\n *\n * @returns {Object}\n */\n\nfunction getAuthorizationHeader(server) {\n var headers = {}; // Check for OHIF.user since this can also be run on the server\n\n var accessToken = user && user.getAccessToken && user.getAccessToken();\n\n if (server && server.requestOptions && server.requestOptions.auth) {\n // HTTP Basic Auth (user:password)\n headers.Authorization = \"Basic \".concat(btoa(server.requestOptions.auth));\n } else if (accessToken) {\n headers.Authorization = \"Bearer \".concat(accessToken);\n }\n\n return headers;\n}\n\nfunction getModalities(modality, modalitiesInStudy) {\n var modalities = {};\n\n if (modality) {\n modalities = modality;\n }\n\n if (modalitiesInStudy) {\n // Find vr in modalities\n if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {\n for (var i = 0; i < modalitiesInStudy.Value.length; i++) {\n var value = modalitiesInStudy.Value[i];\n\n if (modalities.Value.indexOf(value) === -1) {\n modalities.Value.push(value);\n }\n }\n } else {\n modalities = modalitiesInStudy;\n }\n }\n\n return modalities;\n}\n\n/**\n * Returns the Alphabetic version of a PN\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element is not found\n * @returns {*}\n */\nfunction getName(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Return the Alphabetic component group\n\n\n if (element.Value[0].Alphabetic) {\n return element.Value[0].Alphabetic;\n } // Orthanc does not return PN properly so this is a temporary workaround\n\n\n return element.Value[0];\n}\n\n/**\n * Returns the first string value as a Javascript Number\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element does not exist\n * @returns {*}\n */\nfunction getNumber(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return parseFloat(element.Value[0]);\n}\n\n/**\n * Returns the specified element as a string. Multi-valued elements will be separated by a backslash\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getString(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Join the array together separated by backslash\n // NOTE: Orthanc does not correctly split values into an array so the join is a no-op\n\n\n return element.Value.join('\\\\');\n}\n\nvar DICOMWeb = {\n getAttribute: getAttribute,\n getAuthorizationHeader: getAuthorizationHeader,\n getModalities: getModalities,\n getName: getName,\n getNumber: getNumber,\n getString: getString\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar dicomwebClient = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n factory(exports);\n}(commonjsGlobal, (function (exports) {\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Converts a Uint8Array to a String.\n * @param {Uint8Array} array that should be converted\n * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0)\n * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array)\n * @returns {String}\n */\n function uint8ArrayToString(arr, offset, limit) {\n offset = offset || 0;\n limit = limit || arr.length - offset;\n var str = '';\n\n for (var i = offset; i < offset + limit; i++) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n }\n /**\n * Converts a String to a Uint8Array.\n * @param {String} str string that should be converted\n * @returns {Uint8Array}\n */\n\n\n function stringToUint8Array(str) {\n var arr = new Uint8Array(str.length);\n\n for (var i = 0, j = str.length; i < j; i++) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n }\n /**\n * Identifies the boundary in a multipart/related message header.\n * @param {String} header message header\n * @returns {String} boundary\n */\n\n\n function identifyBoundary(header) {\n var parts = header.split('\\r\\n');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].substr(0, 2) === '--') {\n return parts[i];\n }\n }\n }\n /**\n * Checks whether a given token is contained by a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be present\n * @param {String} offset offset in message content from where search should start\n * @returns {Boolean} whether message contains token at offset\n */\n\n\n function containsToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (message + token.length > message.length) {\n return false;\n }\n\n var index = offset;\n\n for (var i = 0; i < token.length; i++) {\n if (token[i] !== message[index++]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Finds a given token in a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be found\n * @param {String} offset message body offset from where search should start\n * @returns {Boolean} whether message has a part at given offset or not\n */\n\n\n function findToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var messageLength = message.length;\n\n for (var i = offset; i < messageLength; i++) {\n // If the first value of the message matches\n // the first value of the token, check if\n // this is the full token.\n if (message[i] === token[0]) {\n if (containsToken(message, token, i)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n /**\n * @typedef {Object} MultipartEncodedData\n * @property {ArrayBuffer} data The encoded Multipart Data\n * @property {String} boundary The boundary used to divide pieces of the encoded data\n */\n\n /**\n * Encode one or more DICOM datasets into a single body so it can be\n * sent using the Multipart Content-Type.\n *\n * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers.\n * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated.\n * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it.\n */\n\n\n function multipartEncode(datasets) {\n var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid();\n var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'application/dicom';\n var contentTypeString = \"Content-Type: \".concat(contentType);\n var header = \"\\r\\n--\".concat(boundary, \"\\r\\n\").concat(contentTypeString, \"\\r\\n\\r\\n\");\n var footer = \"\\r\\n--\".concat(boundary, \"--\");\n var headerArray = stringToUint8Array(header);\n var footerArray = stringToUint8Array(footer);\n var headerLength = headerArray.length;\n var footerLength = footerArray.length;\n var length = 0; // Calculate the total length for the final array\n\n var contentArrays = datasets.map(function (datasetBuffer) {\n var contentArray = new Uint8Array(datasetBuffer);\n var contentLength = contentArray.length;\n length += headerLength + contentLength + footerLength;\n return contentArray;\n }); // Allocate the array\n\n var multipartArray = new Uint8Array(length); // Set the initial header\n\n multipartArray.set(headerArray, 0); // Write each dataset into the multipart array\n\n var position = 0;\n contentArrays.forEach(function (contentArray) {\n var contentLength = contentArray.length;\n multipartArray.set(headerArray, position);\n multipartArray.set(contentArray, position + headerLength);\n position += headerLength + contentArray.length;\n });\n multipartArray.set(footerArray, position);\n return {\n data: multipartArray.buffer,\n boundary: boundary\n };\n }\n /**\n * Decode a Multipart encoded ArrayBuffer and return the components as an Array.\n *\n * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message\n * @returns {Array} The content\n */\n\n function multipartDecode(response) {\n var message = new Uint8Array(response); // First look for the multipart mime header\n\n var separator = stringToUint8Array('\\r\\n\\r\\n');\n var headerIndex = findToken(message, separator);\n\n if (headerIndex === -1) {\n throw new Error('Response message has no multipart mime header');\n }\n\n var header = uint8ArrayToString(message, 0, headerIndex);\n var boundaryString = identifyBoundary(header);\n\n if (!boundaryString) {\n throw new Error('Header of response message does not specify boundary');\n }\n\n var boundary = stringToUint8Array(boundaryString);\n var boundaryLength = boundary.length;\n var components = [];\n var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries\n\n var boundaryIndex;\n\n while (boundaryIndex !== -1) {\n // Search for the next boundary in the message, starting\n // from the current offset position\n boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here.\n\n if (boundaryIndex === -1) {\n break;\n } // Extract data from response message, excluding \"\\r\\n\"\n\n\n var spacingLength = 2;\n var length = boundaryIndex - offset - spacingLength;\n var data = response.slice(offset, offset + length); // Add the data to the array of results\n\n components.push(data); // Move the offset to the end of the current section,\n // plus the identified boundary\n\n offset += length + spacingLength + boundaryLength;\n }\n\n return components;\n }\n /**\n * Create a random GUID\n *\n * @return {string}\n */\n\n\n function guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n function isEmptyObject(obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n }\n\n var getFirstResult = function getFirstResult(result) {\n return result[0];\n };\n\n var MIMETYPES = {\n DICOM: 'application/dicom',\n DICOM_JSON: 'application/dicom+json',\n OCTET_STREAM: 'application/octet-stream',\n JPEG: 'image/jpeg',\n PNG: 'image/png'\n };\n /**\n * Class for interacting with DICOMweb RESTful services.\n */\n\n var DICOMwebClient =\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {Object} options (choices: \"url\", \"username\", \"password\", \"headers\")\n */\n function DICOMwebClient(options) {\n _classCallCheck(this, DICOMwebClient);\n\n this.baseURL = options.url;\n\n if (!this.baseURL) {\n console.error('no DICOMweb base url provided - calls will fail');\n }\n\n if ('username' in options) {\n this.username = options.username;\n\n if (!('password' in options)) {\n console.error('no password provided to authenticate with DICOMweb service');\n }\n\n this.password = options.password;\n }\n\n if ('qidoURLPrefix' in options) {\n console.log(\"use URL prefix for QIDO-RS: \".concat(options.qidoURLPrefix));\n this.qidoURL = this.baseURL + '/' + options.qidoURLPrefix;\n } else {\n this.qidoURL = this.baseURL;\n }\n\n if ('wadoURLPrefix' in options) {\n console.log(\"use URL prefix for WADO-RS: \".concat(options.wadoURLPrefix));\n this.wadoURL = this.baseURL + '/' + options.wadoURLPrefix;\n } else {\n this.wadoURL = this.baseURL;\n }\n\n if ('stowURLPrefix' in options) {\n console.log(\"use URL prefix for STOW-RS: \".concat(options.stowURLPrefix));\n this.stowURL = this.baseURL + '/' + options.stowURLPrefix;\n } else {\n this.stowURL = this.baseURL;\n }\n\n this.headers = options.headers || {};\n }\n\n _createClass(DICOMwebClient, [{\n key: \"_httpRequest\",\n value: function _httpRequest(url, method, headers) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(method, url, true);\n\n if ('responseType' in options) {\n request.responseType = options.responseType;\n }\n\n if (_typeof(headers) === 'object') {\n Object.keys(headers).forEach(function (key) {\n request.setRequestHeader(key, headers[key]);\n });\n } // now add custom headers from the user\n // (e.g. access tokens)\n\n\n var userHeaders = _this.headers;\n Object.keys(userHeaders).forEach(function (key) {\n request.setRequestHeader(key, userHeaders[key]);\n }); // Event triggered when upload starts\n\n request.onloadstart = function (event) {//console.log('upload started: ', url)\n }; // Event triggered when upload ends\n\n\n request.onloadend = function (event) {//console.log('upload finished')\n }; // Handle response message\n\n\n request.onreadystatechange = function (event) {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.response);\n } else if (request.status === 202) {\n console.warn('some resources already existed: ', request);\n resolve(request.response);\n } else if (request.status === 204) {\n console.warn('empty response for request: ', request);\n resolve([]);\n } else {\n console.error('request failed: ', request);\n var error = new Error('request failed');\n error.request = request;\n error.response = request.response;\n error.status = request.status;\n console.error(error);\n console.error(error.response);\n reject(error);\n }\n }\n }; // Event triggered while download progresses\n\n\n if ('progressCallback' in options) {\n if (typeof options.progressCallback === 'function') {\n request.onprogress = options.progressCallback;\n }\n } // request.onprogress = function (event) {\n // const loaded = progress.loaded;\n // let total;\n // let percentComplete;\n // if (progress.lengthComputable) {\n // total = progress.total;\n // percentComplete = Math.round((loaded / total) * 100);\n // j\n // // console.log('download progress: ', percentComplete, ' %');\n // return(percentComplete);\n // };\n\n\n if ('data' in options) {\n request.send(options.data);\n } else {\n request.send();\n }\n });\n }\n }, {\n key: \"_httpGet\",\n value: function _httpGet(url, headers, responseType, progressCallback) {\n return this._httpRequest(url, 'get', headers, {\n responseType: responseType,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpGetApplicationJson\",\n value: function _httpGetApplicationJson(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var progressCallback = arguments.length > 2 ? arguments[2] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': MIMETYPES.DICOM_JSON\n };\n var responseType = 'json';\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpGetByMimeType\",\n value: function _httpGetByMimeType(url, mimeType, params) {\n var responseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'arraybuffer';\n var progressCallback = arguments.length > 4 ? arguments[4] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': \"multipart/related; type=\\\"\".concat(mimeType, \"\\\"\")\n };\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpPost\",\n value: function _httpPost(url, headers, data, progressCallback) {\n return this._httpRequest(url, 'post', headers, {\n data: data,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpPostApplicationJson\",\n value: function _httpPostApplicationJson(url, data, progressCallback) {\n var headers = {\n 'Content-Type': MIMETYPES.DICOM_JSON\n };\n return this._httpPost(url, headers, data, progressCallback);\n }\n /**\n * Searches for DICOM studies.\n * @param {Object} options options object\n * @return {Array} study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2)\n */\n\n }, {\n key: \"searchForStudies\",\n value: function searchForStudies() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.log('search for studies');\n var url = this.qidoURL + '/studies';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM study.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the study\n */\n\n }, {\n key: \"retrieveStudyMetadata\",\n value: function retrieveStudyMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of study metadata');\n }\n\n console.log(\"retrieve metadata of study \".concat(options.studyInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM series.\n * @param {Object} options options object\n * @returns {Array} series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a)\n */\n\n }, {\n key: \"searchForSeries\",\n value: function searchForSeries() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n console.log(\"search series of study \".concat(options.studyInstanceUID));\n url += '/studies/' + options.studyInstanceUID;\n }\n\n url += '/series';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM series.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the series\n */\n\n }, {\n key: \"retrieveSeriesMetadata\",\n value: function retrieveSeriesMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of series metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of series metadata');\n }\n\n console.log(\"retrieve metadata of series \".concat(options.seriesInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM instances.\n * @param {Object} options options object\n * @returns {Array} instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b)\n */\n\n }, {\n key: \"searchForInstances\",\n value: function searchForInstances() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n url += '/studies/' + options.studyInstanceUID;\n\n if ('seriesInstanceUID' in options) {\n console.log(\"search for instances of series \".concat(options.seriesInstanceUID));\n url += '/series/' + options.seriesInstanceUID;\n } else {\n console.log(\"search for instances of study \".concat(options.studyInstanceUID));\n }\n } else {\n console.log('search for instances');\n }\n\n url += '/instances';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /** Returns a WADO-URI URL for an instance\n * @param {Object} options options object\n * @returns {String} WADO-URI URL\n */\n\n }, {\n key: \"buildInstanceWadoURIUrl\",\n value: function buildInstanceWadoURIUrl(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required.');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required.');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required.');\n }\n\n var contentType = options.contentType || MIMETYPES.DICOM;\n var transferSyntax = options.transferSyntax || '*';\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(options.studyInstanceUID));\n params.push(\"seriesUID=\".concat(options.seriesInstanceUID));\n params.push(\"objectUID=\".concat(options.sopInstanceUID));\n params.push(\"contentType=\".concat(contentType));\n params.push(\"transferSyntax=\".concat(transferSyntax));\n var paramString = params.join('&');\n return \"\".concat(this.wadoURL, \"?\").concat(paramString);\n }\n /**\n * Retrieves metadata for a DICOM instance.\n *\n * @param {Object} options object\n * @returns {Object} metadata elements in DICOM JSON format\n */\n\n }, {\n key: \"retrieveInstanceMetadata\",\n value: function retrieveInstanceMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance metadata');\n }\n\n console.log(\"retrieve metadata of instance \".concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFrames\",\n value: function retrieveInstanceFrames(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of instance frames');\n }\n\n console.log(\"retrieve frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString();\n var mimeType = options.mimeType ? \"\".concat(options.mimeType) : MIMETYPES.OCTET_STREAM;\n return this._httpGetByMimeType(url, mimeType).then(multipartDecode);\n }\n /**\n * Retrieves rendered frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFramesRendered\",\n value: function retrieveInstanceFramesRendered(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of rendered instance frames');\n }\n\n console.log(\"retrieve rendered frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString() + '/rendered';\n var headers = {}; // The choice of an acceptable media type depends on a variety of things:\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/chapter_6.html#table_6.1.1-3\n\n if ('mimeType' in options) {\n headers['Accept'] = options.mimeType;\n }\n\n var responseType = 'arraybuffer';\n return this._httpGet(url, headers, responseType);\n }\n /**\n * Retrieves a DICOM instance.\n * @param {Object} options options object\n * @returns {Arraybuffer} DICOM Part 10 file as Arraybuffer\n */\n\n }, {\n key: \"retrieveInstance\",\n value: function retrieveInstance(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Retrieves a set of DICOM instance for a series.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveSeries\",\n value: function retrieveSeries(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves a set of DICOM instance for a study.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveStudy\",\n value: function retrieveStudy(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves and parses BulkData from a BulkDataURI location.\n * Decodes the multipart encoded data and returns the resulting data\n * as an ArrayBuffer.\n *\n * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html\n *\n * @param {Object} options options object\n * @return {Promise}\n */\n\n }, {\n key: \"retrieveBulkData\",\n value: function retrieveBulkData(options) {\n if (!('BulkDataURI' in options)) {\n throw new Error('BulkDataURI is required.');\n }\n\n return this._httpGetByMimeType(options.BulkDataURI, MIMETYPES.OCTET_STREAM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Stores DICOM instances.\n *\n * @param {Object} options options object\n */\n\n }, {\n key: \"storeInstances\",\n value: function storeInstances(options) {\n if (!('datasets' in options)) {\n throw new Error('datasets are required for storing');\n }\n\n var url = \"\".concat(this.stowURL, \"/studies\");\n\n if ('studyInstanceUID' in options) {\n url += \"/\".concat(options.studyInstanceUID);\n }\n\n var _multipartEncode = multipartEncode(options.datasets),\n data = _multipartEncode.data,\n boundary = _multipartEncode.boundary;\n\n var headers = {\n 'Content-Type': \"multipart/related; type=application/dicom; boundary=\".concat(boundary)\n };\n return this._httpPost(url, headers, data, options.progressCallback);\n }\n }], [{\n key: \"_parseQueryParameters\",\n value: function _parseQueryParameters() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var queryString = '?';\n Object.keys(params).forEach(function (key, index) {\n if (index !== 0) {\n queryString += '&';\n }\n\n queryString += key + '=' + encodeURIComponent(params[key]);\n });\n return queryString;\n }\n }]);\n\n return DICOMwebClient;\n }();\n\n function findSubstring(str, before, after) {\n var beforeIndex = str.lastIndexOf(before) + before.length;\n\n if (beforeIndex < before.length) {\n return null;\n }\n\n if (after !== undefined) {\n var afterIndex = str.lastIndexOf(after);\n\n if (afterIndex < 0) {\n return null;\n } else {\n return str.substring(beforeIndex, afterIndex);\n }\n }\n\n return str.substring(beforeIndex);\n }\n\n function getStudyInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"studies/\", \"/series\");\n\n if (!uid) {\n uid = findSubstring(uri, \"studies/\");\n }\n\n if (!uid) {\n console.debug('Study Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSeriesInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"series/\", \"/instances\");\n\n if (!uid) {\n uid = findSubstring(uri, \"series/\");\n }\n\n if (!uid) {\n console.debug('Series Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSOPInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"/instances/\", \"/frames\");\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\", \"/metadata\");\n }\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\");\n }\n\n if (!uid) {\n console.debug('SOP Instance UID could not be dertermined from URI\"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getFrameNumbersFromUri(uri) {\n var numbers = findSubstring(uri, \"/frames/\", \"/rendered\");\n\n if (!numbers) {\n numbers = findSubstring(uri, \"/frames/\");\n }\n\n if (numbers === undefined) {\n console.debug('Frames Numbers could not be dertermined from URI\"' + uri + '\"');\n }\n\n return numbers.split(',');\n }\n\n var version = '0.3.2';\n\n var api = {\n DICOMwebClient: DICOMwebClient\n };\n var utils = {\n getStudyInstanceUIDFromUri: getStudyInstanceUIDFromUri,\n getSeriesInstanceUIDFromUri: getSeriesInstanceUIDFromUri,\n getSOPInstanceUIDFromUri: getSOPInstanceUIDFromUri,\n getFrameNumbersFromUri: getFrameNumbersFromUri\n };\n\n exports.api = api;\n exports.utils = utils;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n});\n\nvar DICOMwebClient = unwrapExports(dicomwebClient);\n\n/**\n * Parses data returned from a QIDO search and transforms it into\n * an array of series that are present in the study\n *\n * @param server The DICOM server\n * @param studyInstanceUid\n * @param resultData\n * @returns {Array} Series List\n */\n\nfunction resultDataToStudyMetadata(server, studyInstanceUid, resultData) {\n var seriesMap = {};\n var seriesList = [];\n resultData.forEach(function (instance) {\n // Use seriesMap to cache series data\n // If the series instance UID has already been used to\n // process series data, continue using that series\n var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n var series = seriesMap[seriesInstanceUid]; // If no series data exists in the seriesMap cache variable,\n // process any available series data\n\n if (!series) {\n series = {\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getString(instance['00200011']),\n instances: []\n }; // Save this data in the seriesMap cache variable\n\n seriesMap[seriesInstanceUid] = series;\n seriesList.push(series);\n } // The uri for the dicomweb\n // NOTE: DCM4CHEE seems to return the data zipped\n // NOTE: Orthanc returns the data with multi-part mime which cornerstoneWADOImageLoader doesn't\n // know how to parse yet\n //var uri = DICOMWeb.getString(instance['00081190']);\n //uri = uri.replace('wado-rs', 'dicom-web');\n // manually create a WADO-URI from the UIDs\n // NOTE: Haven't been able to get Orthanc's WADO-URI to work yet - maybe its not configured?\n\n\n var sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n var uri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom'; // Add this instance to the current series\n\n series.instances.push({\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n sopInstanceUid: sopInstanceUid,\n uri: uri,\n instanceNumber: DICOMWeb.getString(instance['00200013'])\n });\n });\n return seriesList;\n}\n/**\n * Retrieve a set of instances using a QIDO call\n * @param server\n * @param studyInstanceUid\n * @throws ECONNREFUSED\n * @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}\n */\n\n\nfunction Instances(server, studyInstanceUid) {\n // TODO: Are we using this function anywhere?? Can we remove it?\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);\n var options = {\n studyInstanceUID: studyInstanceUid\n };\n return dicomWeb.searchForInstances(options).then(function (result) {\n return {\n wadoUriRoot: server.wadoUriRoot,\n studyInstanceUid: studyInstanceUid,\n seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)\n };\n });\n}\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$1(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString(new Date(filter.studyDateFrom));\n var dateTo = dateToString(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$1(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies);\n}\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar WADOProxy = {\n convertURL: function convertURL(url, server) {\n // TODO: Remove all WADOProxy stuff from this file\n return url;\n }\n};\n\nfunction parseFloatArray(obj) {\n var result = [];\n\n if (!obj) {\n return result;\n }\n\n var objs = obj.split('\\\\');\n\n for (var i = 0; i < objs.length; i++) {\n result.push(parseFloat(objs[i]));\n }\n\n return result;\n}\n/**\n * Simple cache schema for retrieved color palettes.\n */\n\n\nvar paletteColorCache = {\n count: 0,\n maxAge: 24 * 60 * 60 * 1000,\n // 24h cache?\n entries: {},\n isValidUID: function isValidUID(paletteUID) {\n return typeof paletteUID === 'string' && paletteUID.length > 0;\n },\n get: function get(paletteUID) {\n var entry = null;\n\n if (this.entries.hasOwnProperty(paletteUID)) {\n entry = this.entries[paletteUID]; // check how the entry is...\n\n if (Date.now() - entry.time > this.maxAge) {\n // entry is too old... remove entry.\n delete this.entries[paletteUID];\n this.count--;\n entry = null;\n }\n }\n\n return entry;\n },\n add: function add(entry) {\n if (this.isValidUID(entry.uid)) {\n var paletteUID = entry.uid;\n\n if (this.entries.hasOwnProperty(paletteUID) !== true) {\n this.count++; // increment cache entry count...\n }\n\n entry.time = Date.now();\n this.entries[paletteUID] = entry; // @TODO: Add logic to get rid of old entries and reduce memory usage...\n }\n }\n};\n/** Returns a WADO url for an instance\n *\n * @param studyInstanceUid\n * @param seriesInstanceUid\n * @param sopInstanceUid\n * @returns {string}\n */\n\nfunction buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(studyInstanceUid));\n params.push(\"seriesUID=\".concat(seriesInstanceUid));\n params.push(\"objectUID=\".concat(sopInstanceUid));\n params.push('contentType=application/dicom');\n params.push('transferSyntax=*');\n var paramString = params.join('&');\n return \"\".concat(server.wadoUriRoot, \"?\").concat(paramString);\n}\n\nfunction buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n return \"\".concat(server.wadoRoot, \"/studies/\").concat(studyInstanceUid, \"/series/\").concat(seriesInstanceUid, \"/instances/\").concat(sopInstanceUid);\n}\n\nfunction buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {\n var baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n frame = frame != null || 1;\n return \"\".concat(baseWadoRsUri, \"/frames/\").concat(frame);\n}\n/**\n * Parses the SourceImageSequence, if it exists, in order\n * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID\n * is used to refer to this image in any accompanying DICOM-SR documents.\n *\n * @param instance\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getSourceImageInstanceUid(instance) {\n // TODO= Parse the whole Source Image Sequence\n // This is a really poor workaround for now.\n // Later we should probably parse the whole sequence.\n var SourceImageSequence = instance['00082112'];\n\n if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) {\n return SourceImageSequence.Value[0]['00081155'].Value[0];\n }\n}\n\nfunction getPaletteColor(server, instance, tag, lutDescriptor) {\n var numLutEntries = lutDescriptor[0];\n var bits = lutDescriptor[2];\n var uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server); // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning\n // incorrect bulk data URIs\n\n if (server.wadoRoot.indexOf('https') === 0 && !uri.includes('https')) {\n uri = uri.replace('http', 'https');\n }\n\n var config = {\n url: server.wadoRoot,\n //BulkDataURI is absolute, so this isn't used\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var options = {\n BulkDataURI: uri\n };\n\n var readUInt16 = function readUInt16(byteArray, position) {\n return byteArray[position] + byteArray[position + 1] * 256;\n };\n\n var arrayBufferToPaletteColorLUT = function arrayBufferToPaletteColorLUT(arraybuffer) {\n var byteArray = new Uint8Array(arraybuffer);\n var lut = [];\n\n for (var i = 0; i < numLutEntries; i++) {\n if (bits === 16) {\n lut[i] = readUInt16(byteArray, i * 2);\n } else {\n lut[i] = byteArray[i];\n }\n }\n\n return lut;\n };\n\n return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT);\n}\n/**\n * Fetch palette colors for instances with \"PALETTE COLOR\" photometricInterpretation.\n *\n * @param server {Object} Current server;\n * @param instance {Object} The retrieved instance metadata;\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getPaletteColors(_x, _x2, _x3) {\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction _getPaletteColors() {\n _getPaletteColors = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(server, instance, lutDescriptor) {\n var paletteUID;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n paletteUID = DICOMWeb.getString(instance['00281199']);\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (paletteColorCache.isValidUID(paletteUID)) {\n var _entry = paletteColorCache.get(paletteUID);\n\n if (_entry) {\n return resolve(_entry);\n }\n } // no entry in cache... Fetch remote data.\n\n\n var r = getPaletteColor(server, instance, '00281201', lutDescriptor);\n var g = getPaletteColor(server, instance, '00281202', lutDescriptor);\n var b = getPaletteColor(server, instance, '00281203', lutDescriptor);\n var promises = [r, g, b];\n Promise.all(promises).then(function (args) {\n entry = {\n red: args[0],\n green: args[1],\n blue: args[2]\n }; // when paletteUID is present, the entry can be cached...\n\n entry.uid = paletteUID;\n paletteColorCache.add(entry);\n resolve(entry);\n });\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction getFrameIncrementPointer(element) {\n var frameIncrementPointerNames = {\n '00181065': 'frameTimeVector',\n '00181063': 'frameTime'\n };\n\n if (!element || !element.Value || !element.Value.length) {\n return;\n }\n\n var value = element.Value[0];\n return frameIncrementPointerNames[value];\n}\n\nfunction getRadiopharmaceuticalInfo(instance) {\n var modality = DICOMWeb.getString(instance['00080060']);\n\n if (modality !== 'PT') {\n return;\n }\n\n var radiopharmaceuticalInfo = instance['00540016'];\n\n if (radiopharmaceuticalInfo === undefined || !radiopharmaceuticalInfo.Value || !radiopharmaceuticalInfo.Value.length) {\n return;\n }\n\n var firstPetRadiopharmaceuticalInfo = radiopharmaceuticalInfo.Value[0];\n return {\n radiopharmaceuticalStartTime: DICOMWeb.getString(firstPetRadiopharmaceuticalInfo['00181072']),\n radionuclideTotalDose: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181074']),\n radionuclideHalfLife: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181075'])\n };\n}\n/**\n * Parses result data from a WADO search into Study MetaData\n * Returns an object populated with study metadata, including the\n * series list.\n *\n * @param server\n * @param studyInstanceUid\n * @param resultData\n * @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}\n */\n\n\nfunction resultDataToStudyMetadata$1(_x4, _x5, _x6) {\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n/**\n * Retrieve Study MetaData from a DICOM server using a WADO call\n *\n * @param server\n * @param studyInstanceUid\n * @returns {Promise}\n */\n\n\nfunction _resultDataToStudyMetadata() {\n _resultDataToStudyMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee3(server, studyInstanceUid, resultData) {\n var _studyData;\n\n var anInstance, studyData, seriesMap;\n return regenerator.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (resultData.length) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 2:\n anInstance = resultData[0];\n\n if (anInstance) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 5:\n studyData = (_studyData = {\n seriesList: [],\n studyInstanceUid: studyInstanceUid,\n wadoUriRoot: server.wadoUriRoot,\n patientName: DICOMWeb.getName(anInstance['00100010']),\n patientId: DICOMWeb.getString(anInstance['00100020']),\n patientAge: DICOMWeb.getNumber(anInstance['00101010']),\n patientSize: DICOMWeb.getNumber(anInstance['00101020']),\n patientWeight: DICOMWeb.getNumber(anInstance['00101030']),\n accessionNumber: DICOMWeb.getString(anInstance['00080050']),\n studyDate: DICOMWeb.getString(anInstance['00080020']),\n modalities: DICOMWeb.getString(anInstance['00080061']),\n studyDescription: DICOMWeb.getString(anInstance['00081030']),\n imageCount: DICOMWeb.getString(anInstance['00201208'])\n }, _defineProperty(_studyData, \"studyInstanceUid\", DICOMWeb.getString(anInstance['0020000D'])), _defineProperty(_studyData, \"institutionName\", DICOMWeb.getString(anInstance['00080080'])), _studyData);\n seriesMap = {};\n _context3.next = 9;\n return Promise.all(resultData.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2(instance) {\n var seriesInstanceUid, series, sopInstanceUid, wadouri, baseWadoRsUri, wadorsuri, instanceSummary, redPaletteColorLookupTableDescriptor, greenPaletteColorLookupTableDescriptor, bluePaletteColorLookupTableDescriptor, palettes;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n series = seriesMap[seriesInstanceUid];\n\n if (!series) {\n series = {\n seriesDescription: DICOMWeb.getString(instance['0008103E']),\n modality: DICOMWeb.getString(instance['00080060']),\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getNumber(instance['00200011']),\n seriesDate: DICOMWeb.getString(instance['00080021']),\n seriesTime: DICOMWeb.getString(instance['00080031']),\n instances: []\n };\n seriesMap[seriesInstanceUid] = series;\n studyData.seriesList.push(series);\n }\n\n sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n instanceSummary = {\n imageType: DICOMWeb.getString(instance['00080008']),\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n modality: DICOMWeb.getString(instance['00080060']),\n sopInstanceUid: sopInstanceUid,\n instanceNumber: DICOMWeb.getNumber(instance['00200013']),\n imagePositionPatient: DICOMWeb.getString(instance['00200032']),\n imageOrientationPatient: DICOMWeb.getString(instance['00200037']),\n frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),\n sliceLocation: DICOMWeb.getNumber(instance['00201041']),\n samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),\n photometricInterpretation: DICOMWeb.getString(instance['00280004']),\n planarConfiguration: DICOMWeb.getNumber(instance['00280006']),\n rows: DICOMWeb.getNumber(instance['00280010']),\n columns: DICOMWeb.getNumber(instance['00280011']),\n pixelSpacing: DICOMWeb.getString(instance['00280030']),\n pixelAspectRatio: DICOMWeb.getString(instance['00280034']),\n bitsAllocated: DICOMWeb.getNumber(instance['00280100']),\n bitsStored: DICOMWeb.getNumber(instance['00280101']),\n highBit: DICOMWeb.getNumber(instance['00280102']),\n pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),\n smallestPixelValue: DICOMWeb.getNumber(instance['00280106']),\n largestPixelValue: DICOMWeb.getNumber(instance['00280107']),\n windowCenter: DICOMWeb.getString(instance['00281050']),\n windowWidth: DICOMWeb.getString(instance['00281051']),\n rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),\n rescaleSlope: DICOMWeb.getNumber(instance['00281053']),\n rescaleType: DICOMWeb.getNumber(instance['00281054']),\n sourceImageInstanceUid: getSourceImageInstanceUid(instance),\n laterality: DICOMWeb.getString(instance['00200062']),\n viewPosition: DICOMWeb.getString(instance['00185101']),\n acquisitionDateTime: DICOMWeb.getString(instance['0008002A']),\n numberOfFrames: DICOMWeb.getNumber(instance['00280008']),\n frameIncrementPointer: getFrameIncrementPointer(instance['00280009']),\n frameTime: DICOMWeb.getNumber(instance['00181063']),\n frameTimeVector: parseFloatArray(DICOMWeb.getString(instance['00181065'])),\n sliceThickness: DICOMWeb.getNumber(instance['00180050']),\n lossyImageCompression: DICOMWeb.getString(instance['00282110']),\n derivationDescription: DICOMWeb.getString(instance['00282111']),\n lossyImageCompressionRatio: DICOMWeb.getString(instance['00282112']),\n lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),\n echoNumber: DICOMWeb.getString(instance['00180086']),\n contrastBolusAgent: DICOMWeb.getString(instance['00180010']),\n radiopharmaceuticalInfo: getRadiopharmaceuticalInfo(instance),\n baseWadoRsUri: baseWadoRsUri,\n wadouri: WADOProxy.convertURL(wadouri, server),\n wadorsuri: WADOProxy.convertURL(wadorsuri, server),\n imageRendering: server.imageRendering,\n thumbnailRendering: server.thumbnailRendering\n }; // Get additional information if the instance uses \"PALETTE COLOR\" photometric interpretation\n\n if (!(instanceSummary.photometricInterpretation === 'PALETTE COLOR')) {\n _context2.next = 16;\n break;\n }\n\n redPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281101']));\n greenPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281102']));\n bluePaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281103']));\n _context2.next = 14;\n return getPaletteColors(server, instance, redPaletteColorLookupTableDescriptor);\n\n case 14:\n palettes = _context2.sent;\n\n if (palettes) {\n if (palettes.uid) {\n instanceSummary.paletteColorLookupTableUID = palettes.uid;\n }\n\n instanceSummary.redPaletteColorLookupTableData = palettes.red;\n instanceSummary.greenPaletteColorLookupTableData = palettes.green;\n instanceSummary.bluePaletteColorLookupTableData = palettes.blue;\n instanceSummary.redPaletteColorLookupTableDescriptor = redPaletteColorLookupTableDescriptor;\n instanceSummary.greenPaletteColorLookupTableDescriptor = greenPaletteColorLookupTableDescriptor;\n instanceSummary.bluePaletteColorLookupTableDescriptor = bluePaletteColorLookupTableDescriptor;\n }\n\n case 16:\n series.instances.push(instanceSummary);\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x9) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n return _context3.abrupt(\"return\", studyData);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n\nfunction RetrieveMetadata(_x7, _x8) {\n return _RetrieveMetadata.apply(this, arguments);\n}\n\nfunction _RetrieveMetadata() {\n _RetrieveMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee4(server, studyInstanceUid) {\n var config, dicomWeb, options;\n return regenerator.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n config = {\n url: server.wadoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n options = {\n studyInstanceUID: studyInstanceUid\n };\n return _context4.abrupt(\"return\", dicomWeb.retrieveStudyMetadata(options).then(function (result) {\n return resultDataToStudyMetadata$1(server, studyInstanceUid, result);\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n return _RetrieveMetadata.apply(this, arguments);\n}\n\n// DICOMWeb instance, study, and metadata retrieval\nvar WADO = {\n RetrieveMetadata: RetrieveMetadata\n};\nvar QIDO = {\n Studies: Studies,\n Instances: Instances\n};\n\nvar log$1 = {\n error: console.error,\n warn: console.warn,\n info: console.log,\n debug: console.debug,\n time: console.time,\n timeEnd: console.timeEnd\n};\n\n// promises and prevent unnecessary subsequent calls to the server\n\nvar StudyMetaDataPromises = new Map();\n/**\n * Delete the cached study metadata retrieval promise to ensure that the browser will\n * re-retrieve the study metadata when it is next requested\n *\n * @param {String} studyInstanceUid The UID of the Study to be removed from cache\n *\n */\n\nfunction deleteStudyMetadataPromise(studyInstanceUid) {\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n StudyMetaDataPromises.delete(studyInstanceUid);\n }\n}\n/**\n * Retrieves study metadata using a server call\n *\n * @param {String} studyInstanceUid The UID of the Study to be retrieved\n * @returns {Promise} that will be resolved with the metadata or rejected with the error\n */\n\nfunction retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids) {\n // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all\n // and further requests for that metadata will always fail. On failure, we probably need to remove the\n // corresponding promise from the \"StudyMetaDataPromises\" map...\n // If the StudyMetaDataPromises cache already has a pending or resolved promise related to the\n // given studyInstanceUid, then that promise is returned\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n return StudyMetaDataPromises.get(studyInstanceUid);\n }\n\n var seriesKeys = Array.isArray(seriesInstanceUids) ? '|' + seriesInstanceUids.join('|') : '';\n var timingKey = \"retrieveStudyMetadata[\".concat(studyInstanceUid).concat(seriesKeys, \"]\");\n log$1.time(timingKey); // Create a promise to handle the data retrieval\n\n var promise = new Promise(function (resolve, reject) {\n // If no study metadata is in the cache variable, we need to retrieve it from\n // the server with a call.\n if (server.type === 'dicomWeb' && server.requestOptions.requestFromBrowser === true) {\n RetrieveMetadata(server, studyInstanceUid).then(function (data) {\n resolve(data);\n }, reject);\n }\n }); // Store the promise in cache\n\n StudyMetaDataPromises.set(studyInstanceUid, promise);\n return promise;\n}\n\n/**\n * Constants\n */\nvar STRING$1 = 'string';\nvar NUMBER$1 = 'number';\nvar FUNCTION = 'function';\nvar OBJECT = 'object';\n/**\n * Class Definition\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor and Instance Methods\n */\n function Metadata(data, uid) {\n _classCallCheck(this, Metadata);\n\n // Define the main \"_data\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n Object.defineProperty(this, '_data', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: data\n }); // Define the main \"_uid\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_uid', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: uid\n }); // Define \"_custom\" properties as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_custom', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n });\n }\n\n _createClass(Metadata, [{\n key: \"getData\",\n value: function getData() {\n return this._data;\n }\n }, {\n key: \"getDataProperty\",\n value: function getDataProperty(propertyName) {\n var propertyValue;\n var _data = this._data;\n\n if (_data instanceof Object || _typeof(_data) === OBJECT && _data !== null) {\n propertyValue = _data[propertyName];\n }\n\n return propertyValue;\n }\n /**\n * Get unique object ID\n */\n\n }, {\n key: \"getObjectID\",\n value: function getObjectID() {\n return this._uid;\n }\n /**\n * Set custom attribute value\n * @param {String} attribute Custom attribute name\n * @param {Any} value Custom attribute value\n */\n\n }, {\n key: \"setCustomAttribute\",\n value: function setCustomAttribute(attribute, value) {\n this._custom[attribute] = value;\n }\n /**\n * Get custom attribute value\n * @param {String} attribute Custom attribute name\n * @return {Any} Custom attribute value\n */\n\n }, {\n key: \"getCustomAttribute\",\n value: function getCustomAttribute(attribute) {\n return this._custom[attribute];\n }\n /**\n * Check if a custom attribute exists\n * @param {String} attribute Custom attribute name\n * @return {Boolean} True if custom attribute exists or false if not\n */\n\n }, {\n key: \"customAttributeExists\",\n value: function customAttributeExists(attribute) {\n return attribute in this._custom;\n }\n /**\n * Set custom attributes in batch mode.\n * @param {Object} attributeMap An object whose own properties will be used as custom attributes.\n */\n\n }, {\n key: \"setCustomAttributes\",\n value: function setCustomAttributes(attributeMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _custom = this._custom;\n\n for (var attribute in attributeMap) {\n if (_hasOwn.call(attributeMap, attribute)) {\n _custom[attribute] = attributeMap[attribute];\n }\n }\n }\n /**\n * Static Methods\n */\n\n }], [{\n key: \"isValidUID\",\n value: function isValidUID(uid) {\n return _typeof(uid) === STRING$1 && uid.length > 0;\n }\n }, {\n key: \"isValidIndex\",\n value: function isValidIndex(index) {\n return _typeof(index) === NUMBER$1 && index >= 0 && (index | 0) === index;\n }\n }, {\n key: \"isValidCallback\",\n value: function isValidCallback(callback) {\n return _typeof(callback) === FUNCTION;\n }\n }]);\n\n return Metadata;\n}();\n\n// @TODO: improve this object\n\n/**\n * Objects to be used to throw errors\n */\nvar OHIFError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(OHIFError, _Error);\n\n function OHIFError(message) {\n var _this;\n\n _classCallCheck(this, OHIFError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFError).call(this));\n _this.message = message;\n _this.stack = new Error().stack;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return OHIFError;\n}(_wrapNativeSuper(Error));\n\n/**\n * ATTENTION! This class should never depend on StudyMetadata or SeriesMetadata classes as this could\n * possibly cause circular dependency issues.\n */\n\nvar UNDEFINED = 'undefined';\nvar STRING$2 = 'string';\nvar STUDY_INSTANCE_UID = 'x0020000d';\nvar SERIES_INSTANCE_UID = 'x0020000e';\nvar InstanceMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(InstanceMetadata, _Metadata);\n\n function InstanceMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, InstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InstanceMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _sopInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _imageId: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(InstanceMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.sopInstanceUID\n * Same as this.getSOPInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * sopInstanceCollection.findBy({\n * sopInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'sopInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSOPInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the StudyInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this.getTagValue(STUDY_INSTANCE_UID, null);\n }\n /**\n * Returns the SeriesInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this.getTagValue(SERIES_INSTANCE_UID, null);\n }\n /**\n * Returns the SOPInstanceUID of the current instance.\n */\n\n }, {\n key: \"getSOPInstanceUID\",\n value: function getSOPInstanceUID() {\n return this._sopInstanceUID;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getStringValue\",\n value: function getStringValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n\n if (_typeof(value) !== STRING$2 && _typeof(value) !== UNDEFINED) {\n value = value.toString();\n }\n\n return InstanceMetadata.getIndexedValue(value, index, defaultValue);\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getFloatValue\",\n value: function getFloatValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseFloat(value) : value;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getIntValue\",\n value: function getIntValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseInt(value) : value;\n }\n /**\n * @deprecated Please use getTagValue instead.\n */\n\n }, {\n key: \"getRawValue\",\n value: function getRawValue(tagOrProperty, defaultValue) {\n return this.getTagValue(tagOrProperty, defaultValue);\n }\n /**\n * This function should be overriden by specialized classes in order to allow client libraries or viewers to take advantage of the Study Metadata API.\n */\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('InstanceMetadata::getTagValue is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Compares the current instance with another one.\n * @param {InstanceMetadata} instance An instance of the InstanceMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same instance.\n */\n\n }, {\n key: \"equals\",\n value: function equals(instance) {\n var self = this;\n return instance === self || instance instanceof InstanceMetadata && instance.getSOPInstanceUID() === self.getSOPInstanceUID();\n }\n /**\n * Check if the tagOrProperty exists\n * @param {String} tagOrProperty tag or property be checked\n * @return {Boolean} True if the tag or property exists or false if doesn't\n */\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::tagExists is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Get custom image id of a sop instance\n * @return {Any} sop instance image id\n */\n\n }, {\n key: \"getImageId\",\n value: function getImageId(frame) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::getImageId is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Static Methods\n */\n\n /**\n * Get an value based that can be index based. This function is called by all getters. See above functions.\n * - If value is a String and has indexes:\n * - If undefined index: returns an array of the split values.\n * - If defined index:\n * - If invalid: returns defaultValue\n * - If valid: returns the indexed value\n * - If value is not a String, returns default value.\n */\n\n }], [{\n key: \"getIndexedValue\",\n value: function getIndexedValue(value, index, defaultValue) {\n var result = defaultValue;\n\n if (_typeof(value) === STRING$2) {\n var hasIndexValues = value.indexOf('\\\\') !== -1;\n result = value;\n\n if (hasIndexValues) {\n var splitValues = value.split('\\\\');\n\n if (Metadata.isValidIndex(index)) {\n var indexedValue = splitValues[index];\n result = _typeof(indexedValue) !== STRING$2 ? defaultValue : indexedValue;\n } else {\n result = splitValues;\n }\n }\n }\n\n return result;\n }\n }]);\n\n return InstanceMetadata;\n}(Metadata);\n\nvar SeriesMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(SeriesMetadata, _Metadata);\n\n function SeriesMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, SeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SeriesMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _seriesInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _instances: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(SeriesMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.seriesInstanceUID\n * Same as this.getSeriesInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * seriesCollection.findBy({\n * seriesInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSeriesInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the SeriesInstanceUID of the current series.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n /**\n * Append an instance to the current series.\n * @param {InstanceMetadata} instance The instance to be added to the current series.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addInstance\",\n value: function addInstance(instance) {\n var result = false;\n\n if (instance instanceof InstanceMetadata && this.getInstanceByUID(instance.getSOPInstanceUID()) === void 0) {\n this._instances.push(instance);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Get the first instance of the current series retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var found = this.getInstanceByIndex(0);\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n\n return instance;\n }\n /**\n * Find an instance by index.\n * @param {number} index An integer representing a list index.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByIndex\",\n value: function getInstanceByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._instances[index];\n }\n\n return found;\n }\n /**\n * Find an instance by SOPInstanceUID.\n * @param {string} uid An UID string.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByUID\",\n value: function getInstanceByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._instances.find(function (instance) {\n return instance.getSOPInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of instances within the current series.\n * @returns {number} The number of instances in the current series.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._instances.length;\n }\n /**\n * Invokes the supplied callback for each instance in the current series passing\n * two arguments: instance (an InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance in the series.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachInstance\",\n value: function forEachInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._instances.forEach(function (instance, index) {\n callback.call(null, instance, index);\n });\n }\n }\n /**\n * Find the index of an instance inside the series.\n * @param {InstanceMetadata} instance An instance of the SeriesMetadata class.\n * @returns {number} The index of the instance inside the series or -1 if not found.\n */\n\n }, {\n key: \"indexOfInstance\",\n value: function indexOfInstance(instance) {\n return this._instances.indexOf(instance);\n }\n /**\n * Search the associated instances using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._instances.find(function (instance, index) {\n return callback.call(null, instance, index);\n });\n }\n }\n /**\n * Compares the current series with another one.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same series.\n */\n\n }, {\n key: \"equals\",\n value: function equals(series) {\n var self = this;\n return series === self || series instanceof SeriesMetadata && series.getSeriesInstanceUID() === self.getSeriesInstanceUID();\n }\n }]);\n\n return SeriesMetadata;\n}(Metadata);\n\n/**\n * Create a random GUID\n *\n * @return {string}\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nvar OBJECT$1 = 'object';\n/**\n * This class defines an ImageSet object which will be used across the viewer. This object represents\n * a list of images that are associated by any arbitrary criteria being thus content agnostic. Besides the\n * main attributes (images and uid) it allows additional attributes to be appended to it (currently\n * indiscriminately, but this should be changed).\n */\n\nvar ImageSet =\n/*#__PURE__*/\nfunction () {\n function ImageSet(images) {\n _classCallCheck(this, ImageSet);\n\n if (Array.isArray(images) !== true) {\n throw new OHIFError('ImageSet expects an array of images');\n } // @property \"images\"\n\n\n Object.defineProperty(this, 'images', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: images\n }); // @property \"uid\"\n\n Object.defineProperty(this, 'uid', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: guid() // Unique ID of the instance\n\n });\n }\n\n _createClass(ImageSet, [{\n key: \"getUID\",\n value: function getUID() {\n return this.uid;\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this[attribute] = value;\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this[attribute];\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n if (_typeof(attributes) === OBJECT$1 && attributes !== null) {\n var imageSet = this,\n hasOwn = Object.prototype.hasOwnProperty;\n\n for (var attribute in attributes) {\n if (hasOwn.call(attributes, attribute)) {\n imageSet[attribute] = attributes[attribute];\n }\n }\n }\n }\n }, {\n key: \"getImage\",\n value: function getImage(index) {\n return this.images[index];\n }\n }, {\n key: \"sortBy\",\n value: function sortBy(sortingCallback) {\n return this.images.sort(sortingCallback);\n }\n }]);\n\n return ImageSet;\n}();\n\nvar StudyMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(StudyMetadata, _Metadata);\n\n function StudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, StudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _studyInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _displaySets: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstSeries: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(StudyMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.studyInstanceUID\n * Same as this.getStudyInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * studyCollection.findBy({\n * studyInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'studyInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getStudyInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Getter for displaySets\n * @return {Array} Array of display set object\n */\n\n }, {\n key: \"getDisplaySets\",\n value: function getDisplaySets() {\n return this._displaySets.slice();\n }\n /**\n * Set display sets\n * @param {Array} displaySets Array of display sets (ImageSet[])\n */\n\n }, {\n key: \"setDisplaySets\",\n value: function setDisplaySets(displaySets) {\n var _this2 = this;\n\n displaySets.forEach(function (displaySet) {\n return _this2.addDisplaySet(displaySet);\n });\n }\n /**\n * Add a single display set to the list\n * @param {Object} displaySet Display set object\n * @returns {boolean} True on success, false on failure.\n */\n\n }, {\n key: \"addDisplaySet\",\n value: function addDisplaySet(displaySet) {\n if (displaySet instanceof ImageSet) {\n this._displaySets.push(displaySet);\n\n return true;\n }\n\n return false;\n }\n /**\n * Invokes the supplied callback for each display set in the current study passing\n * two arguments: display set (a ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachDisplaySet\",\n value: function forEachDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._displaySets.forEach(function (displaySet, index) {\n callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Search the associated display sets using the supplied callback as criteria. The callback is passed\n * two arguments: display set (an ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"findDisplaySet\",\n value: function findDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._displaySets.find(function (displaySet, index) {\n return callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Retrieve the number of display sets within the current study.\n * @returns {number} The number of display sets in the current study.\n */\n\n }, {\n key: \"getDisplaySetCount\",\n value: function getDisplaySetCount() {\n return this._displaySets.length;\n }\n /**\n * Returns the StudyInstanceUID of the current study.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this._studyInstanceUID;\n }\n /**\n * Getter for series\n * @return {Array} Array of SeriesMetadata object\n */\n\n }, {\n key: \"getSeries\",\n value: function getSeries() {\n return this._series.slice();\n }\n /**\n * Append a series to the current study.\n * @param {SeriesMetadata} series The series to be added to the current study.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addSeries\",\n value: function addSeries(series) {\n var result = false;\n\n if (series instanceof SeriesMetadata && this.getSeriesByUID(series.getSeriesInstanceUID()) === void 0) {\n this._series.push(series);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Find a series by index.\n * @param {number} index An integer representing a list index.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByIndex\",\n value: function getSeriesByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._series[index];\n }\n\n return found;\n }\n /**\n * Find a series by SeriesInstanceUID.\n * @param {string} uid An UID string.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByUID\",\n value: function getSeriesByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._series.find(function (series) {\n return series.getSeriesInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of series within the current study.\n * @returns {number} The number of series in the current study.\n */\n\n }, {\n key: \"getSeriesCount\",\n value: function getSeriesCount() {\n return this._series.length;\n }\n /**\n * Retrieve the number of instances within the current study.\n * @returns {number} The number of instances in the current study.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._series.reduce(function (sum, series) {\n return sum + series.getInstanceCount();\n }, 0);\n }\n /**\n * Invokes the supplied callback for each series in the current study passing\n * two arguments: series (a SeriesMetadata instance) and index (the integer\n * index of the series within the current study)\n * @param {function} callback The callback function which will be invoked for each series instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachSeries\",\n value: function forEachSeries(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._series.forEach(function (series, index) {\n callback.call(null, series, index);\n });\n }\n }\n /**\n * Find the index of a series inside the study.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {number} The index of the series inside the study or -1 if not found.\n */\n\n }, {\n key: \"indexOfSeries\",\n value: function indexOfSeries(series) {\n return this._series.indexOf(series);\n }\n /**\n * It sorts the series based on display sets order. Each series must be an instance\n * of SeriesMetadata and each display sets must be an instance of ImageSet.\n * Useful example of usage:\n * Study data provided by backend does not sort series at all and client-side\n * needs series sorted by the same criteria used for sorting display sets.\n */\n\n }, {\n key: \"sortSeriesByDisplaySets\",\n value: function sortSeriesByDisplaySets() {\n var _this3 = this;\n\n // Object for mapping display sets' index by seriesInstanceUid\n var displaySetsMapping = {}; // Loop through each display set to create the mapping\n\n this.forEachDisplaySet(function (displaySet, index) {\n if (!(displaySet instanceof ImageSet)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets display set at index \".concat(index, \" is not an instance of ImageSet\"));\n } // In case of multiframe studies, just get the first index occurence\n\n\n if (displaySetsMapping[displaySet.seriesInstanceUid] === void 0) {\n displaySetsMapping[displaySet.seriesInstanceUid] = index;\n }\n }); // Clone of actual series\n\n var actualSeries = this.getSeries();\n actualSeries.forEach(function (series, index) {\n if (!(series instanceof SeriesMetadata)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets series at index \".concat(index, \" is not an instance of SeriesMetadata\"));\n } // Get the new series index\n\n\n var seriesIndex = displaySetsMapping[series.getSeriesInstanceUID()]; // Update the series object with the new series position\n\n _this3._series[seriesIndex] = series;\n });\n }\n /**\n * Compares the current study instance with another one.\n * @param {StudyMetadata} study An instance of the StudyMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same study.\n */\n\n }, {\n key: \"equals\",\n value: function equals(study) {\n var self = this;\n return study === self || study instanceof StudyMetadata && study.getStudyInstanceUID() === self.getStudyInstanceUID();\n }\n /**\n * Get the first series of the current study retaining a consistent result across multiple calls.\n * @return {SeriesMetadata} An instance of the SeriesMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstSeries\",\n value: function getFirstSeries() {\n var series = this._firstSeries;\n\n if (!(series instanceof SeriesMetadata)) {\n series = null;\n var found = this.getSeriesByIndex(0);\n\n if (found instanceof SeriesMetadata) {\n this._firstSeries = found;\n series = found;\n }\n }\n\n return series;\n }\n /**\n * Get the first instance of the current study retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var firstSeries = this.getFirstSeries();\n\n if (firstSeries instanceof SeriesMetadata) {\n var found = firstSeries.getFirstInstance();\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n }\n\n return instance;\n }\n /**\n * Search the associated series to find an specific instance using the supplied callback as criteria.\n * The callback is passed two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance instance.\n * @returns {Object} Result object containing series (SeriesMetadata) and instance (InstanceMetadata)\n * objects or an empty object if not found.\n */\n\n }, {\n key: \"findSeriesAndInstanceByInstance\",\n value: function findSeriesAndInstanceByInstance(callback) {\n var result;\n\n if (Metadata.isValidCallback(callback)) {\n var instance;\n\n var series = this._series.find(function (series) {\n instance = series.findInstance(callback);\n return instance instanceof InstanceMetadata;\n }); // No series found\n\n\n if (series instanceof SeriesMetadata) {\n result = {\n series: series,\n instance: instance\n };\n }\n }\n\n return result || {};\n }\n /**\n * Find series by instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {SeriesMetadata|undefined} If a series is found based on callback criteria it\n * returns a SeriesMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findSeriesByInstance\",\n value: function findSeriesByInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.series;\n }\n /**\n * Find an instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.instance;\n }\n }]);\n\n return StudyMetadata;\n}(Metadata);\n\nvar WadoRsMetaDataBuilder =\n/*#__PURE__*/\nfunction () {\n function WadoRsMetaDataBuilder() {\n _classCallCheck(this, WadoRsMetaDataBuilder);\n\n this.tags = {};\n }\n\n _createClass(WadoRsMetaDataBuilder, [{\n key: \"addTag\",\n value: function addTag(tag, value, multi) {\n this.tags[tag] = {\n tag: tag,\n value: value,\n multi: multi\n };\n return this;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var _this = this;\n\n var json = {};\n var keys = Object.keys(this.tags);\n keys.forEach(function (key) {\n if (!_this.tags.hasOwnProperty(key)) {\n return;\n }\n\n var tag = _this.tags[key];\n var multi = !!tag.multi;\n var value = tag.value;\n\n if (value == null || value.length === 1 && value[0] == null) {\n return;\n }\n\n if (typeof value === 'string' && multi) {\n value = value.split('\\\\');\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n json[key] = {\n Value: value\n };\n });\n return json;\n }\n }]);\n\n return WadoRsMetaDataBuilder;\n}();\n\nfunction getWADORSImageUrl(instance, frame) {\n var wadorsuri = instance.wadorsuri;\n\n if (!wadorsuri) {\n return;\n } // We need to sum 1 because WADO-RS frame number is 1-based\n\n\n frame = (frame || 0) + 1; // Replaces /frame/1 by /frame/{frame}\n\n wadorsuri = wadorsuri.replace(/(%2Fframes%2F)(\\d+)/, \"$1\".concat(frame));\n return wadorsuri;\n}\n/**\n * Obtain an imageId for Cornerstone based on the WADO-RS scheme\n *\n * @param {object} instanceMetada metadata object (InstanceMetadata)\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getWADORSImageId(instance, frame) {\n var uri = getWADORSImageUrl(instance, frame);\n\n if (!uri) {\n return;\n }\n\n return \"wadors:\".concat(uri);\n}\n\nfunction getRadiopharmaceuticalInfoMetaData(instance) {\n var radiopharmaceuticalInfo = instance.radiopharmaceuticalInfo;\n\n if (instance.modality !== 'PT' || !radiopharmaceuticalInfo) {\n return;\n }\n\n return new WadoRsMetaDataBuilder().addTag('00181072', radiopharmaceuticalInfo.radiopharmaceuticalStartTime).addTag('00181074', radiopharmaceuticalInfo.radionuclideTotalDose).addTag('00181075', radiopharmaceuticalInfo.radionuclideHalfLife).toJSON();\n}\n\nvar getWadoRsInstanceMetaData = function getWadoRsInstanceMetaData(study, series, instance) {\n return new WadoRsMetaDataBuilder().addTag('00080016', instance.sopClassUid).addTag('00080018', instance.sopInstanceUid).addTag('00080021', series.seriesDate).addTag('00080031', series.seriesTime).addTag('00080060', instance.modality).addTag('00101010', study.patientAge).addTag('00101020', study.patientSize).addTag('00101030', study.patientWeight).addTag('00180050', instance.sliceThickness).addTag('0020000e', series.seriesInstanceUid).addTag('00200011', series.seriesNumber).addTag('0020000d', study.studyInstanceUid).addTag('00200013', instance.instanceNumber).addTag('00200032', instance.imagePositionPatient, true).addTag('00200037', instance.imageOrientationPatient, true).addTag('00200052', instance.frameOfReferenceUID).addTag('00201041', instance.sliceLocation).addTag('00280002', instance.samplesPerPixel).addTag('00280004', instance.photometricInterpretation).addTag('00280006', instance.planarConfiguration).addTag('00280010', instance.rows).addTag('00280011', instance.columns).addTag('00280030', instance.pixelSpacing, true).addTag('00280034', instance.pixelAspectRatio, true).addTag('00280100', instance.bitsAllocated).addTag('00280101', instance.bitsStored).addTag('00280102', instance.highBit).addTag('00280103', instance.pixelRepresentation).addTag('00280106', instance.smallestPixelValue).addTag('00280107', instance.largestPixelValue).addTag('00281050', instance.windowCenter, true).addTag('00281051', instance.windowWidth, true).addTag('00281052', instance.rescaleIntercept).addTag('00281053', instance.rescaleSlope).addTag('00281054', instance.rescaleType).addTag('00281101', instance.redPaletteColorLookupTableDescriptor).addTag('00281102', instance.greenPaletteColorLookupTableDescriptor).addTag('00281103', instance.bluePaletteColorLookupTableDescriptor).addTag('00281201', instance.redPaletteColorLookupTableData).addTag('00281202', instance.greenPaletteColorLookupTableData).addTag('00281203', instance.bluePaletteColorLookupTableData).addTag('00540016', getRadiopharmaceuticalInfoMetaData(instance)).toJSON();\n};\n\nfunction updateMetaDataManager(study) {\n study.seriesList.forEach(function (series) {\n series.instances.forEach(function (instance) {\n // Cache just images that are going to be loaded via WADO-RS\n if (instance.imageRendering !== 'wadors' && instance.thumbnailRendering !== 'wadors') {\n return;\n }\n\n var metaData = getWadoRsInstanceMetaData(study, series, instance);\n var numberOfFrames = instance.numberOfFrames || 1; // We can share the same metaData with all frames because it doesn't have\n // any frame specific data, such as frameNumber, pixelData, offset, etc.\n // WADO-RS frame number is 1-based\n\n for (var frameNumber = 0; frameNumber < numberOfFrames; frameNumber++) {\n var imageId = getWADORSImageId(instance, frameNumber); // TODO Drop dependency on this\n\n external.cornerstoneWADOImageLoader.wadors.metaDataManager.add(imageId, metaData);\n }\n });\n });\n}\n\n/**\n * Retrieves metaData for multiple studies at once.\n *\n * This function calls retrieveStudyMetadata several times, asynchronously,\n * and waits for all of the results to be returned.\n *\n * @param studyInstanceUids The UIDs of the Studies to be retrieved\n * @return Promise\n */\n\nfunction retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids) {\n // Create an empty array to store the Promises for each metaData retrieval call\n var promises = []; // Loop through the array of studyInstanceUids\n\n studyInstanceUids.forEach(function (studyInstanceUid) {\n // Send the call and resolve or reject the related promise based on its outcome\n var promise = retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids); // Add the current promise to the array of promises\n\n promises.push(promise);\n }); // When all of the promises are complete, this callback runs\n\n var promise = Promise.all(promises); // Warn the error on console if some retrieval failed\n\n promise.catch(function (error) {\n return log$1.warn(error);\n });\n return promise;\n}\n\n/**\n * Overridable namespace to allow getting study boxes data externally.\n *\n * The function must handle the first parameter as a studyInformation object containing at least the\n * studyInstanceUid attribute.\n *\n * Shall return a promise that will be resolved with an object containing those attributes:\n * - studyInstanceUid {String}: copy of studyInformation.studyInstanceUid\n * - modalities {String}: 2 uppercase letters for each modality split by any non-alphabetical char(s)\n * - studyDate {String}: date formatted as YYYYMMDD\n * - studyDescription {String}: study description string\n */\n// TODO: What is this for?\nvar getStudyBoxData = false;\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString$1(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$2(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString$1(new Date(filter.studyDateFrom));\n var dateTo = dateToString$1(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies$1(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies$1(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$2(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies$1);\n}\n\nvar studySearchPromises = new Map();\n/**\n * Search for studies information by the given filter\n *\n * @param {Object} filter Filter that will be used on search\n * @returns {Promise} resolved with an array of studies information or rejected with an error\n */\n\nfunction searchStudies(server, filter) {\n var promiseKey = JSON.stringify(filter);\n\n if (studySearchPromises.has(promiseKey)) {\n return studySearchPromises.get(promiseKey);\n } else {\n var promise = Studies$1(server, filter);\n studySearchPromises.set(promiseKey, promise);\n return promise;\n }\n}\n\nvar studies = {\n services: {\n QIDO: QIDO,\n WADO: WADO\n },\n loadingDict: {},\n retrieveStudyMetadata: retrieveStudyMetadata,\n deleteStudyMetadataPromise: deleteStudyMetadataPromise,\n retrieveStudiesMetadata: retrieveStudiesMetadata,\n getStudyBoxData: getStudyBoxData,\n searchStudies: searchStudies\n};\n\nfunction isFunction(subject) {\n return typeof subject === 'function';\n}\n\nvar CommandsManager =\n/*#__PURE__*/\nfunction () {\n function CommandsManager() {\n _classCallCheck(this, CommandsManager);\n\n this.contexts = {}; // Enable reactivity by storing the last executed command\n //this.last = new ReactiveVar('');\n }\n\n _createClass(CommandsManager, [{\n key: \"getContext\",\n value: function getContext(contextName) {\n var context = this.contexts[contextName];\n\n if (!context) {\n return log$1.warn(\"No context found with name \\\"\".concat(contextName, \"\\\"\"));\n }\n\n return context;\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n var contextName = OHIF.context.get();\n\n if (!contextName) {\n return log$1.warn('There is no selected context');\n }\n\n return this.getContext(contextName);\n }\n }, {\n key: \"createContext\",\n value: function createContext(contextName) {\n if (!contextName) return;\n\n if (this.contexts[contextName]) {\n return this.clear(contextName);\n }\n\n this.contexts[contextName] = {};\n }\n }, {\n key: \"set\",\n value: function set(contextName, definitions) {\n var extend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (_typeof(definitions) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n\n if (!extend) {\n this.clear(contextName);\n }\n\n Object.keys(definitions).forEach(function (command) {\n return context[command] = definitions[command];\n });\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, definition) {\n if (_typeof(definition) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n context[command] = definition;\n }\n }, {\n key: \"setDisabledFunction\",\n value: function setDisabledFunction(contextName, command, func) {\n if (!command || typeof func !== 'function') return;\n var context = this.getContext(contextName);\n if (!context) return;\n var definition = context[command];\n\n if (!definition) {\n return log$1.warn(\"Trying to set a disabled function to a command \\\"\".concat(command, \"\\\" that was not yet defined\"));\n }\n\n definition.disabled = func;\n }\n }, {\n key: \"clear\",\n value: function clear(contextName) {\n if (!contextName) return;\n this.contexts[contextName] = {};\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition(command) {\n var context = this.getCurrentContext();\n if (!context) return;\n return context[command];\n }\n }, {\n key: \"isDisabled\",\n value: function isDisabled(command) {\n var definition = this.getDefinition(command);\n if (!definition) return false;\n var disabled = definition.disabled;\n if (isFunction(disabled) && disabled()) return true;\n if (!isFunction(disabled) && disabled) return true;\n return false;\n }\n }, {\n key: \"run\",\n value: function run(command) {\n var definition = this.getDefinition(command);\n\n if (!definition) {\n return log$1.warn(\"Command \\\"\".concat(command, \"\\\" not found in current context\"));\n }\n\n var action = definition.action,\n params = definition.params;\n if (this.isDisabled(command)) return;\n\n if (typeof action !== 'function') {\n return log$1.warn(\"No action was defined for command \\\"\".concat(command, \"\\\"\"));\n } else {\n var result = action(params);\n /*if (this.last.get() === command) {\n this.last.dep.changed();\n } else {\n this.last.set(command);\n }*/\n\n return result;\n }\n }\n }]);\n\n return CommandsManager;\n}();\n\nvar commands = new CommandsManager(); // Export relevant objects\n\nvar HotkeysContext =\n/*#__PURE__*/\nfunction () {\n function HotkeysContext(name, definitions, enabled) {\n _classCallCheck(this, HotkeysContext);\n\n this.name = name;\n this.definitions = Object.assign({}, definitions);\n this.enabled = enabled;\n }\n\n _createClass(HotkeysContext, [{\n key: \"extend\",\n value: function extend() {\n var _this = this;\n\n var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_typeof(definitions) !== 'object') return;\n this.definitions = Object.assign({}, definitions);\n Object.keys(definitions).forEach(function (command) {\n var hotkey = definitions[command];\n\n _this.unregister(command);\n\n if (hotkey) {\n _this.register(command, hotkey);\n }\n\n _this.definitions[command] = hotkey;\n });\n }\n }, {\n key: \"register\",\n value: function register(command, hotkey) {\n var _this2 = this;\n\n if (!hotkey) {\n return;\n }\n\n if (!command) {\n return log$1.warn(\"No command was defined for hotkey \\\"\".concat(hotkey, \"\\\"\"));\n }\n\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n var bind = function bind(hotkey) {\n return $(document).bind(bindingKey, hotkey, function (event) {\n if (!_this2.enabled.get()) return;\n OHIF.commands.run(command);\n event.preventDefault();\n });\n };\n\n if (hotkey instanceof Array) {\n hotkey.forEach(function (hotkey) {\n return bind(hotkey);\n });\n } else {\n bind(hotkey);\n }\n }\n }, {\n key: \"unregister\",\n value: function unregister(command) {\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n if (this.definitions[command]) {\n $(document).unbind(bindingKey);\n delete this.definitions[command];\n }\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n var _this3 = this;\n\n Object.keys(this.definitions).forEach(function (command) {\n var hotkey = _this3.definitions[command];\n\n _this3.register(command, hotkey);\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n $(document).unbind(\"keydown.hotkey.\".concat(this.name));\n }\n }]);\n\n return HotkeysContext;\n}();\n\nvar HotkeysManager =\n/*#__PURE__*/\nfunction () {\n function HotkeysManager() {\n _classCallCheck(this, HotkeysManager);\n\n this.contexts = {};\n this.defaults = {};\n this.currentContextName = null;\n this.enabled = true;\n this.retrieveFunction = null;\n this.storeFunction = null;\n }\n\n _createClass(HotkeysManager, [{\n key: \"setRetrieveFunction\",\n value: function setRetrieveFunction(retrieveFunction) {\n this.retrieveFunction = retrieveFunction;\n }\n }, {\n key: \"setStoreFunction\",\n value: function setStoreFunction(storeFunction) {\n this.storeFunction = storeFunction;\n }\n }, {\n key: \"store\",\n value: function store(contextName, definitions) {\n var _this = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this.storeFunction) {\n _this.storeFunction.call(_this, storageKey, definitions).then(resolve).catch(reject); //} else if (OHIF.user.userLoggedIn()) {\n // OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);\n\n } else {\n var definitionsJSON = JSON.stringify(definitions);\n localStorage.setItem(storageKey, definitionsJSON);\n resolve();\n }\n });\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(contextName) {\n var _this2 = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this2.retrieveFunction) {\n _this2.retrieveFunction(contextName).then(resolve).catch(reject);\n } else if (OHIF.user.userLoggedIn()) {\n try {\n resolve(OHIF.user.getData(storageKey));\n } catch (error) {\n reject(error);\n }\n } else {\n var definitionsJSON = localStorage.getItem(storageKey) || '';\n var definitions = JSON.parse(definitionsJSON) || undefined;\n resolve(definitions);\n }\n });\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled.set(false);\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.enabled.set(true);\n }\n }, {\n key: \"getContext\",\n value: function getContext(contextName) {\n return this.contexts[contextName];\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n return this.getContext(this.currentContextName);\n }\n }, {\n key: \"load\",\n value: function load(contextName) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var context = _this3.getContext(contextName);\n\n if (!context) return reject();\n\n _this3.retrieve(contextName).then(function (defs) {\n var definitions = defs || _this3.defaults[contextName];\n\n if (!definitions) {\n _this3.changeObserver.changed();\n\n return reject();\n }\n\n context.destroy();\n context.definitions = definitions;\n context.initialize();\n\n _this3.changeObserver.changed();\n\n resolve(definitions);\n }).catch(reject);\n });\n }\n }, {\n key: \"set\",\n value: function set(contextName, contextDefinitions) {\n var isDefaultDefinitions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var enabled = this.enabled;\n var context = new HotkeysContext(contextName, contextDefinitions, enabled);\n var currentContext = this.getCurrentContext();\n\n if (currentContext && currentContext.name === contextName) {\n currentContext.destroy();\n context.initialize();\n }\n\n this.contexts[contextName] = context;\n\n if (isDefaultDefinitions) {\n this.defaults[contextName] = contextDefinitions;\n }\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, hotkey) {\n if (!command || !hotkey) return;\n var context = this.getContext(contextName);\n\n if (!context) {\n this.set(contextName, {});\n }\n\n context.register(command, hotkey);\n }\n }, {\n key: \"unsetContext\",\n value: function unsetContext(contextName) {\n if (contextName === this.currentContextName) {\n this.getCurrentContext().destroy();\n }\n\n delete this.contexts[contextName];\n delete this.defaults[contextName];\n }\n }, {\n key: \"resetDefaults\",\n value: function resetDefaults(contextName) {\n var context = this.getContext(contextName);\n var definitions = this.defaults[contextName];\n if (!context || !definitions) return;\n context.extend(definitions);\n return this.store(contextName, definitions);\n }\n }, {\n key: \"switchToContext\",\n value: function switchToContext(contextName) {\n var currentContext = this.getCurrentContext();\n\n if (currentContext) {\n currentContext.destroy();\n }\n\n var newContext = this.contexts[contextName];\n if (!newContext) return;\n this.currentContextName = contextName;\n newContext.initialize();\n this.load(contextName).catch(function () {});\n }\n }]);\n\n return HotkeysManager;\n}();\n\n//import 'jquery.hotkeys';\n// Create hotkeys namespace using a HotkeysManager class instance\n\nvar hotkeys = new HotkeysManager(); // Export relevant objects\n\nvar FUNCTION$1 = 'function';\nvar STRING$3 = 'string';\nvar WILDCARD = '*'; // \"*\" is a special name which means \"all children\".\n\nvar SEPARATOR = '.';\n/**\n * Main Namespace Component Class\n */\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n function Node() {\n _classCallCheck(this, Node);\n\n this.value = 0;\n this.children = {};\n this.handlers = {};\n }\n\n _createClass(Node, [{\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return _typeof(path) === STRING$3 ? path.split(SEPARATOR) : null;\n }\n }, {\n key: \"getNodeUpToIndex\",\n value: function getNodeUpToIndex(path, index) {\n var node = this;\n\n for (var i = 0; i < index; ++i) {\n var item = path[i];\n\n if (node.children.hasOwnProperty(item)) {\n node = node.children[item];\n } else {\n node = null;\n break;\n }\n }\n\n return node;\n }\n }, {\n key: \"append\",\n value: function append(name, value) {\n var children = this.children;\n var node = null;\n\n if (children.hasOwnProperty(name)) {\n node = children[name];\n } else if (_typeof(name) === STRING$3 && name !== WILDCARD) {\n node = new Node();\n children[name] = node;\n }\n\n if (node !== null) {\n node.value += value > 0 ? parseInt(value) : 0;\n }\n\n return node;\n }\n }, {\n key: \"probe\",\n value: function probe(recursively) {\n var value = this.value; // Calculate entire tree value recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"clear\",\n value: function clear(recursively) {\n this.value = 0; // Clear entire tree recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n }\n }\n }, {\n key: \"appendPath\",\n value: function appendPath(path, value) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this;\n\n for (var i = 0; i < last; ++i) {\n node = node.append(path[i], 0);\n\n if (node === null) {\n return false;\n }\n }\n\n return node.append(path[last], value) !== null;\n }\n\n return false;\n }\n }, {\n key: \"clearPath\",\n value: function clearPath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n node.children[item].clear(recursively);\n return true;\n }\n } else {\n var children = node.children;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"probePath\",\n value: function probePath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n return node.children[item].probe(recursively);\n }\n } else {\n var children = node.children;\n var value = 0;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n\n return value;\n }\n }\n }\n\n return 0;\n }\n }, {\n key: \"attachHandler\",\n value: function attachHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n var list = handlers.hasOwnProperty(type) ? handlers[type] : handlers[type] = [];\n var length = list.length;\n var notFound = true;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n notFound = false;\n break;\n }\n }\n\n if (notFound) {\n list[length] = handler;\n result = true;\n }\n }\n\n return result;\n }\n }, {\n key: \"removeHandler\",\n value: function removeHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n list.splice(i, 1);\n result = true;\n break;\n }\n }\n }\n }\n\n return result;\n }\n }, {\n key: \"trigger\",\n value: function trigger(type, nonRecursively) {\n if (_typeof(type) === STRING$3) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n list[i].call(null);\n }\n }\n\n if (nonRecursively !== true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].trigger(type);\n }\n }\n }\n }\n }\n }, {\n key: \"attachHandlerForPath\",\n value: function attachHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.attachHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"removeHandlerForPath\",\n value: function removeHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.removeHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"triggerHandlersForPath\",\n value: function triggerHandlersForPath(path, type, nonRecursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n node.trigger(type, nonRecursively);\n }\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * Root Namespace Node and API\n */\n\n\nvar rootNode = new Node();\n\nfunction handleError(error) {\n var title = error.title,\n message = error.message;\n\n if (!title) {\n if (error instanceof Error) {\n title = error.name;\n }\n }\n\n if (!message) {\n if (error instanceof Error) {\n message = error.message;\n }\n }\n\n var data = Object.assign({\n title: title,\n message: message,\n class: 'themed',\n hideConfirm: true,\n cancelLabel: 'Dismiss',\n cancelClass: 'btn-secondary'\n }, error || {});\n log$1.error(error); // TODO: Find a better way to handle errors instead of displaying a dialog for all of them.\n // OHIF.ui.showDialog('dialogForm', data);\n}\n\n/**\n * Check if the pressed key combination will result in a character input\n * Got from https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n *\n * @returns {Boolean} Whether the pressed key combination will input a character or not\n */\nfunction isCharacterKeyPress(event) {\n if (typeof event.which === 'undefined') {\n // This is IE, which only fires keypress events for printable keys\n return true;\n } else if (typeof event.which === 'number' && event.which > 0) {\n // In other browsers except old versions of WebKit, event.which is\n // only greater than zero if the keypress is a printable key.\n // We need to filter out backspace and ctrl/alt/meta key combinations\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8;\n }\n\n return false;\n}\n\n/**\n * Get the offset for the given element\n *\n * @param {Object} element DOM element which will have the offser calculated\n * @returns {Object} Object containing the top and left offset\n */\nfunction getOffset(element) {\n var top = 0;\n var left = 0;\n\n if (element.offsetParent) {\n do {\n left += element.offsetLeft;\n top += element.offsetTop;\n } while (element = element.offsetParent);\n }\n\n return {\n left: left,\n top: top\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar ui = {\n getScrollbarSize: getScrollbarSize,\n getOffset: getOffset,\n isCharacterKeyPress: isCharacterKeyPress,\n handleError: handleError\n};\n\n//import Dropdown from './ui/dropdown/class.js';\n\n/*\n * Defines the base OHIF header object\n */\n//const dropdown = new OHIF.ui.Dropdown();\nvar header = {};\n\nvar ObjectPath =\n/*#__PURE__*/\nfunction () {\n function ObjectPath() {\n _classCallCheck(this, ObjectPath);\n }\n\n _createClass(ObjectPath, null, [{\n key: \"set\",\n\n /**\n * Set an object property based on \"path\" (namespace) supplied creating\n * ... intermediary objects if they do not exist.\n * @param object {Object} An object where the properties specified on path should be set.\n * @param path {String} A string representing the property to be set, e.g. \"user.study.series.timepoint\".\n * @param value {Any} The value of the property that will be set.\n * @return {Boolean} Returns \"true\" on success, \"false\" if any intermediate component of the supplied path\n * ... is not a valid Object, in which case the property cannot be set. No excpetions are thrown.\n */\n value: function set(object, path, value) {\n var components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0,\n result = false;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n\n if (field in currentObject) {\n if (!ObjectPath.isValidObject(currentObject[field])) {\n break;\n }\n } else {\n currentObject[field] = {};\n }\n\n currentObject = currentObject[field];\n i++;\n }\n\n if (i === last) {\n currentObject[components[last]] = value;\n result = true;\n }\n }\n\n return result;\n }\n /**\n * Get an object property based on \"path\" (namespace) supplied traversing the object\n * ... tree as necessary.\n * @param object {Object} An object where the properties specified might exist.\n * @param path {String} A string representing the property to be searched for, e.g. \"user.study.series.timepoint\".\n * @return {Any} The value of the property if found. By default, returns the special type \"undefined\".\n */\n\n }, {\n key: \"get\",\n value: function get(object, path) {\n var found,\n // undefined by default\n components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n var isValid = ObjectPath.isValidObject(currentObject[field]);\n\n if (field in currentObject && isValid) {\n currentObject = currentObject[field];\n i++;\n } else {\n break;\n }\n }\n\n if (i === last && components[last] in currentObject) {\n found = currentObject[components[last]];\n }\n }\n\n return found;\n }\n /**\n * Check if the supplied argument is a real JavaScript Object instance.\n * @param object {Any} The subject to be tested.\n * @return {Boolean} Returns \"true\" if the object is a real Object instance and \"false\" otherwise.\n */\n\n }, {\n key: \"isValidObject\",\n value: function isValidObject(object) {\n return _typeof(object) === 'object' && object !== null && object instanceof Object;\n }\n }, {\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return typeof path === 'string' ? path.split('.') : null;\n }\n }]);\n\n return ObjectPath;\n}();\n\nfunction absoluteUrl(path) {\n var absolutePath = '/'; // TODO: Find another way to get root url\n\n var absoluteUrl = window.location.origin;\n var absoluteUrlParts = absoluteUrl.split('/');\n\n if (absoluteUrlParts.length > 4) {\n var rootUrlPrefixIndex = absoluteUrl.indexOf(absoluteUrlParts[3]);\n absolutePath += absoluteUrl.substring(rootUrlPrefixIndex) + path;\n } else {\n absolutePath += path;\n }\n\n return absolutePath.replace(/\\/\\/+/g, '/');\n}\n\n// TODO: figure out where else to put this function\nfunction addServers(servers, store) {\n Object.keys(servers).forEach(function (serverType) {\n var endpoints = servers[serverType];\n endpoints.forEach(function (endpoint) {\n var server = Object.assign({}, endpoint);\n server.type = serverType;\n store.dispatch({\n type: 'ADD_SERVER',\n server: server\n });\n });\n });\n}\n\n// Return the array sorting function for its object's properties\nfunction sortBy() {\n var fields = [].slice.call(arguments),\n n_fields = fields.length;\n return function (A, B) {\n var a, b, field, key, reverse, result, i;\n\n for (i = 0; i < n_fields; i++) {\n result = 0;\n field = fields[i];\n key = typeof field === 'string' ? field : field.name;\n a = A[key];\n b = B[key];\n\n if (typeof field.primer !== 'undefined') {\n a = field.primer(a);\n b = field.primer(b);\n }\n\n reverse = field.reverse ? -1 : 1;\n\n if (a < b) {\n result = reverse * -1;\n }\n\n if (a > b) {\n result = reverse * 1;\n }\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n };\n}\n\n/* jshint -W060 */\nfunction writeScript(fileName, callback) {\n var script = document.createElement('script');\n script.src = absoluteUrl(fileName);\n\n script.onload = function () {\n if (typeof callback === 'function') {\n callback(script);\n }\n };\n\n document.body.appendChild(script);\n}\n\nfunction updateQueryStringParameter(uri, key, value) {\n var regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n\n if (uri.match(regex)) {\n return uri.replace(regex, '$1' + key + '=' + value + '$2');\n } else {\n return uri + separator + key + '=' + value;\n }\n}\n/**\n * Obtain an imageId for Cornerstone from an image instance\n *\n * @param instance\n * @param frame\n * @param thumbnail\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getImageId(instance, frame) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!instance) {\n return;\n }\n\n if (typeof instance.getImageId === 'function') {\n return instance.getImageId();\n }\n\n if (instance.url) {\n if (frame !== undefined) {\n instance.url = updateQueryStringParameter(instance.url, 'frame', frame);\n }\n\n return instance.url;\n }\n\n var renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';\n\n if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {\n var imageId = 'dicomweb:' + instance.wadouri;\n\n if (frame !== undefined) {\n imageId += '&frame=' + frame;\n }\n\n return imageId;\n } else {\n return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame\n }\n}\n\nvar stackMap = {};\nvar configuration = {};\nvar stackManagerMetaDataProvider;\nvar stackUpdatedCallbacks = [];\n/**\n * Loop through the current series and add metadata to the\n * Cornerstone meta data provider. This will be used to fill information\n * into the viewport overlays, and to calculate reference lines and orientation markers\n * @param {Object} stackMap stackMap object\n * @param {Object} study Study object\n * @param {Object} displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n\nfunction createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, metadataProvider) {\n var numImages = displaySet.images.length;\n var imageIds = [];\n var imageId;\n displaySet.images.forEach(function (instance, imageIndex) {\n var image = instance.getData();\n var metaData = {\n instance: image,\n // in this context, instance will be the data of the InstanceMetadata object...\n series: displaySet,\n // TODO: Check this\n study: study,\n numImages: numImages,\n imageIndex: imageIndex + 1\n };\n var numberOfFrames = image.numberOfFrames;\n\n if (numberOfFrames > 1) {\n OHIF.log.info('Multiframe image detected');\n\n for (var i = 0; i < numberOfFrames; i++) {\n metaData.frameNumber = i;\n imageId = getImageId(image, i);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n } else {\n metaData.frameNumber = 1;\n imageId = getImageId(image);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n });\n var stack = {\n studyInstanceUid: study.studyInstanceUid,\n displaySetInstanceUid: displaySet.displaySetInstanceUid,\n imageIds: imageIds,\n frameRate: displaySet.frameRate,\n isClip: displaySet.isClip\n };\n stackMap[displaySet.displaySetInstanceUid] = stack;\n return stack;\n}\n\nconfiguration = {\n createAndAddStack: createAndAddStack\n};\n/**\n * This object contains all the functions needed for interacting with the stack manager.\n * Generally, findStack is the only function used. If you want to know when new stacks\n * come in, you can register a callback with addStackUpdatedCallback.\n */\n\nvar StackManager = {\n setMetadataProvider: function setMetadataProvider(provider) {\n stackManagerMetaDataProvider = provider;\n },\n\n /**\n * Removes all current stacks\n */\n clearStacks: function clearStacks() {\n stackMap = {};\n },\n\n /**\n * Create a stack from an image set, as well as add in the metadata on a per image bases.\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n makeAndAddStack: function makeAndAddStack(study, displaySet) {\n if (!stackManagerMetaDataProvider) {\n throw new Error('Please call StackManager.setMetadataProvider(provider) first.');\n }\n\n return configuration.createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, stackManagerMetaDataProvider);\n },\n\n /**\n * Find a stack from the currently created stacks.\n * @param displaySetInstanceUid The UID of the stack to find.\n * @returns {*} undefined if not found, otherwise the stack object is returned.\n */\n findStack: function findStack(displaySetInstanceUid) {\n return stackMap[displaySetInstanceUid];\n },\n\n /**\n * Find a stack or reate one if it has not been created yet\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n findOrCreateStack: function findOrCreateStack(study, displaySet) {\n var stack = this.findStack(displaySet.displaySetInstanceUid);\n\n if (!stack || !stack.imageIds) {\n stack = this.makeAndAddStack(study, displaySet);\n }\n\n return stack;\n },\n\n /**\n * Gets the underlying map of displaySetInstanceUid to stack object.\n * WARNING: Do not change this object. It directly affects the manager.\n * @returns {{}} map of displaySetInstanceUid -> stack.\n */\n getAllStacks: function getAllStacks() {\n return stackMap;\n },\n\n /**\n * Adds in a callback to be called on a stack being added / updated.\n * @param callback must accept at minimum one argument,\n * which is the stack that was added / updated.\n */\n addStackUpdatedCallback: function addStackUpdatedCallback(callback) {\n if (typeof callback !== 'function') {\n throw new OHIFError('callback must be provided as a function');\n }\n\n stackUpdatedCallbacks.push(callback);\n },\n\n /**\n * Return configuration\n */\n getConfiguration: function getConfiguration() {\n return configuration;\n },\n\n /**\n * Set configuration, in order to provide compatibility\n * with other systems by overriding this functions\n * @param {Object} config object with functions to be overrided\n *\n * For now, only makeAndAddStack can be overrided\n */\n setConfiguration: function setConfiguration(config) {\n configuration = config;\n }\n};\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar sopClassDictionary = {\n ComputedRadiographyImageStorage: '1.2.840.10008.5.1.4.1.1.1',\n DigitalXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.1',\n DigitalXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.1.1',\n DigitalMammographyXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.2',\n DigitalMammographyXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.2.1',\n DigitalIntraOralXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.3',\n DigitalIntraOralXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.3.1',\n CTImageStorage: '1.2.840.10008.5.1.4.1.1.2',\n EnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.1',\n LegacyConvertedEnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.2',\n UltrasoundMultiframeImageStorage: '1.2.840.10008.5.1.4.1.1.3.1',\n MRImageStorage: '1.2.840.10008.5.1.4.1.1.4',\n EnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.1',\n MRSpectroscopyStorage: '1.2.840.10008.5.1.4.1.1.4.2',\n EnhancedMRColorImageStorage: '1.2.840.10008.5.1.4.1.1.4.3',\n LegacyConvertedEnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.4',\n UltrasoundImageStorage: '1.2.840.10008.5.1.4.1.1.6.1',\n EnhancedUSVolumeStorage: '1.2.840.10008.5.1.4.1.1.6.2',\n SecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7',\n MultiframeSingleBitSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.1',\n MultiframeGrayscaleByteSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.2',\n MultiframeGrayscaleWordSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.3',\n MultiframeTrueColorSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.4',\n Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1',\n GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2',\n AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3',\n HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1',\n CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.3.1',\n BasicVoiceAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.1',\n GeneralAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.2',\n ArterialPulseWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.5.1',\n RespiratoryWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.6.1',\n GrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.1',\n ColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.2',\n PseudoColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.3',\n BlendingSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.4',\n XAXRFGrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.5',\n XRayAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.12.1',\n EnhancedXAImageStorage: '1.2.840.10008.5.1.4.1.1.12.1.1',\n XRayRadiofluoroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.12.2',\n EnhancedXRFImageStorage: '1.2.840.10008.5.1.4.1.1.12.2.1',\n XRay3DAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.1',\n XRay3DCraniofacialImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.2',\n BreastTomosynthesisImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.3',\n BreastProjectionXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.13.1.4',\n BreastProjectionXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.13.1.5',\n IntravascularOpticalCoherenceTomographyImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.14.1',\n IntravascularOpticalCoherenceTomographyImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.14.2',\n NuclearMedicineImageStorage: '1.2.840.10008.5.1.4.1.1.20',\n RawDataStorage: '1.2.840.10008.5.1.4.1.1.66',\n SpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.1',\n SpatialFiducialsStorage: '1.2.840.10008.5.1.4.1.1.66.2',\n DeformableSpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.3',\n SegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.4',\n SurfaceSegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.5',\n RealWorldValueMappingStorage: '1.2.840.10008.5.1.4.1.1.67',\n SurfaceScanMeshStorage: '1.2.840.10008.5.1.4.1.1.68.1',\n SurfaceScanPointCloudStorage: '1.2.840.10008.5.1.4.1.1.68.2',\n VLEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1',\n VideoEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1.1',\n VLMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2',\n VideoMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2.1',\n VLSlideCoordinatesMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.3',\n VLPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4',\n VideoPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4.1',\n OphthalmicPhotography8BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.1',\n OphthalmicPhotography16BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.2',\n StereometricRelationshipStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.3',\n OphthalmicTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.4',\n VLWholeSlideMicroscopyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.6',\n LensometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.1',\n AutorefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.2',\n KeratometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.3',\n SubjectiveRefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.4',\n VisualAcuityMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.5',\n SpectaclePrescriptionReportStorage: '1.2.840.10008.5.1.4.1.1.78.6',\n OphthalmicAxialMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.7',\n IntraocularLensCalculationsStorage: '1.2.840.10008.5.1.4.1.1.78.8',\n MacularGridThicknessandVolumeReport: '1.2.840.10008.5.1.4.1.1.79.1',\n OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.80.1',\n OphthalmicThicknessMapStorage: '1.2.840.10008.5.1.4.1.1.81.1',\n CornealTopographyMapStorage: '1.2.840.10008.5.1.4.1.1.82.1',\n BasicTextSR: '1.2.840.10008.5.1.4.1.1.88.11',\n EnhancedSR: '1.2.840.10008.5.1.4.1.1.88.22',\n ComprehensiveSR: '1.2.840.10008.5.1.4.1.1.88.33',\n Comprehensive3DSR: '1.2.840.10008.5.1.4.1.1.88.34',\n ProcedureLog: '1.2.840.10008.5.1.4.1.1.88.40',\n MammographyCADSR: '1.2.840.10008.5.1.4.1.1.88.50',\n KeyObjectSelection: '1.2.840.10008.5.1.4.1.1.88.59',\n ChestCADSR: '1.2.840.10008.5.1.4.1.1.88.65',\n XRayRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.67',\n RadiopharmaceuticalRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.68',\n ColonCADSR: '1.2.840.10008.5.1.4.1.1.88.69',\n ImplantationPlanSRDocumentStorage: '1.2.840.10008.5.1.4.1.1.88.70',\n EncapsulatedPDFStorage: '1.2.840.10008.5.1.4.1.1.104.1',\n EncapsulatedCDAStorage: '1.2.840.10008.5.1.4.1.1.104.2',\n PositronEmissionTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.128',\n EnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.130',\n LegacyConvertedEnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.128.1',\n BasicStructuredDisplayStorage: '1.2.840.10008.5.1.4.1.1.131',\n RTImageStorage: '1.2.840.10008.5.1.4.1.1.481.1',\n RTDoseStorage: '1.2.840.10008.5.1.4.1.1.481.2',\n RTStructureSetStorage: '1.2.840.10008.5.1.4.1.1.481.3',\n RTBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.4',\n RTPlanStorage: '1.2.840.10008.5.1.4.1.1.481.5',\n RTBrachyTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.6',\n RTTreatmentSummaryRecordStorage: '1.2.840.10008.5.1.4.1.1.481.7',\n RTIonPlanStorage: '1.2.840.10008.5.1.4.1.1.481.8',\n RTIonBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.9',\n RTBeamsDeliveryInstructionStorage: '1.2.840.10008.5.1.4.34.7',\n GenericImplantTemplateStorage: '1.2.840.10008.5.1.4.43.1',\n ImplantAssemblyTemplateStorage: '1.2.840.10008.5.1.4.44.1',\n ImplantTemplateGroupStorage: '1.2.840.10008.5.1.4.45.1'\n};\n\n/**\n * Checks whether dicom files with specified SOP Class UID have image data\n * @param {string} sopClassUid - SOP Class UID to be checked\n * @returns {boolean} - true if it has image data\n */\n\nfunction isImage(sopClassUid) {\n if (sopClassUid === sopClassDictionary.ComputedRadiographyImageStorage || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.CTImageStorage || sopClassUid === sopClassDictionary.EnhancedCTImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedCTImageStorage || sopClassUid === sopClassDictionary.UltrasoundMultiframeImageStorage || sopClassUid === sopClassDictionary.MRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRColorImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedMRImageStorage || sopClassUid === sopClassDictionary.UltrasoundImageStorage || sopClassUid === sopClassDictionary.SecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.XRayAngiographicImageStorage || sopClassUid === sopClassDictionary.EnhancedXAImageStorage || sopClassUid === sopClassDictionary.XRayRadiofluoroscopicImageStorage || sopClassUid === sopClassDictionary.EnhancedXRFImageStorage || sopClassUid === sopClassDictionary.XRay3DAngiographicImageStorage || sopClassUid === sopClassDictionary.XRay3DCraniofacialImageStorage || sopClassUid === sopClassDictionary.BreastTomosynthesisImageStorage || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing || sopClassUid === sopClassDictionary.NuclearMedicineImageStorage || sopClassUid === sopClassDictionary.VLEndoscopicImageStorage || sopClassUid === sopClassDictionary.VideoEndoscopicImageStorage || sopClassUid === sopClassDictionary.VLMicroscopicImageStorage || sopClassUid === sopClassDictionary.VideoMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLPhotographicImageStorage || sopClassUid === sopClassDictionary.VideoPhotographicImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography8BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography16BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicTomographyImageStorage || sopClassUid === sopClassDictionary.VLWholeSlideMicroscopyImageStorage || sopClassUid === sopClassDictionary.PositronEmissionTomographyImageStorage || sopClassUid === sopClassDictionary.EnhancedPETImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedPETImageStorage || sopClassUid === sopClassDictionary.RTImageStorage) {\n return true;\n }\n\n return false;\n}\n\nvar isMultiFrame = function isMultiFrame(instance) {\n // NumberOfFrames (0028,0008)\n return instance.getRawValue('x00280008') > 1;\n};\n\nvar makeDisplaySet = function makeDisplaySet(series, instances) {\n var instance = instances[0];\n var imageSet = new ImageSet(instances);\n var seriesData = series.getData(); // set appropriate attributes to image set...\n\n imageSet.setAttributes({\n displaySetInstanceUid: imageSet.uid,\n // create a local alias for the imageSet UID\n seriesDate: seriesData.seriesDate,\n seriesTime: seriesData.seriesTime,\n seriesInstanceUid: series.getSeriesInstanceUID(),\n seriesNumber: instance.getRawValue('x00200011'),\n seriesDescription: instance.getRawValue('x0008103e'),\n numImageFrames: instances.length,\n frameRate: instance.getRawValue('x00181063'),\n modality: instance.getRawValue('x00080060'),\n isMultiFrame: isMultiFrame(instance)\n }); // Sort the images in this series if needed\n\n {\n imageSet.sortBy(function (a, b) {\n // Sort by InstanceNumber (0020,0013)\n return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0);\n });\n } // Include the first image instance number (after sorted)\n\n\n imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));\n return imageSet;\n};\n\nvar isSingleImageModality = function isSingleImageModality(modality) {\n return modality === 'CR' || modality === 'MG' || modality === 'DX';\n};\n/**\n * Creates a set of series to be placed in the Study Metadata\n * The series that appear in the Study Metadata must represent\n * imaging modalities.\n *\n * Furthermore, for drag/drop functionality,\n * it is easiest if the stack objects also contain information about\n * which study they are linked to.\n *\n * @param study The study instance metadata to be used\n * @returns {Array} An array of series to be placed in the Study Metadata\n */\n\n\nfunction createStacks(study) {\n // Define an empty array of display sets\n var displaySets = [];\n\n if (!study || !study.getSeriesCount()) {\n return displaySets;\n } // Loop through the series (SeriesMetadata)\n\n\n study.forEachSeries(function (series) {\n // If the series has no instances, skip it\n if (!series.getInstanceCount()) {\n return;\n } // Search through the instances (InstanceMetadata object) of this series\n // Split Multi-frame instances and Single-image modalities\n // into their own specific display sets. Place the rest of each\n // series into another display set.\n\n\n var stackableInstances = [];\n series.forEachInstance(function (instance) {\n // All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)\n if (!isImage(instance.getRawValue('x00080016')) && !instance.getRawValue('x00280010')) {\n return;\n }\n\n var displaySet;\n\n if (isMultiFrame(instance)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n isClip: true,\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid for drag/drop purposes\n numImageFrames: instance.getRawValue('x00280008'),\n // Override the default value of instances.length\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else if (isSingleImageModality(instance.modality)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else {\n stackableInstances.push(instance);\n }\n });\n\n if (stackableInstances.length) {\n var displaySet = makeDisplaySet(series, stackableInstances);\n displaySet.setAttribute('studyInstanceUid', study.getStudyInstanceUID());\n displaySets.push(displaySet);\n }\n });\n return displaySets;\n}\n\nvar OHIFInstanceMetadata =\n/*#__PURE__*/\nfunction (_InstanceMetadata) {\n _inherits(OHIFInstanceMetadata, _InstanceMetadata);\n\n /**\n * @param {Object} Instance object.\n */\n function OHIFInstanceMetadata(data, series, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFInstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFInstanceMetadata).call(this, data, uid));\n\n _this.init(series, study);\n\n return _this;\n }\n\n _createClass(OHIFInstanceMetadata, [{\n key: \"init\",\n value: function init(series, study) {\n var instance = this.getData(); // Initialize Private Properties\n\n Object.defineProperties(this, {\n _sopInstanceUID: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance.sopInstanceUid\n },\n _study: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series\n },\n _instance: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance\n },\n _cache: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n }\n });\n } // Override\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue, bypassCache) {\n // check if this property has been cached...\n if (tagOrProperty in this._cache && bypassCache !== true) {\n return this._cache[tagOrProperty];\n }\n\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty); // Search property value in the whole study metadata chain...\n\n var rawValue;\n\n if (propertyName in this._instance) {\n rawValue = this._instance[propertyName];\n } else if (propertyName in this._series) {\n rawValue = this._series[propertyName];\n } else if (propertyName in this._study) {\n rawValue = this._study[propertyName];\n }\n\n if (rawValue !== void 0) {\n // if rawValue value is not undefined, cache result...\n this._cache[tagOrProperty] = rawValue;\n return rawValue;\n }\n\n return defaultValue;\n } // Override\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty);\n return propertyName in this._instance || propertyName in this._series || propertyName in this._study;\n } // Override\n\n }, {\n key: \"getImageId\",\n value: function getImageId$$1(frame, thumbnail) {\n // If _imageID is not cached, create it\n if (this._imageId === null) {\n this._imageId = getImageId(this.getData(), frame, thumbnail);\n }\n\n return this._imageId;\n }\n /**\n * Static methods\n */\n // @TODO: The current mapping of standard DICOM property names to local property names is not optimal.\n // The inconsistency in property naming makes this function increasingly complex.\n // A possible solution to improve this would be adapt retriveMetadata names to use DICOM standard names as in dicomTagDescriptions.js\n\n }], [{\n key: \"getPropertyName\",\n value: function getPropertyName(tagOrProperty) {\n var propertyName;\n var tagInfo = DICOMTagDescriptions.find(tagOrProperty);\n\n if (tagInfo !== void 0) {\n // This function tries to translate standard DICOM property names into local naming convention.\n propertyName = tagInfo.keyword.replace(/^SOP/, 'sop').replace(/UID$/, 'Uid').replace(/ID$/, 'Id');\n propertyName = propertyName.charAt(0).toLowerCase() + propertyName.substr(1);\n }\n\n return propertyName;\n }\n }]);\n\n return OHIFInstanceMetadata;\n}(InstanceMetadata);\n\nvar OHIFSeriesMetadata =\n/*#__PURE__*/\nfunction (_SeriesMetadata) {\n _inherits(OHIFSeriesMetadata, _SeriesMetadata);\n\n /**\n * @param {Object} Series object.\n */\n function OHIFSeriesMetadata(data, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFSeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFSeriesMetadata).call(this, data, uid));\n\n _this.init(study);\n\n return _this;\n }\n\n _createClass(OHIFSeriesMetadata, [{\n key: \"init\",\n value: function init(study) {\n var _this2 = this;\n\n var series = this.getData(); // define \"_seriesInstanceUID\" protected property...\n\n Object.defineProperty(this, '_seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series.seriesInstanceUid\n }); // populate internal list of instances...\n\n series.instances.forEach(function (instance) {\n _this2.addInstance(new OHIFInstanceMetadata(instance, series, study));\n });\n }\n }]);\n\n return OHIFSeriesMetadata;\n}(SeriesMetadata);\n\nvar OHIFStudyMetadata =\n/*#__PURE__*/\nfunction (_StudyMetadata) {\n _inherits(OHIFStudyMetadata, _StudyMetadata);\n\n /**\n * @param {Object} Study object.\n */\n function OHIFStudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, OHIFStudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFStudyMetadata).call(this, data, uid));\n\n _this.init();\n\n return _this;\n }\n\n _createClass(OHIFStudyMetadata, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var study = this.getData(); // define \"_studyInstanceUID\" protected property\n\n Object.defineProperty(this, '_studyInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study.studyInstanceUid\n }); // populate internal list of series\n\n study.seriesList.forEach(function (series) {\n _this2.addSeries(new OHIFSeriesMetadata(series, study));\n });\n }\n }]);\n\n return OHIFStudyMetadata;\n}(StudyMetadata);\n\nvar getDisplaySets = function getDisplaySets(studyMetadata, seriesNumber, iteratorFunction) {\n var iteratorFn = typeof iteratorFunction !== 'function' ? createStacks : iteratorFunction;\n return iteratorFn(studyMetadata, seriesNumber);\n};\n\nvar sortingManager = {\n getDisplaySets: getDisplaySets\n};\n\nfunction createDisplaySets(studies) {\n // Define the OHIF.viewer.data global object\n // TODO: Save all data that is currently in OHIF.viewer in redux instead\n //OHIF.viewer.data = OHIF.viewer.data || {};\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n //OHIF.viewer.data.studyInstanceUids = [];\n var updatedStudies = studies.map(function (study) {\n var studyMetadata = new OHIFStudyMetadata(study, study.studyInstanceUid);\n var displaySets = study.displaySets;\n\n if (!study.displaySets) {\n displaySets = sortingManager.getDisplaySets(studyMetadata);\n study.displaySets = displaySets;\n }\n\n studyMetadata.setDisplaySets(displaySets); //OHIF.viewer.Studies.insert(study);\n //OHIF.viewer.StudyMetadataList.insert(studyMetadata);\n //OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);\n // Updates WADO-RS metaDataManager\n\n updateMetaDataManager(study);\n return study;\n });\n return updatedStudies;\n}\n\nvar utils = {\n guid: guid,\n ObjectPath: ObjectPath,\n absoluteUrl: absoluteUrl,\n addServers: addServers,\n sortBy: sortBy,\n writeScript: writeScript,\n StackManager: StackManager,\n createStacks: createStacks,\n createDisplaySets: createDisplaySets\n};\n\nvar metadata = {\n Metadata: Metadata,\n WadoRsMetaDataBuilder: WadoRsMetaDataBuilder,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n OHIFStudyMetadata: OHIFStudyMetadata,\n OHIFSeriesMetadata: OHIFSeriesMetadata,\n OHIFInstanceMetadata: OHIFInstanceMetadata\n};\n\nvar FUNCTION$2 = 'function';\n\nvar MetadataProvider =\n/*#__PURE__*/\nfunction () {\n function MetadataProvider() {\n _classCallCheck(this, MetadataProvider);\n\n // Define the main \"metadataLookup\" private property as an immutable property.\n Object.defineProperty(this, 'metadataLookup', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: new Map()\n }); // Local reference to provider function bound to current instance.\n\n Object.defineProperty(this, '_provider', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n }\n /**\n * Cornerstone Metadata provider to store image meta data\n * Data from instances, series, and studies are associated with\n * imageIds to facilitate usage of this information by Cornerstone's Tools\n *\n * e.g. the imagePlane metadata object contains instance information about\n * row/column pixel spacing, patient position, and patient orientation. It\n * is used in CornerstoneTools to position reference lines and orientation markers.\n *\n * @param {String} imageId The Cornerstone ImageId\n * @param {Object} data An object containing instance, series, and study metadata\n */\n\n\n _createClass(MetadataProvider, [{\n key: \"addMetadata\",\n value: function addMetadata(imageId, data) {\n var instanceMetadata = data.instance;\n var seriesMetadata = data.series;\n var studyMetadata = data.study;\n var numImages = data.numImages;\n var metadata = {};\n metadata.frameNumber = data.frameNumber;\n metadata.study = {\n accessionNumber: studyMetadata.accessionNumber,\n patientId: studyMetadata.patientId,\n studyInstanceUid: studyMetadata.studyInstanceUid,\n studyDate: studyMetadata.studyDate,\n studyTime: studyMetadata.studyTime,\n studyDescription: studyMetadata.studyDescription,\n institutionName: studyMetadata.institutionName,\n patientHistory: studyMetadata.patientHistory\n };\n metadata.series = {\n seriesDescription: seriesMetadata.seriesDescription,\n seriesNumber: seriesMetadata.seriesNumber,\n seriesDate: seriesMetadata.seriesDate,\n seriesTime: seriesMetadata.seriesTime,\n modality: seriesMetadata.modality,\n seriesInstanceUid: seriesMetadata.seriesInstanceUid,\n numImages: numImages\n };\n metadata.instance = instanceMetadata;\n metadata.patient = {\n name: studyMetadata.patientName,\n id: studyMetadata.patientId,\n birthDate: studyMetadata.patientBirthDate,\n sex: studyMetadata.patientSex,\n age: studyMetadata.patientAge\n }; // If there is sufficient information, populate\n // the imagePlane object for easier use in the Viewer\n\n metadata.imagePlane = this.getImagePlane(instanceMetadata); // Add the metadata to the imageId lookup object\n\n this.metadataLookup.set(imageId, metadata);\n }\n /**\n * Return the metadata for the given imageId\n * @param {String} imageId The Cornerstone ImageId\n * @returns image metadata\n */\n\n }, {\n key: \"getMetadata\",\n value: function getMetadata(imageId) {\n return this.metadataLookup.get(imageId);\n }\n /**\n * Adds a set of metadata to the Cornerstone metadata provider given a specific\n * imageId, type, and dataset\n *\n * @param imageId\n * @param type (e.g. series, instance, tagDisplay)\n * @param data\n */\n\n }, {\n key: \"addSpecificMetadata\",\n value: function addSpecificMetadata(imageId, type, data) {\n var metadata = {};\n metadata[type] = data;\n var oldMetadata = this.metadataLookup.get(imageId);\n this.metadataLookup.set(imageId, Object.assign(oldMetadata, metadata));\n }\n }, {\n key: \"getFromImage\",\n value: function getFromImage(image, type, tag, attrName, defaultValue) {\n var value;\n\n if (image.data) {\n value = this.getFromDataSet(image.data, type, tag);\n } else {\n value = image.instance[attrName];\n }\n\n return value === null ? defaultValue : value;\n }\n }, {\n key: \"getFromDataSet\",\n value: function getFromDataSet(dataSet, type, tag) {\n if (!dataSet) {\n return;\n }\n\n var fn = dataSet[type];\n\n if (!fn) {\n return;\n }\n\n return fn.call(dataSet, tag);\n }\n }, {\n key: \"getFrameIncrementPointer\",\n value: function getFrameIncrementPointer(image) {\n var dataSet = image.data;\n var frameInstancePointer = '';\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n var frameInstancePointerNames = {\n x00181063: 'frameTime',\n x00181065: 'frameTimeVector'\n }; // (0028,0009) = Frame Increment Pointer\n\n var frameInstancePointerTag = parsingUtils.attributeTag(dataSet, 'x00280009');\n frameInstancePointer = frameInstancePointerNames[frameInstancePointerTag];\n } else {\n frameInstancePointer = image.instance.frameIncrementPointer;\n }\n\n return frameInstancePointer || '';\n }\n }, {\n key: \"getFrameTimeVector\",\n value: function getFrameTimeVector(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n return parsingUtils.floatArray(dataSet, 'x00181065');\n }\n\n return image.instance.frameTimeVector;\n }\n }, {\n key: \"getFrameTime\",\n value: function getFrameTime(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time (0018,1063) field or is not defined (for addtional flexibility).\n // Yet another value is possible for this field (5200,9230 for Multi-frame Functional Groups)\n // but that case is currently not supported.\n return dataSet.floatString('x00181063', -1);\n }\n\n return image.instance.frameTime;\n }\n /**\n * Updates the related metadata for missing fields given a specified image\n *\n * @param image\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(image) {\n var imageMetadata = this.metadataLookup.get(image.imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n imageMetadata.patient.age = imageMetadata.patient.age || this.getFromDataSet(image.data, 'string', 'x00101010');\n imageMetadata.instance.rows = imageMetadata.instance.rows || image.rows;\n imageMetadata.instance.columns = imageMetadata.instance.columns || image.columns;\n imageMetadata.instance.sopClassUid = imageMetadata.instance.sopClassUid || this.getFromDataSet(image.data, 'string', 'x00080016');\n imageMetadata.instance.sopInstanceUid = imageMetadata.instance.sopInstanceUid || this.getFromDataSet(image.data, 'string', 'x00080018');\n imageMetadata.instance.pixelSpacing = imageMetadata.instance.pixelSpacing || this.getFromDataSet(image.data, 'string', 'x00280030');\n imageMetadata.instance.frameOfReferenceUID = imageMetadata.instance.frameOfReferenceUID || this.getFromDataSet(image.data, 'string', 'x00200052');\n imageMetadata.instance.imageOrientationPatient = imageMetadata.instance.imageOrientationPatient || this.getFromDataSet(image.data, 'string', 'x00200037');\n imageMetadata.instance.imagePositionPatient = imageMetadata.instance.imagePositionPatient || this.getFromDataSet(image.data, 'string', 'x00200032');\n imageMetadata.instance.sliceThickness = imageMetadata.instance.sliceThickness || this.getFromDataSet(image.data, 'string', 'x00180050');\n imageMetadata.instance.sliceLocation = imageMetadata.instance.sliceLocation || this.getFromDataSet(image.data, 'string', 'x00201041');\n imageMetadata.instance.tablePosition = imageMetadata.instance.tablePosition || this.getFromDataSet(image.data, 'string', 'x00189327');\n imageMetadata.instance.spacingBetweenSlices = imageMetadata.instance.spacingBetweenSlices || this.getFromDataSet(image.data, 'string', 'x00180088');\n imageMetadata.instance.lossyImageCompression = imageMetadata.instance.lossyImageCompression || this.getFromDataSet(image.data, 'string', 'x00282110');\n imageMetadata.instance.lossyImageCompressionRatio = imageMetadata.instance.lossyImageCompressionRatio || this.getFromDataSet(image.data, 'string', 'x00282112');\n imageMetadata.instance.frameIncrementPointer = imageMetadata.instance.frameIncrementPointer || this.getFromDataSet(image.data, 'string', 'x00280009');\n imageMetadata.instance.frameTime = imageMetadata.instance.frameTime || this.getFromDataSet(image.data, 'string', 'x00181063');\n imageMetadata.instance.frameTimeVector = imageMetadata.instance.frameTimeVector || this.getFromDataSet(image.data, 'string', 'x00181065');\n\n if ((image.data || image.instance) && !imageMetadata.instance.multiframeMetadata) {\n imageMetadata.instance.multiframeMetadata = this.getMultiframeModuleMetadata(image);\n }\n\n imageMetadata.imagePlane = imageMetadata.imagePlane || this.getImagePlane(imageMetadata.instance);\n }\n /**\n * Constructs and returns the imagePlane given the metadata instance\n *\n * @param metadataInstance The metadata instance (InstanceMetadata class) containing information to construct imagePlane\n * @returns imagePlane The constructed imagePlane to be used in viewer easily\n */\n\n }, {\n key: \"getImagePlane\",\n value: function getImagePlane(instance) {\n if (!instance.rows || !instance.columns || !instance.pixelSpacing || !instance.frameOfReferenceUID || !instance.imageOrientationPatient || !instance.imagePositionPatient) {\n return;\n }\n\n var imageOrientation = instance.imageOrientationPatient.split('\\\\');\n var imagePosition = instance.imagePositionPatient.split('\\\\');\n var columnPixelSpacing = 1.0;\n var rowPixelSpacing = 1.0;\n\n if (instance.pixelSpacing) {\n var split = instance.pixelSpacing.split('\\\\');\n rowPixelSpacing = parseFloat(split[0]);\n columnPixelSpacing = parseFloat(split[1]);\n }\n\n var cornerstoneMath = external.cornerstoneMath;\n return {\n frameOfReferenceUID: instance.frameOfReferenceUID,\n rows: instance.rows,\n columns: instance.columns,\n rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),\n columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),\n imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),\n rowPixelSpacing: rowPixelSpacing,\n columnPixelSpacing: columnPixelSpacing\n };\n }\n /**\n * This function extracts miltiframe information from a dicomParser.DataSet object.\n *\n * @param dataSet {Object} An instance of dicomParser.DataSet object where multiframe information can be found.\n * @return {Object} An object containing multiframe image metadata (frameIncrementPointer, frameTime, frameTimeVector, etc).\n */\n\n }, {\n key: \"getMultiframeModuleMetadata\",\n value: function getMultiframeModuleMetadata(image) {\n var imageInfo = {\n isMultiframeImage: false,\n frameIncrementPointer: null,\n numberOfFrames: 0,\n frameTime: 0,\n frameTimeVector: null,\n averageFrameRate: 0 // backwards compatibility only... it might be useless in the future\n\n };\n var frameTime;\n var numberOfFrames = this.getFromImage(image, 'intString', 'x00280008', 'numberOfFrames', -1);\n\n if (numberOfFrames > 0) {\n // set multi-frame image indicator\n imageInfo.isMultiframeImage = true;\n imageInfo.numberOfFrames = numberOfFrames; // (0028,0009) = Frame Increment Pointer\n\n var frameIncrementPointer = this.getFrameIncrementPointer(image);\n\n if (frameIncrementPointer === 'frameTimeVector') {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n var frameTimeVector = this.getFrameTimeVector(image);\n\n if (frameTimeVector instanceof Array && frameTimeVector.length > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTimeVector = frameTimeVector;\n frameTime = frameTimeVector.reduce(function (a, b) {\n return a + b;\n }) / frameTimeVector.length;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n } else if (frameIncrementPointer === 'frameTime' || frameIncrementPointer === '') {\n frameTime = this.getFrameTime(image);\n\n if (frameTime > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTime = frameTime;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n }\n }\n\n return imageInfo;\n }\n /**\n * Get a bound reference to the provider function.\n */\n\n }, {\n key: \"getProvider\",\n value: function getProvider() {\n var provider = this._provider;\n\n if (_typeof(this._provider) !== FUNCTION$2) {\n provider = this.provider.bind(this);\n this._provider = provider;\n }\n\n return provider;\n }\n /**\n * Looks up metadata for Cornerstone Tools given a specified type and imageId\n * A type may be, e.g. 'study', or 'patient', or 'imagePlane'. These types\n * are keys in the stored metadata objects.\n *\n * @param type\n * @param imageId\n * @returns {Object} Relevant metadata of the specified type\n */\n\n }, {\n key: \"provider\",\n value: function provider(type, imageId) {\n // TODO: Cornerstone Tools use 'imagePlaneModule', but OHIF use 'imagePlane'. It must be consistent.\n if (type === 'imagePlaneModule') {\n type = 'imagePlane';\n }\n\n var imageMetadata = this.metadataLookup.get(imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n if (imageMetadata.hasOwnProperty(type)) {\n return imageMetadata[type];\n }\n }\n }]);\n\n return MetadataProvider;\n}();\n\nvar cornerstone$1 = {\n MetadataProvider: MetadataProvider,\n getBoundingBox: getBoundingBox,\n pixelToPage: pixelToPage,\n repositionTextBox: repositionTextBox\n};\n\nvar StudyPrefetcher =\n/*#__PURE__*/\nfunction () {\n function StudyPrefetcher(studies) {\n var _this = this;\n\n _classCallCheck(this, StudyPrefetcher);\n\n _defineProperty(this, \"cacheFullHandler\", function () {\n log$1.warn('Cache full');\n\n _this.stopPrefetching();\n });\n\n this.studies = studies || [];\n this.prefetchDisplaySetsTimeout = 300;\n this.lastActiveViewportElement = null;\n external.cornerstone.events.addEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n\n _createClass(StudyPrefetcher, [{\n key: \"destroy\",\n value: function destroy() {\n this.stopPrefetching();\n external.cornerstone.events.removeEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n }, {\n key: \"setStudies\",\n value: function setStudies(studies) {\n this.stopPrefetching();\n this.studies = studies;\n }\n }, {\n key: \"prefetch\",\n value: function prefetch() {\n if (!this.studies || !this.studies.length) {\n return;\n }\n\n this.stopPrefetching();\n this.prefetchDisplaySets();\n }\n }, {\n key: \"stopPrefetching\",\n value: function stopPrefetching() {\n external.cornerstoneTools.requestPoolManager.clearRequestStack('prefetch');\n }\n }, {\n key: \"prefetchDisplaySetsAsync\",\n value: function prefetchDisplaySetsAsync(timeout) {\n var _this2 = this;\n\n timeout = timeout || this.prefetchDisplaySetsTimeout;\n clearTimeout(this.prefetchDisplaySetsHandler);\n this.prefetchDisplaySetsHandler = setTimeout(function () {\n _this2.prefetchDisplaySets();\n }, timeout);\n }\n }, {\n key: \"prefetchDisplaySets\",\n value: function prefetchDisplaySets() {\n // TODO: Allow passing in config\n var config = {\n order: 'closest',\n displaySetCount: 1\n };\n var displaySetsToPrefetch = this.getDisplaySetsToPrefetch(config);\n var imageIds = this.getImageIdsFromDisplaySets(displaySetsToPrefetch);\n this.prefetchImageIds(imageIds);\n }\n }, {\n key: \"prefetchImageIds\",\n value: function prefetchImageIds(imageIds) {\n var nonCachedImageIds = this.filterCachedImageIds(imageIds);\n var requestPoolManager = external.cornerstoneTools.requestPoolManager;\n var requestType = 'prefetch';\n var preventCache = false;\n\n var noop = function noop() {};\n\n nonCachedImageIds.forEach(function (imageId) {\n requestPoolManager.addRequest({}, imageId, requestType, preventCache, noop, noop);\n });\n requestPoolManager.startGrabbing();\n }\n }, {\n key: \"getStudy\",\n value: function getStudy(image) {\n var studyMetadata = external.cornerstone.metaData.get('study', image.imageId);\n return OHIF.viewer.Studies.find(function (study) {\n return study.studyInstanceUid === studyMetadata.studyInstanceUid;\n });\n }\n }, {\n key: \"getSeries\",\n value: function getSeries(study, image) {\n var seriesMetadata = external.cornerstone.metaData.get('series', image.imageId);\n var studyMetadata = OHIF.viewerbase.getStudyMetadata(study);\n return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);\n }\n }, {\n key: \"getInstance\",\n value: function getInstance(series, image) {\n var instanceMetadata = external.cornerstone.metaData.get('instance', image.imageId);\n return series.getInstanceByUID(instanceMetadata.sopInstanceUid);\n }\n }, {\n key: \"getActiveDisplaySet\",\n value: function getActiveDisplaySet(displaySets, instance) {\n return displaySets.find(function (displaySet) {\n return displaySet.images.some(function (displaySetImage) {\n return displaySetImage.sopInstanceUid === instance.sopInstanceUid;\n });\n });\n }\n }, {\n key: \"getDisplaySetsToPrefetch\",\n value: function getDisplaySetsToPrefetch(config) {\n var image = this.getActiveViewportImage();\n\n if (!image || !config || !config.displaySetCount) {\n return [];\n }\n /*const study = this.getStudy(image);\n const series = this.getSeries(study, image);\n const instance = this.getInstance(series, image);*/\n\n\n var displaySets = study.displaySets;\n var activeDisplaySet = null; //this.getActiveDisplaySet(displaySets, instance);\n\n var prefetchMethodMap = {\n topdown: 'getFirstDisplaySets',\n downward: 'getNextDisplaySets',\n closest: 'getClosestDisplaySets'\n };\n var prefetchOrder = config.order;\n var methodName = prefetchMethodMap[prefetchOrder];\n var getDisplaySets = this[methodName];\n\n if (!getDisplaySets) {\n if (prefetchOrder) {\n log$1.warn(\"Invalid prefetch order configuration (\".concat(prefetchOrder, \")\"));\n }\n\n return [];\n }\n\n return getDisplaySets.call(this, displaySets, activeDisplaySet, config.displaySetCount);\n }\n }, {\n key: \"getFirstDisplaySets\",\n value: function getFirstDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var length = displaySets.length;\n var selectedDisplaySets = [];\n\n for (var i = 0; i < length && displaySetCount; i++) {\n var displaySet = displaySets[i];\n\n if (displaySet !== activeDisplaySet) {\n selectedDisplaySets.push(displaySet);\n displaySetCount--;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getNextDisplaySets\",\n value: function getNextDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var begin = activeDisplaySetIndex + 1;\n var end = Math.min(begin + displaySetCount, displaySets.length);\n return displaySets.slice(begin, end);\n }\n }, {\n key: \"getClosestDisplaySets\",\n value: function getClosestDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var length = displaySets.length;\n var selectedDisplaySets = [];\n var left = activeDisplaySetIndex - 1;\n var right = activeDisplaySetIndex + 1;\n\n while ((left >= 0 || right < length) && displaySetCount) {\n if (left >= 0) {\n selectedDisplaySets.push(displaySets[left]);\n displaySetCount--;\n left--;\n }\n\n if (right < length && displaySetCount) {\n selectedDisplaySets.push(displaySets[right]);\n displaySetCount--;\n right++;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getImageIdsFromDisplaySets\",\n value: function getImageIdsFromDisplaySets(displaySets) {\n var _this3 = this;\n\n var imageIds = [];\n displaySets.forEach(function (displaySet) {\n imageIds = imageIds.concat(_this3.getImageIdsFromDisplaySet(displaySet));\n });\n return imageIds;\n }\n }, {\n key: \"getImageIdsFromDisplaySet\",\n value: function getImageIdsFromDisplaySet(displaySet) {\n var imageIds = []; // TODO: This duplicates work done by the stack manager\n\n displaySet.images.forEach(function (image) {\n var numFrames = image.numFrames;\n\n if (numFrames > 1) {\n for (var i = 0; i < numFrames; i++) {\n var imageId = getImageId(image, i);\n imageIds.push(imageId);\n }\n } else {\n var _imageId = getImageId(image);\n\n imageIds.push(_imageId);\n }\n });\n return imageIds;\n }\n }, {\n key: \"filterCachedImageIds\",\n value: function filterCachedImageIds(imageIds) {\n var _this4 = this;\n\n return imageIds.filter(function (imageId) {\n return !_this4.isImageCached(imageId);\n });\n }\n }, {\n key: \"isImageCached\",\n value: function isImageCached(imageId) {\n var image = external.cornerstone.imageCache.imageCache[imageId];\n return image && image.sizeInBytes;\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!StudyPrefetcher.instance) {\n StudyPrefetcher.instance = new StudyPrefetcher([]);\n }\n\n return StudyPrefetcher.instance;\n }\n }]);\n\n return StudyPrefetcher;\n}();\n\nvar setToolActive = function setToolActive(tool) {\n return {\n type: 'SET_TOOL_ACTIVE',\n tool: tool\n };\n};\nvar setViewportActive = function setViewportActive(viewportIndex) {\n return {\n type: 'SET_VIEWPORT_ACTIVE',\n viewportIndex: viewportIndex\n };\n};\nvar setLayout = function setLayout(layout) {\n return {\n type: 'SET_LAYOUT',\n layout: layout\n };\n};\nvar setStudyLoadingProgress = function setStudyLoadingProgress(progressId, progressData) {\n return {\n type: 'SET_STUDY_LOADING_PROGRESS',\n progressId: progressId,\n progressData: progressData\n };\n};\nvar clearStudyLoadingProgress = function clearStudyLoadingProgress(progressId) {\n return {\n type: 'CLEAR_STUDY_LOADING_PROGRESS',\n progressId: progressId\n };\n};\nvar setViewportSpecificData = function setViewportSpecificData(viewportIndex, data) {\n return {\n type: 'SET_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex,\n data: data\n };\n};\nvar clearViewportSpecificData = function clearViewportSpecificData(viewportIndex) {\n return {\n type: 'CLEAR_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex\n };\n};\nvar addPlugin = function addPlugin(plugin) {\n return {\n type: \"ADD_PLUGIN\",\n plugin: plugin\n };\n};\nvar setAvailableButtons = function setAvailableButtons(buttons) {\n return {\n type: 'SET_AVAILABLE_BUTTONS',\n buttons: buttons\n };\n};\nvar actions = {\n setToolActive: setToolActive,\n setViewportActive: setViewportActive,\n setLayout: setLayout,\n setStudyLoadingProgress: setStudyLoadingProgress,\n clearStudyLoadingProgress: clearStudyLoadingProgress,\n setViewportSpecificData: setViewportSpecificData,\n clearViewportSpecificData: clearViewportSpecificData,\n addPlugin: addPlugin,\n setAvailableButtons: setAvailableButtons\n};\n\nvar BaseLoadingListener =\n/*#__PURE__*/\nfunction () {\n function BaseLoadingListener(stack) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BaseLoadingListener);\n\n this.id = BaseLoadingListener.getNewId();\n this.stack = stack;\n this.startListening();\n this.statsItemsLimit = options.statsItemsLimit || 2;\n this.stats = {\n items: [],\n total: 0,\n elapsedTime: 0,\n speed: 0\n };\n this._setProgressData = options._setProgressData;\n this._clearProgressById = options._clearProgressById; // Register the start point to make it possible to calculate\n // bytes/s or frames/s when the first byte or frame is received\n\n this._addStatsData(0); // Update the progress before starting the download\n // to make it possible to update the UI\n\n\n this._updateProgress();\n }\n\n _createClass(BaseLoadingListener, [{\n key: \"_addStatsData\",\n value: function _addStatsData(value) {\n var date = new Date();\n var stats = this.stats;\n var items = stats.items;\n var newItem = {\n value: value,\n date: date\n };\n items.push(newItem);\n stats.total += newItem.value; // Remove items until it gets below the limit\n\n while (items.length > this.statsItemsLimit) {\n var item = items.shift();\n stats.total -= item.value;\n } // Update the elapsedTime (seconds) based on first and last\n // elements and recalculate the speed (bytes/s or frames/s)\n\n\n if (items.length > 1) {\n var oldestItem = items[0];\n stats.elapsedTime = (newItem.date.getTime() - oldestItem.date.getTime()) / 1000;\n stats.speed = (stats.total - oldestItem.value) / stats.elapsedTime;\n }\n }\n }, {\n key: \"_getProgressId\",\n value: function _getProgressId() {\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n return 'StackProgress:' + displaySetInstanceUid;\n }\n }, {\n key: \"_clearProgress\",\n value: function _clearProgress() {\n var progressId = this._getProgressId();\n\n this._clearProgressById(progressId);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n throw new Error('`startListening` must be implemented by child classes');\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n throw new Error('`stopListening` must be implemented by child classes');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stopListening();\n\n this._clearProgress();\n }\n }], [{\n key: \"getNewId\",\n value: function getNewId() {\n var timeSlice = new Date().getTime().toString().slice(-8);\n var randomNumber = parseInt(Math.random() * 1000000000);\n return timeSlice.toString() + randomNumber.toString();\n }\n }]);\n\n return BaseLoadingListener;\n}();\n\nvar DICOMFileLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener) {\n _inherits(DICOMFileLoadingListener, _BaseLoadingListener);\n\n function DICOMFileLoadingListener(stack, options) {\n var _this;\n\n _classCallCheck(this, DICOMFileLoadingListener);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DICOMFileLoadingListener).call(this, stack, options));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"_imageLoadProgressEventHandler\", function (e) {\n var eventData = e.detail;\n\n var dataSetUrl = _this._convertImageIdToDataSetUrl(eventData.imageId);\n\n var bytesDiff = eventData.loaded - _this._lastLoaded;\n\n if (!_this._dataSetUrl === dataSetUrl) {\n return;\n } // Add the bytes downloaded to the stats\n\n\n _this._addStatsData(bytesDiff); // Update the download progress\n\n\n _this._updateProgress(eventData); // Cache the last eventData.loaded value\n\n\n _this._lastLoaded = eventData.loaded;\n });\n\n _this._dataSetUrl = _this._getDataSetUrl(stack);\n _this._lastLoaded = 0; // Check how many instances has already been download (cached)\n\n _this._checkCachedData();\n\n return _this;\n }\n\n _createClass(DICOMFileLoadingListener, [{\n key: \"_checkCachedData\",\n value: function _checkCachedData() {\n var dataSet = external.cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(this._dataSetUrl);\n\n if (dataSet) {\n var dataSetLength = dataSet.byteArray.length;\n\n this._updateProgress({\n percentComplete: 100,\n loaded: dataSetLength,\n total: dataSetLength\n });\n }\n }\n }, {\n key: \"_getImageLoadProgressEventName\",\n value: function _getImageLoadProgressEventName() {\n // TODO: Add this event as a constant in Cornerstone\n return 'cornerstoneimageloadprogress.' + this.id;\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n this.imageLoadProgressEventHandler = this._imageLoadProgressEventHandle.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress(eventData) {\n var progressId = this._getProgressId();\n\n eventData = eventData || {};\n var progressData = {\n multiFrame: false,\n percentComplete: eventData.percentComplete,\n bytesLoaded: eventData.loaded,\n bytesTotal: eventData.total,\n bytesPerSecond: this.stats.speed\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_convertImageIdToDataSetUrl\",\n value: function _convertImageIdToDataSetUrl(imageId) {\n // Remove the prefix (\"dicomweb:\" or \"wadouri:\"\")\n imageId = imageId.replace(/^(dicomweb:|wadouri:)/i, ''); // Remove \"frame=999&\" from the imageId\n\n imageId = imageId.replace(/frame=\\d+&?/i, ''); // Remove the last \"&\" like in \"http://...?foo=1&bar=2&\"\n\n imageId = imageId.replace(/&$/, '');\n return imageId;\n }\n }, {\n key: \"_getDataSetUrl\",\n value: function _getDataSetUrl(stack) {\n var imageId = stack.imageIds[0];\n return this._convertImageIdToDataSetUrl(imageId);\n }\n }]);\n\n return DICOMFileLoadingListener;\n}(BaseLoadingListener);\n\nvar StackLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener2) {\n _inherits(StackLoadingListener, _BaseLoadingListener2);\n\n function StackLoadingListener(stack) {\n var _this2;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StackLoadingListener);\n\n options.statsItemsLimit = 20;\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(StackLoadingListener).call(this, stack, options));\n _this2.imageDataMap = _this2._convertImageIdsArrayToMap(stack.imageIds);\n _this2.framesStatus = _this2._createArray(stack.imageIds.length, false);\n _this2.loadedCount = 0; // Check how many instances has already been download (cached)\n\n _this2._checkCachedData();\n\n return _this2;\n }\n\n _createClass(StackLoadingListener, [{\n key: \"_convertImageIdsArrayToMap\",\n value: function _convertImageIdsArrayToMap(imageIds) {\n var imageIdsMap = new Map();\n\n for (var i = 0; i < imageIds.length; i++) {\n imageIdsMap.set(imageIds[i], {\n index: i,\n loaded: false\n });\n }\n\n return imageIdsMap;\n }\n }, {\n key: \"_createArray\",\n value: function _createArray(length, defaultValue) {\n // `new Array(length)` is an anti-pattern in javascript because its\n // funny API. Otherwise I would go for `new Array(length).fill(false)`\n var array = [];\n\n for (var i = 0; i < length; i++) {\n array[i] = defaultValue;\n }\n\n return array;\n }\n }, {\n key: \"_checkCachedData\",\n value: function _checkCachedData() {// const imageIds = this.stack.imageIds;\n // TODO: No way to check status of Promise.\n\n /*for(let i = 0; i < imageIds.length; i++) {\n const imageId = imageIds[i];\n const imagePromise = cornerstone.imageCache.getImageLoadObject(imageId).promise;\n if (imagePromise && (imagePromise.state() === 'resolved')) {\n this._updateFrameStatus(imageId, true);\n }\n }*/\n }\n }, {\n key: \"_getImageLoadedEventName\",\n value: function _getImageLoadedEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_LOADED, \".\").concat(this.id);\n }\n }, {\n key: \"_getImageCachePromiseRemoveEventName\",\n value: function _getImageCachePromiseRemoveEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, \".\").concat(this.id);\n }\n }, {\n key: \"_imageLoadedEventHandler\",\n value: function _imageLoadedEventHandler(e) {\n this._updateFrameStatus(e.detail.image.imageId, true);\n }\n }, {\n key: \"_imageCachePromiseRemovedEventHandler\",\n value: function _imageCachePromiseRemovedEventHandler(e) {\n this._updateFrameStatus(e.detail.imageId, false);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n this.imageLoadedEventHandler = this._imageLoadedEventHandler.bind(this);\n this.imageCachePromiseRemovedEventHandler = this._imageCachePromiseRemovedEventHandler.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.addEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.removeEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"_updateFrameStatus\",\n value: function _updateFrameStatus(imageId, loaded) {\n var imageData = this.imageDataMap.get(imageId);\n\n if (!imageData || imageData.loaded === loaded) {\n return;\n } // Add one more frame to the stats\n\n\n if (loaded) {\n this._addStatsData(1);\n }\n\n imageData.loaded = loaded;\n this.framesStatus[imageData.index] = loaded;\n this.loadedCount += loaded ? 1 : -1;\n\n this._updateProgress();\n }\n }, {\n key: \"_setProgressData\",\n value: function _setProgressData(progressId, progressData) {\n // TODO: This method (and _clearProgressById) need to access\n // the Redux store and should therefore be provided from the\n // application. I've added a workaround to pass this in through\n // the 'options' variable on instantiation, but this is really ugly.\n // We could consider making the StudyLoadingListener a higher-order\n // component which would set this stuff itself.\n throw new Error(\"The _setProgressData function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_clearProgressById\",\n value: function _clearProgressById(progressId) {\n throw new Error(\"The _clearProgressById function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var loadedFramesCount = this.loadedCount;\n var loadingFramesCount = totalFramesCount - loadedFramesCount;\n var percentComplete = Math.round(loadedFramesCount / totalFramesCount * 100);\n\n var progressId = this._getProgressId();\n\n var progressData = {\n multiFrame: true,\n totalFramesCount: totalFramesCount,\n loadedFramesCount: loadedFramesCount,\n loadingFramesCount: loadingFramesCount,\n percentComplete: percentComplete,\n framesPerSecond: this.stats.speed,\n framesStatus: this.framesStatus\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_logProgress\",\n value: function _logProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n var progressBar = '[';\n\n for (var i = 0; i < totalFramesCount; i++) {\n var ch = this.framesStatus[i] ? '|' : '.';\n progressBar += \"\".concat(ch);\n }\n\n progressBar += ']';\n log.info(\"\".concat(displaySetInstanceUid, \": \").concat(progressBar));\n }\n }]);\n\n return StackLoadingListener;\n}(BaseLoadingListener);\n\nvar StudyLoadingListener =\n/*#__PURE__*/\nfunction () {\n function StudyLoadingListener(options) {\n _classCallCheck(this, StudyLoadingListener);\n\n this.listeners = {};\n this.options = options;\n }\n\n _createClass(StudyLoadingListener, [{\n key: \"addStack\",\n value: function addStack(stack, stackMetaData) {\n var displaySetInstanceUid = stack.displaySetInstanceUid;\n\n if (!this.listeners[displaySetInstanceUid]) {\n var listener = this._createListener(stack, stackMetaData);\n\n if (listener) {\n this.listeners[displaySetInstanceUid] = listener;\n }\n }\n }\n }, {\n key: \"addStudy\",\n value: function addStudy(study) {\n var _this3 = this;\n\n study.displaySets.forEach(function (displaySet) {\n var stack = StackManager.findOrCreateStack(study, displaySet);\n\n _this3.addStack(stack, {\n isMultiFrame: displaySet.isMultiFrame\n });\n });\n }\n }, {\n key: \"addStudies\",\n value: function addStudies(studies) {\n var _this4 = this;\n\n if (!studies || !studies.length) {\n return;\n }\n\n studies.forEach(function (study) {\n return _this4.addStudy(study);\n });\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var displaySetInstanceUids = Object.keys(this.listeners);\n var length = displaySetInstanceUids.length;\n\n for (var i = 0; i < length; i++) {\n var displaySetInstanceUid = displaySetInstanceUids[i];\n var displaySet = this.listeners[displaySetInstanceUid];\n displaySet.destroy();\n }\n\n this.listeners = {};\n }\n }, {\n key: \"_createListener\",\n value: function _createListener(stack, stackMetaData) {\n var schema = this._getSchema(stack); // A StackLoadingListener can be created if it's wadors or not a multiframe\n // wadouri instance (single file) that means \"N\" files will have to be\n // downloaded where \"N\" is the number of frames. DICOMFileLoadingListener\n // is created only if it's a single DICOM file and there's no way to know\n // how many frames has already been loaded (bytes/s instead of frames/s).\n\n\n if (schema === 'wadors' || !stackMetaData.isMultiFrame) {\n return new StackLoadingListener(stack, this.options);\n } else {\n return new DICOMFileLoadingListener(stack, this.options);\n }\n }\n }, {\n key: \"_getSchema\",\n value: function _getSchema(stack) {\n var imageId = stack.imageIds[0];\n var colonIndex = imageId.indexOf(':');\n return imageId.substring(0, colonIndex);\n } // Singleton\n\n }], [{\n key: \"getInstance\",\n value: function getInstance(options) {\n if (!StudyLoadingListener._instance) {\n StudyLoadingListener._instance = new StudyLoadingListener(options);\n }\n\n return StudyLoadingListener._instance;\n }\n }]);\n\n return StudyLoadingListener;\n}();\n\n/**\n * Constants\n */\nvar PROPERTY_SEPARATOR = '.';\nvar ORDER_ASC = 'asc';\nvar ORDER_DESC = 'desc';\nvar MIN_COUNT = 0x00000000;\nvar MAX_COUNT = 0x7fffffff;\n/**\n * Class Definition\n */\n\nvar TypeSafeCollection =\n/*#__PURE__*/\nfunction () {\n function TypeSafeCollection() {\n _classCallCheck(this, TypeSafeCollection);\n\n this._operationCount = MIN_COUNT;\n this._elementList = [];\n this._handlers = Object.create(null);\n }\n /**\n * Private Methods\n */\n\n\n _createClass(TypeSafeCollection, [{\n key: \"_invalidate\",\n value: function _invalidate() {\n var count = this._operationCount;\n this._operationCount = count < MAX_COUNT ? count + 1 : MIN_COUNT;\n }\n }, {\n key: \"_elements\",\n value: function _elements(silent) {\n silent === true || this._operationCount;\n return this._elementList;\n }\n }, {\n key: \"_elementWithPayload\",\n value: function _elementWithPayload(payload, silent) {\n return this._elements(silent).find(function (item) {\n return item.payload === payload;\n });\n }\n }, {\n key: \"_elementWithId\",\n value: function _elementWithId(id, silent) {\n return this._elements(silent).find(function (item) {\n return item.id === id;\n });\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(event, data) {\n var handlers = this._handlers;\n\n if (event in handlers) {\n handlers = handlers[event];\n\n if (!(handlers instanceof Array)) {\n return;\n }\n\n for (var i = 0, limit = handlers.length; i < limit; ++i) {\n var handler = handlers[i];\n\n if (_isFunction(handler)) {\n handler.call(null, data);\n }\n }\n }\n }\n /**\n * Public Methods\n */\n\n }, {\n key: \"onInsert\",\n value: function onInsert(callback) {\n if (_isFunction(callback)) {\n var handlers = this._handlers.insert;\n\n if (!(handlers instanceof Array)) {\n handlers = [];\n this._handlers.insert = handlers;\n }\n\n handlers.push(callback);\n }\n }\n /**\n * Update the payload associated with the given ID to be the new supplied payload.\n * @param {string} id The ID of the entry that will be updated.\n * @param {any} payload The element that will replace the previous payload.\n * @returns {boolean} Returns true if the given ID is present in the collection, false otherwise.\n */\n\n }, {\n key: \"updateById\",\n value: function updateById(id, payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n if (found.id === id) {\n // set result to true since the ids match...\n result = true;\n\n this._invalidate();\n }\n } else {\n found = this._elementWithId(id, true);\n\n if (found) {\n found.payload = payload;\n result = true;\n\n this._invalidate();\n }\n }\n\n return result;\n }\n /**\n * Signal that the given element has been changed by notifying reactive data-source observers.\n * This method is basically a means to invalidate the inernal reactive data-source.\n * @param {any} payload The element that has been altered.\n * @returns {boolean} Returns true if the element is present in the collection, false otherwise.\n */\n\n }, {\n key: \"update\",\n value: function update(payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n result = true;\n\n this._invalidate();\n }\n\n return result;\n }\n /**\n * Insert an element in the collection. On success, the element ID (a unique string) is returned. On failure, returns null.\n * A failure scenario only happens when the given payload is already present in the collection. Note that NO exceptions are thrown!\n * @param {any} payload The element to be stored.\n * @returns {string} The ID of the inserted element or null if the element already exists...\n */\n\n }, {\n key: \"insert\",\n value: function insert(payload) {\n var id = null,\n found = this._elementWithPayload(payload, true);\n\n if (!found) {\n id = OHIF.utils.guid();\n\n this._elements(true).push({\n id: id,\n payload: payload\n });\n\n this._invalidate();\n\n this._trigger('insert', {\n id: id,\n data: payload\n });\n }\n\n return id;\n }\n /**\n * Remove all elements from the collection.\n * @returns {void} No meaningful value is returned.\n */\n\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var all = this._elements(true),\n length = all.length;\n\n for (var i = length - 1; i >= 0; i--) {\n var item = all[i];\n delete item.id;\n delete item.payload;\n all[i] = null;\n }\n\n all.splice(0, length);\n\n this._invalidate();\n }\n /**\n * Remove elements from the collection that match the criteria given in the property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} A list with all removed elements.\n */\n\n }, {\n key: \"remove\",\n value: function remove(propertyMap) {\n var found = this.findAllEntriesBy(propertyMap),\n foundCount = found.length,\n removed = [];\n\n if (foundCount > 0) {\n var all = this._elements(true);\n\n for (var i = foundCount - 1; i >= 0; i--) {\n var item = found[i];\n all.splice(item[2], 1);\n removed.push(item[0]);\n }\n\n this._invalidate();\n }\n\n return removed;\n }\n /**\n * Provides the ID of the given element inside the collection.\n * @param {any} payload The element being searched for.\n * @returns {string} The ID of the given element or undefined if the element is not present.\n */\n\n }, {\n key: \"getElementId\",\n value: function getElementId(payload) {\n var found = this._elementWithPayload(payload);\n\n return found && found.id;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"findById\",\n value: function findById(id) {\n var found = this._elementWithId(id);\n\n return found && found.payload;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfElement\",\n value: function indexOfElement(payload) {\n return this._elements().indexOf(this._elementWithPayload(payload, true));\n }\n /**\n * Provides the position of the element associated with the given ID in the internal list returning -1 if the element is not present.\n * @param {string} id The index of the element.\n * @returns {number} The position of the element associated with the given ID in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfId\",\n value: function indexOfId(id) {\n return this._elements().indexOf(this._elementWithId(id, true));\n }\n /**\n * Provides a list-like approach to the collection returning an element by index.\n * @param {number} index The index of the element.\n * @returns {any} If out of bounds, undefined is returned. Otherwise the element in the given position is returned.\n */\n\n }, {\n key: \"getElementByIndex\",\n value: function getElementByIndex(index) {\n var found = this._elements()[index >= 0 ? index : -1];\n\n return found && found.payload;\n }\n /**\n * Find an element by a criteria defined by the given callback function.\n * Attention!!! The reactive source will not be notified if no valid callback is supplied...\n * @param {function} callback A callback function which will define the search criteria. The callback\n * function will be passed the collection element, its ID and its index in this very order. The callback\n * shall return true when its criterea has been fulfilled.\n * @returns {any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"find\",\n value: function find(callback) {\n var _this = this;\n\n var found;\n\n if (_isFunction(callback)) {\n found = this._elements().find(function (item, index) {\n return callback.call(_this, item.payload, item.id, index);\n });\n }\n\n return found && found.payload;\n }\n /**\n * Find the first element that strictly matches the specified property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"findBy\",\n value: function findBy(propertyMap, options) {\n var found;\n\n if (_isObject(options)) {\n // if the \"options\" argument is provided and is a valid object,\n // it must be applied to the dataset before search...\n var all = this.all(options);\n\n if (all.length > 0) {\n if (_isObject(propertyMap)) {\n found = all.find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item);\n });\n } else {\n found = all[0]; // simply extract the first element...\n }\n }\n } else if (_isObject(propertyMap)) {\n found = this._elements().find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item.payload);\n });\n\n if (found) {\n found = found.payload;\n }\n }\n\n return found;\n }\n /**\n * Find all elements that strictly match the specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} An array of entries of all elements that match the given criteria. Each set in\n * in the array has the following format: [ elementData, elementId, elementIndex ].\n */\n\n }, {\n key: \"findAllEntriesBy\",\n value: function findAllEntriesBy(propertyMap) {\n var found = [];\n\n if (_isObject(propertyMap)) {\n this._elements().forEach(function (item, index) {\n if (_compareToPropertyMapStrict(propertyMap, item.payload)) {\n // Match! Add it to the found list...\n found.push([item.payload, item.id, index]);\n }\n });\n }\n\n return found;\n }\n /**\n * Find all elements that match a specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements that match the given criteria and sorted in the specified sorting order.\n */\n\n }, {\n key: \"findAllBy\",\n value: function findAllBy(propertyMap, options) {\n var found = this.findAllEntriesBy(propertyMap).map(function (item) {\n return item[0];\n }); // Only payload is relevant...\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(found, options.sort);\n }\n }\n\n return found;\n }\n /**\n * Executes the supplied callback function for each element of the collection.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {function} callback The callback function to be executed. The callback is passed the element,\n * its ID and its index in this very order.\n * @returns {void} Nothing is returned.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this2 = this;\n\n if (_isFunction(callback)) {\n this._elements().forEach(function (item, index) {\n callback.call(_this2, item.payload, item.id, index);\n });\n }\n }\n /**\n * Count the number of elements currently in the collection.\n * @returns {number} The current number of elements in the collection.\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this._elements().length;\n }\n /**\n * Returns a list with all elements of the collection optionally sorted by a sorting specifier criteria.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements stored in the collection.\n */\n\n }, {\n key: \"all\",\n value: function all(options) {\n var list = this._elements().map(function (item) {\n return item.payload;\n });\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(list, options.sort);\n }\n }\n\n return list;\n }\n }]);\n\n return TypeSafeCollection;\n}();\n/**\n * Utility Functions\n */\n\n/**\n * Test if supplied argument is a valid object for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\nfunction _isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n}\n/**\n * Test if supplied argument is a valid string for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isString(subject) {\n return typeof subject === 'string';\n}\n/**\n * Test if supplied argument is a valid function for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isFunction(subject) {\n return typeof subject === 'function';\n}\n/**\n * Shortcut for Object's prototype \"hasOwnProperty\" method.\n */\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Retrieve an object's property value by name. Composite property names (e.g., 'address.country.name') are accepted.\n * @param {Object} targetObject The object we want read the property from...\n * @param {String} propertyName The property to be read (e.g., 'address.street.name' or 'address.street.number'\n * to read object.address.street.name or object.address.street.number, respectively);\n * @returns {Any} Returns whatever the property holds or undefined if the property cannot be read or reached.\n */\n\nfunction _getPropertyValue(targetObject, propertyName) {\n var propertyValue; // undefined (the default return value)\n\n if (_isObject(targetObject) && _isString(propertyName)) {\n var fragments = propertyName.split(PROPERTY_SEPARATOR);\n var fragmentCount = fragments.length;\n\n if (fragmentCount > 0) {\n var firstFragment = fragments[0];\n var remainingFragments = fragmentCount > 1 ? fragments.slice(1).join(PROPERTY_SEPARATOR) : null;\n propertyValue = targetObject[firstFragment];\n\n if (remainingFragments !== null) {\n propertyValue = _getPropertyValue(propertyValue, remainingFragments);\n }\n }\n }\n\n return propertyValue;\n}\n/**\n * Compare a property map with a target object using strict comparison.\n * @param {Object} propertyMap The property map whose properties will be used for comparison. Composite\n * property names (e.g., 'address.country.name') will be tested against the \"resolved\" properties from the target object.\n * @param {Object} targetObject The target object whose properties will be tested.\n * @returns {boolean} Returns true if the properties match, false otherwise.\n */\n\n\nfunction _compareToPropertyMapStrict(propertyMap, targetObject) {\n var result = false; // \"for in\" loops do not thown exceptions for invalid data types...\n\n for (var propertyName in propertyMap) {\n if (_hasOwnProperty.call(propertyMap, propertyName)) {\n if (propertyMap[propertyName] !== _getPropertyValue(targetObject, propertyName)) {\n result = false;\n break;\n } else if (result !== true) {\n result = true;\n }\n }\n }\n\n return result;\n}\n/**\n * Checks if a sorting specifier is valid.\n * A valid sorting specifier consists of an array of arrays being each subarray a pair\n * in the format [\"property name\", \"sorting order\"].\n * The following exemple can be used to sort studies by \"date\"\" and use \"time\" to break ties in descending order.\n * [ [ 'study.date', 'desc' ], [ 'study.time', 'desc' ] ]\n * @param {Array} specifiers The sorting specifier to be tested.\n * @returns {boolean} Returns true if the specifiers are valid, false otherwise.\n */\n\n\nfunction _isValidSortingSpecifier(specifiers) {\n var result = true;\n\n if (specifiers instanceof Array && specifiers.length > 0) {\n for (var i = specifiers.length - 1; i >= 0; i--) {\n var item = specifiers[i];\n\n if (item instanceof Array) {\n var property = item[0];\n var order = item[1];\n\n if (_isString(property) && (order === ORDER_ASC || order === ORDER_DESC)) {\n continue;\n }\n }\n\n result = false;\n break;\n }\n }\n\n return result;\n}\n/**\n * Sorts an array based on sorting specifier options.\n * @param {Array} list The that needs to be sorted.\n * @param {Array} specifiers An array of specifiers. Please read isValidSortingSpecifier method definition for further details.\n * @returns {void} No value is returned. The array is sorted in place.\n */\n\n\nfunction _sortListBy(list, specifiers) {\n if (list instanceof Array && _isValidSortingSpecifier(specifiers)) {\n var specifierCount = specifiers.length;\n list.sort(function _sortListByCallback(a, b) {\n // callback name for stack traces...\n var index = 0;\n\n while (index < specifierCount) {\n var specifier = specifiers[index];\n var property = specifier[0];\n var order = specifier[1] === ORDER_DESC ? -1 : 1;\n\n var aValue = _getPropertyValue(a, property);\n\n var bValue = _getPropertyValue(b, property); // @TODO: should we check for the types being compared, like:\n // ~~ if (typeof aValue !== typeof bValue) continue;\n // Not sure because dates, for example, can be correctly compared to numbers...\n\n\n if (aValue < bValue) {\n return order * -1;\n }\n\n if (aValue > bValue) {\n return order * 1;\n }\n\n if (++index >= specifierCount) {\n return 0;\n }\n }\n });\n } else {\n throw new Error('Invalid Arguments');\n }\n}\n\n/**\n * Abstract class to fetch study metadata.\n */\n\nvar StudyMetadataSource =\n/*#__PURE__*/\nfunction () {\n function StudyMetadataSource() {\n _classCallCheck(this, StudyMetadataSource);\n }\n\n _createClass(StudyMetadataSource, [{\n key: \"getByInstanceUID\",\n\n /**\n * Get study metadata for a study with given study InstanceUID.\n * @param {String} studyInstanceUID Study InstanceUID.\n */\n value: function getByInstanceUID(studyInstanceUID) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::getByInstanceUID is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n /**\n * Load study info and study metadata for a given study into the viewer.\n * @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.\n */\n\n }, {\n key: \"loadStudy\",\n value: function loadStudy(study) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::loadStudy is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n }]);\n\n return StudyMetadataSource;\n}();\n\nvar classes = {\n MetadataProvider: MetadataProvider,\n CommandsManager: CommandsManager,\n HotkeysContext: HotkeysContext,\n HotkeysManager: HotkeysManager,\n ImageSet: ImageSet,\n StudyPrefetcher: StudyPrefetcher,\n StudyLoadingListener: StudyLoadingListener,\n StackLoadingListener: StackLoadingListener,\n DICOMFileLoadingListener: DICOMFileLoadingListener,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n //StudySummary,\n TypeSafeCollection: TypeSafeCollection,\n OHIFError: OHIFError,\n StudyMetadataSource: StudyMetadataSource\n};\n\nvar defaultButtons = [{\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: '/icons.svg#icon-tools-pan',\n active: false\n}, {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: '/icons.svg#icon-tools-zoom',\n active: false\n}, {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: '/icons.svg#icon-tools-measure-target',\n active: false\n}, {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: '/icons.svg#icon-tools-stack-scroll',\n active: false\n}, {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: '/icons.svg#icon-tools-reset',\n active: false\n}, {\n command: 'Wwwc',\n type: 'tool',\n text: 'Manual',\n svgUrl: '/icons.svg#icon-tools-levels',\n active: true\n}, {\n command: 'setWLPresetSoftTissue',\n type: 'command',\n text: 'Soft Tissue',\n svgUrl: '/icons.svg#icon-wl-soft-tissue',\n active: false\n}, {\n command: 'setWLPresetLung',\n type: 'command',\n text: 'Lung',\n svgUrl: '/icons.svg#icon-wl-lung',\n active: false\n}, {\n command: 'setWLPresetLiver',\n type: 'command',\n text: 'Liver',\n svgUrl: '/icons.svg#icon-wl-liver',\n active: false\n}, {\n command: 'setWLPresetBrain',\n type: 'command',\n text: 'Brain',\n svgUrl: '/icons.svg#icon-wl-brain',\n active: false\n}];\n\nvar tools = function tools() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n buttons: defaultButtons\n };\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'SET_TOOL_ACTIVE':\n var item = state.buttons.find(function (button) {\n return button.command === action.tool;\n });\n var buttons = [];\n\n if (item.type === 'tool') {\n buttons = state.buttons.map(function (button) {\n if (button.command === action.tool) {\n button.active = true;\n } else if (button.type === 'tool') {\n button.active = false;\n }\n\n return button;\n });\n }\n\n return {\n buttons: buttons\n };\n\n case 'SET_AVAILABLE_BUTTONS':\n return {\n buttons: action.buttons\n };\n\n default:\n return state;\n }\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_merge = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n});\n\nvar defaultState = {\n activeViewportIndex: 0,\n layout: {\n viewports: [{\n height: '100%',\n width: '100%'\n }]\n },\n viewportSpecificData: {}\n};\n\nvar viewports = function viewports() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var viewportSpecificData;\n\n switch (action.type) {\n case 'SET_VIEWPORT_ACTIVE':\n return Object.assign({}, state, {\n activeViewportIndex: action.viewportIndex\n });\n\n case 'SET_LAYOUT':\n return Object.assign({}, state, {\n layout: action.layout\n });\n\n case 'SET_VIEWPORT_SPECIFIC_DATA':\n var currentData = lodash_clonedeep(state.viewportSpecificData[action.viewportIndex]) || {};\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = lodash_merge({}, currentData, action.data);\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n case 'CLEAR_VIEWPORT_SPECIFIC_DATA':\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = {};\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$1 = {\n servers: []\n};\n\nvar servers = function servers() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$1;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_SERVER':\n var _servers = state.servers;\n\n var alreadyExists = _servers.find(function (server) {\n return server.id === action.server.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n _servers.push(action.server);\n\n if (_servers.length === 1) {\n _servers[0].active = true;\n }\n\n return Object.assign({}, state, {\n servers: _servers\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$2 = {\n progress: {},\n lastUpdated: null\n};\n\nvar loading = function loading() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$2;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var progress;\n var lastUpdated;\n\n switch (action.type) {\n case 'SET_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n progress[action.progressId] = action.progressData; // This is a workaround so we can easily identify changes\n // to the progress object without doing deep comparison.\n\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n case 'CLEAR_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n delete progress[action.progressId];\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n default:\n return state;\n }\n};\n\nvar PLUGIN_TYPES = {\n VIEWPORT: 'viewport'\n};\nvar plugins = {\n PLUGIN_TYPES: PLUGIN_TYPES,\n availablePlugins: []\n};\n\nvar defaultState$3 = {\n availablePlugins: []\n};\n\nvar plugins$1 = function plugins$$1() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$3;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_PLUGIN':\n var availablePlugins = state.availablePlugins;\n var alreadyExists = availablePlugins.find(function (plugin) {\n return plugin.id === action.plugin.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n availablePlugins.push({\n id: action.plugin.id,\n type: action.plugin.type\n }); // Not sure where else to put this. We shouldn't store functions in Redux, so I'll do this instead\n\n plugins.availablePlugins.push(action.plugin);\n return Object.assign({}, state, {\n availablePlugins: availablePlugins\n });\n\n default:\n return state;\n }\n};\n\nvar reducers = {\n tools: tools,\n viewports: viewports,\n servers: servers,\n loading: loading,\n plugins: plugins$1\n};\n\nvar redux = {\n reducers: reducers,\n actions: actions\n};\n\n// TODO: This is duplicated in TypeSafeCollection\nfunction isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n} // TODO: This is duplicated in TypeSafeCollection\n\n\nfunction isString(subject) {\n return typeof subject === 'string';\n} // Search for some string inside any object or array\n\n\nfunction search(object, query) {\n var property = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var result = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // Create the search pattern\n var pattern = new RegExp(query.trim(), 'i');\n Object.keys(object).forEach(function (key) {\n var item = object[key]; // Stop here if item is empty\n\n if (!item) {\n return;\n } // Get the value to be compared\n\n\n var value = isString(property) ? item[property] : item; // Check if the value match the pattern\n\n if (isString(value) && pattern.test(value)) {\n // Add the current item to the result\n result.push(item);\n }\n\n if (isObject(item)) {\n // Search recursively the item if the current item is an object\n search(item, query, property, result);\n }\n }); // Return the found items\n\n return result;\n} // Encode any string into a safe format for HTML id attribute\n\n\nfunction encodeId(input) {\n var string = input && input.toString ? input.toString() : input; // Return an underscore if the given string is empty or if it's not a string\n\n if (string === '' || typeof string !== 'string') {\n return '_';\n } // Create a converter to replace non accepted chars\n\n\n var converter = function converter(match) {\n return '_' + match[0].charCodeAt(0).toString(16) + '_';\n }; // Encode the given string and return it\n\n\n return string.replace(/[^a-zA-Z0-9-]/g, converter);\n}\n\nvar string = {\n search: search,\n encodeId: encodeId\n};\n\n// Transforms a shallow object with keys separated by \".\" into a nested object\nfunction getNestedObject(shallowObject) {\n var nestedObject = {};\n\n for (var key in shallowObject) {\n if (!shallowObject.hasOwnProperty(key)) continue;\n var value = shallowObject[key];\n var propertyArray = key.split('.');\n var currentObject = nestedObject;\n\n while (propertyArray.length) {\n var currentProperty = propertyArray.shift();\n\n if (!propertyArray.length) {\n currentObject[currentProperty] = value;\n } else {\n if (!currentObject[currentProperty]) {\n currentObject[currentProperty] = {};\n }\n\n currentObject = currentObject[currentProperty];\n }\n }\n }\n\n return nestedObject;\n}\n\nfunction getShallowObject(nestedObject) {\n var shallowObject = {};\n\n var putValues = function putValues(baseKey, nestedObject, resultObject) {\n for (var key in nestedObject) {\n if (!nestedObject.hasOwnProperty(key)) continue;\n var currentKey = baseKey ? \"\".concat(baseKey, \".\").concat(key) : key;\n var currentValue = nestedObject[key];\n\n if (_typeof(currentValue) === 'object') {\n if (currentValue instanceof Array) {\n currentKey += '[]';\n }\n\n putValues(currentKey, currentValue, resultObject);\n } else {\n resultObject[currentKey] = currentValue;\n }\n }\n };\n\n putValues('', nestedObject, shallowObject);\n return shallowObject;\n}\nvar object = {\n getNestedObject: getNestedObject,\n getShallowObject: getShallowObject\n};\n\nvar validate = createCommonjsModule(function (module, exports) {\n/*!\n * validate.js 0.12.0\n *\n * (c) 2013-2017 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n ;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 12,\n patch: 0,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n v.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", {attr: attribute}));\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false;\n\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n }\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(commonjsGlobal,\n exports,\n module,\n null);\n});\n\nvalidate.validators.equals = function (value, options, key, attributes) {\n if (options && value !== options.value) {\n return key + 'must equal ' + options.value;\n }\n};\n\nvalidate.validators.doesNotEqual = function (value, options, key) {\n if (options && value === options.value) {\n return key + 'cannot equal ' + options.value;\n }\n};\n\nvalidate.validators.contains = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) === -1) {\n return key + 'must contain ' + options.value;\n }\n};\n\nvalidate.validators.doesNotContain = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) !== -1) {\n return key + 'cannot contain ' + options.value;\n }\n};\n\nvalidate.validators.startsWith = function (value, options, key) {\n if (options && value.startsWith && !value.startsWith(options.value)) {\n return key + 'must start with ' + options.value;\n }\n};\n\nvalidate.validators.endsWith = function (value, options, key) {\n if (options && value.endsWith && !value.endsWith(options.value)) {\n return key + 'must end with ' + options.value;\n }\n};\n\n/**\n * Import Constants\n */\n\nvar StudySummary = metadata.StudySummary,\n InstanceMetadata$1 = metadata.InstanceMetadata;\n/**\n * Match a Metadata instance against rules using Validate.js for validation.\n * @param {StudySummary|InstanceMetadata} metadataInstance Metadata instance object\n * @param {Array} rules Array of MatchingRules instances (StudyMatchingRule|SeriesMatchingRule|ImageMatchingRule) for the match\n * @return {Object} Matching Object with score and details (which rule passed or failed)\n */\n\nvar match = function match(metadataInstance, rules) {\n // Make sure the supplied data is valid.\n if (!(metadataInstance instanceof StudySummary || metadataInstance instanceof InstanceMetadata$1)) {\n throw new OHIFError('HPMatcher::match metadataInstance must be an instance of StudySummary or InstanceMetadata');\n }\n\n var options = {\n format: 'grouped'\n };\n var details = {\n passed: [],\n failed: []\n };\n var requiredFailed = false;\n var score = 0;\n rules.forEach(function (rule) {\n var attribute = rule.attribute;\n var customAttributeExists = metadataInstance.customAttributeExists(attribute); // If the metadataInstance we are testing (e.g. study, series, or instance MetadataInstance) do\n // not contain the attribute specified in the rule, check whether or not they have been\n // defined in the CustomAttributeRetrievalCallbacks Object.\n\n if (!customAttributeExists && HP.CustomAttributeRetrievalCallbacks.hasOwnProperty(attribute)) {\n var customAttribute = HP.CustomAttributeRetrievalCallbacks[attribute];\n metadataInstance.setCustomAttribute(attribute, customAttribute.callback(metadataInstance));\n customAttributeExists = true;\n } // Format the constraint as required by Validate.js\n\n\n var testConstraint = _defineProperty({}, attribute, rule.constraint); // Create a single attribute object to be validated, since metadataInstance is an\n // instance of Metadata (StudyMetadata, SeriesMetadata or InstanceMetadata)\n\n\n var attributeValue = customAttributeExists ? metadataInstance.getCustomAttribute(attribute) : metadataInstance.getTagValue(attribute);\n\n var attributeMap = _defineProperty({}, attribute, attributeValue); // Use Validate.js to evaluate the constraints on the specified metadataInstance\n\n\n var errorMessages;\n\n try {\n errorMessages = validate(attributeMap, testConstraint, [options]);\n } catch (e) {\n errorMessages = ['Something went wrong during validation.', e];\n }\n\n if (!errorMessages) {\n // If no errorMessages were returned, then validation passed.\n // Add the rule's weight to the total score\n score += parseInt(rule.weight, 10); // Log that this rule passed in the matching details object\n\n details.passed.push({\n rule: rule\n });\n } else {\n // If errorMessages were present, then validation failed\n // If the rule that failed validation was Required, then\n // mark that a required Rule has failed\n if (rule.required) {\n requiredFailed = true;\n } // Log that this rule failed in the matching details object\n // and include any error messages\n\n\n details.failed.push({\n rule: rule,\n errorMessages: errorMessages\n });\n }\n }); // If a required Rule has failed Validation, set the matching score to zero\n\n if (requiredFailed) {\n score = 0;\n }\n\n return {\n score: score,\n details: details,\n requiredFailed: requiredFailed\n };\n};\n\nvar HPMatcher = {\n match: match\n};\n\n// Sorts an array by score\nvar sortByScore = function sortByScore(arr) {\n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n};\n\n/**\n * Import Constants\n */\n\nvar StudyMetadata$1 = metadata.StudyMetadata,\n InstanceMetadata$2 = metadata.InstanceMetadata,\n StudySummary$1 = metadata.StudySummary;\n\n\nvar ABSTRACT_PRIOR_VALUE = 'abstractPriorValue';\n/*Meteor.startup(() => {\n HP.addCustomViewportSetting('wlPreset', 'Window/Level Preset', Object.create(null), (element, optionValue) => {\n if (_.findWhere(OHIF.viewer.wlPresets, { id: optionValue })) {\n OHIF.viewerbase.wlPresets.applyWLPreset(optionValue, element);\n }\n });\n});*/\n// TODO:\n// Should have ProtocolStore as an input to constructor\n// Something to update current HP and current stage 'globally'\n//\n//\n// Should allow user to provide:\n// functions for adding /\n\nvar ProtocolEngine =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n * @param {Array} studies Array of study metadata\n * @param {Map} priorStudies Map of prior studies\n * @param {Object} studyMetadataSource Instance of StudyMetadataSource (ohif-viewerbase) Object to get study metadata\n */\n function ProtocolEngine(studies, priorStudies, studyMetadataSource) {\n _classCallCheck(this, ProtocolEngine);\n\n _defineProperty(this, \"matchedProtocols\", new Set());\n\n _defineProperty(this, \"matchedProtocolScores\", new Map());\n\n // -----------\n // Type Validations\n if (!(studyMetadataSource instanceof StudyMetadataSource)) {\n throw new OHIFError('ProtocolEngine::constructor studyMetadataSource is not an instance of StudyMetadataSource');\n }\n\n if (!(studies instanceof Array) && !studies.every(function (study) {\n return study instanceof StudyMetadata$1;\n })) {\n throw new OHIFError(\"ProtocolEngine::constructor studies is not an array or it's items are not instances of StudyMetadata\");\n } // --------------\n // Initialization\n\n\n this.studies = studies;\n this.priorStudies = priorStudies instanceof Map ? priorStudies : new Map();\n this.studyMetadataSource = studyMetadataSource; // Put protocol engine in a known state\n\n this.reset(); // Create an array for new stage ids to be stored\n // while editing a stage\n\n this.newStageIds = [];\n }\n /**\n * Resets the ProtocolEngine to the best match\n */\n\n\n _createClass(ProtocolEngine, [{\n key: \"reset\",\n value: function reset() {\n var protocol = this.getBestProtocolMatch();\n this.setHangingProtocol(protocol);\n }\n /**\n * Retrieves the current Stage from the current Protocol and stage index\n *\n * @returns {*} The Stage model for the currently displayed Stage\n */\n\n }, {\n key: \"getCurrentStageModel\",\n value: function getCurrentStageModel() {\n return this.protocol.stages[this.stage];\n }\n /**\n * Finds the best protocols from Protocol Store, matching each protocol matching rules\n * with the given study. The best protocol are orded by score and returned in an array\n * @param {Object} study StudyMetadata instance object\n * @return {Array} Array of match objects or an empty array if no match was found\n * Each match object has the score of the matching and the matched\n * protocol\n */\n\n }, {\n key: \"findMatchByStudy\",\n value: function findMatchByStudy(study) {\n log$1.trace('ProtocolEngine::findMatchByStudy');\n var matched = [];\n var studyInstance = study.getFirstInstance(); // Set custom attribute for study metadata\n\n var numberOfAvailablePriors = this.getNumberOfAvailablePriors(study.getObjectID());\n HP.ProtocolStore.getProtocol().forEach(function (protocol) {\n // Clone the protocol's protocolMatchingRules array\n // We clone it so that we don't accidentally add the\n // numberOfPriorsReferenced rule to the Protocol itself.\n var rules = protocol.protocolMatchingRules.slice();\n\n if (!rules) {\n return;\n } // Check if the study has the minimun number of priors used by the protocol.\n\n\n var numberOfPriorsReferenced = protocol.getNumberOfPriorsReferenced();\n\n if (numberOfPriorsReferenced > numberOfAvailablePriors) {\n return;\n } // Run the matcher and get matching details\n\n\n var matchedDetails = HPMatcher.match(studyInstance, rules);\n var score = matchedDetails.score; // The protocol matched some rule, add it to the matched list\n\n if (score > 0) {\n matched.push({\n score: score,\n protocol: protocol\n });\n }\n }); // If no matches were found, select the default protocol\n\n if (!matched.length) {\n var defaultProtocol = HP.ProtocolStore.getProtocol('defaultProtocol');\n return [{\n score: 1,\n protocol: defaultProtocol\n }];\n } // Sort the matched list by score\n\n\n sortByScore(matched);\n log$1.trace('ProtocolEngine::findMatchByStudy matched', matched);\n return matched;\n }\n }, {\n key: \"_clearMatchedProtocols\",\n value: function _clearMatchedProtocols() {\n this.matchedProtocols.clear();\n this.matchedProtocolScores.clear();\n }\n /**\n * Populates the MatchedProtocols Collection by running the matching procedure\n */\n\n }, {\n key: \"updateProtocolMatches\",\n value: function updateProtocolMatches() {\n var _this = this;\n\n log$1.trace('ProtocolEngine::updateProtocolMatches'); // Clear all data currently in matchedProtocols\n\n this._clearMatchedProtocols(); // For each study, find the matching protocols\n\n\n this.studies.forEach(function (study) {\n var matched = _this.findMatchByStudy(study); // For each matched protocol, check if it is already in MatchedProtocols\n\n\n matched.forEach(function (matchedDetail) {\n var protocol = matchedDetail.protocol;\n\n if (!protocol) {\n return;\n } // If it is not already in the MatchedProtocols Collection, insert it with its score\n\n\n if (!_this.matchedProtocols.has(protocol)) {\n log$1.trace('ProtocolEngine::updateProtocolMatches inserting protocol match', matchedDetail);\n\n _this.matchedProtocols.add(protocol);\n\n _this.matchedProtocolScores[protocol.id] = matchedDetail.score;\n }\n });\n });\n }\n }, {\n key: \"_getHighestScoringProtocol\",\n value: function _getHighestScoringProtocol() {\n var highestScoringProtocolId = ProtocolEngine._largestKeyByValue(this.matchedProtocolScores);\n\n return this.matchedProtocols[highestScoringProtocolId];\n }\n /**\n * Return the best matched Protocol to the current study or set of studies\n * @returns {*}\n */\n\n }, {\n key: \"getBestProtocolMatch\",\n value: function getBestProtocolMatch() {\n // Run the matching to populate matchedProtocols Set and Map\n this.updateProtocolMatches(); // Retrieve the highest scoring Protocol\n\n var bestMatch = this._getHighestScoringProtocol();\n\n log$1.trace('ProtocolEngine::getBestProtocolMatch bestMatch', bestMatch);\n return bestMatch;\n }\n /**\n * Get the number of prior studies supplied in the priorStudies map property.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {number} The number of available prior studies with the same PatientID\n */\n\n }, {\n key: \"getNumberOfAvailablePriors\",\n value: function getNumberOfAvailablePriors(studyObjectID) {\n return this.getAvailableStudyPriors(studyObjectID).length;\n }\n /**\n * Get the array of prior studies from a specific study.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {Array} The array of available priors or an empty array\n */\n\n }, {\n key: \"getAvailableStudyPriors\",\n value: function getAvailableStudyPriors(studyObjectID) {\n var priors = this.priorStudies.get(studyObjectID);\n return priors instanceof Array ? priors : [];\n } // Match images given a list of Studies and a Viewport's image matching reqs\n\n }, {\n key: \"matchImages\",\n value: function matchImages(viewport, viewportIndex) {\n var _this2 = this;\n\n log$1.trace('ProtocolEngine::matchImages');\n var studyMatchingRules = viewport.studyMatchingRules,\n seriesMatchingRules = viewport.seriesMatchingRules,\n instanceMatchingRules = viewport.imageMatchingRules;\n var matchingScores = [];\n var currentStudy = this.studies[0]; // @TODO: Should this be: this.studies[this.currentStudy] ???\n\n var firstInstance = currentStudy.getFirstInstance();\n var highestStudyMatchingScore = 0;\n var highestSeriesMatchingScore = 0; // Set custom attribute for study metadata and it's first instance\n\n currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n } // Only used if study matching rules has abstract prior values defined...\n\n\n var priorStudies;\n studyMatchingRules.forEach(function (rule) {\n if (rule.attribute === ABSTRACT_PRIOR_VALUE) {\n var validatorType = Object.keys(rule.constraint)[0];\n var validator = Object.keys(rule.constraint[validatorType])[0];\n var abstractPriorValue = rule.constraint[validatorType][validator];\n abstractPriorValue = parseInt(abstractPriorValue, 10); // TODO: Restrict or clarify validators for abstractPriorValue?\n // No need to call it more than once...\n\n if (!priorStudies) {\n priorStudies = _this2.getAvailableStudyPriors(currentStudy.getObjectID());\n } // TODO: Revisit this later: What about two studies with the same\n // study date?\n\n\n var priorStudy;\n\n if (abstractPriorValue === -1) {\n priorStudy = priorStudies[priorStudies.length - 1];\n } else {\n var studyIndex = Math.max(abstractPriorValue - 1, 0);\n priorStudy = priorStudies[studyIndex];\n } // Invalid data\n\n\n if (!(priorStudy instanceof StudyMetadata$1) && !(priorStudy instanceof StudySummary$1)) {\n return;\n }\n\n var priorStudyObjectID = priorStudy.getObjectID(); // Check if study metadata is already in studies list\n\n if (_this2.studies.find(function (study) {\n return study.getObjectID() === priorStudyObjectID;\n })) {\n return;\n } // Get study metadata if necessary and load study in the viewer (each viewer should provide it's own load study method)\n\n\n _this2.studyMetadataSource.loadStudy(priorStudy).then(function (studyMetadata) {\n // Set the custom attribute abstractPriorValue for the study metadata\n studyMetadata.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue); // Also add custom attribute\n\n var firstInstance = studyMetadata.getFirstInstance();\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue);\n } // Insert the new study metadata\n\n\n _this2.studies.push(studyMetadata); // Update the viewport to refresh layout manager with new study\n\n\n _this2.updateViewports(viewportIndex);\n }, function (error) {\n log$1.warn(error);\n throw new OHIFError(\"ProtocolEngine::matchImages could not get study metadata for the Study with the following ObjectID: \".concat(priorStudyObjectID));\n });\n } // TODO: Add relative Date / time\n\n });\n this.studies.forEach(function (study) {\n var studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {\n return;\n }\n\n highestStudyMatchingScore = studyMatchDetails.score;\n study.forEachSeries(function (series) {\n var seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {\n return;\n }\n\n highestSeriesMatchingScore = seriesMatchDetails.score;\n series.forEachInstance(function (instance, index) {\n // This tests to make sure there is actually image data in this instance\n // TODO: Change this when we add PDF and MPEG support\n // See https://ohiforg.atlassian.net/browse/LT-227\n // sopClassUid = x00080016\n // rows = x00280010\n if (!isImage(instance.getTagValue('x00080016')) && !instance.getTagValue('x00280010')) {\n return;\n }\n\n var instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (instanceMatchDetails.requiredFailed === true) {\n return;\n }\n\n var matchDetails = {\n passed: [],\n failed: []\n };\n matchDetails.passed = matchDetails.passed.concat(instanceMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(seriesMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(studyMatchDetails.details.passed);\n matchDetails.failed = matchDetails.failed.concat(instanceMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed);\n var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score;\n var currentSOPInstanceUID = instance.getSOPInstanceUID();\n var imageDetails = {\n studyInstanceUid: study.getStudyInstanceUID(),\n seriesInstanceUid: series.getSeriesInstanceUID(),\n sopInstanceUid: currentSOPInstanceUID,\n currentImageIdIndex: index,\n matchingScore: totalMatchScore,\n matchDetails: matchDetails,\n sortingInfo: {\n score: totalMatchScore,\n study: instance.getTagValue('x00080020') + instance.getTagValue('x00080030'),\n // StudyDate = x00080020 StudyTime = x00080030\n series: parseInt(instance.getTagValue('x00200011')),\n // TODO: change for seriesDateTime SeriesNumber = x00200011\n instance: parseInt(instance.getTagValue('x00200013')) // TODO: change for acquisitionTime InstanceNumber = x00200013\n\n }\n }; // Find the displaySet\n\n var displaySet = study.findDisplaySet(function (displaySet) {\n return displaySet.images.find(function (image) {\n return image.getSOPInstanceUID() === currentSOPInstanceUID;\n });\n }); // If the instance was found, set the displaySet ID\n\n if (displaySet) {\n imageDetails.displaySetInstanceUid = displaySet.getUID();\n imageDetails.imageId = instance.getImageId();\n }\n\n matchingScores.push(imageDetails);\n });\n });\n }); // Sort the matchingScores\n\n var sortingFunction = sortBy({\n name: 'score',\n reverse: true\n }, {\n name: 'study',\n reverse: true\n }, {\n name: 'instance'\n }, {\n name: 'series'\n });\n matchingScores.sort(function (a, b) {\n return sortingFunction(a.sortingInfo, b.sortingInfo);\n });\n var bestMatch = matchingScores[0];\n log$1.trace('ProtocolEngine::matchImages bestMatch', bestMatch);\n return {\n bestMatch: bestMatch,\n matchingScores: matchingScores\n };\n }\n /**\n * Rerenders viewports that are part of the current ProtocolEngine's LayoutManager\n * using the matching rules internal to each viewport.\n *\n * If this function is provided the index of a viewport, only the specified viewport\n * is rerendered.\n *\n * @param viewportIndex\n */\n\n }, {\n key: \"updateViewports\",\n value: function updateViewports(viewportIndex) {\n var _this3 = this;\n\n log$1.trace(\"ProtocolEngine::updateViewports viewportIndex: \".concat(viewportIndex)); // Make sure we have an active protocol with a non-empty array of display sets\n\n if (!this.getNumProtocolStages()) {\n return;\n } // Retrieve the current stage\n\n\n var stageModel = this.getCurrentStageModel(); // If the current stage does not fulfill the requirements to be displayed,\n // stop here.\n\n if (!stageModel || !stageModel.viewportStructure || !stageModel.viewports || !stageModel.viewports.length) {\n return;\n } // Retrieve the layoutTemplate associated with the current display set's viewport structure\n // If no such template name exists, stop here.\n\n\n var layoutTemplateName = stageModel.viewportStructure.getLayoutTemplateName();\n\n if (!layoutTemplateName) {\n return;\n } // Retrieve the properties associated with the current display set's viewport structure template\n // If no such layout properties exist, stop here.\n\n\n var layoutProps = stageModel.viewportStructure.properties;\n\n if (!layoutProps) {\n return;\n } // Create an empty array to store the output viewportData\n\n\n var viewportData = []; // Empty the matchDetails associated with the ProtocolEngine.\n // This will be used to store the pass/fail details and score\n // for each of the viewport matching procedures\n\n this.matchDetails = []; // Loop through each viewport\n\n stageModel.viewports.forEach(function (viewport, viewportIndex) {\n var details = _this3.matchImages(viewport, viewportIndex);\n\n _this3.matchDetails[viewportIndex] = details; // Convert any YES/NO values into true/false for Cornerstone\n\n var cornerstoneViewportParams = {}; // Cache viewportSettings keys\n\n var viewportSettingsKeys = Object.keys(viewport.viewportSettings);\n viewportSettingsKeys.forEach(function (key) {\n var value = viewport.viewportSettings[key];\n\n if (value === 'YES') {\n value = true;\n } else if (value === 'NO') {\n value = false;\n }\n\n cornerstoneViewportParams[key] = value;\n }); // imageViewerViewports occasionally needs relevant layout data in order to set\n // the element style of the viewport in question\n\n var currentViewportData = _objectSpread({\n viewportIndex: viewportIndex,\n viewport: cornerstoneViewportParams\n }, layoutProps);\n\n var customSettings = [];\n viewportSettingsKeys.forEach(function (id) {\n var setting = HP.CustomViewportSettings[id];\n\n if (!setting) {\n return;\n }\n\n customSettings.push({\n id: id,\n value: viewport.viewportSettings[id]\n });\n });\n\n currentViewportData.renderedCallback = function (element) {\n //console.log('renderedCallback for ' + element.id);\n customSettings.forEach(function (customSetting) {\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback Applying custom setting: \".concat(customSetting.id));\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback with value: \".concat(customSetting.value));\n var setting = HP.CustomViewportSettings[customSetting.id];\n setting.callback(element, customSetting.value);\n });\n };\n\n var currentMatch = details.bestMatch;\n var currentPosition = 1;\n var scoresLength = details.matchingScores.length;\n\n while (currentPosition < scoresLength && viewportData.find(function (a) {\n return a.imageId === currentMatch.imageId;\n })) {\n currentMatch = details.matchingScores[currentPosition];\n currentPosition++;\n }\n\n if (currentMatch && currentMatch.imageId) {\n currentViewportData.studyInstanceUid = currentMatch.studyInstanceUid;\n currentViewportData.seriesInstanceUid = currentMatch.seriesInstanceUid;\n currentViewportData.sopInstanceUid = currentMatch.sopInstanceUid;\n currentViewportData.currentImageIdIndex = currentMatch.currentImageIdIndex;\n currentViewportData.displaySetInstanceUid = currentMatch.displaySetInstanceUid;\n currentViewportData.imageId = currentMatch.imageId;\n } // @TODO Why should we throw an exception when a best match is not found? This was aborting the whole process.\n // if (!currentViewportData.displaySetInstanceUid) {\n // throw new OHIFError('ProtocolEngine::updateViewports No matching display set found?');\n // }\n\n\n viewportData.push(currentViewportData);\n });\n this.LayoutManager.layoutTemplateName = layoutTemplateName;\n this.LayoutManager.layoutProps = layoutProps;\n this.LayoutManager.viewportData = viewportData;\n\n if (viewportIndex !== undefined && viewportData[viewportIndex]) {\n this.LayoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, viewportData[viewportIndex]);\n } else {\n this.LayoutManager.updateViewports();\n }\n }\n /**\n * Sets the current Hanging Protocol to the specified Protocol\n * An optional argument can also be used to prevent the updating of the Viewports\n *\n * @param newProtocol\n * @param updateViewports\n */\n\n }, {\n key: \"setHangingProtocol\",\n value: function setHangingProtocol(newProtocol) {\n var updateViewports = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log$1.trace('ProtocolEngine::setHangingProtocol newProtocol', newProtocol);\n log$1.trace(\"ProtocolEngine::setHangingProtocol updateViewports = \".concat(updateViewports)); // Reset the array of newStageIds\n\n this.newStageIds = [];\n\n if (HP.Protocol.prototype.isPrototypeOf(newProtocol)) {\n this.protocol = newProtocol;\n } else {\n this.protocol = new HP.Protocol();\n this.protocol.fromObject(newProtocol);\n }\n\n this.stage = 0; // Update viewports by default\n\n if (updateViewports) {\n this.updateViewports();\n } //Session.set('HangingProtocolName', this.protocol.name);\n //Session.set('HangingProtocolStage', this.stage);\n\n }\n /**\n * Check if the next stage is available\n * @return {Boolean} True if next stage is available or false otherwise\n */\n\n }, {\n key: \"isNextStageAvailable\",\n value: function isNextStageAvailable() {\n var numberOfStages = this.getNumProtocolStages();\n return this.stage + 1 < numberOfStages;\n }\n /**\n * Check if the previous stage is available\n * @return {Boolean} True if previous stage is available or false otherwise\n */\n\n }, {\n key: \"isPreviousStageAvailable\",\n value: function isPreviousStageAvailable() {\n return this.stage - 1 >= 0;\n }\n /**\n * Changes the current stage to a new stage index in the display set sequence.\n * It checks if the next stage exists.\n *\n * @param {Integer} stageAction An integer value specifying wheater next (1) or previous (-1) stage\n * @return {Boolean} True if new stage has set or false, otherwise\n */\n\n }, {\n key: \"setCurrentProtocolStage\",\n value: function setCurrentProtocolStage(stageAction) {\n // Check if previous or next stage is available\n if (stageAction === -1 && !this.isPreviousStageAvailable()) {\n return false;\n } else if (stageAction === 1 && !this.isNextStageAvailable()) {\n return false;\n } // Sets the new stage\n\n\n this.stage += stageAction; // Log the new stage\n\n log$1.trace(\"ProtocolEngine::setCurrentProtocolStage stage = \".concat(this.stage)); // Set stage Session variable for reactivity\n //Session.set('HangingProtocolStage', this.stage);\n // Since stage has changed, we need to update the viewports\n // and redo matchings\n\n this.updateViewports(); // Everything went well\n\n return true;\n }\n /**\n * Retrieves the number of Stages in the current Protocol or\n * undefined if no protocol or stages are set\n */\n\n }, {\n key: \"getNumProtocolStages\",\n value: function getNumProtocolStages() {\n if (!this.protocol || !this.protocol.stages || !this.protocol.stages.length) {\n return;\n }\n\n return this.protocol.stages.length;\n }\n /**\n * Switches to the next protocol stage in the display set sequence\n */\n\n }, {\n key: \"nextProtocolStage\",\n value: function nextProtocolStage() {\n log$1.trace('ProtocolEngine::nextProtocolStage');\n\n if (!this.setCurrentProtocolStage(1)) {\n log$1.trace('ProtocolEngine::nextProtocolStage failed');\n }\n }\n /**\n * Switches to the previous protocol stage in the display set sequence\n */\n\n }, {\n key: \"previousProtocolStage\",\n value: function previousProtocolStage() {\n log$1.trace('ProtocolEngine::previousProtocolStage');\n\n if (!this.setCurrentProtocolStage(-1)) {\n log$1.trace('ProtocolEngine::previousProtocolStage failed');\n }\n }\n }]);\n\n return ProtocolEngine;\n}();\n\nvar viewer = {};\nvar OHIF$1 = {\n viewer: viewer,\n utils: utils,\n studies: studies,\n redux: redux,\n classes: classes,\n metadata: metadata,\n hotkeys: hotkeys,\n header: header,\n cornerstone: cornerstone$1,\n string: string,\n ui: ui,\n user: user,\n object: object,\n commands: commands,\n log: log$1,\n external: external,\n DICOMWeb: DICOMWeb,\n plugins: plugins\n};\n\nexport default OHIF$1;\nexport { viewer, utils, studies, redux, classes, metadata, hotkeys, header, cornerstone$1 as cornerstone, string, ui, user, object, commands, log$1 as log, DICOMWeb, plugins, OHIF$1 as OHIF };\n//# sourceMappingURL=index.es.js.map\n","/*! dicom-parser - 1.8.2 - 2018-12-05 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return Z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(e).length;default:if(n)return Z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:f>223?3:f>191?2:1;if(i+h<=r)switch(h){case 1:f<128&&(u=f);break;case 2:128==(192&(a=e[i+1]))&&(l=(31&f)<<6|63&a)>127&&(u=l);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(l=(15&f)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&f)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return D(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return S(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},l.prototype.compare=function(e,t,r,n,i){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),f=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return y(this,e,t,r);case\"utf8\":case\"utf-8\":return b(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,a){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function B(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function U(e,t,r,n,a){return a||B(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||B(e,0,r,8),i.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return U(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return U(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function j(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var l=i(s.prototype),f=0;f1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=l}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+f[r].offset+8,f[r].length);for(var c=l(f,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;y.WritableState=_;var f=r(6);f.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,f=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(f||0===f)?f:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?l(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(2),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,l=!0;r;)i[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;i.allBuffers=l,b(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:f.length,f,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)})}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}f.inherits(y,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=g.destroy,y.prototype._undestroy=g.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,l,f;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(f=r.slice()).length,l=0;l0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var l=n[r],f=o(i,l);if(void 0===f)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,f);return(0,a.default)(e,t,f,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function f(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var l=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var f,v=\"\",S=!1,k=[\"{\",\"}\"];(c(r)&&(S=!0,k=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return b(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||S&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),f=S?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(f,v,k)):k[0]+v+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(l.value)<0?(s=g(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function y(e){return void 0===e}function b(e){return v(e)&&\"[object RegExp]\"===S(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===S(e)}function E(e){return v(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;f--)if(u[f]!==h[f])return!1;for(f=u.length-1;f>=0;f--)if(l=u[f],!y(e[l],t[l],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function b(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),l=!e&&i&&!r;if((s&&o&&v(i,r)||l)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){y(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){y(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){y(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){y(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function f(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=b;var a,o=r(38);b.ReadableState=y;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=r(34),f=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(b,l);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(2),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,o)):(i||(a=function(e,t){var r;n=t,f.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===f.prototype||(t=function(e){return f.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){c(\"emit readable\"),e.emit(\"readable\"),O(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=f.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function R(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?R(this):S(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&R(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&R(this)),null!==n&&this.emit(\"data\",n),n},b.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var l=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:b;function f(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",f),r.removeListener(\"end\",u),r.removeListener(\"end\",b),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(l):r.once(\"end\",l),e.on(\"unpipe\",f);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,O(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),b(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",y),b()}function y(){c(\"onfinish\"),e.removeListener(\"close\",_),b()}function b(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",y),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var l=new i.default(r.byteArrayParser,r.byteArray,t);return l.warnings=r.warnings,l.position=r.position,l}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=f(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,l,f,u,h,d){var c,p,g,m,_,y,b,v,w,E=d.bits,x=0,S=0,k=0,A=0,P=0,T=0,D=0,O=0,I=0,R=0,L=null,F=0,B=new n.Buf16(16),U=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)B[x]=0;for(S=0;S=1&&0===B[A];A--);if(P>A&&(P=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(k=1;k0&&(0===e||1!==A))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+B[x];for(S=0;S852||2===e&&I>592)return 1;for(;;){b=x-D,h[S]y?(v=M[N+h[S]],w=L[F+h[S]]):(v=96,w=0),c=1<>D)+(p-=c)]=b<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(R&=c-1,R+=c):R=0,S++,0==--B[x]){if(x===A)break;x=t[r+h[S]]}if(x>P&&(R&m)!==g){for(0===D&&(D=P),_+=k,O=1<<(T=x-D);T+D852||2===e&&I>592)return 1;f[g=R&m]=P<<24|T<<16|_-u|0}}return 0!==R&&(f[_+R]=x-D<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,l,f,u,h,d,c,p,g,m,_,y,b,v,w,E,x,S,k,A;r=e.state,n=e.next_in,k=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),l=r.dmax,f=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=b>>>24,p-=v,0===(v=b>>>16&255))A[a++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=g[(65535&b)+(c&(1<>>=v,p-=v),p<15&&(c+=k[n++]<>>=v=b>>>24,p-=v,!(16&(v=b>>>16&255))){if(0==(64&v)){b=m[(65535&b)+(c&(1<l){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=d,0===h){if(x+=f-v,v2;)A[a++]=S[x++],A[a++]=S[x++],A[a++]=S[x++],w-=3;w&&(A[a++]=S[x++],w>1&&(A[a++]=S[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var le,fe,ue=!0;function he(e){if(ue){var t;for(le=new n.Buf32(512),fe=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(f,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,fe,0,e.work,{bits:5}),ue=!1}e.lencode=le,e.lenbits=9,e.distcode=fe,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,le=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(le-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=S;case S:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,le=0,r.mode=k;case k:for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=A;case A:if(1024&r.flags){for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=T;case T:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&le,le-=7&le,r.mode=V;break}for(;le<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=B;break;case 1:if(he(r),r.mode=j,t===c){se>>>=2,le-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,le-=2;break;case B:for(se>>>=7&le,le-=7≤le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,le=0,r.mode=U,t===c)break e;case U:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;le<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,le-=5,r.ndist=1+(31&se),se>>>=5,le-=5,r.ncode=4+(15&se),se>>>=4,le-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>=3,le-=3}for(;r.have<19;)r.lens[Te[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Se={bits:r.lenbits},xe=s(l,r.lens,0,19,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=Z;case Z:for(;r.have>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,le-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;le>>=me,le-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,le-=2}else if(17===ye){for(ke=me+3;le>>=me)),se>>>=3,le-=3}else{for(ke=me+7;le>>=me)),se>>>=7,le-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,Se={bits:r.lenbits},xe=s(f,r.lens,0,r.nlen,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,Se={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Se),r.distbits=Se.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=j,t===c)break e;case j:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=le,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,le=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,r.length=ye,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=ye,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;le<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var f=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,y=15,b=16,v=7,w=256,E=16,x=17,S=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(p+2));l(D);var O=new Array(2*g);l(O);var I=new Array(512);l(I);var R=new Array(256);l(R);var L=new Array(d);l(L);var F,B,U,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function z(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Z(e){return e<256?I[e]:I[256+(e>>>7)]}function j(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>b-r?(e.bi_buf|=t<>b-e.bi_valid,e.bi_valid+=r-b):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(y+1),o=0;for(n=1;n<=y;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?j(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)J(e,a,r);i=l;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],J(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,J(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,l=t.dyn_tree,f=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=y;a++)e.bl_count[a]=0;for(l[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=l[2*l[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),l[2*n+1]=a,n>f||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=l[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>f||(l[2*i+1]!==a&&(e.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),n--)}}(e,t),W(a,f,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,l=7,f=4;for(0===o&&(l=138,f=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*T[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),l=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=l&&(l=f)):l=f=r+5,r+4<=l&&-1!==t?te(e,t,r,n):e.strategy===i||f===l?(C(e,(u<<1)+(n?1:0),3),K(e,D,O)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(R[r]+c+1)]++,e.dyn_dtree[2*Z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,D),function(e){16===e.bi_valid?(j(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),l=r(49),f=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,y=-5,b=-1,v=1,w=2,E=3,x=4,S=0,k=2,A=8,P=9,T=15,D=8,O=286,I=30,R=19,L=2*O+1,F=15,B=3,U=258,M=U+B+1,N=32,z=42,Z=69,j=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,J=4,K=3;function X(e,t){return e.msg=l[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,f=e.window,u=e.w_mask,h=e.prev,d=e.strstart+U,c=f[a+o-1],p=f[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(f[(r=t)+o]===p&&f[r+o-1]===c&&f[r]===f[a]&&f[++r]===f[a+1]){a+=2,r++;do{}while(f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=f[a+o-1],p=f[a+o]}}}while((t=h[t&u])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,l,f,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(f=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=f.avail_in)>d&&(c=d),r=0===c?0:(f.avail_in-=c,i.arraySet(u,f.input,f.next_in,c,h),1===f.state.wrap?f.adler=o(f.adler,u,c,h):2===f.state.wrap&&(f.adler=s(f.adler,u,c,h)),f.next_in+=c,f.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=B)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<=B)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-B,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*R+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*O+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*O+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=n,l.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===f)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new le(4,4,8,4,oe),new le(4,5,16,8,oe),new le(4,6,32,32,oe),new le(4,4,16,16,se),new le(8,16,32,32,se),new le(8,16,128,128,se),new le(8,32,128,256,se),new le(32,128,258,1024,se),new le(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,T,D,S)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=fe,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?y:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===z)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,K),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===Z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,y);if(i.status===W&&0!==e.avail_in)return X(e,y);if(0!==e.avail_in||0!==i.lookahead||t!==f&&i.status!==W){var b=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===f)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=U){if(ae(e),e.lookahead<=U&&t===f)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+U;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(r=a._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(b!==V&&b!==J||(i.status=W),b===H||b===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(b===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==z&&t!==Z&&t!==j&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,l,f,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==z||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),l=e.avail_in,f=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=B;){n=r.strstart,a=r.lookahead-(B-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,l,f,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=f,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,l){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,l=1,f={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function f(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",l),r.removeListener(\"error\",f),e.removeListener(\"error\",f),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",f),e.on(\"error\",f),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,l=r(1).kMaxLength,f=\"Cannot create final Buffer. It would be larger than 0x\"+l.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=l?o=new RangeError(f):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function y(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){T(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var l=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(l=e.level);var f=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(f=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,f,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=f,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function T(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function D(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=b,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=S,t.Unzip=k,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new k(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new b(t),e,r)},t.deflateSync=function(e,t){return y(new b(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return y(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.unzipSync=function(e,t){return y(new k(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.inflateRawSync=function(e,t){return y(new S(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){T(this,t),e.nextTick(D,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(g[0],g[1]));if(this._hadError)throw d;if(p>=l)throw T(this),new RangeError(f);var m=n.concat(c,p);return T(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(l,f){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-f;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===f||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===f){if(o+=i-l,i=l,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=y,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=y},o.inherits(b,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(S,P),o.inherits(k,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(l){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(l),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,l){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,l);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,f.default)(t,l,t.length-l),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+l);return t.copy(g,0,0,l),p.copy(g,l),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(l),_=pako.inflateRaw(m),y=(0,n.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new a.default(s.default,y,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,l);return new a.default(s.default,t,l)}(c,l.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,l.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),l=c(r(36)),f=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.2\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-f;else{if(a===l)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=f}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,l,f=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*l-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,f-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-f(e)},t.toByteArray=function(e){var t,r,n,o,s,l=e.length;o=f(e),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(25),i=f(r(77)),a=f(r(76)),o=f(r(43)),s=f(r(75)),l=f(r(74));function f(e){return e&&e.__esModule?e:{default:e}}t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=i.default,t.parseDA=a.default,t.explicitElementToString=o.default,t.explicitDataSetToJS=s.default,t.createJPEGBasicOffsetTable=l.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readTag=t.readSequenceItem=t.readSequenceItemsImplicit=t.readSequenceItemsExplicit=t.readPart10Header=t.readEncapsulatedPixelDataFromFragments=t.readEncapsulatedPixelData=t.readEncapsulatedImageFrame=t.readDicomElementImplicit=t.readDicomElementExplicit=t.parseDicom=t.littleEndianByteArrayParser=t.findItemDelimitationItemAndSetElementLength=t.findEndOfEncapsulatedElement=t.findAndSetUNElementLength=t.DataSet=t.sharedCopy=t.ByteStream=t.bigEndianByteArrayParser=t.version=t.alloc=t.readFixedString=t.parseDicomDataSetImplicit=t.parseDicomDataSetExplicit=t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(78),i=r(16),a=r(14),o=P(r(22)),s=P(r(71)),l=P(r(37)),f=P(r(12)),u=P(r(11)),h=P(r(7)),d=P(r(41)),c=P(r(42)),p=P(r(24)),g=P(r(21)),m=P(r(70)),_=P(r(15)),y=P(r(23)),b=P(r(26)),v=P(r(44)),w=P(r(17)),E=P(r(36)),x=P(r(40)),S=P(r(39)),k=P(r(13)),A=P(r(4));function P(e){return e&&e.__esModule?e:{default:e}}var T={isStringVr:n.isStringVr,isPrivateTag:n.isPrivateTag,parsePN:n.parsePN,parseTM:n.parseTM,parseDA:n.parseDA,explicitElementToString:n.explicitElementToString,explicitDataSetToJS:n.explicitDataSetToJS,createJPEGBasicOffsetTable:n.createJPEGBasicOffsetTable,parseDicomDataSetExplicit:i.parseDicomDataSetExplicit,parseDicomDataSetImplicit:i.parseDicomDataSetImplicit,readFixedString:a.readFixedString,alloc:o.default,version:s.default,bigEndianByteArrayParser:l.default,ByteStream:f.default,sharedCopy:u.default,DataSet:h.default,findAndSetUNElementLength:d.default,findEndOfEncapsulatedElement:c.default,findItemDelimitationItemAndSetElementLength:p.default,littleEndianByteArrayParser:g.default,parseDicom:m.default,readDicomElementExplicit:_.default,readDicomElementImplicit:y.default,readEncapsulatedImageFrame:b.default,readEncapsulatedPixelData:v.default,readEncapsulatedPixelDataFromFragments:w.default,readPart10Header:E.default,readSequenceItemsExplicit:x.default,readSequenceItemsImplicit:S.default,readSequenceItem:k.default,readTag:A.default};t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=n.parseTM,t.parseDA=n.parseDA,t.explicitElementToString=n.explicitElementToString,t.explicitDataSetToJS=n.explicitDataSetToJS,t.createJPEGBasicOffsetTable=n.createJPEGBasicOffsetTable,t.parseDicomDataSetExplicit=i.parseDicomDataSetExplicit,t.parseDicomDataSetImplicit=i.parseDicomDataSetImplicit,t.readFixedString=a.readFixedString,t.alloc=o.default,t.version=s.default,t.bigEndianByteArrayParser=l.default,t.ByteStream=f.default,t.sharedCopy=u.default,t.DataSet=h.default,t.findAndSetUNElementLength=d.default,t.findEndOfEncapsulatedElement=c.default,t.findItemDelimitationItemAndSetElementLength=p.default,t.littleEndianByteArrayParser=g.default,t.parseDicom=m.default,t.readDicomElementExplicit=_.default,t.readDicomElementImplicit=y.default,t.readEncapsulatedImageFrame=b.default,t.readEncapsulatedPixelData=v.default,t.readEncapsulatedPixelDataFromFragments=w.default,t.readPart10Header=E.default,t.readSequenceItemsExplicit=x.default,t.readSequenceItemsImplicit=S.default,t.readSequenceItem=k.default,t.readTag=A.default,t.default=T}])});\n//# sourceMappingURL=dicomParser.min.js.map","/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstone-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstone-core\"] = factory();\n\telse\n\t\troot[\"cornerstone\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \tfunction hotDisposeChunk(chunkId) {\n/******/ \t\tdelete installedChunks[chunkId];\n/******/ \t}\n/******/ \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n/******/ \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n/******/ \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n/******/ \t\thotAddUpdateChunk(chunkId, moreModules);\n/******/ \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n/******/ \t} ;\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadUpdateChunk(chunkId) {\n/******/ \t\tvar head = document.getElementsByTagName(\"head\")[0];\n/******/ \t\tvar script = document.createElement(\"script\");\n/******/ \t\tscript.charset = \"utf-8\";\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n/******/ \t\t;\n/******/ \t\thead.appendChild(script);\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadManifest(requestTimeout) {\n/******/ \t\trequestTimeout = requestTimeout || 10000;\n/******/ \t\treturn new Promise(function(resolve, reject) {\n/******/ \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n/******/ \t\t\t\treturn reject(new Error(\"No browser support\"));\n/******/ \t\t\t}\n/******/ \t\t\ttry {\n/******/ \t\t\t\tvar request = new XMLHttpRequest();\n/******/ \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n/******/ \t\t\t\trequest.open(\"GET\", requestPath, true);\n/******/ \t\t\t\trequest.timeout = requestTimeout;\n/******/ \t\t\t\trequest.send(null);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\treturn reject(err);\n/******/ \t\t\t}\n/******/ \t\t\trequest.onreadystatechange = function() {\n/******/ \t\t\t\tif (request.readyState !== 4) return;\n/******/ \t\t\t\tif (request.status === 0) {\n/******/ \t\t\t\t\t// timeout\n/******/ \t\t\t\t\treject(\n/******/ \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n/******/ \t\t\t\t\t);\n/******/ \t\t\t\t} else if (request.status === 404) {\n/******/ \t\t\t\t\t// no update available\n/******/ \t\t\t\t\tresolve();\n/******/ \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n/******/ \t\t\t\t\t// other failure\n/******/ \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\t// success\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n/******/ \t\t\t\t\t} catch (e) {\n/******/ \t\t\t\t\t\treject(e);\n/******/ \t\t\t\t\t\treturn;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tresolve(update);\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \tvar hotApplyOnUpdate = true;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentHash = \"72ed982d5a0046aad5fa\";\n/******/ \tvar hotRequestTimeout = 10000;\n/******/ \tvar hotCurrentModuleData = {};\n/******/ \tvar hotCurrentChildModule;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParents = [];\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParentsTemp = [];\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateRequire(moduleId) {\n/******/ \t\tvar me = installedModules[moduleId];\n/******/ \t\tif (!me) return __webpack_require__;\n/******/ \t\tvar fn = function(request) {\n/******/ \t\t\tif (me.hot.active) {\n/******/ \t\t\t\tif (installedModules[request]) {\n/******/ \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n/******/ \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\t\t\thotCurrentChildModule = request;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (me.children.indexOf(request) === -1) {\n/******/ \t\t\t\t\tme.children.push(request);\n/******/ \t\t\t\t}\n/******/ \t\t\t} else {\n/******/ \t\t\t\tconsole.warn(\n/******/ \t\t\t\t\t\"[HMR] unexpected require(\" +\n/******/ \t\t\t\t\t\trequest +\n/******/ \t\t\t\t\t\t\") from disposed module \" +\n/******/ \t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t);\n/******/ \t\t\t\thotCurrentParents = [];\n/******/ \t\t\t}\n/******/ \t\t\treturn __webpack_require__(request);\n/******/ \t\t};\n/******/ \t\tvar ObjectFactory = function ObjectFactory(name) {\n/******/ \t\t\treturn {\n/******/ \t\t\t\tconfigurable: true,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: function() {\n/******/ \t\t\t\t\treturn __webpack_require__[name];\n/******/ \t\t\t\t},\n/******/ \t\t\t\tset: function(value) {\n/******/ \t\t\t\t\t__webpack_require__[name] = value;\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t};\n/******/ \t\tfor (var name in __webpack_require__) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n/******/ \t\t\t\tname !== \"e\" &&\n/******/ \t\t\t\tname !== \"t\"\n/******/ \t\t\t) {\n/******/ \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tfn.e = function(chunkId) {\n/******/ \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n/******/ \t\t\thotChunksLoading++;\n/******/ \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n/******/ \t\t\t\tfinishChunkLoading();\n/******/ \t\t\t\tthrow err;\n/******/ \t\t\t});\n/******/\n/******/ \t\t\tfunction finishChunkLoading() {\n/******/ \t\t\t\thotChunksLoading--;\n/******/ \t\t\t\tif (hotStatus === \"prepare\") {\n/******/ \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n/******/ \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n/******/ \t\t\t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\tfn.t = function(value, mode) {\n/******/ \t\t\tif (mode & 1) value = fn(value);\n/******/ \t\t\treturn __webpack_require__.t(value, mode & ~1);\n/******/ \t\t};\n/******/ \t\treturn fn;\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateModule(moduleId) {\n/******/ \t\tvar hot = {\n/******/ \t\t\t// private stuff\n/******/ \t\t\t_acceptedDependencies: {},\n/******/ \t\t\t_declinedDependencies: {},\n/******/ \t\t\t_selfAccepted: false,\n/******/ \t\t\t_selfDeclined: false,\n/******/ \t\t\t_disposeHandlers: [],\n/******/ \t\t\t_main: hotCurrentChildModule !== moduleId,\n/******/\n/******/ \t\t\t// Module API\n/******/ \t\t\tactive: true,\n/******/ \t\t\taccept: function(dep, callback) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n/******/ \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n/******/ \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n/******/ \t\t\t},\n/******/ \t\t\tdecline: function(dep) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n/******/ \t\t\t\telse hot._declinedDependencies[dep] = true;\n/******/ \t\t\t},\n/******/ \t\t\tdispose: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\taddDisposeHandler: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\tremoveDisposeHandler: function(callback) {\n/******/ \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n/******/ \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t// Management API\n/******/ \t\t\tcheck: hotCheck,\n/******/ \t\t\tapply: hotApply,\n/******/ \t\t\tstatus: function(l) {\n/******/ \t\t\t\tif (!l) return hotStatus;\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\taddStatusHandler: function(l) {\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\tremoveStatusHandler: function(l) {\n/******/ \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n/******/ \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t//inherit from previous dispose call\n/******/ \t\t\tdata: hotCurrentModuleData[moduleId]\n/******/ \t\t};\n/******/ \t\thotCurrentChildModule = undefined;\n/******/ \t\treturn hot;\n/******/ \t}\n/******/\n/******/ \tvar hotStatusHandlers = [];\n/******/ \tvar hotStatus = \"idle\";\n/******/\n/******/ \tfunction hotSetStatus(newStatus) {\n/******/ \t\thotStatus = newStatus;\n/******/ \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n/******/ \t\t\thotStatusHandlers[i].call(null, newStatus);\n/******/ \t}\n/******/\n/******/ \t// while downloading\n/******/ \tvar hotWaitingFiles = 0;\n/******/ \tvar hotChunksLoading = 0;\n/******/ \tvar hotWaitingFilesMap = {};\n/******/ \tvar hotRequestedFilesMap = {};\n/******/ \tvar hotAvailableFilesMap = {};\n/******/ \tvar hotDeferred;\n/******/\n/******/ \t// The update info\n/******/ \tvar hotUpdate, hotUpdateNewHash;\n/******/\n/******/ \tfunction toModuleId(id) {\n/******/ \t\tvar isNumber = +id + \"\" === id;\n/******/ \t\treturn isNumber ? +id : id;\n/******/ \t}\n/******/\n/******/ \tfunction hotCheck(apply) {\n/******/ \t\tif (hotStatus !== \"idle\") {\n/******/ \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n/******/ \t\t}\n/******/ \t\thotApplyOnUpdate = apply;\n/******/ \t\thotSetStatus(\"check\");\n/******/ \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n/******/ \t\t\tif (!update) {\n/******/ \t\t\t\thotSetStatus(\"idle\");\n/******/ \t\t\t\treturn null;\n/******/ \t\t\t}\n/******/ \t\t\thotRequestedFilesMap = {};\n/******/ \t\t\thotWaitingFilesMap = {};\n/******/ \t\t\thotAvailableFilesMap = update.c;\n/******/ \t\t\thotUpdateNewHash = update.h;\n/******/\n/******/ \t\t\thotSetStatus(\"prepare\");\n/******/ \t\t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\t\thotDeferred = {\n/******/ \t\t\t\t\tresolve: resolve,\n/******/ \t\t\t\t\treject: reject\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\thotUpdate = {};\n/******/ \t\t\tvar chunkId = \"cornerstone\";\n/******/ \t\t\t// eslint-disable-next-line no-lone-blocks\n/******/ \t\t\t{\n/******/ \t\t\t\t/*globals chunkId */\n/******/ \t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t\tif (\n/******/ \t\t\t\thotStatus === \"prepare\" &&\n/******/ \t\t\t\thotChunksLoading === 0 &&\n/******/ \t\t\t\thotWaitingFiles === 0\n/******/ \t\t\t) {\n/******/ \t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t}\n/******/ \t\t\treturn promise;\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n/******/ \t\t\treturn;\n/******/ \t\thotRequestedFilesMap[chunkId] = false;\n/******/ \t\tfor (var moduleId in moreModules) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n/******/ \t\t\thotUpdateDownloaded();\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotEnsureUpdateChunk(chunkId) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId]) {\n/******/ \t\t\thotWaitingFilesMap[chunkId] = true;\n/******/ \t\t} else {\n/******/ \t\t\thotRequestedFilesMap[chunkId] = true;\n/******/ \t\t\thotWaitingFiles++;\n/******/ \t\t\thotDownloadUpdateChunk(chunkId);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotUpdateDownloaded() {\n/******/ \t\thotSetStatus(\"ready\");\n/******/ \t\tvar deferred = hotDeferred;\n/******/ \t\thotDeferred = null;\n/******/ \t\tif (!deferred) return;\n/******/ \t\tif (hotApplyOnUpdate) {\n/******/ \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n/******/ \t\t\t// avoid triggering uncaught exception warning in Chrome.\n/******/ \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n/******/ \t\t\tPromise.resolve()\n/******/ \t\t\t\t.then(function() {\n/******/ \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n/******/ \t\t\t\t})\n/******/ \t\t\t\t.then(\n/******/ \t\t\t\t\tfunction(result) {\n/******/ \t\t\t\t\t\tdeferred.resolve(result);\n/******/ \t\t\t\t\t},\n/******/ \t\t\t\t\tfunction(err) {\n/******/ \t\t\t\t\t\tdeferred.reject(err);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t);\n/******/ \t\t} else {\n/******/ \t\t\tvar outdatedModules = [];\n/******/ \t\t\tfor (var id in hotUpdate) {\n/******/ \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\t\toutdatedModules.push(toModuleId(id));\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tdeferred.resolve(outdatedModules);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotApply(options) {\n/******/ \t\tif (hotStatus !== \"ready\")\n/******/ \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n/******/ \t\toptions = options || {};\n/******/\n/******/ \t\tvar cb;\n/******/ \t\tvar i;\n/******/ \t\tvar j;\n/******/ \t\tvar module;\n/******/ \t\tvar moduleId;\n/******/\n/******/ \t\tfunction getAffectedStuff(updateModuleId) {\n/******/ \t\t\tvar outdatedModules = [updateModuleId];\n/******/ \t\t\tvar outdatedDependencies = {};\n/******/\n/******/ \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n/******/ \t\t\t\treturn {\n/******/ \t\t\t\t\tchain: [id],\n/******/ \t\t\t\t\tid: id\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\twhile (queue.length > 0) {\n/******/ \t\t\t\tvar queueItem = queue.pop();\n/******/ \t\t\t\tvar moduleId = queueItem.id;\n/******/ \t\t\t\tvar chain = queueItem.chain;\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n/******/ \t\t\t\tif (module.hot._selfDeclined) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"self-declined\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (module.hot._main) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"unaccepted\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n/******/ \t\t\t\t\tvar parentId = module.parents[i];\n/******/ \t\t\t\t\tvar parent = installedModules[parentId];\n/******/ \t\t\t\t\tif (!parent) continue;\n/******/ \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\treturn {\n/******/ \t\t\t\t\t\t\ttype: \"declined\",\n/******/ \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\tparentId: parentId\n/******/ \t\t\t\t\t\t};\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n/******/ \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n/******/ \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n/******/ \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n/******/ \t\t\t\t\t\tcontinue;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tdelete outdatedDependencies[parentId];\n/******/ \t\t\t\t\toutdatedModules.push(parentId);\n/******/ \t\t\t\t\tqueue.push({\n/******/ \t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\tid: parentId\n/******/ \t\t\t\t\t});\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/\n/******/ \t\t\treturn {\n/******/ \t\t\t\ttype: \"accepted\",\n/******/ \t\t\t\tmoduleId: updateModuleId,\n/******/ \t\t\t\toutdatedModules: outdatedModules,\n/******/ \t\t\t\toutdatedDependencies: outdatedDependencies\n/******/ \t\t\t};\n/******/ \t\t}\n/******/\n/******/ \t\tfunction addAllToSet(a, b) {\n/******/ \t\t\tfor (var i = 0; i < b.length; i++) {\n/******/ \t\t\t\tvar item = b[i];\n/******/ \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// at begin all updates modules are outdated\n/******/ \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n/******/ \t\tvar outdatedDependencies = {};\n/******/ \t\tvar outdatedModules = [];\n/******/ \t\tvar appliedUpdate = {};\n/******/\n/******/ \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n/******/ \t\t\tconsole.warn(\n/******/ \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n/******/ \t\t\t);\n/******/ \t\t};\n/******/\n/******/ \t\tfor (var id in hotUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\tmoduleId = toModuleId(id);\n/******/ \t\t\t\t/** @type {TODO} */\n/******/ \t\t\t\tvar result;\n/******/ \t\t\t\tif (hotUpdate[id]) {\n/******/ \t\t\t\t\tresult = getAffectedStuff(moduleId);\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tresult = {\n/******/ \t\t\t\t\t\ttype: \"disposed\",\n/******/ \t\t\t\t\t\tmoduleId: id\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\t/** @type {Error|false} */\n/******/ \t\t\t\tvar abortError = false;\n/******/ \t\t\t\tvar doApply = false;\n/******/ \t\t\t\tvar doDispose = false;\n/******/ \t\t\t\tvar chainInfo = \"\";\n/******/ \t\t\t\tif (result.chain) {\n/******/ \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n/******/ \t\t\t\t}\n/******/ \t\t\t\tswitch (result.type) {\n/******/ \t\t\t\t\tcase \"self-declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\t\" in \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.parentId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"unaccepted\":\n/******/ \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"accepted\":\n/******/ \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n/******/ \t\t\t\t\t\tdoApply = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"disposed\":\n/******/ \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n/******/ \t\t\t\t\t\tdoDispose = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tdefault:\n/******/ \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (abortError) {\n/******/ \t\t\t\t\thotSetStatus(\"abort\");\n/******/ \t\t\t\t\treturn Promise.reject(abortError);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (doApply) {\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n/******/ \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n/******/ \t\t\t\t\t\tif (\n/******/ \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n/******/ \t\t\t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t\t\t\t)\n/******/ \t\t\t\t\t\t) {\n/******/ \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n/******/ \t\t\t\t\t\t\taddAllToSet(\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Store self accepted outdated modules to require them later by the module system\n/******/ \t\tvar outdatedSelfAcceptedModules = [];\n/******/ \t\tfor (i = 0; i < outdatedModules.length; i++) {\n/******/ \t\t\tmoduleId = outdatedModules[i];\n/******/ \t\t\tif (\n/******/ \t\t\t\tinstalledModules[moduleId] &&\n/******/ \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n/******/ \t\t\t)\n/******/ \t\t\t\toutdatedSelfAcceptedModules.push({\n/******/ \t\t\t\t\tmodule: moduleId,\n/******/ \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n/******/ \t\t\t\t});\n/******/ \t\t}\n/******/\n/******/ \t\t// Now in \"dispose\" phase\n/******/ \t\thotSetStatus(\"dispose\");\n/******/ \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n/******/ \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n/******/ \t\t\t\thotDisposeChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t});\n/******/\n/******/ \t\tvar idx;\n/******/ \t\tvar queue = outdatedModules.slice();\n/******/ \t\twhile (queue.length > 0) {\n/******/ \t\t\tmoduleId = queue.pop();\n/******/ \t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\tif (!module) continue;\n/******/\n/******/ \t\t\tvar data = {};\n/******/\n/******/ \t\t\t// Call dispose handlers\n/******/ \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n/******/ \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n/******/ \t\t\t\tcb = disposeHandlers[j];\n/******/ \t\t\t\tcb(data);\n/******/ \t\t\t}\n/******/ \t\t\thotCurrentModuleData[moduleId] = data;\n/******/\n/******/ \t\t\t// disable module (this disables requires from this module)\n/******/ \t\t\tmodule.hot.active = false;\n/******/\n/******/ \t\t\t// remove module from cache\n/******/ \t\t\tdelete installedModules[moduleId];\n/******/\n/******/ \t\t\t// when disposing there is no need to call dispose handler\n/******/ \t\t\tdelete outdatedDependencies[moduleId];\n/******/\n/******/ \t\t\t// remove \"parents\" references from all children\n/******/ \t\t\tfor (j = 0; j < module.children.length; j++) {\n/******/ \t\t\t\tvar child = installedModules[module.children[j]];\n/******/ \t\t\t\tif (!child) continue;\n/******/ \t\t\t\tidx = child.parents.indexOf(moduleId);\n/******/ \t\t\t\tif (idx >= 0) {\n/******/ \t\t\t\t\tchild.parents.splice(idx, 1);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// remove outdated dependency from module children\n/******/ \t\tvar dependency;\n/******/ \t\tvar moduleOutdatedDependencies;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n/******/ \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n/******/ \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Not in \"apply\" phase\n/******/ \t\thotSetStatus(\"apply\");\n/******/\n/******/ \t\thotCurrentHash = hotUpdateNewHash;\n/******/\n/******/ \t\t// insert new code\n/******/ \t\tfor (moduleId in appliedUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// call accept handlers\n/******/ \t\tvar error = null;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tvar callbacks = [];\n/******/ \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n/******/ \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n/******/ \t\t\t\t\t\tif (cb) {\n/******/ \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n/******/ \t\t\t\t\t\t\tcallbacks.push(cb);\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n/******/ \t\t\t\t\t\tcb = callbacks[i];\n/******/ \t\t\t\t\t\ttry {\n/******/ \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n/******/ \t\t\t\t\t\t} catch (err) {\n/******/ \t\t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n/******/ \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n/******/ \t\t\t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t\t}\n/******/ \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\t\tif (!error) error = err;\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/******/\n/******/ \t\t// Load self accepted modules\n/******/ \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n/******/ \t\t\tvar item = outdatedSelfAcceptedModules[i];\n/******/ \t\t\tmoduleId = item.module;\n/******/ \t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\ttry {\n/******/ \t\t\t\t__webpack_require__(moduleId);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\tif (typeof item.errorHandler === \"function\") {\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\titem.errorHandler(err);\n/******/ \t\t\t\t\t} catch (err2) {\n/******/ \t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n/******/ \t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\terror: err2,\n/******/ \t\t\t\t\t\t\t\toriginalError: err\n/******/ \t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\tif (!error) error = err2;\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t});\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// handle errors in accept handlers and self accepted module load\n/******/ \t\tif (error) {\n/******/ \t\t\thotSetStatus(\"fail\");\n/******/ \t\t\treturn Promise.reject(error);\n/******/ \t\t}\n/******/\n/******/ \t\thotSetStatus(\"idle\");\n/******/ \t\treturn new Promise(function(resolve) {\n/******/ \t\t\tresolve(outdatedModules);\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {},\n/******/ \t\t\thot: hotCreateModule(moduleId),\n/******/ \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n/******/ \t\t\tchildren: []\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// __webpack_hash__\n/******/ \t__webpack_require__.h = function() { return hotCurrentHash; };\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn hotCreateRequire(\"./index.js\")(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./canvasToPixel.js\":\n/*!**************************!*\\\n !*** ./canvasToPixel.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the canvas coordinate system to the pixel coordinate system\n * system. This can be used to reset tools' image coordinates after modifications\n * have been made in canvas space (e.g. moving a tool by a few cm, independent of\n * image resolution).\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {{x: Number, y: Number}} pt The input point in the canvas coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./colors/colormap.js\":\n/*!****************************!*\\\n !*** ./colors/colormap.js ***!\n \\****************************/\n/*! exports provided: getColormapsList, getColormap */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormapsList\", function() { return getColormapsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormap\", function() { return getColormap; });\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\nvar COLOR_TRANSPARENT = [0, 0, 0, 0]; // Colormaps\n//\n// Hot Iron, PET, Hot Metal Blue and PET 20 Step are color palettes\n// Defined by the DICOM standard\n// http://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html\n//\n// All Linear Segmented Colormaps were copied from matplotlib\n// https://github.com/stefanv/matplotlib/blob/master/lib/matplotlib/_cm.py\n\nvar colormapsData = {\n hotIron: {\n name: 'Hot Iron',\n numOfColors: 256,\n colors: [[0, 0, 0, 255], [2, 0, 0, 255], [4, 0, 0, 255], [6, 0, 0, 255], [8, 0, 0, 255], [10, 0, 0, 255], [12, 0, 0, 255], [14, 0, 0, 255], [16, 0, 0, 255], [18, 0, 0, 255], [20, 0, 0, 255], [22, 0, 0, 255], [24, 0, 0, 255], [26, 0, 0, 255], [28, 0, 0, 255], [30, 0, 0, 255], [32, 0, 0, 255], [34, 0, 0, 255], [36, 0, 0, 255], [38, 0, 0, 255], [40, 0, 0, 255], [42, 0, 0, 255], [44, 0, 0, 255], [46, 0, 0, 255], [48, 0, 0, 255], [50, 0, 0, 255], [52, 0, 0, 255], [54, 0, 0, 255], [56, 0, 0, 255], [58, 0, 0, 255], [60, 0, 0, 255], [62, 0, 0, 255], [64, 0, 0, 255], [66, 0, 0, 255], [68, 0, 0, 255], [70, 0, 0, 255], [72, 0, 0, 255], [74, 0, 0, 255], [76, 0, 0, 255], [78, 0, 0, 255], [80, 0, 0, 255], [82, 0, 0, 255], [84, 0, 0, 255], [86, 0, 0, 255], [88, 0, 0, 255], [90, 0, 0, 255], [92, 0, 0, 255], [94, 0, 0, 255], [96, 0, 0, 255], [98, 0, 0, 255], [100, 0, 0, 255], [102, 0, 0, 255], [104, 0, 0, 255], [106, 0, 0, 255], [108, 0, 0, 255], [110, 0, 0, 255], [112, 0, 0, 255], [114, 0, 0, 255], [116, 0, 0, 255], [118, 0, 0, 255], [120, 0, 0, 255], [122, 0, 0, 255], [124, 0, 0, 255], [126, 0, 0, 255], [128, 0, 0, 255], [130, 0, 0, 255], [132, 0, 0, 255], [134, 0, 0, 255], [136, 0, 0, 255], [138, 0, 0, 255], [140, 0, 0, 255], [142, 0, 0, 255], [144, 0, 0, 255], [146, 0, 0, 255], [148, 0, 0, 255], [150, 0, 0, 255], [152, 0, 0, 255], [154, 0, 0, 255], [156, 0, 0, 255], [158, 0, 0, 255], [160, 0, 0, 255], [162, 0, 0, 255], [164, 0, 0, 255], [166, 0, 0, 255], [168, 0, 0, 255], [170, 0, 0, 255], [172, 0, 0, 255], [174, 0, 0, 255], [176, 0, 0, 255], [178, 0, 0, 255], [180, 0, 0, 255], [182, 0, 0, 255], [184, 0, 0, 255], [186, 0, 0, 255], [188, 0, 0, 255], [190, 0, 0, 255], [192, 0, 0, 255], [194, 0, 0, 255], [196, 0, 0, 255], [198, 0, 0, 255], [200, 0, 0, 255], [202, 0, 0, 255], [204, 0, 0, 255], [206, 0, 0, 255], [208, 0, 0, 255], [210, 0, 0, 255], [212, 0, 0, 255], [214, 0, 0, 255], [216, 0, 0, 255], [218, 0, 0, 255], [220, 0, 0, 255], [222, 0, 0, 255], [224, 0, 0, 255], [226, 0, 0, 255], [228, 0, 0, 255], [230, 0, 0, 255], [232, 0, 0, 255], [234, 0, 0, 255], [236, 0, 0, 255], [238, 0, 0, 255], [240, 0, 0, 255], [242, 0, 0, 255], [244, 0, 0, 255], [246, 0, 0, 255], [248, 0, 0, 255], [250, 0, 0, 255], [252, 0, 0, 255], [254, 0, 0, 255], [255, 0, 0, 255], [255, 2, 0, 255], [255, 4, 0, 255], [255, 6, 0, 255], [255, 8, 0, 255], [255, 10, 0, 255], [255, 12, 0, 255], [255, 14, 0, 255], [255, 16, 0, 255], [255, 18, 0, 255], [255, 20, 0, 255], [255, 22, 0, 255], [255, 24, 0, 255], [255, 26, 0, 255], [255, 28, 0, 255], [255, 30, 0, 255], [255, 32, 0, 255], [255, 34, 0, 255], [255, 36, 0, 255], [255, 38, 0, 255], [255, 40, 0, 255], [255, 42, 0, 255], [255, 44, 0, 255], [255, 46, 0, 255], [255, 48, 0, 255], [255, 50, 0, 255], [255, 52, 0, 255], [255, 54, 0, 255], [255, 56, 0, 255], [255, 58, 0, 255], [255, 60, 0, 255], [255, 62, 0, 255], [255, 64, 0, 255], [255, 66, 0, 255], [255, 68, 0, 255], [255, 70, 0, 255], [255, 72, 0, 255], [255, 74, 0, 255], [255, 76, 0, 255], [255, 78, 0, 255], [255, 80, 0, 255], [255, 82, 0, 255], [255, 84, 0, 255], [255, 86, 0, 255], [255, 88, 0, 255], [255, 90, 0, 255], [255, 92, 0, 255], [255, 94, 0, 255], [255, 96, 0, 255], [255, 98, 0, 255], [255, 100, 0, 255], [255, 102, 0, 255], [255, 104, 0, 255], [255, 106, 0, 255], [255, 108, 0, 255], [255, 110, 0, 255], [255, 112, 0, 255], [255, 114, 0, 255], [255, 116, 0, 255], [255, 118, 0, 255], [255, 120, 0, 255], [255, 122, 0, 255], [255, 124, 0, 255], [255, 126, 0, 255], [255, 128, 4, 255], [255, 130, 8, 255], [255, 132, 12, 255], [255, 134, 16, 255], [255, 136, 20, 255], [255, 138, 24, 255], [255, 140, 28, 255], [255, 142, 32, 255], [255, 144, 36, 255], [255, 146, 40, 255], [255, 148, 44, 255], [255, 150, 48, 255], [255, 152, 52, 255], [255, 154, 56, 255], [255, 156, 60, 255], [255, 158, 64, 255], [255, 160, 68, 255], [255, 162, 72, 255], [255, 164, 76, 255], [255, 166, 80, 255], [255, 168, 84, 255], [255, 170, 88, 255], [255, 172, 92, 255], [255, 174, 96, 255], [255, 176, 100, 255], [255, 178, 104, 255], [255, 180, 108, 255], [255, 182, 112, 255], [255, 184, 116, 255], [255, 186, 120, 255], [255, 188, 124, 255], [255, 190, 128, 255], [255, 192, 132, 255], [255, 194, 136, 255], [255, 196, 140, 255], [255, 198, 144, 255], [255, 200, 148, 255], [255, 202, 152, 255], [255, 204, 156, 255], [255, 206, 160, 255], [255, 208, 164, 255], [255, 210, 168, 255], [255, 212, 172, 255], [255, 214, 176, 255], [255, 216, 180, 255], [255, 218, 184, 255], [255, 220, 188, 255], [255, 222, 192, 255], [255, 224, 196, 255], [255, 226, 200, 255], [255, 228, 204, 255], [255, 230, 208, 255], [255, 232, 212, 255], [255, 234, 216, 255], [255, 236, 220, 255], [255, 238, 224, 255], [255, 240, 228, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 240, 255], [255, 248, 244, 255], [255, 250, 248, 255], [255, 252, 252, 255], [255, 255, 255, 255]]\n },\n pet: {\n name: 'PET',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 2, 1, 255], [0, 4, 3, 255], [0, 6, 5, 255], [0, 8, 7, 255], [0, 10, 9, 255], [0, 12, 11, 255], [0, 14, 13, 255], [0, 16, 15, 255], [0, 18, 17, 255], [0, 20, 19, 255], [0, 22, 21, 255], [0, 24, 23, 255], [0, 26, 25, 255], [0, 28, 27, 255], [0, 30, 29, 255], [0, 32, 31, 255], [0, 34, 33, 255], [0, 36, 35, 255], [0, 38, 37, 255], [0, 40, 39, 255], [0, 42, 41, 255], [0, 44, 43, 255], [0, 46, 45, 255], [0, 48, 47, 255], [0, 50, 49, 255], [0, 52, 51, 255], [0, 54, 53, 255], [0, 56, 55, 255], [0, 58, 57, 255], [0, 60, 59, 255], [0, 62, 61, 255], [0, 65, 63, 255], [0, 67, 65, 255], [0, 69, 67, 255], [0, 71, 69, 255], [0, 73, 71, 255], [0, 75, 73, 255], [0, 77, 75, 255], [0, 79, 77, 255], [0, 81, 79, 255], [0, 83, 81, 255], [0, 85, 83, 255], [0, 87, 85, 255], [0, 89, 87, 255], [0, 91, 89, 255], [0, 93, 91, 255], [0, 95, 93, 255], [0, 97, 95, 255], [0, 99, 97, 255], [0, 101, 99, 255], [0, 103, 101, 255], [0, 105, 103, 255], [0, 107, 105, 255], [0, 109, 107, 255], [0, 111, 109, 255], [0, 113, 111, 255], [0, 115, 113, 255], [0, 117, 115, 255], [0, 119, 117, 255], [0, 121, 119, 255], [0, 123, 121, 255], [0, 125, 123, 255], [0, 128, 125, 255], [1, 126, 127, 255], [3, 124, 129, 255], [5, 122, 131, 255], [7, 120, 133, 255], [9, 118, 135, 255], [11, 116, 137, 255], [13, 114, 139, 255], [15, 112, 141, 255], [17, 110, 143, 255], [19, 108, 145, 255], [21, 106, 147, 255], [23, 104, 149, 255], [25, 102, 151, 255], [27, 100, 153, 255], [29, 98, 155, 255], [31, 96, 157, 255], [33, 94, 159, 255], [35, 92, 161, 255], [37, 90, 163, 255], [39, 88, 165, 255], [41, 86, 167, 255], [43, 84, 169, 255], [45, 82, 171, 255], [47, 80, 173, 255], [49, 78, 175, 255], [51, 76, 177, 255], [53, 74, 179, 255], [55, 72, 181, 255], [57, 70, 183, 255], [59, 68, 185, 255], [61, 66, 187, 255], [63, 64, 189, 255], [65, 63, 191, 255], [67, 61, 193, 255], [69, 59, 195, 255], [71, 57, 197, 255], [73, 55, 199, 255], [75, 53, 201, 255], [77, 51, 203, 255], [79, 49, 205, 255], [81, 47, 207, 255], [83, 45, 209, 255], [85, 43, 211, 255], [86, 41, 213, 255], [88, 39, 215, 255], [90, 37, 217, 255], [92, 35, 219, 255], [94, 33, 221, 255], [96, 31, 223, 255], [98, 29, 225, 255], [100, 27, 227, 255], [102, 25, 229, 255], [104, 23, 231, 255], [106, 21, 233, 255], [108, 19, 235, 255], [110, 17, 237, 255], [112, 15, 239, 255], [114, 13, 241, 255], [116, 11, 243, 255], [118, 9, 245, 255], [120, 7, 247, 255], [122, 5, 249, 255], [124, 3, 251, 255], [126, 1, 253, 255], [128, 0, 255, 255], [130, 2, 252, 255], [132, 4, 248, 255], [134, 6, 244, 255], [136, 8, 240, 255], [138, 10, 236, 255], [140, 12, 232, 255], [142, 14, 228, 255], [144, 16, 224, 255], [146, 18, 220, 255], [148, 20, 216, 255], [150, 22, 212, 255], [152, 24, 208, 255], [154, 26, 204, 255], [156, 28, 200, 255], [158, 30, 196, 255], [160, 32, 192, 255], [162, 34, 188, 255], [164, 36, 184, 255], [166, 38, 180, 255], [168, 40, 176, 255], [170, 42, 172, 255], [171, 44, 168, 255], [173, 46, 164, 255], [175, 48, 160, 255], [177, 50, 156, 255], [179, 52, 152, 255], [181, 54, 148, 255], [183, 56, 144, 255], [185, 58, 140, 255], [187, 60, 136, 255], [189, 62, 132, 255], [191, 64, 128, 255], [193, 66, 124, 255], [195, 68, 120, 255], [197, 70, 116, 255], [199, 72, 112, 255], [201, 74, 108, 255], [203, 76, 104, 255], [205, 78, 100, 255], [207, 80, 96, 255], [209, 82, 92, 255], [211, 84, 88, 255], [213, 86, 84, 255], [215, 88, 80, 255], [217, 90, 76, 255], [219, 92, 72, 255], [221, 94, 68, 255], [223, 96, 64, 255], [225, 98, 60, 255], [227, 100, 56, 255], [229, 102, 52, 255], [231, 104, 48, 255], [233, 106, 44, 255], [235, 108, 40, 255], [237, 110, 36, 255], [239, 112, 32, 255], [241, 114, 28, 255], [243, 116, 24, 255], [245, 118, 20, 255], [247, 120, 16, 255], [249, 122, 12, 255], [251, 124, 8, 255], [253, 126, 4, 255], [255, 128, 0, 255], [255, 130, 4, 255], [255, 132, 8, 255], [255, 134, 12, 255], [255, 136, 16, 255], [255, 138, 20, 255], [255, 140, 24, 255], [255, 142, 28, 255], [255, 144, 32, 255], [255, 146, 36, 255], [255, 148, 40, 255], [255, 150, 44, 255], [255, 152, 48, 255], [255, 154, 52, 255], [255, 156, 56, 255], [255, 158, 60, 255], [255, 160, 64, 255], [255, 162, 68, 255], [255, 164, 72, 255], [255, 166, 76, 255], [255, 168, 80, 255], [255, 170, 85, 255], [255, 172, 89, 255], [255, 174, 93, 255], [255, 176, 97, 255], [255, 178, 101, 255], [255, 180, 105, 255], [255, 182, 109, 255], [255, 184, 113, 255], [255, 186, 117, 255], [255, 188, 121, 255], [255, 190, 125, 255], [255, 192, 129, 255], [255, 194, 133, 255], [255, 196, 137, 255], [255, 198, 141, 255], [255, 200, 145, 255], [255, 202, 149, 255], [255, 204, 153, 255], [255, 206, 157, 255], [255, 208, 161, 255], [255, 210, 165, 255], [255, 212, 170, 255], [255, 214, 174, 255], [255, 216, 178, 255], [255, 218, 182, 255], [255, 220, 186, 255], [255, 222, 190, 255], [255, 224, 194, 255], [255, 226, 198, 255], [255, 228, 202, 255], [255, 230, 206, 255], [255, 232, 210, 255], [255, 234, 214, 255], [255, 236, 218, 255], [255, 238, 222, 255], [255, 240, 226, 255], [255, 242, 230, 255], [255, 244, 234, 255], [255, 246, 238, 255], [255, 248, 242, 255], [255, 250, 246, 255], [255, 252, 250, 255], [255, 255, 255, 255]]\n },\n hotMetalBlue: {\n name: 'Hot Metal Blue',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 2, 255], [0, 0, 4, 255], [0, 0, 6, 255], [0, 0, 8, 255], [0, 0, 10, 255], [0, 0, 12, 255], [0, 0, 14, 255], [0, 0, 16, 255], [0, 0, 17, 255], [0, 0, 19, 255], [0, 0, 21, 255], [0, 0, 23, 255], [0, 0, 25, 255], [0, 0, 27, 255], [0, 0, 29, 255], [0, 0, 31, 255], [0, 0, 33, 255], [0, 0, 35, 255], [0, 0, 37, 255], [0, 0, 39, 255], [0, 0, 41, 255], [0, 0, 43, 255], [0, 0, 45, 255], [0, 0, 47, 255], [0, 0, 49, 255], [0, 0, 51, 255], [0, 0, 53, 255], [0, 0, 55, 255], [0, 0, 57, 255], [0, 0, 59, 255], [0, 0, 61, 255], [0, 0, 63, 255], [0, 0, 65, 255], [0, 0, 67, 255], [0, 0, 69, 255], [0, 0, 71, 255], [0, 0, 73, 255], [0, 0, 75, 255], [0, 0, 77, 255], [0, 0, 79, 255], [0, 0, 81, 255], [0, 0, 83, 255], [0, 0, 84, 255], [0, 0, 86, 255], [0, 0, 88, 255], [0, 0, 90, 255], [0, 0, 92, 255], [0, 0, 94, 255], [0, 0, 96, 255], [0, 0, 98, 255], [0, 0, 100, 255], [0, 0, 102, 255], [0, 0, 104, 255], [0, 0, 106, 255], [0, 0, 108, 255], [0, 0, 110, 255], [0, 0, 112, 255], [0, 0, 114, 255], [0, 0, 116, 255], [0, 0, 117, 255], [0, 0, 119, 255], [0, 0, 121, 255], [0, 0, 123, 255], [0, 0, 125, 255], [0, 0, 127, 255], [0, 0, 129, 255], [0, 0, 131, 255], [0, 0, 133, 255], [0, 0, 135, 255], [0, 0, 137, 255], [0, 0, 139, 255], [0, 0, 141, 255], [0, 0, 143, 255], [0, 0, 145, 255], [0, 0, 147, 255], [0, 0, 149, 255], [0, 0, 151, 255], [0, 0, 153, 255], [0, 0, 155, 255], [0, 0, 157, 255], [0, 0, 159, 255], [0, 0, 161, 255], [0, 0, 163, 255], [0, 0, 165, 255], [0, 0, 167, 255], [3, 0, 169, 255], [6, 0, 171, 255], [9, 0, 173, 255], [12, 0, 175, 255], [15, 0, 177, 255], [18, 0, 179, 255], [21, 0, 181, 255], [24, 0, 183, 255], [26, 0, 184, 255], [29, 0, 186, 255], [32, 0, 188, 255], [35, 0, 190, 255], [38, 0, 192, 255], [41, 0, 194, 255], [44, 0, 196, 255], [47, 0, 198, 255], [50, 0, 200, 255], [52, 0, 197, 255], [55, 0, 194, 255], [57, 0, 191, 255], [59, 0, 188, 255], [62, 0, 185, 255], [64, 0, 182, 255], [66, 0, 179, 255], [69, 0, 176, 255], [71, 0, 174, 255], [74, 0, 171, 255], [76, 0, 168, 255], [78, 0, 165, 255], [81, 0, 162, 255], [83, 0, 159, 255], [85, 0, 156, 255], [88, 0, 153, 255], [90, 0, 150, 255], [93, 2, 144, 255], [96, 4, 138, 255], [99, 6, 132, 255], [102, 8, 126, 255], [105, 9, 121, 255], [108, 11, 115, 255], [111, 13, 109, 255], [114, 15, 103, 255], [116, 17, 97, 255], [119, 19, 91, 255], [122, 21, 85, 255], [125, 23, 79, 255], [128, 24, 74, 255], [131, 26, 68, 255], [134, 28, 62, 255], [137, 30, 56, 255], [140, 32, 50, 255], [143, 34, 47, 255], [146, 36, 44, 255], [149, 38, 41, 255], [152, 40, 38, 255], [155, 41, 35, 255], [158, 43, 32, 255], [161, 45, 29, 255], [164, 47, 26, 255], [166, 49, 24, 255], [169, 51, 21, 255], [172, 53, 18, 255], [175, 55, 15, 255], [178, 56, 12, 255], [181, 58, 9, 255], [184, 60, 6, 255], [187, 62, 3, 255], [190, 64, 0, 255], [194, 66, 0, 255], [198, 68, 0, 255], [201, 70, 0, 255], [205, 72, 0, 255], [209, 73, 0, 255], [213, 75, 0, 255], [217, 77, 0, 255], [221, 79, 0, 255], [224, 81, 0, 255], [228, 83, 0, 255], [232, 85, 0, 255], [236, 87, 0, 255], [240, 88, 0, 255], [244, 90, 0, 255], [247, 92, 0, 255], [251, 94, 0, 255], [255, 96, 0, 255], [255, 98, 3, 255], [255, 100, 6, 255], [255, 102, 9, 255], [255, 104, 12, 255], [255, 105, 15, 255], [255, 107, 18, 255], [255, 109, 21, 255], [255, 111, 24, 255], [255, 113, 26, 255], [255, 115, 29, 255], [255, 117, 32, 255], [255, 119, 35, 255], [255, 120, 38, 255], [255, 122, 41, 255], [255, 124, 44, 255], [255, 126, 47, 255], [255, 128, 50, 255], [255, 130, 53, 255], [255, 132, 56, 255], [255, 134, 59, 255], [255, 136, 62, 255], [255, 137, 65, 255], [255, 139, 68, 255], [255, 141, 71, 255], [255, 143, 74, 255], [255, 145, 76, 255], [255, 147, 79, 255], [255, 149, 82, 255], [255, 151, 85, 255], [255, 152, 88, 255], [255, 154, 91, 255], [255, 156, 94, 255], [255, 158, 97, 255], [255, 160, 100, 255], [255, 162, 103, 255], [255, 164, 106, 255], [255, 166, 109, 255], [255, 168, 112, 255], [255, 169, 115, 255], [255, 171, 118, 255], [255, 173, 121, 255], [255, 175, 124, 255], [255, 177, 126, 255], [255, 179, 129, 255], [255, 181, 132, 255], [255, 183, 135, 255], [255, 184, 138, 255], [255, 186, 141, 255], [255, 188, 144, 255], [255, 190, 147, 255], [255, 192, 150, 255], [255, 194, 153, 255], [255, 196, 156, 255], [255, 198, 159, 255], [255, 200, 162, 255], [255, 201, 165, 255], [255, 203, 168, 255], [255, 205, 171, 255], [255, 207, 174, 255], [255, 209, 176, 255], [255, 211, 179, 255], [255, 213, 182, 255], [255, 215, 185, 255], [255, 216, 188, 255], [255, 218, 191, 255], [255, 220, 194, 255], [255, 222, 197, 255], [255, 224, 200, 255], [255, 226, 203, 255], [255, 228, 206, 255], [255, 229, 210, 255], [255, 231, 213, 255], [255, 233, 216, 255], [255, 235, 219, 255], [255, 237, 223, 255], [255, 239, 226, 255], [255, 240, 229, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 239, 255], [255, 248, 242, 255], [255, 250, 245, 255], [255, 251, 249, 255], [255, 253, 252, 255], [255, 255, 255, 255]]\n },\n pet20Step: {\n name: 'PET 20 Step',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255]]\n },\n gray: {\n name: 'Gray',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 1, 1]]\n }\n },\n jet: {\n name: 'Jet',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.35, 0, 0], [0.66, 1, 1], [0.89, 1, 1], [1, 0.5, 0.5]],\n green: [[0, 0, 0], [0.125, 0, 0], [0.375, 1, 1], [0.64, 1, 1], [0.91, 0, 0], [1, 0, 0]],\n blue: [[0, 0.5, 0.5], [0.11, 1, 1], [0.34, 1, 1], [0.65, 0, 0], [1, 0, 0]]\n }\n },\n hsv: {\n name: 'HSV',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [0.158730, 1, 1], [0.174603, 0.968750, 0.968750], [0.333333, 0.031250, 0.031250], [0.349206, 0, 0], [0.666667, 0, 0], [0.682540, 0.031250, 0.031250], [0.841270, 0.968750, 0.968750], [0.857143, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.158730, 0.937500, 0.937500], [0.174603, 1, 1], [0.507937, 1, 1], [0.666667, 0.062500, 0.062500], [0.682540, 0, 0], [1, 0, 0]],\n blue: [[0, 0, 0], [0.333333, 0, 0], [0.349206, 0.062500, 0.062500], [0.507937, 1, 1], [0.841270, 1, 1], [0.857143, 0.937500, 0.937500], [1, 0.09375, 0.09375]]\n }\n },\n hot: {\n name: 'Hot',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.0416, 0.0416], [0.365079, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0, 0], [0.746032, 1, 1], [1, 1, 1]],\n blue: [[0, 0, 0], [0.746032, 0, 0], [1, 1, 1]]\n }\n },\n cool: {\n name: 'Cool',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 1, 1], [1, 0, 0]],\n blue: [[0, 1, 1], [1, 1, 1]]\n }\n },\n spring: {\n name: 'Spring',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0, 0]]\n }\n },\n summer: {\n name: 'Summer',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0.5, 0.5], [1, 1, 1]],\n blue: [[0, 0.4, 0.4], [1, 0.4, 0.4]]\n }\n },\n autumn: {\n name: 'Autumn',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 0, 0]]\n }\n },\n winter: {\n name: 'Winter',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 0, 0]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0.5, 0.5]]\n }\n },\n bone: {\n name: 'Bone',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.746032, 0.652778, 0.652778], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0.319444, 0.319444], [0.746032, 0.777778, 0.777778], [1, 1, 1]],\n blue: [[0, 0, 0], [0.365079, 0.444444, 0.444444], [1, 1, 1]]\n }\n },\n copper: {\n name: 'Copper',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.809524, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 0.7812, 0.7812]],\n blue: [[0, 0, 0], [1, 0.4975, 0.4975]]\n }\n },\n spectral: {\n name: 'Spectral',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.05, 0.4667, 0.4667], [0.10, 0.5333, 0.5333], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0, 0], [0.30, 0, 0], [0.35, 0, 0], [0.40, 0, 0], [0.45, 0, 0], [0.50, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0.7333, 0.7333], [0.70, 0.9333, 0.9333], [0.75, 1, 1], [0.80, 1, 1], [0.85, 1, 1], [0.90, 0.8667, 0.8667], [0.95, 0.80, 0.80], [1, 0.80, 0.80]],\n green: [[0, 0, 0], [0.05, 0, 0], [0.10, 0, 0], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0.4667, 0.4667], [0.30, 0.6000, 0.6000], [0.35, 0.6667, 0.6667], [0.40, 0.6667, 0.6667], [0.45, 0.6000, 0.6000], [0.50, 0.7333, 0.7333], [0.55, 0.8667, 0.8667], [0.60, 1, 1], [0.65, 1, 1], [0.70, 0.9333, 0.9333], [0.75, 0.8000, 0.8000], [0.80, 0.6000, 0.6000], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]],\n blue: [[0, 0, 0], [0.05, 0.5333, 0.5333], [0.10, 0.6000, 0.6000], [0.15, 0.6667, 0.6667], [0.20, 0.8667, 0.8667], [0.25, 0.8667, 0.8667], [0.30, 0.8667, 0.8667], [0.35, 0.6667, 0.6667], [0.40, 0.5333, 0.5333], [0.45, 0, 0], [0.5, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0, 0], [0.70, 0, 0], [0.75, 0, 0], [0.80, 0, 0], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]]\n }\n },\n coolwarm: {\n name: 'CoolWarm',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.2298057, 0.2298057], [0.03125, 0.26623388, 0.26623388], [0.0625, 0.30386891, 0.30386891], [0.09375, 0.342804478, 0.342804478], [0.125, 0.38301334, 0.38301334], [0.15625, 0.424369608, 0.424369608], [0.1875, 0.46666708, 0.46666708], [0.21875, 0.509635204, 0.509635204], [0.25, 0.552953156, 0.552953156], [0.28125, 0.596262162, 0.596262162], [0.3125, 0.639176211, 0.639176211], [0.34375, 0.681291281, 0.681291281], [0.375, 0.722193294, 0.722193294], [0.40625, 0.761464949, 0.761464949], [0.4375, 0.798691636, 0.798691636], [0.46875, 0.833466556, 0.833466556], [0.5, 0.865395197, 0.865395197], [0.53125, 0.897787179, 0.897787179], [0.5625, 0.924127593, 0.924127593], [0.59375, 0.944468518, 0.944468518], [0.625, 0.958852946, 0.958852946], [0.65625, 0.96732803, 0.96732803], [0.6875, 0.969954137, 0.969954137], [0.71875, 0.966811177, 0.966811177], [0.75, 0.958003065, 0.958003065], [0.78125, 0.943660866, 0.943660866], [0.8125, 0.923944917, 0.923944917], [0.84375, 0.89904617, 0.89904617], [0.875, 0.869186849, 0.869186849], [0.90625, 0.834620542, 0.834620542], [0.9375, 0.795631745, 0.795631745], [0.96875, 0.752534934, 0.752534934], [1, 0.705673158, 0.705673158]],\n green: [[0, 0.298717966, 0.298717966], [0.03125, 0.353094838, 0.353094838], [0.0625, 0.406535296, 0.406535296], [0.09375, 0.458757618, 0.458757618], [0.125, 0.50941904, 0.50941904], [0.15625, 0.558148092, 0.558148092], [0.1875, 0.604562568, 0.604562568], [0.21875, 0.648280772, 0.648280772], [0.25, 0.688929332, 0.688929332], [0.28125, 0.726149107, 0.726149107], [0.3125, 0.759599947, 0.759599947], [0.34375, 0.788964712, 0.788964712], [0.375, 0.813952739, 0.813952739], [0.40625, 0.834302879, 0.834302879], [0.4375, 0.849786142, 0.849786142], [0.46875, 0.860207984, 0.860207984], [0.5, 0.86541021, 0.86541021], [0.53125, 0.848937047, 0.848937047], [0.5625, 0.827384882, 0.827384882], [0.59375, 0.800927443, 0.800927443], [0.625, 0.769767752, 0.769767752], [0.65625, 0.734132809, 0.734132809], [0.6875, 0.694266682, 0.694266682], [0.71875, 0.650421156, 0.650421156], [0.75, 0.602842431, 0.602842431], [0.78125, 0.551750968, 0.551750968], [0.8125, 0.49730856, 0.49730856], [0.84375, 0.439559467, 0.439559467], [0.875, 0.378313092, 0.378313092], [0.90625, 0.312874446, 0.312874446], [0.9375, 0.24128379, 0.24128379], [0.96875, 0.157246067, 0.157246067], [1, 0.01555616, 0.01555616]],\n blue: [[0, 0.753683153, 0.753683153], [0.03125, 0.801466763, 0.801466763], [0.0625, 0.84495867, 0.84495867], [0.09375, 0.883725899, 0.883725899], [0.125, 0.917387822, 0.917387822], [0.15625, 0.945619588, 0.945619588], [0.1875, 0.968154911, 0.968154911], [0.21875, 0.98478814, 0.98478814], [0.25, 0.995375608, 0.995375608], [0.28125, 0.999836203, 0.999836203], [0.3125, 0.998151185, 0.998151185], [0.34375, 0.990363227, 0.990363227], [0.375, 0.976574709, 0.976574709], [0.40625, 0.956945269, 0.956945269], [0.4375, 0.931688648, 0.931688648], [0.46875, 0.901068838, 0.901068838], [0.5, 0.865395561, 0.865395561], [0.53125, 0.820880546, 0.820880546], [0.5625, 0.774508472, 0.774508472], [0.59375, 0.726736146, 0.726736146], [0.625, 0.678007945, 0.678007945], [0.65625, 0.628751763, 0.628751763], [0.6875, 0.579375448, 0.579375448], [0.71875, 0.530263762, 0.530263762], [0.75, 0.481775914, 0.481775914], [0.78125, 0.434243684, 0.434243684], [0.8125, 0.387970225, 0.387970225], [0.84375, 0.343229596, 0.343229596], [0.875, 0.300267182, 0.300267182], [0.90625, 0.259301199, 0.259301199], [0.9375, 0.220525627, 0.220525627], [0.96875, 0.184115123, 0.184115123], [1, 0.150232812, 0.150232812]]\n }\n },\n blues: {\n name: 'Blues',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.9686274528503418, 0.9686274528503418], [0.125, 0.87058824300765991, 0.87058824300765991], [0.25, 0.7764706015586853, 0.7764706015586853], [0.375, 0.61960786581039429, 0.61960786581039429], [0.5, 0.41960784792900085, 0.41960784792900085], [0.625, 0.25882354378700256, 0.25882354378700256], [0.75, 0.12941177189350128, 0.12941177189350128], [0.875, 0.031372550874948502, 0.031372550874948502], [1, 0.031372550874948502, 0.031372550874948502]],\n green: [[0, 0.9843137264251709, 0.9843137264251709], [0.125, 0.92156863212585449, 0.92156863212585449], [0.25, 0.85882353782653809, 0.85882353782653809], [0.375, 0.7921568751335144, 0.7921568751335144], [0.5, 0.68235296010971069, 0.68235296010971069], [0.625, 0.57254904508590698, 0.57254904508590698], [0.75, 0.44313725829124451, 0.44313725829124451], [0.875, 0.31764706969261169, 0.31764706969261169], [1, 0.18823529779911041, 0.18823529779911041]],\n blue: [[0, 1, 1], [0.125, 0.9686274528503418, 0.9686274528503418], [0.25, 0.93725490570068359, 0.93725490570068359], [0.375, 0.88235294818878174, 0.88235294818878174], [0.5, 0.83921569585800171, 0.83921569585800171], [0.625, 0.7764706015586853, 0.7764706015586853], [0.75, 0.70980393886566162, 0.70980393886566162], [0.875, 0.61176472902297974, 0.61176472902297974], [1, 0.41960784792900085, 0.41960784792900085]]\n }\n }\n};\n/**\n * Generate linearly spaced vectors\n* http://cens.ioc.ee/local/man/matlab/techdoc/ref/linspace.html\n * @param {Number} a A number representing the first vector\n * @param {Number} b A number representing the second vector\n * @param {Number} n The number of linear spaced vectors to generate\n * @returns {Array} An array of points representing linear spaced vectors.\n * @memberof Colors\n */\n\nfunction linspace(a, b, n) {\n n = n === null ? 100 : n;\n var increment = (b - a) / (n - 1);\n var vector = [];\n\n while (n-- > 0) {\n vector.push(a);\n a += increment;\n } // Make sure the last item will always be \"b\" because most of the\n // Time we'll get numbers like 1.0000000000000002 instead of 1.\n\n\n vector[vector.length - 1] = b;\n return vector;\n}\n/**\n * Returns the \"rank/index\" of the element in a sorted array if found or the highest index if not. Uses (binary search)\n * @param {Array} array A sorted array to search in\n * @param {any} elem the element in the array to search for\n * @returns {number} The rank/index of the element in the given array\n * @memberof Colors\n */\n\n\nfunction getRank(array, elem) {\n var left = 0;\n var right = array.length - 1;\n\n while (left <= right) {\n var mid = left + Math.floor((right - left) / 2);\n var midElem = array[mid];\n\n if (midElem === elem) {\n return mid;\n } else if (elem < midElem) {\n right = mid - 1;\n } else {\n left = mid + 1;\n }\n }\n\n return left;\n}\n/**\n * Find the indices into a sorted array a such that, if the corresponding elements\n * In v were inserted before the indices, the order of a would be preserved.\n * http://lagrange.univ-lyon1.fr/docs/numpy/1.11.0/reference/generated/numpy.searchsorted.html\n * @param {Array} inputArray The array where the values will be inserted\n * @param {Array} values An array of the values to be inserted into the inputArray\n * @returns {Array} The indices where elements should be inserted to maintain order.\n * @memberof Colors\n */\n\n\nfunction searchSorted(inputArray, values) {\n var i;\n var indexes = [];\n var len = values.length;\n inputArray.sort(function (a, b) {\n return a - b;\n });\n\n for (i = 0; i < len; i++) {\n indexes[i] = getRank(inputArray, values[i]);\n }\n\n return indexes;\n}\n/**\n * Creates an *N* -element 1-d lookup table\n * @param {Number} N The number of elements in the result lookup table\n * @param {Array} data represented by a list of x,y0,y1 mapping correspondences. Each element in this\n * List represents how a value between 0 and 1 (inclusive) represented by x is mapped to\n * A corresponding value between 0 and 1 (inclusive). The two values of y are to allow for\n * Discontinuous mapping functions (say as might be found in a sawtooth) where y0 represents\n * The value of y for values of x <= to that given, and y1 is the value to be used for x >\n * Than that given). The list must start with x=0, end with x=1, and all values of x must be\n * In increasing order. Values between the given mapping points are determined by simple linear\n * Interpolation.\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the map.\n * @returns {any[]} an array \"result\" where result[x*(N-1)] gives the closest value for\n * Values of x between 0 and 1.\n * @memberof Colors\n */\n\n\nfunction makeMappingArray(N, data, gamma) {\n var i;\n var x = [];\n var y0 = [];\n var y1 = [];\n var lut = [];\n gamma = gamma === null ? 1 : gamma;\n\n for (i = 0; i < data.length; i++) {\n var element = data[i];\n x.push((N - 1) * element[0]);\n y0.push(element[1]);\n y1.push(element[1]);\n }\n\n var xLinSpace = linspace(0, 1, N);\n\n for (i = 0; i < N; i++) {\n xLinSpace[i] = (N - 1) * Math.pow(xLinSpace[i], gamma);\n }\n\n var xLinSpaceIndexes = searchSorted(x, xLinSpace);\n\n for (i = 1; i < N - 1; i++) {\n var index = xLinSpaceIndexes[i];\n var colorPercent = (xLinSpace[i] - x[index - 1]) / (x[index] - x[index - 1]);\n var colorDelta = y0[index] - y1[index - 1];\n lut[i] = colorPercent * colorDelta + y1[index - 1];\n }\n\n lut[0] = y1[0];\n lut[N - 1] = y0[data.length - 1];\n return lut;\n}\n/**\n * Creates a Colormap based on lookup tables using linear segments.\n * @param {{red:Array, green:Array, blue:Array}} segmentedData An object with a red, green and blue entries.\n * Each entry should be a list of x, y0, y1 tuples, forming rows in a table.\n * @param {Number} N The number of elements in the result Colormap\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the Colormap.\n * @returns {Array} The created Colormap object\n * @description The lookup table is generated using linear interpolation for each\n * Primary color, with the 0-1 domain divided into any number of\n * Segments.\n * https://github.com/stefanv/matplotlib/blob/3f1a23755e86fef97d51e30e106195f34425c9e3/lib/matplotlib/colors.py#L663\n * @memberof Colors\n */\n\n\nfunction createLinearSegmentedColormap(segmentedData, N, gamma) {\n var i;\n var lut = [];\n N = N === null ? 256 : N;\n gamma = gamma === null ? 1 : gamma;\n var redLut = makeMappingArray(N, segmentedData.red, gamma);\n var greenLut = makeMappingArray(N, segmentedData.green, gamma);\n var blueLut = makeMappingArray(N, segmentedData.blue, gamma);\n\n for (i = 0; i < N; i++) {\n var red = Math.round(redLut[i] * 255);\n var green = Math.round(greenLut[i] * 255);\n var blue = Math.round(blueLut[i] * 255);\n var rgba = [red, green, blue, 255];\n lut.push(rgba);\n }\n\n return lut;\n}\n/**\n * Return all available colormaps (id and name)\n * @returns {Array<{id,key}>} An array of colormaps with an object containing the \"id\" and display \"name\"\n * @memberof Colors\n */\n\n\nfunction getColormapsList() {\n var colormaps = [];\n var keys = Object.keys(colormapsData);\n keys.forEach(function (key) {\n if (colormapsData.hasOwnProperty(key)) {\n var colormap = colormapsData[key];\n colormaps.push({\n id: key,\n name: colormap.name\n });\n }\n });\n colormaps.sort(function (a, b) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n\n if (aName === bName) {\n return 0;\n }\n\n return aName < bName ? -1 : 1;\n });\n return colormaps;\n}\n/**\n * Return a colorMap object with the provided id and colormapData\n * if the Id matches existent colorMap objects (check colormapsData) the colormapData is ignored.\n * if the colormapData is not empty, the colorMap will be added to the colormapsData list. Otherwise, an empty colorMap object is returned.\n * @param {string} id The ID of the colormap\n * @param {Object} colormapData - An object that can contain a name, numColors, gama, segmentedData and/or colors\n * @returns {*} The Colormap Object\n * @memberof Colors\n*/\n\nfunction getColormap(id, colormapData) {\n var colormap = colormapsData[id];\n\n if (!colormap) {\n colormap = colormapsData[id] = colormapData || {\n name: '',\n colors: []\n };\n }\n\n if (!colormap.colors && colormap.segmentedData) {\n colormap.colors = createLinearSegmentedColormap(colormap.segmentedData, colormap.numColors, colormap.gamma);\n }\n\n return {\n getId: function getId() {\n return id;\n },\n getColorSchemeName: function getColorSchemeName() {\n return colormap.name;\n },\n setColorSchemeName: function setColorSchemeName(name) {\n colormap.name = name;\n },\n getNumberOfColors: function getNumberOfColors() {\n return colormap.colors.length;\n },\n setNumberOfColors: function setNumberOfColors(numColors) {\n while (colormap.colors.length < numColors) {\n colormap.colors.push(COLOR_TRANSPARENT);\n }\n\n colormap.colors.length = numColors;\n },\n getColor: function getColor(index) {\n if (this.isValidIndex(index)) {\n return colormap.colors[index];\n }\n\n return COLOR_TRANSPARENT;\n },\n getColorRepeating: function getColorRepeating(index) {\n var numColors = colormap.colors.length;\n index = numColors ? index % numColors : 0;\n return this.getColor(index);\n },\n setColor: function setColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors[index] = rgba;\n }\n },\n addColor: function addColor(rgba) {\n colormap.colors.push(rgba);\n },\n insertColor: function insertColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1, rgba);\n }\n },\n removeColor: function removeColor(index) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1);\n }\n },\n clearColors: function clearColors() {\n colormap.colors = [];\n },\n buildLookupTable: function buildLookupTable(lut) {\n if (!lut) {\n return;\n }\n\n var numColors = colormap.colors.length;\n lut.setNumberOfTableValues(numColors);\n\n for (var i = 0; i < numColors; i++) {\n lut.setTableValue(i, colormap.colors[i]);\n }\n },\n createLookupTable: function createLookupTable() {\n var lut = new _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.buildLookupTable(lut);\n return lut;\n },\n isValidIndex: function isValidIndex(index) {\n return index >= 0 && index < colormap.colors.length;\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./colors/index.js\":\n/*!*************************!*\\\n !*** ./colors/index.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colormap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colormap.js */ \"./colors/colormap.js\");\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getColormap: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormap\"],\n getColormapsList: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormapsList\"],\n LookupTable: _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./colors/lookupTable.js\":\n/*!*******************************!*\\\n !*** ./colors/lookupTable.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// This code was created based on vtkLookupTable\n// http://www.vtk.org/doc/release/5.0/html/a01697.html\n// https://github.com/Kitware/VTK/blob/master/Common/Core/vtkLookupTable.cxx\nvar BELOW_RANGE_COLOR_INDEX = 0;\nvar ABOVE_RANGE_COLOR_INDEX = 1;\nvar NAN_COLOR_INDEX = 2;\n/**\n * Converts an HSV (Hue, Saturation, Value) color to RGB (Red, Green, Blue) color value\n * @param {Number} hue A number representing the hue color value\n * @param {any} sat A number representing the saturation color value\n * @param {any} val A number representing the value color value\n * @returns {Numberp[]} An RGB color array\n */\n\nfunction HSVToRGB(hue, sat, val) {\n if (hue > 1) {\n throw new Error('HSVToRGB expects hue < 1');\n }\n\n var rgb = [];\n\n if (sat === 0) {\n rgb[0] = val;\n rgb[1] = val;\n rgb[2] = val;\n return rgb;\n }\n\n var hueCase = Math.floor(hue * 6);\n var frac = 6 * hue - hueCase;\n var lx = val * (1 - sat);\n var ly = val * (1 - sat * frac);\n var lz = val * (1 - sat * (1 - frac));\n\n switch (hueCase) {\n /* 0 p.Range[1]) {\n dIndex = p.MaxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.Shift) * p.Scale;\n }\n\n return Math.floor(dIndex);\n}\n/**\n * Maps scalar values into colors via a lookup table\n * LookupTable is an object that is used by mapper objects to map scalar values into rgba (red-green-blue-alpha transparency) color specification,\n * or rgba into scalar values. The color table can be created by direct insertion of color values, or by specifying hue, saturation, value, and alpha range and generating a table\n */\n\n\nvar LookupTable =\n/*#__PURE__*/\nfunction () {\n /**\n * Creates a default linear LookupTable object with 256 colors.\n */\n function LookupTable() {\n _classCallCheck(this, LookupTable);\n\n this.NumberOfColors = 256;\n this.Ramp = 'linear';\n this.TableRange = [0, 255];\n this.HueRange = [0, 0.66667];\n this.SaturationRange = [1, 1];\n this.ValueRange = [1, 1];\n this.AlphaRange = [1, 1];\n this.NaNColor = [128, 0, 0, 255];\n this.BelowRangeColor = [0, 0, 0, 255];\n this.UseBelowRangeColor = true;\n this.AboveRangeColor = [255, 255, 255, 255];\n this.UseAboveRangeColor = true;\n this.InputRange = [0, 255];\n this.Table = [];\n }\n /**\n * Specify the number of values (i.e., colors) in the lookup table.\n * @param {Number} number The number of colors in he LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n\n _createClass(LookupTable, [{\n key: \"setNumberOfTableValues\",\n value: function setNumberOfTableValues(number) {\n this.NumberOfColors = number;\n }\n /**\n * Set the shape of the table ramp to either 'linear', 'scurve' or 'sqrt'\n * @param {String} ramp A string value representing the shape of the table. Allowed values are 'linear', 'scurve' or 'sqrt'\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRamp\",\n value: function setRamp(ramp) {\n this.Ramp = ramp;\n }\n /**\n * Sets the minimum/maximum scalar values for scalar mapping.\n * Scalar values less than minimum range value are clamped to minimum range value.\n * Scalar values greater than maximum range value are clamped to maximum range value.\n * @param {Number} start A double representing the minimum scaler value of the LookupTable\n * @param {any} end A double representing the maximum scaler value of the LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableRange\",\n value: function setTableRange(start, end) {\n this.TableRange[0] = start;\n this.TableRange[1] = end;\n }\n /**\n * Set the range in hue (using automatic generation). Hue ranges between [0,1].\n * @param {Number} start A double representing the minimum hue value in a range. Min. is 0\n * @param {Number} end A double representing the maximum hue value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setHueRange\",\n value: function setHueRange(start, end) {\n this.HueRange[0] = start;\n this.HueRange[1] = end;\n }\n /**\n * Set the range in saturation (using automatic generation). Saturation ranges between [0,1].\n * @param {Number} start A double representing the minimum Saturation value in a range. Min. is 0\n * @param {Number} end A double representing the maximum Saturation value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setSaturationRange\",\n value: function setSaturationRange(start, end) {\n this.SaturationRange[0] = start;\n this.SaturationRange[1] = end;\n }\n /**\n * Set the range in value (using automatic generation). Value ranges between [0,1].\n * @param {Numeber } start A double representing the minimum value in a range. Min. is 0\n * @param {Numeber} end A double representing the maximum value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setValueRange\",\n value: function setValueRange(start, end) {\n // Set the range in value (using automatic generation). Value ranges between [0,1].\n this.ValueRange[0] = start;\n this.ValueRange[1] = end;\n }\n /**\n * (Not Used) Sets the range of scalars which will be mapped.\n * @param {Number} start the minimum scalar value in the range\n * @param {Number} end the maximum scalar value in the range\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRange\",\n value: function setRange(start, end) {\n this.InputRange[0] = start;\n this.InputRange[1] = end;\n }\n /**\n * Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n * @param {Number} start A double representing the minimum alpha value\n * @param {Number} end A double representing the maximum alpha value\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setAlphaRange\",\n value: function setAlphaRange(start, end) {\n // Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n this.AlphaRange[0] = start;\n this.AlphaRange[1] = end;\n }\n /**\n * Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Number} scalar A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"getColor\",\n value: function getColor(scalar) {\n return this.mapValue(scalar);\n }\n /**\n * Generate lookup table from hue, saturation, value, alpha min/max values. Table is built from linear ramp of each value.\n * @param {Boolean} force true to force the build of the LookupTable. Otherwie, false. This is useful if a lookup table has been defined manually\n * (using SetTableValue) and then an application decides to rebuild the lookup table using the implicit process.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"build\",\n value: function build(force) {\n if (this.Table.length > 1 && !force) {\n return;\n } // Clear the table\n\n\n this.Table = [];\n var maxIndex = this.NumberOfColors - 1;\n var hinc, sinc, vinc, ainc;\n\n if (maxIndex) {\n hinc = (this.HueRange[1] - this.HueRange[0]) / maxIndex;\n sinc = (this.SaturationRange[1] - this.SaturationRange[0]) / maxIndex;\n vinc = (this.ValueRange[1] - this.ValueRange[0]) / maxIndex;\n ainc = (this.AlphaRange[1] - this.AlphaRange[0]) / maxIndex;\n } else {\n hinc = sinc = vinc = ainc = 0.0;\n }\n\n for (var i = 0; i <= maxIndex; i++) {\n var hue = this.HueRange[0] + i * hinc;\n var sat = this.SaturationRange[0] + i * sinc;\n var val = this.ValueRange[0] + i * vinc;\n var alpha = this.AlphaRange[0] + i * ainc;\n var rgb = HSVToRGB(hue, sat, val);\n var c_rgba = [];\n\n switch (this.Ramp) {\n case 'scurve':\n c_rgba[0] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[0]) * Math.PI)));\n c_rgba[1] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[1]) * Math.PI)));\n c_rgba[2] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[2]) * Math.PI)));\n c_rgba[3] = Math.floor(alpha * 255);\n break;\n\n case 'linear':\n c_rgba[0] = Math.floor(rgb[0] * 255 + 0.5);\n c_rgba[1] = Math.floor(rgb[1] * 255 + 0.5);\n c_rgba[2] = Math.floor(rgb[2] * 255 + 0.5);\n c_rgba[3] = Math.floor(alpha * 255 + 0.5);\n break;\n\n case 'sqrt':\n c_rgba[0] = Math.floor(Math.sqrt(rgb[0]) * 255 + 0.5);\n c_rgba[1] = Math.floor(Math.sqrt(rgb[1]) * 255 + 0.5);\n c_rgba[2] = Math.floor(Math.sqrt(rgb[2]) * 255 + 0.5);\n c_rgba[3] = Math.floor(Math.sqrt(alpha) * 255 + 0.5);\n break;\n\n default:\n throw new Error(\"Invalid Ramp value (\".concat(this.Ramp, \")\"));\n }\n\n this.Table.push(c_rgba);\n }\n\n this.buildSpecialColors();\n }\n /**\n * Ensures the out-of-range colors (Below range and Above range) are set correctly.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"buildSpecialColors\",\n value: function buildSpecialColors() {\n var numberOfColors = this.NumberOfColors;\n var belowRangeColorIndex = numberOfColors + BELOW_RANGE_COLOR_INDEX;\n var aboveRangeColorIndex = numberOfColors + ABOVE_RANGE_COLOR_INDEX;\n var nanColorIndex = numberOfColors + NAN_COLOR_INDEX; // Below range color\n\n if (this.UseBelowRangeColor || numberOfColors === 0) {\n this.Table[belowRangeColorIndex] = this.BelowRangeColor;\n } else {\n // Duplicate the first color in the table.\n this.Table[belowRangeColorIndex] = this.Table[0];\n } // Above range color\n\n\n if (this.UseAboveRangeColor || numberOfColors === 0) {\n this.Table[aboveRangeColorIndex] = this.AboveRangeColor;\n } else {\n // Duplicate the last color in the table.\n this.Table[aboveRangeColorIndex] = this.Table[numberOfColors - 1];\n } // Always use NanColor\n\n\n this.Table[nanColorIndex] = this.NaNColor;\n }\n /**\n * Similar to GetColor - Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Numeber} v A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"mapValue\",\n value: function mapValue(v) {\n var index = this.getIndex(v);\n\n if (index < 0) {\n return this.NaNColor;\n } else if (index === 0) {\n if (this.UseBelowRangeColor && v < this.TableRange[0]) {\n return this.BelowRangeColor;\n }\n } else if (index === this.NumberOfColors - 1) {\n if (this.UseAboveRangeColor && v > this.TableRange[1]) {\n return this.AboveRangeColor;\n }\n }\n\n return this.Table[index];\n }\n /**\n * Return the table index associated with a particular value.\n * @param {Number} v A double value which table index will be returned.\n * @returns {Number} The index in the LookupTable\n * @memberof Colors\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex(v) {\n var p = {};\n p.Range = [];\n p.MaxIndex = this.NumberOfColors - 1; // This was LookupShiftAndScale\n\n p.Shift = -this.TableRange[0];\n\n if (this.TableRange[1] <= this.TableRange[0]) {\n p.Scale = Number.MAX_VALUE;\n } else {\n p.Scale = p.MaxIndex / (this.TableRange[1] - this.TableRange[0]);\n }\n\n p.Range[0] = this.TableRange[0];\n p.Range[1] = this.TableRange[1]; // First, check whether we have a number...\n\n if (isNaN(v)) {\n // For backwards compatibility\n return -1;\n } // Map to an index:\n\n\n var index = linearIndexLookupMain(v, p); // For backwards compatibility, if the index indicates an\n // Out-of-range value, truncate to index range for in-range colors.\n\n if (index === this.NumberOfColors + BELOW_RANGE_COLOR_INDEX) {\n index = 0;\n } else if (index === this.NumberOfColors + ABOVE_RANGE_COLOR_INDEX) {\n index = this.NumberOfColors - 1;\n }\n\n return index;\n }\n /**\n * Directly load color into lookup table. Use [0,1] double values for color component specification.\n * Make sure that you've either used the Build() method or used SetNumberOfTableValues() prior to using this method.\n * @param {Number} index The index in the LookupTable of where to insert the color value\n * @param {Number[]} rgba An array of [0,1] double values for an RGBA color component\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableValue\",\n value: function setTableValue(index, rgba) {\n // Check if it index, red, green, blue and alpha were passed as parameter\n if (arguments.length === 5) {\n rgba = Array.prototype.slice.call(arguments, 1);\n } // Check the index to make sure it is valid\n\n\n if (index < 0) {\n throw new Error(\"Can't set the table value for negative index (\".concat(index, \")\"));\n }\n\n if (index >= this.NumberOfColors) {\n new Error(\"Index \".concat(index, \" is greater than the number of colors \").concat(this.NumberOfColors));\n }\n\n this.Table[index] = rgba;\n\n if (index === 0 || index === this.NumberOfColors - 1) {\n // This is needed due to the way the special colors are stored in\n // The internal table. If Above/BelowRangeColors are not used and\n // The min/max colors are changed in the table with this member\n // Function, then the colors used for values outside the range may\n // Be incorrect. Calling this here ensures the out-of-range colors\n // Are set correctly.\n this.buildSpecialColors();\n }\n }\n }]);\n\n return LookupTable;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LookupTable);\n\n/***/ }),\n\n/***/ \"./disable.js\":\n/*!********************!*\\\n !*** ./disable.js ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Disable an HTML element for further use in Cornerstone\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Enable\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n if (element === undefined) {\n throw new Error('disable: element must not be undefined');\n } // Search for this element in this list of enabled elements\n\n\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n // We found it!\n // Fire an event so dependencies can cleanup\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_2__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData); // Remove the child DOM elements that we created (e.g.canvas)\n\n enabledElements[i].element.removeChild(enabledElements[i].canvas);\n enabledElements[i].canvas = undefined; // Remove this element from the list of enabled elements\n\n enabledElements.splice(i, 1);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./displayImage.js\":\n/*!*************************!*\\\n !*** ./displayImage.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n\n/**\n * Sets a new image object for a given element.\n *\n * Will also apply an optional viewport setting.\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @param {Object} [viewport] A set of Cornerstone viewport parameters\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image, viewport) {\n if (element === undefined) {\n throw new Error('displayImage: parameter element must not be undefined');\n }\n\n if (image === undefined) {\n throw new Error('displayImage: parameter image must not be undefined');\n }\n\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldImage = enabledElement.image;\n enabledElement.image = image;\n\n if (enabledElement.layers && enabledElement.layers.length) {\n Object(_layers_js__WEBPACK_IMPORTED_MODULE_4__[\"setLayerImage\"])(element, image);\n }\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n }\n\n var frameRate;\n\n if (enabledElement.lastImageTimeStamp !== undefined) {\n var timeSinceLastImage = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - enabledElement.lastImageTimeStamp;\n frameRate = (1000 / timeSinceLastImage).toFixed();\n }\n\n enabledElement.lastImageTimeStamp = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var newImageEventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n oldImage: oldImage,\n enabledElement: enabledElement,\n frameRate: frameRate\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].NEW_IMAGE, newImageEventData);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./draw.js\":\n/*!*****************!*\\\n !*** ./draw.js ***!\n \\*****************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Immediately draws the enabled element\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('draw: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./drawInvalidated.js\":\n/*!****************************!*\\\n !*** ./drawInvalidated.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/**\n * This module is responsible for drawing invalidated enabled elements\n */\n\n\n/**\n * Draws all invalidated enabled elements and clears the invalid flag after drawing it\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n var ee = enabledElements[i];\n\n if (ee.invalid === true) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ee, true);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./enable.js\":\n/*!*******************!*\\\n !*** ./enable.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _generateUUID_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generateUUID.js */ \"./generateUUID.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/getCanvas.js */ \"./internal/getCanvas.js\");\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Enable\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n */\n\n/**\r\n * Returns whether or not an Enabled Element has either a currently active image or\r\n * a non-empty Array of Enabled Element Layers.\r\n *\r\n * @param {EnabledElement} enabledElement An Enabled Element\r\n * @return {Boolean} Whether or not the Enabled Element has an active image or valid set of layers\r\n * @memberof Enable\r\n */\n\nfunction hasImageOrLayers(enabledElement) {\n return enabledElement.image !== undefined || enabledElement.layers.length > 0;\n}\n/**\r\n * Enable an HTML Element for use in Cornerstone\r\n *\r\n * - If there is a Canvas already present within the HTMLElement, and it has the class\r\n * 'cornerstone-canvas', this function will use this existing Canvas instead of creating\r\n * a new one. This may be helpful when using libraries (e.g. React, Vue) which don't\r\n * want third parties to change the DOM.\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @param {Object} options Options for the enabledElement\r\n *\r\n * @return {void}\r\n * @memberof Enable\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, options) {\n if (element === undefined) {\n throw new Error('enable: parameter element cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var canvas = Object(_internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element);\n var enabledElement = {\n element: element,\n canvas: canvas,\n image: undefined,\n // Will be set once image is loaded\n invalid: false,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n uuid: Object(_generateUUID_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])()\n };\n Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"addEnabledElement\"])(enabledElement);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_7__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ELEMENT_ENABLED, enabledElement);\n Object(_resize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, true);\n /**\r\n * Draw the image immediately\r\n *\r\n * @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n function draw(timestamp) {\n if (enabledElement.canvas === undefined) {\n return;\n }\n\n var eventDetails = {\n enabledElement: enabledElement,\n timestamp: timestamp\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].PRE_RENDER, eventDetails);\n\n if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, enabledElement.invalid);\n }\n\n Object(_internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(draw);\n }\n\n draw();\n});\n\n/***/ }),\n\n/***/ \"./enabledElementData.js\":\n/*!*******************************!*\\\n !*** ./enabledElementData.js ***!\n \\*******************************/\n/*! exports provided: getElementData, removeElementData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return getElementData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return removeElementData; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n * @returns {*} Whatever data is stored for this enabled element\n */\n\nfunction getElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (ee.data.hasOwnProperty(dataType) === false) {\n ee.data[dataType] = {};\n }\n\n return ee.data[dataType];\n}\n/**\n * Clears any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n *\n * @returns {void}\n */\n\nfunction removeElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n delete ee.data[dataType];\n}\n\n/***/ }),\n\n/***/ \"./enabledElements.js\":\n/*!****************************!*\\\n !*** ./enabledElements.js ***!\n \\****************************/\n/*! exports provided: getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return getEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return addEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return getEnabledElementsByImageId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return getEnabledElements; });\nvar enabledElements = [];\n/**\n * @module EnabledElements\n */\n\n/**\n * @module Objects\n */\n\n/**\n * A two-dimensional vector\n *\n * @typedef {Object} vec2\n * @memberof Objects\n * @param {Number} x - The x distance\n * @param {Number} y - The y distance\n */\n\n/**\n * VOI\n *\n * @typedef {Object} VOI\n * @memberof Objects\n * @param {Number} windowWidth - Window Width for display\n * @param {Number} windowCenter - Window Center for display\n */\n\n/**\n * Lookup Table Array\n *\n * @typedef {Object} LUT\n * @memberof Objects\n * @property {Number} firstValueMapped\n * @property {Number} numBitsPerEntry\n * @property {Array} lut\n */\n\n/**\n * Image Statistics Object\n *\n * @typedef {Object} ImageStats\n * @memberof Objects\n * @property {Number} [lastGetPixelDataTime] The time in ms taken to retrieve stored pixels required to draw the image\n * @property {Number} [lastStoredPixelDataToCanvasImageDataTime] The time in ms taken to map from stored pixel array to canvas pixel array\n * @property {Number} [lastPutImageDataTime] The time in ms taken for putImageData to put the canvas pixel data into the canvas context\n * @property {Number} [lastRenderTime] The total time in ms taken for the entire rendering function to run\n * @property {Number} [lastLutGenerateTime] The time in ms taken to generate the lookup table for the image\n */\n\n/**\n * An Image Object in Cornerstone\n *\n * @typedef {Object} Image\n * @memberof Objects\n * @property {string} imageId - The imageId associated with this image object\n * @property {Number} minPixelValue - the minimum stored pixel value in the image\n * @property {Number} maxPixelValue - the maximum stored pixel value in the image\n * @property {Number} slope - the rescale slope to convert stored pixel values to modality pixel values or 1 if not specified\n * @property {Number} intercept - the rescale intercept used to convert stored pixel values to modality values or 0 if not specified\n * @property {Number} windowCenter - the default windowCenter to apply to the image\n * @property {Number} windowWidth - the default windowWidth to apply to the image\n * @property {function} getPixelData - a function that returns the underlying pixel data. An array of integers for grayscale and an array of RGBA for color\n * @property {function} getImageData - a function that returns a canvas imageData object for the image. This is only needed for color images\n * @property {function} getCanvas - a function that returns a canvas element with the image loaded into it. This is only needed for color images.\n * @property {function} getImage - a function that returns a JavaScript Image object with the image data. This is optional and typically used for images encoded in standard web JPEG and PNG formats\n * @property {Number} rows - number of rows in the image. This is the same as height but duplicated for convenience\n * @property {Number} columns - number of columns in the image. This is the same as width but duplicated for convenience\n * @property {Number} height - the height of the image. This is the same as rows but duplicated for convenience\n * @property {Number} width - the width of the image. This is the same as columns but duplicated for convenience\n * @property {Boolean} color - true if pixel data is RGB, false if grayscale\n * @property {Object} lut - The Lookup Table\n * @property {Boolean} rgba - Is the color pixel data stored in RGBA?\n * @property {Number} columnPixelSpacing - horizontal distance between the middle of each pixel (or width of each pixel) in mm or undefined if not known\n * @property {Number} rowPixelSpacing - vertical distance between the middle of each pixel (or height of each pixel) in mm or undefined if not known\n * @property {Boolean} invert - true if the the image should initially be displayed be inverted, false if not. This is here mainly to support DICOM images with a photometric interpretation of MONOCHROME1\n * @property {Number} sizeInBytes - the number of bytes used to store the pixels for this image.\n * @property {Boolean} [falseColor=false] - Whether or not the image has undergone false color mapping\n * @property {Array} [origPixelData] - Original pixel data for an image after it has undergone false color mapping\n * @property {ImageStats} [stats] - Statistics for the last redraw of the image\n * @property {Object} cachedLut - Cached Lookup Table for this image.\n * @property {String|Colormap} [colormap] - Depreacted. Use viewport.colormap instead. an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * A Viewport Settings Object Cornerstone\n *\n * @typedef {Object} Viewport\n * @memberof Objects\n * @property {Number} [scale=1.0] - The scale applied to the image. A scale of 1.0 will display no zoom (one image pixel takes up one screen pixel). A scale of 2.0 will be double zoom and a scale of .5 will be zoomed out by 2x\n * @property {vec2} [translation] - An object with properties x and y which describe the translation to apply in the pixel coordinate system. Note that the image is initially displayed centered in the enabled element with a x and y translation of 0 and 0 respectively.\n * @property {VOI} [voi] - an object with properties windowWidth and windowCenter.\n * @property {boolean} [invert=false] - Whether or not the image is inverted.\n * @property {boolean} [pixelReplication=false] - true if the image smooth / interpolation should be used when zoomed in on the image or false if pixel replication should be used.\n * @property {boolean} [hflip=false] - true if the image is flipped horizontally. Default is false\n * @property {boolean} [vflip=false] - true if the image is flipped vertically. Default is false\n * @property {Number} [rotation=0] - the rotation of the image (90 degree increments). Default is 0\n * @property {LUT} [modalityLUT] - the modality LUT to apply or undefined if none\n * @property {LUT} [voiLUT] - the modality LUT to apply or undefined if none\n * @property {String|Colormap} [colormap] - an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * An Enabled Element in Cornerstone\n *\n * @typedef {Object} EnabledElement\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n * @property {EnabledElementLayer[]} [layers] - The layers that have been added to the enabledElement\n * @property {Boolean} [syncViewports] - Whether or not to synchronize the viewport parameters\n * for each of the enabled element's layers\n * @property {Boolean} [lastSyncViewportsState] - The previous state for the sync viewport boolean\n */\n\n/**\n * An Enabled Element Layer in Cornerstone\n *\n * @typedef {Object} EnabledElementLayer\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Object} [options] - Layer drawing options\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n */\n\n/**\n * An Image Load Object\n *\n * @typedef {Object} ImageLoadObject\n * @memberof Objects\n * @property {Promise} promise - The Promise tracking the loading of this image\n * @property {Function|undefined} cancelFn - A function to cancel the image load request\n */\n\n/**\n * Retrieves a Cornerstone Enabled Element object\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n *\n * @returns {EnabledElement} A Cornerstone Enabled Element\n * @memberof EnabledElements\n */\n\nfunction getEnabledElement(element) {\n if (element === undefined) {\n throw new Error('getEnabledElement: parameter element must not be undefined');\n }\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n return enabledElements[i];\n }\n }\n\n throw new Error('element not enabled');\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {EnabledElement} enabledElement A Cornerstone enabledElement Object\n * @returns {void}\n * @memberof EnabledElements\n */\n\nfunction addEnabledElement(enabledElement) {\n if (enabledElement === undefined) {\n throw new Error('getEnabledElement: enabledElement element must not be undefined');\n }\n\n enabledElements.push(enabledElement);\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {string} imageId A Cornerstone Image ID\n * @returns {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElementsByImageId(imageId) {\n var ees = [];\n enabledElements.forEach(function (enabledElement) {\n if (enabledElement.image && enabledElement.image.imageId === imageId) {\n ees.push(enabledElement);\n }\n });\n return ees;\n}\n/**\n * Retrieve all of the currently enabled Cornerstone elements\n *\n * @return {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElements() {\n return enabledElements;\n}\n\n/***/ }),\n\n/***/ \"./events.js\":\n/*!*******************!*\\\n !*** ./events.js ***!\n \\*******************/\n/*! exports provided: default, events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return events; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n NEW_IMAGE: 'cornerstonenewimage',\n INVALIDATED: 'cornerstoneinvalidated',\n PRE_RENDER: 'cornerstoneprerender',\n IMAGE_CACHE_MAXIMUM_SIZE_CHANGED: 'cornerstoneimagecachemaximumsizechanged',\n IMAGE_CACHE_PROMISE_REMOVED: 'cornerstoneimagecachepromiseremoved',\n IMAGE_CACHE_FULL: 'cornerstoneimagecachefull',\n IMAGE_CACHE_CHANGED: 'cornerstoneimagecachechanged',\n WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved',\n WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull',\n IMAGE_LOADED: 'cornerstoneimageloaded',\n IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed',\n ELEMENT_RESIZED: 'cornerstoneelementresized',\n IMAGE_RENDERED: 'cornerstoneimagerendered',\n LAYER_ADDED: 'cornerstonelayeradded',\n LAYER_REMOVED: 'cornerstonelayerremoved',\n ACTIVE_LAYER_CHANGED: 'cornerstoneactivelayerchanged',\n ELEMENT_DISABLED: 'cornerstoneelementdisabled',\n ELEMENT_ENABLED: 'cornerstoneelementenabled'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EVENTS);\n/**\n * EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface\n *\n * @class\n * @memberof Polyfills\n */\n\nvar EventTarget =\n/*#__PURE__*/\nfunction () {\n function EventTarget() {\n _classCallCheck(this, EventTarget);\n\n this.listeners = {};\n this.namespaces = {};\n }\n\n _createClass(EventTarget, [{\n key: \"addEventNamespaceListener\",\n value: function addEventNamespaceListener(type, callback) {\n if (type.indexOf('.') <= 0) {\n return;\n }\n\n this.namespaces[type] = callback;\n this.addEventListener(type.split('.')[0], callback);\n }\n }, {\n key: \"removeEventNamespaceListener\",\n value: function removeEventNamespaceListener(type) {\n if (type.indexOf('.') <= 0 || !this.namespaces[type]) {\n return;\n }\n\n this.removeEventListener(type.split('.')[0], this.namespaces[type]);\n delete this.namespaces[type];\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.addEventNamespaceListener(type, callback);\n return;\n }\n\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(callback);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.removeEventNamespaceListener(type);\n return;\n }\n\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n\n var stack = this.listeners[event.type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return EventTarget;\n}();\n\nvar events = new EventTarget();\n\n/***/ }),\n\n/***/ \"./falseColorMapping.js\":\n/*!******************************!*\\\n !*** ./falseColorMapping.js ***!\n \\******************************/\n/*! exports provided: convertImageToFalseColorImage, convertToFalseColorImage, restoreImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return convertImageToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return convertToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return restoreImage; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony import */ var _colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors/colormap.js */ \"./colors/colormap.js\");\n\n\n\n/**\n * Retrieves the minimum and maximum pixel values from an Array of pixel data\n *\n * @param {Array} pixelData The input pixel data array\n *\n * @returns {{minPixelValue: Number, maxPixelValue: Number}} The minimum and maximum pixel values in the input Array\n */\n\nfunction getPixelValues(pixelData) {\n var minPixelValue = Number.MAX_VALUE;\n var maxPixelValue = Number.MIN_VALUE;\n var len = pixelData.length;\n var pixel;\n\n for (var i = 0; i < len; i++) {\n pixel = pixelData[i];\n minPixelValue = minPixelValue < pixel ? minPixelValue : pixel;\n maxPixelValue = maxPixelValue > pixel ? maxPixelValue : pixel;\n }\n\n return {\n minPixelValue: minPixelValue,\n maxPixelValue: maxPixelValue\n };\n}\n/**\n * Retrieve a function that will allow an image object to be reset to its original form\n * after a false color mapping transformation\n *\n * @param {Image} image A Cornerstone Image Object\n *\n * @return {Function} A function for resetting an Image Object to its original form\n */\n\n\nfunction getRestoreImageMethod(image) {\n if (image.restore) {\n return image.restore;\n }\n\n var color = image.color;\n var rgba = image.rgba;\n var cachedLut = image.cachedLut;\n var slope = image.slope;\n var windowWidth = image.windowWidth;\n var windowCenter = image.windowCenter;\n var minPixelValue = image.minPixelValue;\n var maxPixelValue = image.maxPixelValue;\n return function () {\n image.color = color;\n image.rgba = rgba;\n image.cachedLut = cachedLut;\n image.slope = slope;\n image.windowWidth = windowWidth;\n image.windowCenter = windowCenter;\n image.minPixelValue = minPixelValue;\n image.maxPixelValue = maxPixelValue;\n\n if (image.origPixelData) {\n var pixelData = image.origPixelData;\n\n image.getPixelData = function () {\n return pixelData;\n };\n } // Remove some attributes added by false color mapping\n\n\n image.origPixelData = undefined;\n image.colormapId = undefined;\n image.falseColor = undefined;\n };\n} //\n// Then we need to make sure it will be converted into a colormap object if it's as string.\n\n/**\n * User can pass a colormap or its id as string to some of these public functions.\n * Then we need to make sure it will be converted into a colormap object if it's a string.\n *\n * @param {*} colormap A colormap ID or Object\n * @return {*} The colormap\n */\n\n\nfunction ensuresColormap(colormap) {\n if (colormap && typeof colormap === 'string') {\n colormap = Object(_colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__[\"getColormap\"])(colormap);\n }\n\n return colormap;\n}\n/**\n * Restores a false color image to its original version\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Boolean} True if the image object had a valid restore function, which was run. Otherwise, false.\n */\n\n\nfunction restoreImage(image) {\n if (image.restore && typeof image.restore === 'function') {\n image.restore();\n return true;\n }\n\n return false;\n}\n/**\n * Convert an image to a false color image\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {String|Object} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {Boolean} - Whether or not the image has been converted to a false color image\n */\n\n\nfunction convertImageToFalseColorImage(image, colormap) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n } // User can pass a colormap id or a colormap object\n\n\n colormap = ensuresColormap(colormap);\n var colormapId = colormap.getId(); // Doesn't do anything if colormapId hasn't changed\n\n if (image.colormapId === colormapId) {\n // It has already being converted into a false color image\n // Using the colormapId passed as parameter\n return false;\n } // Restore the image attributes updated when converting to a false color image\n\n\n restoreImage(image); // Convert the image to a false color image\n\n if (colormapId) {\n var minPixelValue = image.minPixelValue || 0;\n var maxPixelValue = image.maxPixelValue || 255;\n image.restore = getRestoreImageMethod(image);\n var lookupTable = colormap.createLookupTable();\n lookupTable.setTableRange(minPixelValue, maxPixelValue); // Update the pixel data and render the new image\n\n Object(_pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lookupTable); // Update min and max pixel values\n\n var pixelValues = getPixelValues(image.getPixelData());\n image.minPixelValue = pixelValues.minPixelValue;\n image.maxPixelValue = pixelValues.maxPixelValue;\n image.windowWidth = 255;\n image.windowCenter = 128; // Cache the last colormapId used for performance\n // Then it doesn't need to be re-rendered on next\n // Time if the user hasn't updated it\n\n image.colormapId = colormapId;\n } // Return `true` to tell the caller that the image has got updated\n\n\n return true;\n}\n/**\n * Convert the image of a element to a false color image\n *\n * @param {HTMLElement} element The Cornerstone element\n * @param {*} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {void}\n */\n\n\nfunction convertToFalseColorImage(element, colormap) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return convertImageToFalseColorImage(enabledElement.image, colormap);\n}\n\n\n\n/***/ }),\n\n/***/ \"./fitToWindow.js\":\n/*!************************!*\\\n !*** ./fitToWindow.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n\n\n/**\n * Adjusts an image's scale and translation so the image is centered and all pixels\n * in the image are viewable.\n *\n * @param {HTMLElement} element The Cornerstone element to update\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var image = enabledElement.image; // The new scale is the minimum of the horizontal and vertical scale values\n\n enabledElement.viewport.scale = Object(_internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image, enabledElement.viewport.rotation).scaleFactor;\n enabledElement.viewport.translation.x = 0;\n enabledElement.viewport.translation.y = 0;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./generateUUID.js\":\n/*!*************************!*\\\n !*** ./generateUUID.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n* Generates a UUID for the enabledElement.\n*\n* @return {String} the UUID.\n*/\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n // https://stackoverflow.com/a/8809472/9208320 Public Domain/MIT\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\"&\",\"|\"] }] */\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // Use high-precision timer if available\n }\n\n return 'x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n});\n\n/***/ }),\n\n/***/ \"./getDefaultViewportForImage.js\":\n/*!***************************************!*\\\n !*** ./getDefaultViewportForImage.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n\n\n/**\n * Returns a default viewport for display the specified image on the specified\n * enabled element. The default viewport is fit to window\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image Object\n *\n * @returns {Viewport} The default viewport for the image\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n});\n\n/***/ }),\n\n/***/ \"./getImage.js\":\n/*!*********************!*\\\n !*** ./getImage.js ***!\n \\*********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Returns the currently displayed image for an element or undefined if no image has\n * been displayed yet\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Image} The Cornerstone Image Object displayed in this element\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return enabledElement.image;\n});\n\n/***/ }),\n\n/***/ \"./getPixels.js\":\n/*!**********************!*\\\n !*** ./getPixels.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony import */ var _internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n\n\n\n/**\n * Retrieves an array of pixels from a rectangular region with modality LUT transformation applied\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The modality pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n var storedPixels = Object(_getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, x, y, width, height);\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var mlutfn = Object(_internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ee.image.slope, ee.image.intercept, ee.viewport.modalityLUT);\n return storedPixels.map(mlutfn);\n});\n\n/***/ }),\n\n/***/ \"./getStoredPixels.js\":\n/*!****************************!*\\\n !*** ./getStoredPixels.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves an array of stored pixel values from a rectangular region of an image\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The stored pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n if (element === undefined) {\n throw new Error('getStoredPixels: parameter element must not be undefined');\n }\n\n x = Math.round(x);\n y = Math.round(y);\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var storedPixels = [];\n var index = 0;\n var pixelData = enabledElement.image.getPixelData();\n\n for (var row = 0; row < height; row++) {\n for (var column = 0; column < width; column++) {\n var spIndex = (row + y) * enabledElement.image.columns + (column + x);\n storedPixels[index++] = pixelData[spIndex];\n }\n }\n\n return storedPixels;\n});\n\n/***/ }),\n\n/***/ \"./getViewport.js\":\n/*!************************!*\\\n !*** ./getViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves the viewport for the specified enabled element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Viewport|undefined} The Cornerstone Viewport settings for this element, if they exist. Otherwise, undefined\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var viewport = enabledElement.viewport;\n\n if (viewport === undefined) {\n return;\n } // Return a copy of the viewport\n\n\n return Object.assign({}, viewport);\n});\n\n/***/ }),\n\n/***/ \"./imageCache.js\":\n/*!***********************!*\\\n !*** ./imageCache.js ***!\n \\***********************/\n/*! exports provided: cachedImages, setMaximumSizeBytes, putImageLoadObject, getImageLoadObject, removeImageLoadObject, getCacheInfo, purgeCache, changeImageIdCacheSize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cachedImages\", function() { return cachedImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumSizeBytes\", function() { return setMaximumSizeBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"putImageLoadObject\", function() { return putImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageLoadObject\", function() { return getImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeImageLoadObject\", function() { return removeImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCacheInfo\", function() { return getCacheInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeCache\", function() { return purgeCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeImageIdCacheSize\", function() { return changeImageIdCacheSize; });\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\n * This module deals with caching images\n * @module ImageCache\n */\n\nvar maximumSizeInBytes = 1024 * 1024 * 1024; // 1 GB\n\nvar cacheSizeInBytes = 0; // Dictionary of imageId to cachedImage objects\n\nvar imageCacheDict = {}; // Array of cachedImage objects\n\nvar cachedImages = [];\n/** Sets the maximum size of cache and purges cache contents if necessary.\n *\n * @param {number} numBytes The maximun size that the cache should occupy.\n * @returns {void}\n */\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_MAXIMUM_SIZE_CHANGED);\n purgeCacheIfNecessary();\n}\n/**\n * Purges the cache if size exceeds maximum\n * @returns {void}\n */\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary)\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n var imageId = lastCachedImage.imageId;\n removeImageLoadObject(imageId);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_PROMISE_REMOVED, {\n imageId: imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_FULL, cacheInfo);\n}\n/**\n * Puts a new image loader into the cache\n *\n * @param {string} imageId ImageId of the image loader\n * @param {Object} imageLoadObject The object that is loading or loaded the image\n * @returns {void}\n */\n\n\nfunction putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n\n if (imageCacheDict.hasOwnProperty(imageId) === true) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n\n if (imageLoadObject.cancelFn && typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancelFn must be a function');\n }\n\n var cachedImage = {\n loaded: false,\n imageId: imageId,\n sharedCacheKey: undefined,\n // The sharedCacheKey for this imageId. undefined by default\n imageLoadObject: imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0\n };\n imageCacheDict[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n imageLoadObject.promise.then(function (image) {\n if (cachedImages.indexOf(cachedImage) === -1) {\n // If the image has been purged before being loaded, we stop here.\n return;\n }\n\n cachedImage.loaded = true;\n cachedImage.image = image;\n\n if (image.sizeInBytes === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n\n cachedImage.sizeInBytes = image.sizeInBytes;\n cacheSizeInBytes += cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'addImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n purgeCacheIfNecessary();\n }, function () {\n var cachedImage = imageCacheDict[imageId];\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n delete imageCacheDict[imageId];\n });\n}\n/**\n * Retuns the object that is loading a given imageId\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n}\n/**\n * Removes the image loader associated with a given Id from the cache\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction removeImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'deleteImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n decache(cachedImage.imageLoadObject);\n delete imageCacheDict[imageId];\n}\n/**\n * @typedef {Object} CacheInformation\n * @property {number} maximumSizeInBytes The maximum size of the cache in bytes\n * @property {number} cacheSizeInBytes Currently occupied space in the cache in bytes\n * @property {number} numberOfImagesCached Number of ImageLoaders in the cache\n * @returns {void}\n */\n\n/**\n * Gets the current state of the cache\n * @returns {void}\n */\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n} // This method should only be called by `removeImageLoadObject` because it's\n// The one that knows how to deal with shared cache keys and cache size.\n\n/**\n * INTERNAL: Removes and ImageLoader from the cache\n *\n * @param {Object} imageLoadObject Image Loader Object to remove\n * @returns {void}\n */\n\nfunction decache(imageLoadObject) {\n imageLoadObject.promise.then(function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n }, function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n });\n}\n/**\n * Removes all images from cache\n * @returns {void}\n */\n\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages[0];\n removeImageLoadObject(removedCachedImage.imageId);\n }\n}\n/**\n * Updates the space than an image is using in the cache\n *\n * @param {string} imageId Image ID\n * @param {number} newCacheSize New image size\n * @returns {void}\n */\n\nfunction changeImageIdCacheSize(imageId, newCacheSize) {\n var cacheEntry = imageCacheDict[imageId];\n\n if (cacheEntry) {\n cacheEntry.imageLoadObject.promise.then(function (image) {\n var cacheSizeDifference = newCacheSize - image.sizeInBytes;\n image.sizeInBytes = newCacheSize;\n cacheEntry.sizeInBytes = newCacheSize;\n cacheSizeInBytes += cacheSizeDifference;\n var eventDetails = {\n action: 'changeImageSize',\n image: image\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n });\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n imageCache: imageCacheDict,\n cachedImages: cachedImages,\n setMaximumSizeBytes: setMaximumSizeBytes,\n putImageLoadObject: putImageLoadObject,\n getImageLoadObject: getImageLoadObject,\n removeImageLoadObject: removeImageLoadObject,\n getCacheInfo: getCacheInfo,\n purgeCache: purgeCache,\n changeImageIdCacheSize: changeImageIdCacheSize\n});\n\n/***/ }),\n\n/***/ \"./imageLoader.js\":\n/*!************************!*\\\n !*** ./imageLoader.js ***!\n \\************************/\n/*! exports provided: loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return loadImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return loadAndCacheImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return registerImageLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return registerUnknownImageLoader; });\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n\n/**\r\n * This module deals with ImageLoaders, loading images and caching images\r\n * @module ImageLoader\r\n */\n\nvar imageLoaders = {};\nvar unknownImageLoader;\n/**\r\n * Load an image using a registered Cornerstone Image Loader.\r\n *\r\n * The image loader that is used will be\r\n * determined by the image loader scheme matching against the imageId.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\nfunction loadImageFromImageLoader(imageId, options) {\n var colonIndex = imageId.indexOf(':');\n var scheme = imageId.substring(0, colonIndex);\n var loader = imageLoaders[scheme];\n\n if (loader === undefined || loader === null) {\n if (unknownImageLoader !== undefined) {\n return unknownImageLoader(imageId);\n }\n\n throw new Error('loadImageFromImageLoader: no image loader for imageId');\n }\n\n var imageLoadObject = loader(imageId, options); // Broadcast an image loaded event once the image is loaded\n\n imageLoadObject.promise.then(function (image) {\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOADED, {\n image: image\n });\n }, function (error) {\n var errorObject = {\n imageId: imageId,\n error: error\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOAD_FAILED, errorObject);\n });\n return imageLoadObject;\n}\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The loaded image is not stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\n\nfunction loadImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n return loadImageFromImageLoader(imageId, options).promise;\n} //\n\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The image is stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} Image Loader Object\r\n * @memberof ImageLoader\r\n */\n\nfunction loadAndCacheImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadAndCacheImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n imageLoadObject = loadImageFromImageLoader(imageId, options);\n Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"putImageLoadObject\"])(imageId, imageLoadObject);\n return imageLoadObject.promise;\n}\n/**\r\n * Registers an imageLoader plugin with cornerstone for the specified scheme\r\n *\r\n * @param {String} scheme The scheme to use for this image loader (e.g. 'dicomweb', 'wadouri', 'http')\r\n * @param {Function} imageLoader A Cornerstone Image Loader function\r\n * @returns {void}\r\n * @memberof ImageLoader\r\n */\n\nfunction registerImageLoader(scheme, imageLoader) {\n imageLoaders[scheme] = imageLoader;\n}\n/**\r\n * Registers a new unknownImageLoader and returns the previous one\r\n *\r\n * @param {Function} imageLoader A Cornerstone Image Loader\r\n *\r\n * @returns {Function|Undefined} The previous Unknown Image Loader\r\n * @memberof ImageLoader\r\n */\n\nfunction registerUnknownImageLoader(imageLoader) {\n var oldImageLoader = unknownImageLoader;\n unknownImageLoader = imageLoader;\n return oldImageLoader;\n}\n\n/***/ }),\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawImage\", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ \"./internal/generateLut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateLut\", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewport\", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageData\", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedColorPixelDataToCanvasImageData\", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataColorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataPseudocolorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ \"./internal/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internal\", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"]; });\n\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"]; });\n\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"]; });\n\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"]; });\n\n/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"]; });\n\n/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToCanvas\", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ \"./canvasToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canvasToPixel\", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ \"./disable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ \"./displayImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"displayImage\", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ \"./draw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ \"./drawInvalidated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawInvalidated\", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ \"./enable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"enable\", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ \"./enabledElementData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"]; });\n\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"]; });\n\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"]; });\n\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitToWindow\", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ \"./getDefaultViewportForImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewportForImage\", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ \"./getImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImage\", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ \"./getPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getPixels\", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStoredPixels\", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ \"./getViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewport\", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ \"./imageLoader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"]; });\n\n/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ \"./invalidate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidate\", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ \"./invalidateImageId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidateImageId\", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ \"./pageToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageToPixel\", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ \"./pixelToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelToCanvas\", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ \"./reset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setToPixelCoordinateSystem\", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ \"./setViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setViewport\", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"updateImage\", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelDataToFalseColorData\", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ \"./rendering/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rendering\", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"imageCache\", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ \"./metaData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"metaData\", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ \"./webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"webGL\", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colors\", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ \"./falseColorMapping.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"]; });\n\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"]; });\n\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerEvent\", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n// Internal (some of these are from old internal/legacy expose)\n\n\n\n\n\n\n\n\n // Rendering\n\n\n\n\n\n\n\n/**\n * @module PixelCoordinateSystem\n */\n\n/**\n * @module ViewportSettings\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar cornerstone = {\n drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"],\n renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"],\n renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"],\n renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"],\n renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"],\n renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"],\n removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"],\n getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"],\n addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"],\n getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"],\n getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"],\n addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"],\n removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"],\n getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"],\n getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"],\n getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"],\n setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"],\n getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"],\n purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"],\n setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"],\n fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"],\n loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"],\n registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"],\n registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"],\n invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"],\n convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"],\n restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"],\n EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n events: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"],\n triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cornerstone);\n\n/***/ }),\n\n/***/ \"./internal/calculateTransform.js\":\n/*!****************************************!*\\\n !*** ./internal/calculateTransform.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n/**\n * Calculate the transform for a Cornerstone enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\n * @param {Number} [scale] The viewport scale\n * @return {Transform} The current transform\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, scale) {\n var transform = new _transform_js__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"](); // Move to center of canvas\n\n transform.translate(enabledElement.canvas.width / 2, enabledElement.canvas.height / 2); // Apply the rotation before scaling for non square pixels\n\n var angle = enabledElement.viewport.rotation;\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n } // Apply the scale\n\n\n var widthScale = enabledElement.viewport.scale;\n var heightScale = enabledElement.viewport.scale;\n var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1);\n var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1);\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {\n if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) {\n widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing;\n } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) {\n heightScale *= enabledElement.image.rowPixelSpacing / enabledElement.image.columnPixelSpacing;\n }\n } else {\n // These should be good for \"TRUE SIZE\" and \"MAGNIFY\"\n widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing;\n heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing;\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') {\n // Fit TRUE IMAGE image (width/height) to window\n var verticalScale = enabledElement.canvas.height / (height * heightScale);\n var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale\n\n widthScale = heightScale = Math.min(horizontalScale, verticalScale);\n\n if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) {\n widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing;\n } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) {\n heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing;\n }\n }\n }\n\n transform.scale(widthScale, heightScale); // Unrotate to so we can translate unrotated\n\n if (angle !== 0) {\n transform.rotate(-angle * Math.PI / 180);\n } // Apply the pan offset\n\n\n transform.translate(enabledElement.viewport.translation.x, enabledElement.viewport.translation.y); // Rotate again so we can apply general scale\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n }\n\n if (scale !== undefined) {\n // Apply the font scale\n transform.scale(scale, scale);\n } // Apply Flip if required\n\n\n if (enabledElement.viewport.hflip) {\n transform.scale(-1, 1);\n }\n\n if (enabledElement.viewport.vflip) {\n transform.scale(1, -1);\n } // Move back from center of image\n\n\n transform.translate(-width / 2, -height / 2);\n return transform;\n});\n\n/***/ }),\n\n/***/ \"./internal/computeAutoVoi.js\":\n/*!************************************!*\\\n !*** ./internal/computeAutoVoi.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return computeAutoVoi; });\n/**\n * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.\n *\n * @param {Viewport} viewport - Object containing the viewport properties\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @returns {void}\n * @memberof Internal\n */\nfunction computeAutoVoi(viewport, image) {\n if (hasVoi(viewport)) {\n return;\n }\n\n var maxVoi = image.maxPixelValue * image.slope + image.intercept;\n var minVoi = image.minPixelValue * image.slope + image.intercept;\n var ww = maxVoi - minVoi;\n var wc = (maxVoi + minVoi) / 2;\n\n if (viewport.voi === undefined) {\n viewport.voi = {\n windowWidth: ww,\n windowCenter: wc\n };\n } else {\n viewport.voi.windowWidth = ww;\n viewport.voi.windowCenter = wc;\n }\n}\n/**\n * Check if viewport has voi LUT data\n * @param {any} viewport The viewport to check for voi LUT data\n * @returns {Boolean} true viewport has LUT data (Window Width/Window Center or voiLUT). Otherwise, false.\n * @memberof Internal\n */\n\nfunction hasVoi(viewport) {\n var hasLut = viewport.voiLUT && viewport.voiLUT.lut && viewport.voiLUT.lut.length > 0;\n return hasLut || viewport.voi.windowWidth !== undefined && viewport.voi.windowCenter !== undefined;\n}\n\n/***/ }),\n\n/***/ \"./internal/drawCompositeImage.js\":\n/*!****************************************!*\\\n !*** ./internal/drawCompositeImage.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layers.js */ \"./layers.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n\n\n\n\n\n\n\nfunction getViewportRatio(baseLayer, targetLayer) {\n if (!baseLayer.syncProps) {\n updateLayerSyncProps(baseLayer);\n }\n\n if (!targetLayer.syncProps) {\n updateLayerSyncProps(targetLayer);\n }\n\n return targetLayer.syncProps.originalScale / baseLayer.syncProps.originalScale;\n}\n\nfunction updateLayerSyncProps(layer) {\n var syncProps = layer.syncProps || {}; // This is used to keep each of the layers' viewports in sync with the active layer\n\n syncProps.originalScale = layer.viewport.scale;\n layer.syncProps = syncProps;\n} // Sync all viewports based on active layer's viewport\n\n\nfunction syncViewports(layers, activeLayer) {\n // If we intend to keep the viewport's scale, translation and rotation in sync,\n // loop through the layers\n layers.forEach(function (layer) {\n // Don't do anything to the active layer\n // Don't do anything if this layer has no viewport\n if (layer === activeLayer || !layer.viewport || !activeLayer.viewport) {\n return;\n }\n\n if (!layer.syncProps) {\n updateLayerSyncProps(layer);\n }\n\n var viewportRatio = getViewportRatio(activeLayer, layer); // Update the layer's translation and scale to keep them in sync with the first image\n // based on the ratios between the images\n\n layer.viewport.scale = activeLayer.viewport.scale * viewportRatio;\n layer.viewport.rotation = activeLayer.viewport.rotation;\n layer.viewport.translation = {\n x: activeLayer.viewport.translation.x / viewportRatio,\n y: activeLayer.viewport.translation.y / viewportRatio\n };\n layer.viewport.hflip = activeLayer.viewport.hflip;\n layer.viewport.vflip = activeLayer.viewport.vflip;\n });\n}\n/**\n * Internal function to render all layers for a Cornerstone enabled element\n *\n * @param {CanvasRenderingContext2D} context Canvas context to draw upon\n * @param {EnabledElementLayer[]} layers The array of all layers for this enabled element\n * @param {Boolean} invalidated A boolean whether or not this image has been invalidated and must be redrawn\n * @returns {void}\n * @memberof Internal\n */\n\n\nfunction renderLayers(context, layers, invalidated) {\n // Loop through each layer and draw it to the canvas\n layers.forEach(function (layer, index) {\n if (!layer.image) {\n return;\n }\n\n context.save(); // Set the layer's canvas to the pixel coordinate system\n\n layer.canvas = context.canvas;\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(layer, context); // Render into the layer's canvas\n\n var colormap = layer.viewport.colormap || layer.options.colormap;\n var labelmap = layer.viewport.labelmap;\n var isInvalid = layer.invalid || invalidated;\n\n if (colormap && colormap !== '' && labelmap === true) {\n Object(_rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"addLabelMapLayer\"])(layer, isInvalid);\n } else if (colormap && colormap !== '') {\n Object(_rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"addPseudoColorLayer\"])(layer, isInvalid);\n } else if (layer.image.color === true) {\n Object(_rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"addColorLayer\"])(layer, isInvalid);\n } else {\n // If this is the base layer, use the alpha channel for rendering of the grayscale image\n var useAlphaChannel = index === 0;\n Object(_rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"addGrayscaleLayer\"])(layer, isInvalid, useAlphaChannel);\n } // Apply any global opacity settings that have been defined for this layer\n\n\n if (layer.options && layer.options.opacity) {\n context.globalAlpha = layer.options.opacity;\n } else {\n context.globalAlpha = 1;\n }\n\n if (layer.options && layer.options.fillStyle) {\n context.fillStyle = layer.options.fillStyle;\n } // Set the pixelReplication property before drawing from the layer into the\n // composite canvas\n\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas\n\n var sx = layer.viewport.displayedArea.tlhc.x - 1;\n var sy = layer.viewport.displayedArea.tlhc.y - 1;\n var width = layer.viewport.displayedArea.brhc.x - sx;\n var height = layer.viewport.displayedArea.brhc.y - sy;\n context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height);\n context.restore();\n layer.invalid = false;\n });\n}\n/**\n * Internal API function to draw a composite image to a given enabled element\n *\n * @param {EnabledElement} enabledElement An enabled element to draw into\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var element = enabledElement.element;\n var allLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getLayers\"])(element);\n var activeLayer = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getActiveLayer\"])(element);\n var visibleLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getVisibleLayers\"])(element);\n var resynced = !enabledElement.lastSyncViewportsState && enabledElement.syncViewports; // This state will help us to determine if the user has re-synced the\n // layers allowing us to make a new copy of the viewports\n\n enabledElement.lastSyncViewportsState = enabledElement.syncViewports; // Stores a copy of all viewports if the user has just synced them then we can use the\n // copies to calculate anything later (ratio, translation offset, rotation offset, etc)\n\n if (resynced) {\n allLayers.forEach(function (layer) {\n if (layer.viewport) {\n updateLayerSyncProps(layer);\n }\n });\n } // Sync all viewports in case it's activated\n\n\n if (enabledElement.syncViewports === true) {\n syncViewports(visibleLayers, activeLayer);\n } // Get the enabled element's canvas so we can draw to it\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Render all visible layers\n\n renderLayers(context, visibleLayers, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImage.js\":\n/*!*******************************!*\\\n !*** ./internal/drawImage.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Internal API function to draw an image to a given enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} [invalidated = false] - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof Internal\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n enabledElement.needsRedraw = true;\n\n if (invalidated) {\n enabledElement.invalid = true;\n }\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImageSync.js\":\n/*!***********************************!*\\\n !*** ./internal/drawImageSync.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n/* harmony import */ var _drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawCompositeImage.js */ \"./internal/drawCompositeImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n\n\n\n\n\n\n\n\n/**\r\n * Draw an image to a given enabled element synchronously\r\n *\r\n * @param {EnabledElement} enabledElement An enabled element to draw into\r\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\r\n * @returns {void}\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var image = enabledElement.image;\n var element = enabledElement.element;\n var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn\n\n if (!enabledElement.canvas || !(enabledElement.image || layers.length)) {\n return;\n } // Start measuring the time needed to draw the image/layers\n\n\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n image.stats = {\n lastGetPixelDataTime: -1.0,\n lastStoredPixelDataToCanvasImageDataTime: -1.0,\n lastPutImageDataTime: -1.0,\n lastRenderTime: -1.0,\n lastLutGenerateTime: -1.0\n };\n\n if (layers && layers.length) {\n Object(_drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n } else if (image) {\n var render = image.render;\n\n if (!render) {\n if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '' && enabledElement.image.labelmap === true) {\n render = _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__[\"renderLabelMapImage\"];\n } else if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '') {\n render = _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderPseudoColorImage\"];\n } else if (image.color) {\n render = _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderColorImage\"];\n } else {\n render = _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderGrayscaleImage\"];\n }\n }\n\n render(enabledElement, invalidated);\n } // Calculate how long it took to draw the image/layers\n\n\n var renderTimeInMs = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var eventData = {\n viewport: enabledElement.viewport,\n element: element,\n image: image,\n enabledElement: enabledElement,\n canvasContext: enabledElement.canvas.getContext('2d'),\n renderTimeInMs: renderTimeInMs\n };\n image.stats.lastRenderTime = renderTimeInMs;\n enabledElement.invalid = false;\n enabledElement.needsRedraw = false;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].IMAGE_RENDERED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./internal/generateColorLut.js\":\n/*!**************************************!*\\\n !*** ./internal/generateColorLut.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n/**\n * Creates a LUT used while rendering to convert stored pixel values to\n * display pixels\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Number} windowWidth The Window Width\n * @param {Number} windowCenter The Window Center\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\n *\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(storedValue);\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(_storedValue);\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/generateLut.js\":\n/*!*********************************!*\\\n !*** ./internal/generateLut.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n\n/**\r\n * Creates a LUT used while rendering to convert stored pixel values to\r\n * display pixels\r\n *\r\n * @param {Image} image A Cornerstone Image Object\r\n * @param {Number} windowWidth The Window Width\r\n * @param {Number} windowCenter The Window Center\r\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\r\n * @param {Array} [modalityLUT] A modality Lookup Table\r\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\r\n *\r\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, modalityLUT, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image.slope, image.intercept, modalityLUT);\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(mlutfn(_storedValue));\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/getCanvas.js\":\n/*!*******************************!*\\\n !*** ./internal/getCanvas.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getCanvas; });\nvar CANVAS_CSS_CLASS = 'cornerstone-canvas';\n/**\n * Create a canvas and append it to the element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\nfunction createCanvas(element) {\n var canvas = document.createElement('canvas');\n canvas.style.display = 'block';\n canvas.classList.add(CANVAS_CSS_CLASS);\n element.appendChild(canvas);\n return canvas;\n}\n/**\n * Create a canvas or returns the one that already exists for a given element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\n\nfunction getCanvas(element) {\n var selector = \"canvas.\".concat(CANVAS_CSS_CLASS);\n return element.querySelector(selector) || createCanvas(element);\n}\n\n/***/ }),\n\n/***/ \"./internal/getDefaultViewport.js\":\n/*!****************************************!*\\\n !*** ./internal/getDefaultViewport.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n/**\n * Creates a new viewport object containing default values\n *\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\nfunction createViewport() {\n var displayedArea = createDefaultDisplayedArea();\n return {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: undefined,\n windowCenter: undefined\n },\n invert: false,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: undefined,\n voiLUT: undefined,\n colormap: undefined,\n labelmap: false,\n displayedArea: displayedArea\n };\n}\n/**\n * Creates the default displayed area.\n * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space.\n *\n * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object\n * @memberof Internal\n */\n\n\nfunction createDefaultDisplayedArea() {\n return {\n // Top Left Hand Corner\n tlhc: {\n x: 1,\n y: 1\n },\n // Bottom Right Hand Corner\n brhc: {\n x: 1,\n y: 1\n },\n rowPixelSpacing: 1,\n columnPixelSpacing: 1,\n presentationSizeMode: 'NONE'\n };\n}\n/**\n * Creates a new viewport object containing default values for the image and canvas\n *\n * @param {HTMLElement} canvas A Canvas DOM element\n * @param {Image} image A Cornerstone Image Object\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n if (canvas === undefined) {\n throw new Error('getDefaultViewport: parameter canvas must not be undefined');\n }\n\n if (image === undefined) {\n return createViewport();\n } // Fit image to window\n\n\n var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(canvas, image, 0).scaleFactor;\n return {\n scale: scale,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter\n },\n invert: image.invert,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: image.modalityLUT,\n voiLUT: image.voiLUT,\n colormap: image.colormap,\n labelmap: Boolean(image.labelmap),\n displayedArea: {\n tlhc: {\n x: 1,\n y: 1\n },\n brhc: {\n x: image.columns,\n y: image.rows\n },\n rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing,\n columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing,\n presentationSizeMode: 'NONE'\n }\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageFitScale.js\":\n/*!**************************************!*\\\n !*** ./internal/getImageFitScale.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n/* harmony import */ var _getImageSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageSize.js */ \"./internal/getImageSize.js\");\n\n\n/**\n * Calculates the horizontal, vertical and minimum scale factor for an image\n @param {{width, height}} windowSize The window size where the image is displayed. This can be any HTML element or structure with a width, height fields (e.g. canvas).\n * @param {any} image The cornerstone image object\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{horizontalScale, verticalScale, scaleFactor}} The calculated horizontal, vertical and minimum scale factor\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowSize, image) {\n var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(windowSize, 'getImageScale: parameter windowSize must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageScale: parameter image must not be undefined');\n var imageSize = Object(_getImageSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, rotation);\n var rowPixelSpacing = image.rowPixelSpacing || 1;\n var columnPixelSpacing = image.columnPixelSpacing || 1;\n var verticalRatio = 1;\n var horizontalRatio = 1;\n\n if (rowPixelSpacing < columnPixelSpacing) {\n horizontalRatio = columnPixelSpacing / rowPixelSpacing;\n } else {\n // even if they are equal we want to calculate this ratio (the ration might be 0.5)\n verticalRatio = rowPixelSpacing / columnPixelSpacing;\n }\n\n var verticalScale = windowSize.height / imageSize.height / verticalRatio;\n var horizontalScale = windowSize.width / imageSize.width / horizontalRatio; // Fit image to window\n\n return {\n verticalScale: verticalScale,\n horizontalScale: horizontalScale,\n scaleFactor: Math.min(horizontalScale, verticalScale)\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageSize.js\":\n/*!**********************************!*\\\n !*** ./internal/getImageSize.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n\n/**\n * Check if the angle is rotated\n * @param {Number} rotation the rotation angle\n * @returns {Boolean} true if the angle is rotated; Otherwise, false.\n * @memberof Internal\n */\n\nfunction isRotated(rotation) {\n return !(rotation === null || rotation === undefined || rotation === 0 || rotation === 180);\n}\n/**\n * Retrieves the current image dimensions given an enabled element\n *\n * @param {any} image The Cornerstone image.\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{width:Number, height:Number}} The Image dimensions\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image) {\n var rotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageSize: parameter image must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.width, 'getImageSize: parameter image must have width');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.height, 'getImageSize: parameter image must have height');\n\n if (isRotated(rotation)) {\n return {\n height: image.width,\n width: image.height\n };\n }\n\n return {\n width: image.width,\n height: image.height\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getModalityLUT.js\":\n/*!************************************!*\\\n !*** ./internal/getModalityLUT.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generates a linear modality transformation function\n *\n * See DICOM PS3.3 C.11.1 Modality LUT Module\n *\n * http://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.11.html\n *\n * @param {Number} slope m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} intercept The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n\n Output units = m*SV + b.\n * @return {function(*): *} A linear modality LUT function. Given a stored pixel it returns the modality pixel value\n * @memberof Internal\n */\nfunction generateLinearModalityLUT(slope, intercept) {\n return function (storedPixelValue) {\n return storedPixelValue * slope + intercept;\n };\n}\n\nfunction generateNonLinearModalityLUT(modalityLUT) {\n var minValue = modalityLUT.lut[0];\n var maxValue = modalityLUT.lut[modalityLUT.lut.length - 1];\n var maxValueMapped = modalityLUT.firstValueMapped + modalityLUT.lut.length;\n return function (storedPixelValue) {\n if (storedPixelValue < modalityLUT.firstValueMapped) {\n return minValue;\n } else if (storedPixelValue >= maxValueMapped) {\n return maxValue;\n }\n\n return modalityLUT.lut[storedPixelValue];\n };\n}\n/**\n * Get the appropriate Modality LUT for the current situation.\n *\n * @param {Number} [slope] m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} [intercept] The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n * @param {Function} [modalityLUT] A modality LUT function. Given a stored pixel it returns the modality pixel value.\n *\n * @return {function(*): *} A modality LUT function. Given a stored pixel it returns the modality pixel value.\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (slope, intercept, modalityLUT) {\n if (modalityLUT) {\n return generateNonLinearModalityLUT(modalityLUT);\n }\n\n return generateLinearModalityLUT(slope, intercept);\n});\n\n/***/ }),\n\n/***/ \"./internal/getTransform.js\":\n/*!**********************************!*\\\n !*** ./internal/getTransform.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n // For now we will calculate it every time it is requested.\n // In the future, we may want to cache it in the enabled element to speed things up.\n return Object(_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./internal/getVOILut.js\":\n/*!*******************************!*\\\n !*** ./internal/getVOILut.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint no-bitwise: 0 */\n\n/**\n * Volume of Interest Lookup Table Function\n *\n * @typedef {Function} VOILUTFunction\n *\n * @param {Number} modalityLutValue\n * @returns {Number} transformed value\n * @memberof Objects\n */\n\n/**\n * @module: VOILUT\n */\n\n/**\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\nfunction generateLinearVOILUT(windowWidth, windowCenter) {\n return function (modalityLutValue) {\n return ((modalityLutValue - windowCenter) / windowWidth + 0.5) * 255.0;\n };\n}\n/**\n * Generate a non-linear volume of interest lookup table\n *\n * @param {LUT} voiLUT Volume of Interest Lookup Table Object\n *\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\nfunction generateNonLinearVOILUT(voiLUT) {\n // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa!\n var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length;\n var shift = bitsPerEntry - 8;\n var minValue = voiLUT.lut[0] >> shift;\n var maxValue = voiLUT.lut[voiLUT.lut.length - 1] >> shift;\n var maxValueMapped = voiLUT.firstValueMapped + voiLUT.lut.length - 1;\n return function (modalityLutValue) {\n if (modalityLutValue < voiLUT.firstValueMapped) {\n return minValue;\n } else if (modalityLutValue >= maxValueMapped) {\n return maxValue;\n }\n\n return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift;\n };\n}\n/**\n * Retrieve a VOI LUT mapping function given the current windowing settings\n * and the VOI LUT for the image\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object\n *\n * @return {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowWidth, windowCenter, voiLUT) {\n if (voiLUT) {\n return generateNonLinearVOILUT(voiLUT);\n }\n\n return generateLinearVOILUT(windowWidth, windowCenter);\n});\n\n/***/ }),\n\n/***/ \"./internal/guid.js\":\n/*!**************************!*\\\n !*** ./internal/guid.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n/**\n * Generate a unique identifier\n *\n * @return {string} A unique identifier\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return \"\".concat(s4() + s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4()).concat(s4()).concat(s4());\n});\n\n/***/ }),\n\n/***/ \"./internal/index.js\":\n/*!***************************!*\\\n !*** ./internal/index.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ \"./internal/drawImage.js\");\n/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ \"./internal/generateLut.js\");\n/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ \"./internal/getTransform.js\");\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__[\"Transform\"]\n});\n\n/***/ }),\n\n/***/ \"./internal/now.js\":\n/*!*************************!*\\\n !*** ./internal/now.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @module Polyfills\n */\n\n/**\n * Use the performance.now() method if possible, and if not, use Date.now()\n *\n * @return {number} Time elapsed since the time origin\n * @memberof Polyfills\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n if (window.performance) {\n return performance.now();\n }\n\n return Date.now();\n});\n\n/***/ }),\n\n/***/ \"./internal/requestAnimationFrame.js\":\n/*!*******************************************!*\\\n !*** ./internal/requestAnimationFrame.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction requestFrame(callback) {\n window.setTimeout(callback, 1000 / 60);\n}\n/**\n * Polyfills requestAnimationFrame for older browsers.\n *\n * @param {Function} callback A parameter specifying a function to call when it's time to update your animation for the next repaint. The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame starts to fire callbacks.\n *\n * @return {Number} A long integer value, the request id, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.\n * @memberof Polyfills\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (callback) {\n return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback);\n});\n\n/***/ }),\n\n/***/ \"./internal/storedColorPixelDataToCanvasImageData.js\":\n/*!***********************************************************!*\\\n !*** ./internal/storedColorPixelDataToCanvasImageData.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored color pixel values to display pixel values using a LUT.\n *\n * Note: Skips alpha value for any input image pixel data.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex] + -minPixelValue]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex]]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageData.js\":\n/*!******************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageData.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT. This is the most performance sensitive code in cornerstone and\n * we use a special trick to make this go as fast as possible. Specifically we\n * use the alpha channel only to control the luminance rather than the red, green and\n * blue channels which makes it over 3x faster. The canvasImageDataData buffer needs\n * to be previously filled with white pixels.\n *\n * NOTE: Attribution would be appreciated if you use this technique!\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 3;\n var storedPixelDataIndex = 0; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\":\n/*!**************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataColorLUT.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataColorLUT(image, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataColorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\":\n/*!********************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} grayscaleLut Lookup table array\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataPseudocolorLUT(image, grayscaleLut, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var grayscale;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++]];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataPseudocolorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataRGBA.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var pixelValue; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedRGBAPixelDataToCanvasImageData.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedRGBAPixelDataToCanvasImageData.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored RGBA color pixel values to display pixel values using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/transform.js\":\n/*!*******************************!*\\\n !*** ./internal/transform.js ***!\n \\*******************************/\n/*! exports provided: Transform */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// By Simon Sarris\n// Www.simonsarris.com\n// Sarris@acm.org\n//\n// Free to use and distribute at will\n// So long as you are nice to people, etc\n// Simple class for keeping track of the current transformation matrix\n// For instance:\n// Var t = new Transform();\n// T.rotate(5);\n// Var m = t.m;\n// Ctx.setTransform(m[0], m[1], m[2], m[3], m[4], m[5]);\n// Is equivalent to:\n// Ctx.rotate(5);\n// But now you can retrieve it :)\n// Remember that this does not account for any CSS transforms applied to the canvas\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform() {\n _classCallCheck(this, Transform);\n\n this.reset();\n }\n\n _createClass(Transform, [{\n key: \"reset\",\n value: function reset() {\n this.m = [1, 0, 0, 1, 0, 0];\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var transform = new Transform();\n transform.m[0] = this.m[0];\n transform.m[1] = this.m[1];\n transform.m[2] = this.m[2];\n transform.m[3] = this.m[3];\n transform.m[4] = this.m[4];\n transform.m[5] = this.m[5];\n return transform;\n }\n }, {\n key: \"multiply\",\n value: function multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n }\n }, {\n key: \"invert\",\n value: function invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n }\n }, {\n key: \"rotate\",\n value: function rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n }\n }, {\n key: \"translate\",\n value: function translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(px, py) {\n var x = px;\n var y = py;\n px = x * this.m[0] + y * this.m[2] + this.m[4];\n py = x * this.m[1] + y * this.m[3] + this.m[5];\n return {\n x: px,\n y: py\n };\n }\n }]);\n\n return Transform;\n}();\n\n/***/ }),\n\n/***/ \"./internal/tryEnableWebgl.js\":\n/*!************************************!*\\\n !*** ./internal/tryEnableWebgl.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n\n/**\n * Checks if webGL is supported and initializes the rendering engine.\n * @param {any} options Options to check if webgl rendering is requested (e.g. enable webgl by passing {renderer: 'webgl'})\n * @returns {Boolean} true if webgl rendering has been successfully initialized. Otherwise, false.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.isWebGLAvailable()) {\n // If WebGL is available on the device, initialize the renderer\n // And return the renderCanvas from the WebGL rendering path\n _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.initRenderer();\n options.renderer = 'webgl';\n return true;\n } // If WebGL is not available on this device, we will fall back\n // To using the Canvas renderer\n\n\n console.error('WebGL not available, falling back to Canvas renderer');\n delete options.renderer;\n return false;\n});\n\n/***/ }),\n\n/***/ \"./internal/validator.js\":\n/*!*******************************!*\\\n !*** ./internal/validator.js ***!\n \\*******************************/\n/*! exports provided: validateParameterUndefined, validateParameterUndefinedOrNull */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefined\", function() { return validateParameterUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefinedOrNull\", function() { return validateParameterUndefinedOrNull; });\n/**\n * Check if the supplied parameter is undefined and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\nfunction validateParameterUndefined(checkParam, errorMsg) {\n if (checkParam === undefined) {\n throw new Error(errorMsg);\n }\n}\n/**\n * Check if the supplied parameter is undefined or null and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\n\nfunction validateParameterUndefinedOrNull(checkParam, errorMsg) {\n if (checkParam === undefined || checkParam === null) {\n throw new Error(errorMsg);\n }\n}\n\n/***/ }),\n\n/***/ \"./invalidate.js\":\n/*!***********************!*\\\n !*** ./invalidate.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Sets the invalid flag on the enabled element and fire an event\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.invalid = true;\n enabledElement.needsRedraw = true;\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].INVALIDATED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./invalidateImageId.js\":\n/*!******************************!*\\\n !*** ./invalidateImageId.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the all enabled elements\n * displaying the specified imageId\n *\n * @param {string} imageId The imageId of the Cornerstone Image Object to redraw\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (imageId) {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElementsByImageId\"])(imageId);\n enabledElements.forEach(function (enabledElement) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, true);\n });\n});\n\n/***/ }),\n\n/***/ \"./layers.js\":\n/*!*******************!*\\\n !*** ./layers.js ***!\n \\*******************/\n/*! exports provided: rescaleImage, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, setLayerImage, getActiveLayer, purgeLayers */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rescaleImage\", function() { return rescaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return addLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return removeLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return getLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return getLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return getVisibleLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return setActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return setLayerImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return getActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return purgeLayers; });\n/* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ \"./internal/guid.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\n * @module EnabledElementLayers\n */\n\n/**\n * Helper function to trigger an event on a Cornerstone element with\n * a specific layerId\n *\n * @param {String} eventName The event name (e.g. CornerstoneLayerAdded)\n * @param {EnabledElement} enabledElement The Cornerstone enabled element\n * @param {String} layerId The layer's unique identifier\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction triggerEventForLayer(eventName, enabledElement, layerId) {\n var element = enabledElement.element;\n var eventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n enabledElement: enabledElement,\n layerId: layerId\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(element, eventName, eventData);\n}\n/**\n * Rescale the target layer to the base layer based on the\n * relative size of each image and their pixel dimensions.\n *\n * This function will update the Viewport parameters of the\n * target layer to a new scale.\n *\n * @param {EnabledElementLayer} baseLayer The base layer\n * @param {EnabledElementLayer} targetLayer The target layer to rescale\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\n\nfunction rescaleImage(baseLayer, targetLayer) {\n if (baseLayer.layerId === targetLayer.layerId) {\n throw new Error('rescaleImage: both arguments represent the same layer');\n }\n\n var baseImage = baseLayer.image;\n var targetImage = targetLayer.image; // Return if these images don't have an imageId (e.g. for dynamic images)\n\n if (!baseImage.imageId || !targetImage.imageId) {\n return;\n } // Column pixel spacing need to be considered when calculating the\n // ratio between the layer added and base layer images\n\n\n var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width);\n var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative;\n targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio;\n}\n/**\n * Add a layer to a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image object to add as a new layer\n * @param {Object} options Options for the layer\n *\n * @returns {String} layerId The new layer's unique identifier\n * @memberof EnabledElementLayers\n */\n\nfunction addLayer(element, image, options) {\n var layerId = Object(_internal_guid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var viewport;\n\n if (image) {\n viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (options && options.viewport) {\n viewport = Object.assign(viewport, options.viewport);\n }\n } // Set syncViewports to true by default when a new layer is added\n\n\n if (enabledElement.syncViewports !== false) {\n enabledElement.syncViewports = true;\n }\n\n var newLayer = {\n image: image,\n layerId: layerId,\n viewport: viewport,\n options: options || {},\n renderingTools: {}\n }; // Rescale the new layer based on the base layer to make sure\n // they will have a proportional size (pixel spacing)\n\n if (layers.length && image) {\n rescaleImage(layers[0], newLayer);\n }\n\n layers.push(newLayer);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added\n\n if (layers.length === 1 && image) {\n setActiveLayer(element, layerId);\n }\n\n return layerId;\n}\n/**\n * Remove a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction removeLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index !== -1) {\n layers.splice(index, 1); // If the current layer is active, and we have other layers,\n // switch to the first layer that remains in the array\n\n if (layerId === enabledElement.activeLayerId && layers.length) {\n setActiveLayer(element, layers[0].layerId);\n }\n\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_REMOVED, enabledElement, layerId);\n }\n}\n/**\n * Retrieve a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @return {EnabledElementLayer} The layer\n * @memberof EnabledElementLayers\n */\n\nfunction getLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === layerId;\n });\n}\n/**\n * Retrieve all layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers;\n}\n/**\n * Retrieve all visible layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getVisibleLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.filter(function (layer) {\n return layer.options && layer.options.visible !== false && layer.options.opacity !== 0;\n });\n}\n/**\n * Set the active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setActiveLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // Stop here if this layer is already active\n\n if (enabledElement.activeLayerId === layerId) {\n return;\n }\n\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index === -1) {\n throw new Error('setActiveLayer: layer not found in layers array');\n }\n\n var layer = enabledElement.layers[index];\n\n if (!layer.image) {\n throw new Error('setActiveLayer: layer with undefined image cannot be set as active.');\n }\n\n enabledElement.activeLayerId = layerId;\n enabledElement.image = layer.image;\n enabledElement.viewport = layer.viewport;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ACTIVE_LAYER_CHANGED, enabledElement, layerId);\n}\n/**\n * Set a new image for a specific layerId\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image The image to be displayed in this layer\n * @param {String} [layerId] The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setLayerImage(element, image, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var baseLayer = enabledElement.layers[0];\n var layer;\n\n if (layerId) {\n layer = getLayer(element, layerId);\n } else {\n layer = getActiveLayer(element);\n }\n\n if (!layer) {\n throw new Error('setLayerImage: Layer not found');\n }\n\n layer.image = image;\n\n if (!image) {\n layer.viewport = undefined;\n return;\n }\n\n if (!layer.viewport) {\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (layer.options && layer.options.viewport) {\n layer.viewport = Object.assign(defaultViewport, layer.options.viewport);\n }\n\n if (baseLayer.layerId !== layerId) {\n rescaleImage(baseLayer, layer);\n }\n }\n}\n/**\n * Retrieve the currently active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @return {EnabledElementLayer} The currently active layer\n * @memberof EnabledElementLayers\n */\n\nfunction getActiveLayer(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === enabledElement.activeLayerId;\n });\n}\n/**\n * Purge the layers\r\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\r\n * @returns {void}\r\n */\n\nfunction purgeLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n enabledElement.layers = [];\n delete enabledElement.activeLayerId;\n delete enabledElement.lastSyncViewportsState;\n}\n\n/***/ }),\n\n/***/ \"./metaData.js\":\n/*!*********************!*\\\n !*** ./metaData.js ***!\n \\*********************/\n/*! exports provided: addProvider, removeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addProvider\", function() { return addProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeProvider\", function() { return removeProvider; });\n// This module defines a way to access various metadata about an imageId. This layer of abstraction exists\n// So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document)\nvar providers = [];\n/**\n * @module Metadata\n */\n\n/**\n * Adds a metadata provider with the specified priority\n * @param {Function} provider Metadata provider function\n * @param {Number} [priority=0] - 0 is default/normal, > 0 is high, < 0 is low\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction addProvider(provider) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var i; // Find the right spot to insert this provider based on priority\n\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n } // Insert the decode task at position i\n\n\n providers.splice(i, 0, {\n priority: priority,\n provider: provider\n });\n}\n/**\n * Removes the specified provider\n *\n * @param {Function} provider Metadata provider function\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction removeProvider(provider) {\n for (var i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\n/**\n * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest\n * until one responds\n *\n * @param {String} type The type of metadata requested from the metadata store\n * @param {String} imageId The Cornerstone Image Object's imageId\n *\n * @returns {*} The metadata retrieved from the metadata store\n * @memberof Metadata\n */\n\nfunction getMetaData(type, imageId) {\n // Invoke each provider in priority order until one returns something\n for (var i = 0; i < providers.length; i++) {\n var result = providers[i].provider(type, imageId);\n\n if (result !== undefined) {\n return result;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addProvider: addProvider,\n removeProvider: removeProvider,\n get: getMetaData\n});\n\n/***/ }),\n\n/***/ \"./pageToPixel.js\":\n/*!************************!*\\\n !*** ./pageToPixel.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the page coordinate system to the pixel coordinate\n * system\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {Number} pageX The x value in the page coordinate system\n * @param {Number} pageY The y value in the page coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pageX, pageY) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('image has not been loaded yet');\n } // Convert the pageX and pageY to the canvas client coordinates\n\n\n var rect = element.getBoundingClientRect();\n var clientX = pageX - rect.left - window.pageXOffset;\n var clientY = pageY - rect.top - window.pageYOffset;\n var pt = {\n x: clientX,\n y: clientY\n };\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./pixelDataToFalseColorData.js\":\n/*!**************************************!*\\\n !*** ./pixelDataToFalseColorData.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pixelDataToFalseColorData; });\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n\n/**\n * Converts the image pixel data into a false color data\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Object} lookupTable A lookup table Object\n *\n * @returns {void}\n * @deprecated This function is superseded by the ability to set the Viewport parameters\n * to include colormaps.\n */\n\nfunction pixelDataToFalseColorData(image, lookupTable) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n }\n\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = image.width * image.height;\n var origPixelData = image.origPixelData || image.getPixelData();\n var storedColorPixelData = new Uint8Array(numPixels * 4);\n var sp;\n var mapped;\n image.color = true;\n image.falseColor = true;\n image.origPixelData = origPixelData;\n\n if (lookupTable instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n lookupTable.build();\n\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n mapped = lookupTable.mapValue(sp);\n storedColorPixelData[canvasImageDataIndex++] = mapped[0];\n storedColorPixelData[canvasImageDataIndex++] = mapped[1];\n storedColorPixelData[canvasImageDataIndex++] = mapped[2];\n storedColorPixelData[canvasImageDataIndex++] = mapped[3];\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][3]; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][3]; // Alpha\n }\n }\n\n image.rgba = true;\n image.cachedLut = undefined;\n image.render = undefined;\n image.slope = 1;\n image.intercept = 0;\n image.minPixelValue = 0;\n image.maxPixelValue = 255;\n image.windowWidth = 255;\n image.windowCenter = 128;\n\n image.getPixelData = function () {\n return storedColorPixelData;\n };\n}\n\n/***/ }),\n\n/***/ \"./pixelToCanvas.js\":\n/*!**************************!*\\\n !*** ./pixelToCanvas.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the pixel coordinate system to the canvas coordinate system\n * system. This can be used to render using canvas context without having the weird\n * side effects that come from scaling and non square pixels\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {{x: Number, y: Number}} pt The transformed point in the pixel coordinate system\n *\n * @returns {{x: Number, y: Number}} The input point in the canvas coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./rendering/doesImageNeedToBeRendered.js\":\n/*!************************************************!*\\\n !*** ./rendering/doesImageNeedToBeRendered.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Determine whether or not an Enabled Element needs to be re-rendered.\n *\n * If the imageId has changed, or if any of the last rendered viewport\n * parameters have changed, this function will return true.\n *\n * @param {EnabledElement} enabledElement An Enabled Element\n * @param {Image} image An Image\n * @return {boolean} Whether or not the Enabled Element needs to re-render its image\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var lastRenderedImageId = enabledElement.renderingTools.lastRenderedImageId;\n var lastRenderedViewport = enabledElement.renderingTools.lastRenderedViewport;\n return image.imageId !== lastRenderedImageId || !lastRenderedViewport || lastRenderedViewport.windowCenter !== enabledElement.viewport.voi.windowCenter || lastRenderedViewport.windowWidth !== enabledElement.viewport.voi.windowWidth || lastRenderedViewport.invert !== enabledElement.viewport.invert || lastRenderedViewport.rotation !== enabledElement.viewport.rotation || lastRenderedViewport.hflip !== enabledElement.viewport.hflip || lastRenderedViewport.vflip !== enabledElement.viewport.vflip || lastRenderedViewport.modalityLUT !== enabledElement.viewport.modalityLUT || lastRenderedViewport.voiLUT !== enabledElement.viewport.voiLUT || lastRenderedViewport.colormap !== enabledElement.viewport.colormap;\n});\n\n/***/ }),\n\n/***/ \"./rendering/getLut.js\":\n/*!*****************************!*\\\n !*** ./rendering/getLut.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/computeAutoVoi.js */ \"./internal/computeAutoVoi.js\");\n/* harmony import */ var _lutMatches_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lutMatches.js */ \"./rendering/lutMatches.js\");\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateLut.js */ \"./internal/generateLut.js\");\n\n\n\n/**\n * Retrieve or generate a LUT Array for an Image and Viewport\n *\n * @param {Image} image An Image Object\n * @param {Viewport} viewport An Viewport Object\n * @param {Boolean} invalidated Whether or not the LUT data has been invalidated\n * (e.g. by a change to the windowWidth, windowCenter, or invert viewport parameters).\n * @return {Uint8ClampedArray} LUT Array\n * @memberof rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, viewport, invalidated) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.modalityLUT, viewport.modalityLUT) && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.voiLUT, viewport.voiLUT) && image.cachedLut.invert === viewport.invert && invalidated !== true) {\n return image.cachedLut.lutArray;\n }\n\n Object(_internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(viewport, image); // Lut is invalid or not present, regenerate it and cache it\n\n Object(_internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert, viewport.modalityLUT, viewport.voiLUT);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n image.cachedLut.voiLUT = viewport.voiLUT;\n image.cachedLut.modalityLUT = viewport.modalityLUT;\n return image.cachedLut.lutArray;\n});\n\n/***/ }),\n\n/***/ \"./rendering/index.js\":\n/*!****************************!*\\\n !*** ./rendering/index.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony import */ var _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n\n\n\n\n\n\n/**\n * @module rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n colorImage: _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__[\"renderColorImage\"],\n grayscaleImage: _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderGrayscaleImage\"],\n webImage: _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderWebImage\"],\n pseudoColorImage: _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderPseudoColorImage\"],\n labelMapImage: _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderLabelMapImage\"],\n toCanvas: _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./rendering/initializeRenderCanvas.js\":\n/*!*********************************************!*\\\n !*** ./rendering/initializeRenderCanvas.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Sets size and clears canvas\n *\n * @param {Object} enabledElement Cornerstone Enabled Element\n * @param {Object} image Image to be rendered\n * @returns {void}\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // Resize the canvas\n\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we\n // control the luminance using the alpha channel to improve rendering performance.\n\n canvasContext.fillStyle = 'white';\n canvasContext.fillRect(0, 0, renderCanvas.width, renderCanvas.height);\n var renderCanvasData = canvasContext.getImageData(0, 0, image.width, image.height);\n enabledElement.renderingTools.renderCanvasContext = canvasContext;\n enabledElement.renderingTools.renderCanvasData = renderCanvasData;\n});\n\n/***/ }),\n\n/***/ \"./rendering/lutMatches.js\":\n/*!*********************************!*\\\n !*** ./rendering/lutMatches.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Check if two lookup tables match\n *\n * @param {LUT} a A lookup table function\n * @param {LUT} b Another lookup table function\n * @return {boolean} Whether or not they match\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (a, b) {\n // If undefined, they are equal\n if (!a && !b) {\n return true;\n } // If one is undefined, not equal\n\n\n if (!a || !b) {\n return false;\n } // Check the unique ids\n\n\n return a.id === b.id;\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderColorImage.js\":\n/*!***************************************!*\\\n !*** ./rendering/renderColorImage.js ***!\n \\***************************************/\n/*! exports provided: renderColorImage, addColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return renderColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addColorLayer\", function() { return addColorLayer; });\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ \"./internal/generateColorLut.js\");\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ \"./internal/storedRGBAPixelDataToCanvasImageData.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Generates an appropriate Look Up Table to render the given image with the given window width and level (specified in the viewport)\n * Uses an internal cache for performance\n *\n * @param {Object} image The image to be rendered\n * @param {Object} viewport The viewport values used for rendering\n * @returns {Uint8ClampedArray} Look Up Table array.\n * @memberof rendering\n */\n\nfunction getLut(image, viewport) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && image.cachedLut.invert === viewport.invert) {\n return image.cachedLut.lutArray;\n } // Lut is invalid or not present, regenerate it and cache it\n\n\n Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n return image.cachedLut.lutArray;\n}\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || !canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // The ww/wc is identity and not inverted - get a canvas with the image rendered into it for\n // Fast drawing\n\n if (enabledElement.viewport.voi.windowWidth === 255 && enabledElement.viewport.voi.windowCenter === 128 && enabledElement.viewport.invert === false && image.getCanvas && image.getCanvas()) {\n return image.getCanvas();\n } // Apply the lut to the stored pixel data onto the render canvas\n\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var colorLut = getLut(image, enabledElement.viewport);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // The color image voi/invert has been modified - apply the lut to the underlying\n // Pixel data and put it into the renderCanvas\n\n if (image.rgba) {\n Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, colorLut, renderCanvasData.data);\n } else {\n Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, colorLut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to render a color image to an enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderColorImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderColorImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\nfunction addColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addColorLayer: image must be loaded before it can be drawn');\n } // All multi-layer images should include the alpha value\n\n\n image.rgba = true;\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderGrayscaleImage.js\":\n/*!*******************************************!*\\\n !*** ./rendering/renderGrayscaleImage.js ***!\n \\*******************************************/\n/*! exports provided: renderGrayscaleImage, addGrayscaleLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return renderGrayscaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGrayscaleLayer\", function() { return addGrayscaleLayer; });\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @param {Boolean} [useAlphaChannel = true] Will an alpha channel be used\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var useAlphaChannel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas\n\n if (useAlphaChannel) {\n Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image, lut, renderCanvasData.data);\n } else {\n Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a grayscale image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderGrayscaleImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a grayscale image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @param {Boolean} [useAlphaChannel] - Whether or not to render the grayscale image using only the alpha channel.\n This does not work if this layer is not the first layer in the enabledElement.\n * @returns {void}\n */\n\nfunction addGrayscaleLayer(layer, invalidated) {\n var useAlphaChannel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (layer === undefined) {\n throw new Error('addGrayscaleLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addGrayscaleLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderLabelMapImage.js\":\n/*!******************************************!*\\\n !*** ./rendering/renderLabelMapImage.js ***!\n \\******************************************/\n/*! exports provided: renderLabelMapImage, addLabelMapLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return renderLabelMapImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLabelMapLayer\", function() { return addLabelMapLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderLabelMapImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a label map image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderLabelMapImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderLabelMapImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for label map pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addLabelMapLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addLabelMapLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addLabelMapLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderPseudoColorImage.js\":\n/*!*********************************************!*\\\n !*** ./rendering/renderPseudoColorImage.js ***!\n \\*********************************************/\n/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return renderPseudoColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPseudoColorLayer\", function() { return addPseudoColorLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderPseudoColorImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n colormap.setNumberOfColors(256);\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(image, lut, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a pseudo-color image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderPseudoColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for pseudocolor pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addPseudoColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addPseudoColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addPseudoColorLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderToCanvas.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderToCanvas.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n\n\n\n\n\n/**\r\n * @typedef {Object} EnabledElementStub\r\n * @property {HTMLElement} element The enabled element\r\n * @property {HTMLCanvasElement} canvas The current canvas\r\n * @property {Object} image Currently displayed image\r\n * @property {Boolean} invalid Whether or not the image pixel data has been changed\r\n * @property {Boolean} needsRedraw A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\r\n * @property {Object} options Layer drawing options\r\n * @property {Object[]} layers Layers added to the EnabledElement\r\n * @property {Object} data\r\n * @property {Object} renderingTools\r\n * @property {Object} viewport The current viewport\r\n * @memberof rendering\r\n */\n\n/**\r\n * creates a dummy enabled element\r\n *\r\n * @param {HTMLCanvasElement} canvas the canvas that will be assigned to the enabled element.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param { any } options Options for rendering the image (e.g.enable webgl by {renderer: 'webgl' })\r\n * @param { any } viewport A set of Cornerstone viewport parameters\r\n * @returns {EnabledElementStub} a dummy enabled element\r\n * @memberof rendering\r\n */\n\nfunction createEnabledElementStub(canvas, image, options, viewport) {\n return {\n element: canvas,\n canvas: canvas,\n image: image,\n invalid: true,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n viewport: viewport\n };\n}\n/**\r\n * Render the image to the provided canvas immediately.\r\n * @param {any} canvas The HTML canvas where the image will be rendered.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param {any} [viewport = null] A set of Cornerstone viewport parameters\r\n * @param {any} [options = null] Options for rendering the image (e.g. enable webgl by {renderer: 'webgl'})\r\n * @returns {void}\r\n * @memberof rendering\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (canvas === undefined) {\n throw new Error('renderToCanvas: parameter canvas cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canvas, image);\n\n if (viewport) {\n Object.assign(defaultViewport, viewport);\n }\n\n var enabledElementStub = createEnabledElementStub(canvas, image, options, defaultViewport);\n var eventDetails = {\n enabledElement: enabledElementStub,\n timestamp: Date.now()\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElementStub.element, _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PRE_RENDER, eventDetails);\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElementStub, enabledElementStub.invalid);\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderWebImage.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderWebImage.js ***!\n \\*************************************/\n/*! exports provided: renderWebImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return renderWebImage; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n\n\n/**\n * API function to draw a standard web image (PNG, JPG) to an enabledImage\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\nfunction renderWebImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderWebImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderWebImage: image must be loaded before it can be drawn');\n } // If the viewport ww/wc and invert all match the initial state of the image, we can draw the image\n // Directly. If any of those are changed, we call renderColorImage() to apply the lut\n\n\n if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) {\n // Get the canvas context and reset the transform\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height);\n } else {\n Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderColorImage\"])(enabledElement, invalidated);\n }\n}\n\n/***/ }),\n\n/***/ \"./rendering/saveLastRendered.js\":\n/*!***************************************!*\\\n !*** ./rendering/saveLastRendered.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Saves the parameters of the last render into renderingTools, used later to decide if data can be reused.\n *\n * @param {Object} enabledElement Cornerstone EnabledElement\n * @returns {Object} enabledElement.renderingTools\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var imageId = enabledElement.image.imageId;\n var viewport = enabledElement.viewport;\n var isColor = enabledElement.image.color;\n enabledElement.renderingTools.lastRenderedImageId = imageId;\n enabledElement.renderingTools.lastRenderedIsColor = isColor;\n enabledElement.renderingTools.lastRenderedViewport = {\n windowCenter: viewport.voi.windowCenter,\n windowWidth: viewport.voi.windowWidth,\n invert: viewport.invert,\n rotation: viewport.rotation,\n hflip: viewport.hflip,\n vflip: viewport.vflip,\n modalityLUT: viewport.modalityLUT,\n voiLUT: viewport.voiLUT,\n colormap: viewport.colormap\n };\n return enabledElement.renderingTools;\n});\n\n/***/ }),\n\n/***/ \"./reset.js\":\n/*!******************!*\\\n !*** ./reset.js ***!\n \\******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\n/**\n * Resets the viewport to the default settings\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, enabledElement.image);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./resize.js\":\n/*!*******************!*\\\n !*** ./resize.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/getImageSize.js */ \"./internal/getImageSize.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {HTMLElement} canvas The Canvas DOM element within the DOM element enabled for Cornerstone\r\n * @returns {void}\r\n */\n\nfunction setCanvasSize(element, canvas) {\n // The device pixel ratio is 1.0 for normal displays and > 1.0\n // For high DPI displays like Retina\n\n /*\r\n This functionality is disabled due to buggy behavior on systems with mixed DPI's. If the canvas\r\n is created on a display with high DPI (e.g. 2.0) and then the browser window is dragged to\r\n a different display with a different DPI (e.g. 1.0), the canvas is not recreated so the pageToPixel\r\n produces incorrect results. I couldn't find any way to determine when the DPI changed other than\r\n by polling which is not very clean. If anyone has any ideas here, please let me know, but for now\r\n we will disable this functionality. We may want\r\n to add a mechanism to optionally enable this functionality if we can determine it is safe to do\r\n so (e.g. iPad or iPhone or perhaps enumerate the displays on the system. I am choosing\r\n to be cautious here since I would rather not have bug reports or safety issues related to this\r\n scenario.\r\n var devicePixelRatio = window.devicePixelRatio;\r\n if(devicePixelRatio === undefined) {\r\n devicePixelRatio = 1.0;\r\n }\r\n */\n // Avoid setting the same value because it flashes the canvas with IE and Edge\n if (canvas.width !== element.clientWidth) {\n canvas.width = element.clientWidth;\n canvas.style.width = \"\".concat(element.clientWidth, \"px\");\n } // Avoid setting the same value because it flashes the canvas with IE and Edge\n\n\n if (canvas.height !== element.clientHeight) {\n canvas.height = element.clientHeight;\n canvas.style.height = \"\".concat(element.clientHeight, \"px\");\n }\n}\n/**\r\n * Checks if the image of a given enabled element fitted the window\r\n * before the resize\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {Boolean} true if it fitted the windows, false otherwise\r\n */\n\n\nfunction wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var imageSize = Object(_internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement.image, enabledElement.viewport.rotation);\n var imageWidth = Math.round(imageSize.width * scale);\n var imageHeight = Math.round(imageSize.height * scale);\n var x = enabledElement.viewport.translation.x;\n var y = enabledElement.viewport.translation.y;\n return imageWidth === oldCanvasWidth && imageHeight <= oldCanvasHeight || imageWidth <= oldCanvasWidth && imageHeight === oldCanvasHeight && x === 0 && y === 0;\n}\n/**\r\n * Rescale the image relative to the changed size of the canvas\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {void}\r\n */\n\n\nfunction relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var canvasWidth = enabledElement.canvas.width;\n var canvasHeight = enabledElement.canvas.height;\n var relWidthChange = canvasWidth / oldCanvasWidth;\n var relHeightChange = canvasHeight / oldCanvasHeight;\n var relChange = Math.sqrt(relWidthChange * relHeightChange);\n enabledElement.viewport.scale = relChange * scale;\n}\n/**\r\n * Resizes an enabled element and optionally fits the image to window\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {Boolean} forceFitToWindow true to to force a refit, false to rescale accordingly\r\n * @returns {void}\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, forceFitToWindow) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldCanvasWidth = enabledElement.canvas.width;\n var oldCanvasHeight = enabledElement.canvas.height;\n setCanvasSize(element, enabledElement.canvas);\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ELEMENT_RESIZED, eventData);\n\n if (enabledElement.image === undefined) {\n return;\n }\n\n if (forceFitToWindow || wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight)) {\n // Fit the image to the window again if it fitted before the resize\n Object(_fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n } else {\n // Adapt the scale of a zoomed or panned image relative to the size change\n relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./setToPixelCoordinateSystem.js\":\n/*!***************************************!*\\\n !*** ./setToPixelCoordinateSystem.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/**\n * Sets the canvas context transformation matrix to the pixel coordinate system. This allows\n * geometry to be driven using the canvas context using coordinates in the pixel coordinate system\n * @param {EnabledElement} enabledElement The\n * @param {CanvasRenderingContext2D} context The CanvasRenderingContext2D for the enabledElement's Canvas\n * @param {Number} [scale] Optional scale to apply\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, context, scale) {\n if (enabledElement === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter enabledElement must not be undefined');\n }\n\n if (context === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter context must not be undefined');\n }\n\n var transform = Object(_internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, scale);\n context.setTransform(transform.m[0], transform.m[1], transform.m[2], transform.m[3], transform.m[4], transform.m[5]);\n});\n\n/***/ }),\n\n/***/ \"./setViewport.js\":\n/*!************************!*\\\n !*** ./setViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\nvar MIN_WINDOW_WIDTH = 0.000001;\nvar MIN_VIEWPORT_SCALE = 0.0001;\n/**\n * Sets/updates viewport of a given enabled element\n *\n * @param {HTMLElement} element - DOM element of the enabled element\n * @param {Viewport} [viewport] - Object containing the viewport properties\n * @returns {void}\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, viewport) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // If viewport is not already set, start with default and merge new\n // viewport options later\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement.canvas);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n } // Prevent window width from being too small (note that values close to zero are valid and can occur with\n // PET images in particular)\n\n\n if (enabledElement.viewport.voi.windowWidth) {\n enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH);\n } // Prevent scale from getting too small\n\n\n if (enabledElement.viewport.scale) {\n enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE);\n } // Normalize the rotation value to a positive rotation in degrees\n\n\n enabledElement.viewport.rotation %= 360;\n\n if (enabledElement.viewport.rotation < 0) {\n enabledElement.viewport.rotation += 360;\n }\n\n if (enabledElement.image) {\n // Force the image to be updated since the viewport has been modified\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./triggerEvent.js\":\n/*!*************************!*\\\n !*** ./triggerEvent.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return triggerEvent; });\n/**\n * Trigger a CustomEvent\n *\n * @param {EventTarget} el The element or EventTarget to trigger the event upon\n * @param {String} type The event type name\n * @param {Object|null} detail=null The event data to be sent\n * @returns {Boolean} The return value is false if at least one event listener called preventDefault(). Otherwise it returns true.\n */\nfunction triggerEvent(el, type) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var event; // This check is needed to polyfill CustomEvent on IE11-\n\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(type, {\n detail: detail,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, detail);\n }\n\n return el.dispatchEvent(event);\n}\n\n/***/ }),\n\n/***/ \"./updateImage.js\":\n/*!************************!*\\\n !*** ./updateImage.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the specified enabled element\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Boolean} [invalidated=false] Whether or not the image pixel data has been changed, necessitating a redraw\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined && !enabledElement.layers.length) {\n throw new Error('updateImage: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./webgl/createProgramFromString.js\":\n/*!******************************************!*\\\n !*** ./webgl/createProgramFromString.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Creates and compiles a shader.\n *\n * @param {!WebGLRenderingContext} gl The WebGL Context.\n * @param {string} shaderSource The GLSL source code for the shader.\n * @param {number} shaderType The type of shader, VERTEX_SHADER or FRAGMENT_SHADER.\n *\n * @return {!WebGLShader} The shader.\n * @memberof WebGLRendering\n */\nfunction compileShader(gl, shaderSource, shaderType) {\n // Create the shader object\n var shader = gl.createShader(shaderType); // Set the shader source code.\n\n gl.shaderSource(shader, shaderSource); // Compile the shader\n\n gl.compileShader(shader); // Check if it compiled\n\n var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong during compilation; get the error\n var infoLog = gl.getShaderInfoLog(shader);\n console.error(\"Could not compile shader:\\n\".concat(infoLog));\n }\n\n return shader;\n}\n/**\n * Creates a program from 2 shaders.\n *\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShader A vertex shader.\n * @param {!WebGLShader} fragmentShader A fragment shader.\n * @return {!WebGLProgram} A program.\n * @memberof WebGLRendering\n */\n\n\nfunction createProgram(gl, vertexShader, fragmentShader) {\n // Create a program.\n var program = gl.createProgram(); // Attach the shaders.\n\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader); // Link the program.\n\n gl.linkProgram(program); // Check if it linked.\n\n var success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong with the link\n var infoLog = gl.getProgramInfoLog(program);\n console.error(\"WebGL program filed to link:\\n\".concat(infoLog));\n }\n\n return program;\n}\n/**\n * Creates a program from 2 shaders source (Strings)\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShaderSrc Vertex shader string\n * @param {!WebGLShader} fragShaderSrc Fragment shader string\n * @return {!WebGLProgram} A program\n * @memberof WebGLRendering\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (gl, vertexShaderSrc, fragShaderSrc) {\n var vertexShader = compileShader(gl, vertexShaderSrc, gl.VERTEX_SHADER);\n var fragShader = compileShader(gl, fragShaderSrc, gl.FRAGMENT_SHADER);\n return createProgram(gl, vertexShader, fragShader);\n});\n\n/***/ }),\n\n/***/ \"./webgl/index.js\":\n/*!************************!*\\\n !*** ./webgl/index.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"./webgl/renderer.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n\n\n\n/**\n * @module WebGLRendering\n */\n\nvar mod = {\n createProgramFromString: _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n renderer: {\n render: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n initRenderer: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"initRenderer\"],\n getRenderCanvas: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"getRenderCanvas\"],\n isWebGLAvailable: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLAvailable\"]\n },\n textureCache: _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nObject.defineProperty(mod, 'isWebGLInitialized', {\n enumerable: true,\n configurable: false,\n get: function get() {\n return _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLInitialized\"];\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n\n/***/ }),\n\n/***/ \"./webgl/renderer.js\":\n/*!***************************!*\\\n !*** ./webgl/renderer.js ***!\n \\***************************/\n/*! exports provided: isWebGLInitialized, getRenderCanvas, initRenderer, render, isWebGLAvailable */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLInitialized\", function() { return isWebGLInitialized; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderCanvas\", function() { return getRenderCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRenderer\", function() { return initRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLAvailable\", function() { return isWebGLAvailable; });\n/* harmony import */ var _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shaders/index.js */ \"./webgl/shaders/index.js\");\n/* harmony import */ var _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertexShader.js */ \"./webgl/vertexShader.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* eslint no-bitwise: 0 */\n\n\n\n\nvar renderCanvas = document.createElement('canvas');\nvar gl;\nvar texCoordBuffer;\nvar positionBuffer;\nvar isWebGLInitialized = false;\n\nfunction getRenderCanvas() {\n return renderCanvas;\n}\n\nfunction initShaders() {\n for (var id in _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"]) {\n // Console.log(\"WEBGL: Loading shader\", id);\n var shader = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][id];\n shader.attributes = {};\n shader.uniforms = {};\n shader.vert = _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__[\"vertexShader\"];\n shader.program = Object(_createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(gl, shader.vert, shader.frag);\n shader.attributes.texCoordLocation = gl.getAttribLocation(shader.program, 'a_texCoord');\n gl.enableVertexAttribArray(shader.attributes.texCoordLocation);\n shader.attributes.positionLocation = gl.getAttribLocation(shader.program, 'a_position');\n gl.enableVertexAttribArray(shader.attributes.positionLocation);\n shader.uniforms.resolutionLocation = gl.getUniformLocation(shader.program, 'u_resolution');\n }\n}\n\nfunction initRenderer() {\n if (isWebGLInitialized === true) {\n // Console.log(\"WEBGL Renderer already initialized\");\n return;\n }\n\n if (initWebGL(renderCanvas)) {\n initBuffers();\n initShaders(); // Console.log(\"WEBGL Renderer initialized!\");\n\n isWebGLInitialized = true;\n }\n}\n\nfunction updateRectangle(gl, width, height) {\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([width, height, 0, height, width, 0, 0, 0]), gl.STATIC_DRAW);\n}\n\nfunction handleLostContext(event) {\n event.preventDefault();\n console.warn('WebGL Context Lost!');\n}\n\nfunction handleRestoredContext(event) {\n event.preventDefault();\n isWebGLInitialized = false;\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].purgeCache();\n initRenderer(); // Console.log('WebGL Context Restored.');\n}\n\nfunction initWebGL(canvas) {\n gl = null;\n\n try {\n // Try to grab the standard context. If it fails, fallback to experimental.\n var options = {\n preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element\n\n }; // ---------------- Testing purposes -------------\n // If (debug === true && WebGLDebugUtils) {\n // RenderCanvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderCanvas);\n // }\n // ---------------- Testing purposes -------------\n\n gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); // Set up event listeners for context lost / context restored\n\n canvas.removeEventListener('webglcontextlost', handleLostContext, false);\n canvas.addEventListener('webglcontextlost', handleLostContext, false);\n canvas.removeEventListener('webglcontextrestored', handleRestoredContext, false);\n canvas.addEventListener('webglcontextrestored', handleRestoredContext, false);\n } catch (error) {\n throw new Error('Error creating WebGL context');\n } // If we don't have a GL context, give up now\n\n\n if (!gl) {\n console.error('Unable to initialize WebGL. Your browser may not support it.');\n gl = null;\n }\n\n return gl;\n}\n/**\n * Returns the image data type as a string representation.\n * @param {any} image The cornerstone image object\n * @returns {string} image data type (rgb, iint16, uint16, int8 and uint8)\n * @memberof WebGLRendering\n */\n\n\nfunction getImageDataType(image) {\n if (image.color) {\n return 'rgb';\n }\n\n var pixelData = image.getPixelData();\n\n if (pixelData instanceof Int16Array) {\n return 'int16';\n }\n\n if (pixelData instanceof Uint16Array) {\n return 'uint16';\n }\n\n if (pixelData instanceof Int8Array) {\n return 'int8';\n }\n\n return 'uint8';\n}\n\nfunction getShaderProgram(image) {\n var datatype = getImageDataType(image); // We need a mechanism for\n // Choosing the shader based on the image datatype\n // Console.log(\"Datatype: \" + datatype);\n\n if (_shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].hasOwnProperty(datatype)) {\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][datatype];\n }\n\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].rgb;\n}\n\nfunction generateTexture(image) {\n var TEXTURE_FORMAT = {\n uint8: gl.LUMINANCE,\n int8: gl.LUMINANCE_ALPHA,\n uint16: gl.LUMINANCE_ALPHA,\n int16: gl.RGB,\n rgb: gl.RGB\n };\n var TEXTURE_BYTES = {\n int8: 1,\n // Luminance\n uint16: 2,\n // Luminance + Alpha\n int16: 3,\n // RGB\n rgb: 3 // RGB\n\n };\n var imageDataType = getImageDataType(image);\n var format = TEXTURE_FORMAT[imageDataType]; // GL texture configuration\n\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var imageData = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"dataUtilities\"][imageDataType].storedPixelDataToImageData(image, image.width, image.height);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, image.width, image.height, 0, format, gl.UNSIGNED_BYTE, imageData); // Calculate the size in bytes of this image in memory\n\n var sizeInBytes = image.width * image.height * TEXTURE_BYTES[imageDataType];\n return {\n texture: texture,\n sizeInBytes: sizeInBytes\n };\n}\n\nfunction getImageTexture(image) {\n var imageTexture = _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageTexture(image.imageId);\n\n if (!imageTexture) {\n // Console.log(\"Generating texture for imageid: \", image.imageId);\n imageTexture = generateTexture(image);\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].putImageTexture(image, imageTexture);\n }\n\n return imageTexture.texture;\n}\n\nfunction initBuffers() {\n positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]), gl.STATIC_DRAW);\n texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0]), gl.STATIC_DRAW);\n}\n\nfunction renderQuad(shader, parameters, texture, width, height) {\n gl.clearColor(1.0, 0.0, 0.0, 1.0);\n gl.viewport(0, 0, width, height);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.useProgram(shader.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.vertexAttribPointer(shader.attributes.texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.vertexAttribPointer(shader.attributes.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n for (var key in parameters) {\n var uniformLocation = gl.getUniformLocation(shader.program, key);\n\n if (!uniformLocation) {\n continue; // Disabling this error for now since RGB requires minPixelValue\n // but the other shaders do not.\n // throw `Could not access location for uniform: ${key}`;\n }\n\n var uniform = parameters[key];\n var type = uniform.type;\n var value = uniform.value;\n\n if (type === 'i') {\n gl.uniform1i(uniformLocation, value);\n } else if (type === 'f') {\n gl.uniform1f(uniformLocation, value);\n } else if (type === '2f') {\n gl.uniform2f(uniformLocation, value[0], value[1]);\n }\n }\n\n updateRectangle(gl, width, height);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\n\nfunction render(enabledElement) {\n // Resize the canvas\n var image = enabledElement.image;\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var viewport = enabledElement.viewport; // Render the current image\n\n var shader = getShaderProgram(image);\n var texture = getImageTexture(image);\n var parameters = {\n u_resolution: {\n type: '2f',\n value: [image.width, image.height]\n },\n wc: {\n type: 'f',\n value: viewport.voi.windowCenter\n },\n ww: {\n type: 'f',\n value: viewport.voi.windowWidth\n },\n slope: {\n type: 'f',\n value: image.slope\n },\n intercept: {\n type: 'f',\n value: image.intercept\n },\n minPixelValue: {\n type: 'f',\n value: image.minPixelValue\n },\n invert: {\n type: 'i',\n value: viewport.invert ? 1 : 0\n }\n };\n renderQuad(shader, parameters, texture, image.width, image.height);\n return renderCanvas;\n}\nfunction isWebGLAvailable() {\n // Adapted from\n // http://stackoverflow.com/questions/9899807/three-js-detect-webgl-support-and-fallback-to-regular-canvas\n var options = {\n failIfMajorPerformanceCaveat: true\n };\n\n try {\n var canvas = document.createElement('canvas');\n return Boolean(window.WebGLRenderingContext) && (canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options));\n } catch (e) {\n return false;\n }\n}\n\n/***/ }),\n\n/***/ \"./webgl/shaders/index.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/index.js ***!\n \\********************************/\n/*! exports provided: shaders, dataUtilities */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shaders\", function() { return shaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataUtilities\", function() { return dataUtilities; });\n/* harmony import */ var _int16_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int16.js */ \"./webgl/shaders/int16.js\");\n/* harmony import */ var _int8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int8.js */ \"./webgl/shaders/int8.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"./webgl/shaders/rgb.js\");\n/* harmony import */ var _uint16_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uint16.js */ \"./webgl/shaders/uint16.js\");\n/* harmony import */ var _uint8_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uint8.js */ \"./webgl/shaders/uint8.js\");\n\n\n\n\n\nvar shaders = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16Shader\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8Shader\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbShader\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16Shader\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8Shader\"]\n};\nvar dataUtilities = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16DataUtilities\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8DataUtilities\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbDataUtilities\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16DataUtilities\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8DataUtilities\"]\n};\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int16.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/int16.js ***!\n \\********************************/\n/*! exports provided: int16DataUtilities, int16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16DataUtilities\", function() { return int16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16Shader\", function() { return int16Shader; });\n/* eslint no-bitwise: 0 */\nvar int16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack int16 into three uint8 channels (r, g, b)\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack int16 into three uint8 channels (r, g, b)\n var pixelData = image.getPixelData();\n var numberOfChannels = 3;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = Math.abs(pixelData[i]);\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.g*65536.0;' + 'if (color.b == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int8.js\":\n/*!*******************************!*\\\n !*** ./webgl/shaders/int8.js ***!\n \\*******************************/\n/*! exports provided: int8DataUtilities, int8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8DataUtilities\", function() { return int8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8Shader\", function() { return int8Shader; });\nvar int8Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Store data in Uint8Array\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n // Store data in Uint8Array\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n data[offset++] = pixelData[i];\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.;' + 'if (color.a == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/rgb.js\":\n/*!******************************!*\\\n !*** ./webgl/shaders/rgb.js ***!\n \\******************************/\n/*! exports provided: rgbDataUtilities, rgbShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbDataUtilities\", function() { return rgbDataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbShader\", function() { return rgbShader; });\nvar rgbShader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack RGB images into a 3-channel RGB texture\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0; // Only 3 channels, since we use WebGL's RGB texture format\n\n var numStoredPixels = image.width * image.height * 4;\n var numOutputPixels = image.width * image.height * 3;\n var storedPixelData = image.getPixelData();\n var data = new Uint8Array(numOutputPixels); // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n } else {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n }\n\n return data;\n}\n\nvar rgbDataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nrgbShader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform float minPixelValue;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec3 color = texture2D(u_image, v_texCoord).xyz;' + // Rescale based on slope and intercept\n'color = color * 256.0 * slope + intercept;' + // Apply window settings\n'float center0 = wc - 0.5 - minPixelValue;' + 'float width0 = max(ww, 1.0);' + 'color = (color - center0) / width0 + 0.5;' + // RGBA output\n'gl_FragColor = vec4(color, 1);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1. - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint16.js\":\n/*!*********************************!*\\\n !*** ./webgl/shaders/uint16.js ***!\n \\*********************************/\n/*! exports provided: uint16DataUtilities, uint16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16DataUtilities\", function() { return uint16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16Shader\", function() { return uint16Shader; });\n/* eslint no-bitwise: 0 */\nvar uint16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * For uint16 pack uint16 into two uint8 channels (r and a).\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack uint16 into two uint8 channels (r and a)\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = pixelData[i];\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n }\n\n return data;\n}\n\nvar uint16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.a*65536.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint8.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/uint8.js ***!\n \\********************************/\n/*! exports provided: uint8DataUtilities, uint8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8DataUtilities\", function() { return uint8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8Shader\", function() { return uint8Shader; });\nvar uint8Shader = {};\n/**\n * Convert stored pixel data to image data. Here we will store\n * all data in the alpha channel.\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n return image.getPixelData();\n}\n\nvar uint8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/textureCache.js\":\n/*!*******************************!*\\\n !*** ./webgl/textureCache.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\r\n * This module deals with caching image textures in VRAM for WebGL\r\n * @module WebGLTextureCache\r\n */\n\nvar imageCache = {};\nvar cachedImages = [];\nvar maximumSizeInBytes = 1024 * 1024 * 256; // 256 MB\n\nvar cacheSizeInBytes = 0;\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n}\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n cacheSizeInBytes -= lastCachedImage.sizeInBytes;\n delete imageCache[lastCachedImage.imageId];\n cachedImages.pop();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_REMOVED, {\n imageId: lastCachedImage.imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_CACHE_FULL, cacheInfo);\n}\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n purgeCacheIfNecessary();\n}\n\nfunction putImageTexture(image, imageTexture) {\n var imageId = image.imageId;\n\n if (image === undefined) {\n throw new Error('putImageTexture: image must not be undefined');\n }\n\n if (imageId === undefined) {\n throw new Error('putImageTexture: imageId must not be undefined');\n }\n\n if (imageTexture === undefined) {\n throw new Error('putImageTexture: imageTexture must not be undefined');\n }\n\n if (Object.prototype.hasOwnProperty.call(imageCache, imageId) === true) {\n throw new Error('putImageTexture: imageId already in cache');\n }\n\n var cachedImage = {\n imageId: imageId,\n imageTexture: imageTexture,\n timeStamp: new Date(),\n sizeInBytes: imageTexture.sizeInBytes\n };\n imageCache[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n\n if (imageTexture.sizeInBytes === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes must not be undefined');\n }\n\n if (imageTexture.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes is not a number');\n }\n\n cacheSizeInBytes += cachedImage.sizeInBytes;\n purgeCacheIfNecessary();\n}\n\nfunction getImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = new Date();\n return cachedImage.imageTexture;\n}\n\nfunction removeImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n delete imageCache[imageId];\n return cachedImage.imageTexture;\n}\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages.pop();\n delete imageCache[removedCachedImage.imageId];\n }\n\n cacheSizeInBytes = 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n purgeCache: purgeCache,\n getImageTexture: getImageTexture,\n putImageTexture: putImageTexture,\n removeImageTexture: removeImageTexture,\n setMaximumSizeBytes: setMaximumSizeBytes\n});\n\n/***/ }),\n\n/***/ \"./webgl/vertexShader.js\":\n/*!*******************************!*\\\n !*** ./webgl/vertexShader.js ***!\n \\*******************************/\n/*! exports provided: vertexShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertexShader\", function() { return vertexShader; });\nvar vertexShader = 'attribute vec2 a_position;' + 'attribute vec2 a_texCoord;' + 'uniform vec2 u_resolution;' + 'varying vec2 v_texCoord;' + 'void main() {' + 'vec2 zeroToOne = a_position / u_resolution;' + 'vec2 zeroToTwo = zeroToOne * 2.0;' + 'vec2 clipSpace = zeroToTwo - 1.0;' + 'gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);' + 'v_texCoord = a_texCoord;' + '}';\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=cornerstone.js.map","/*! cornerstone-wado-image-loader - 2.2.2 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstoneWADOImageLoader */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstoneWADOImageLoader\",[],t):\"object\"==typeof exports?exports.cornerstoneWADOImageLoader=t():e.cornerstoneWADOImageLoader=t()}(this,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,r){\"use strict\";t.a=function(e){for(var t,r=e[0],a=e[0],n=e.length,o=1;o>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var i;return e};var d=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var r=t,a=e.rows*e.columns,n=new ArrayBuffer(a*e.samplesPerPixel),o=new DataView(r.buffer,r.byteOffset),i=new Int8Array(r.buffer,r.byteOffset),l=new Int8Array(n),s=0,u=o.getInt32(0,!0),c=0;c>l;var u=(new Date).getTime();return e.decodeTimeInMS=u-o,e}},function(e,t,r){\"use strict\";r.r(t);var a=function(e,t){if(void 0===e)throw new Error(\"decodeRGB: rgbBuffer must not be undefined\");if(e.length%3!=0)throw new Error(\"decodeRGB: rgbBuffer length must be divisible by 3\");for(var r=e.length/3,a=0,n=0,o=0;o>t;return a}var l=function(e,t){for(var r=e.columns*e.rows,a=e.pixelData,n=e.redPaletteColorLookupTableData,o=e.greenPaletteColorLookupTableData,i=e.bluePaletteColorLookupTableData,l=e.redPaletteColorLookupTableData.length,s=0,u=0,c=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,d=x(n,f),p=x(o,f),m=x(i,f),g=0;gt.length)return!1;for(var a=r,n=0;n=E.maxWebWorkers)){var e=new Worker(E.webWorkerPath);R.push({worker:e,status:\"initializing\"}),e.addEventListener(\"message\",F),e.postMessage({taskType:\"initialize\",workerIndex:R.length-1,config:E})}}function G(e){if(e=e||W,E)throw new Error(\"WebWorkerManager already initialized\");if((E=e).maxWebWorkers=E.maxWebWorkers||navigator.hardwareConcurrency||1,!E.startWebWorkersOnDemand)for(var t=0;t=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,u)}if(16===n){if((r=s+t*u*2)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,2*u)}if(1===n){if((r=s+t*u*.125)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return Pe(e.byteArray,r,u)}if(32!==n)throw new Error(\"unsupported pixel format\");if((r=s+t*u*4)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,4*u)};var Ie=function(e){var t=de(e),r=parseInt(t.url,10),a=be.get(r);return new Promise(function(r,e){var t=new FileReader;t.onload=function(e){var t=e.target.result;r(t)},t.onerror=e,t.readAsArrayBuffer(a)})};var Te=function(e){var t=1i?i:t},e.degToRad=function(t){return t*(Math.PI/180)},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return\"number\"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(3),s=(n=o)&&n.__esModule?n:{default:n},r=i(0);var a,h,u,c,l,f=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};f.prototype={constructor:f,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(\"index is out of range: \"+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+t)}},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},sub:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyAxisAngle:(l=void 0,function(t,e){return void 0===l&&(l=new s.default),this.applyQuaternion(l.setFromAxisAngle(t.normalize(),e)),this}),applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[3]*i+o[6]*n,this.y=o[1]*e+o[4]*i+o[7]*n,this.z=o[2]*e+o[5]*i+o[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n+o[12],this.y=o[1]*e+o[5]*i+o[9]*n+o[13],this.z=o[2]*e+o[6]*i+o[10]*n+o[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements,s=1/(o[3]*e+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*e+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*e+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*e+o[6]*i+o[10]*n+o[14])*s,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,o=t.x,s=t.y,r=t.z,a=t.w,h=a*e+s*n-r*i,u=a*i+r*e-o*n,c=a*n+o*i-s*e,l=-o*e-s*i-r*n;return this.x=h*a+l*-o+u*-r-c*-s,this.y=u*a+l*-s+c*-o-h*-r,this.z=c*a+l*-r+h*-s-u*-o,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n,this.y=o[1]*e+o[5]*i+o[9]*n,this.z=o[2]*e+o[6]*i+o[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:(u=void 0,c=void 0,function(t,e){return void 0===u&&(u=new f,c=new f),u.set(t,t,t),c.set(e,e,e),this.clamp(u,c)}),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},cross:function(t,e){if(void 0!==e)return console.warn(\"DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(t,e);var i=this.x,n=this.y,o=this.z;return this.x=n*t.z-o*t.y,this.y=o*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,o=t.z,s=e.x,r=e.y,a=e.z;return this.x=n*a-o*r,this.y=o*s-i*a,this.z=i*r-n*s,this},projectOnVector:(a=void 0,h=void 0,function(t){return void 0===a&&(a=new f),a.copy(t).normalize(),h=this.dot(a),this.copy(a).multiplyScalar(h)}),projectOnPlane:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,r.clamp)(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new f(this.x,this.y,this.z)}},e.default=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}var r={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var i=s(t.start,t.end);if(0===i)return s(e,t.start);var n=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/i;return s(e,n<0?t.start:n>1?t.end:{x:t.start.x+n*(t.end.x-t.start.x),y:t.start.y+n*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var i,o,s,r,a,h,u,c,l,f,y,d={},p=t.start.x,x=t.start.y,m=t.end.x,v=t.end.y,g=e.start.x,z=e.start.y,b=e.end.x,M=e.end.y,w=void 0;if(f=(i=v-x)*b+(s=p-m)*M+(a=m*x-p*v),(0===(l=i*g+s*z+a)||0===f||(0,n.sign)(l)!==(0,n.sign)(f))&&(c=(o=M-z)*m+(r=g-b)*v+(h=b*z-g*M),0===(u=o*p+r*x+h)||0===c||(0,n.sign)(u)!==(0,n.sign)(c))){y=i*r-o*s,w=s*h-r*a;var R=parseFloat(w/y);w=o*a-i*h;var P=parseFloat(w/y);return d.x=R,d.y=P,d}}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=void 0!==n?n:1};n.prototype.setFromAxisAngle=function(t,e){var i=e/2,n=Math.sin(i);return this.x=t.x*n,this.y=t.y*n,this.z=t.z*n,this.w=Math.cos(i),this},n.prototype.multiplyQuaternions=function(t,e){var i=t.x,n=t.y,o=t.z,s=t.w,r=e.x,a=e.y,h=e.z,u=e.w;return this.x=i*u+s*r+n*h-o*a,this.y=n*u+s*a+o*r-i*h,this.z=o*u+s*h+i*a-n*r,this.w=s*u-i*r-n*a-o*h,this},n.prototype.setFromRotationMatrix=function(t){var e=t.elements,i=e[0],n=e[4],o=e[8],s=e[1],r=e[5],a=e[9],h=e[2],u=e[6],c=e[10],l=i+r+c,f=void 0;return l>0?(f=.5/Math.sqrt(l+1),this.w=.25/f,this.x=(u-a)*f,this.y=(o-h)*f,this.z=(s-n)*f):i>r&&i>c?(f=2*Math.sqrt(1+i-r-c),this.w=(u-a)/f,this.x=.25*f,this.y=(n+s)/f,this.z=(o+h)/f):r>c?(f=2*Math.sqrt(1+r-i-c),this.w=(o-h)/f,this.x=(n+s)/f,this.y=.25*f,this.z=(a+u)/f):(f=2*Math.sqrt(1+c-i-r),this.w=(s-n)/f,this.x=(o+h)/f,this.y=(a+u)/f,this.z=.25*f),this},e.default=n},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(2),s=(n=o)&&n.__esModule?n:{default:n};function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var a={distanceToPoint:function(t,e){var i=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var n=s.default.distanceToPoint(t,e);n=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),n=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),i&&n}(t,e)){var n=r(t),o=r(e);return t.width>=0?e.width>=0?(i.topLeft.x=Math.max(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.bottomRight.x)):(i.topLeft.x=Math.max(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.topLeft.x)):e.width>=0?(i.topLeft.x=Math.min(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.topLeft.x)):(i.topLeft.x=Math.min(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(i.topLeft.y=Math.max(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.bottomRight.y)):(i.topLeft.y=Math.max(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.topLeft.y)):e.height>=0?(i.topLeft.y=Math.min(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.topLeft.y)):(i.topLeft.y=Math.min(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.bottomRight.y)),i}}};e.default=a},function(t,e,i){\"use strict\";function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function o(t,e){return Math.sqrt(s(t,e))}function s(t,e){var i=n(t,e);return i.x*i.x+i.y*i.y}Object.defineProperty(e,\"__esModule\",{value:!0});var r={subtract:n,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:o,distanceSquared:s,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var i=[],n=void 0;return t.forEach(function(t,s){var r=o(t,e);i.push(r),n=0===s?r:Math.min(r,n)}),t[i.indexOf(n)]}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r,a,h=function(t,e){this.normal=void 0!==t?t:new s.default(1,0,0),this.constant=void 0!==e?e:0};h.prototype={constructor:h,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:(r=new s.default,a=new s.default,function(t,e,i){var n=r.subVectors(i,e).cross(a.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}),copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return this.orthoPoint(t,e).sub(t).negate()},orthoPoint:function(t,e){var i=this.distanceToPoint(t);return(e||new s.default).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(t){var e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0},intersectLine:function(){var t=new s.default;return function(e,i){var n=i||new s.default,o=e.delta(t),r=this.normal.dot(o);if(0===r)return 0===this.distanceToPoint(e.start)?n.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?void 0:n.copy(o).multiplyScalar(a).add(e.start)}}(),intersectPlane:function(t){var e=this.normal.clone().cross(t.normal),i={origin:new s.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return i.direction=new s.default,i;var n=this.constant,o=t.constant,r=this.normal.clone().dot(t.normal),a=-(n-o*r)/(1-r*r),h=-(o-n*r)/(1-r*r);return i.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(h)),i},coplanarPoint:function(t){return(t||new s.default).copy(this.normal).multiplyScalar(-this.constant)},translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},clone:function(){return(new h).copy(this)}},e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r=function(t,e,i,n,o,s,r,a,h,u,c,l,f,y,d,p){this.elements=new Float32Array(16);var x=this.elements;x[0]=void 0!==t?t:1,x[4]=e||0,x[8]=i||0,x[12]=n||0,x[1]=o||0,x[5]=void 0!==s?s:1,x[9]=r||0,x[13]=a||0,x[2]=h||0,x[6]=u||0,x[10]=void 0!==c?c:1,x[14]=l||0,x[3]=f||0,x[7]=y||0,x[11]=d||0,x[15]=void 0!==p?p:1};r.prototype.makeRotationFromQuaternion=function(t){var e=this.elements,i=t.x,n=t.y,o=t.z,s=t.w,r=i+i,a=n+n,h=o+o,u=i*r,c=i*a,l=i*h,f=n*a,y=n*h,d=o*h,p=s*r,x=s*a,m=s*h;return e[0]=1-(f+d),e[4]=c-m,e[8]=l+x,e[1]=c+m,e[5]=1-(u+d),e[9]=y-p,e[2]=l-x,e[6]=y+p,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},r.prototype.multiplyMatrices=function(t,e){var i=t.elements,n=e.elements,o=this.elements,s=i[0],r=i[4],a=i[8],h=i[12],u=i[1],c=i[5],l=i[9],f=i[13],y=i[2],d=i[6],p=i[10],x=i[14],m=i[3],v=i[7],g=i[11],z=i[15],b=n[0],M=n[4],w=n[8],R=n[12],P=n[1],L=n[5],T=n[9],S=n[13],_=n[2],V=n[6],q=n[10],j=n[14],E=n[3],k=n[7],O=n[11],A=n[15];return o[0]=s*b+r*P+a*_+h*E,o[4]=s*M+r*L+a*V+h*k,o[8]=s*w+r*T+a*q+h*O,o[12]=s*R+r*S+a*j+h*A,o[1]=u*b+c*P+l*_+f*E,o[5]=u*M+c*L+l*V+f*k,o[9]=u*w+c*T+l*q+f*O,o[13]=u*R+c*S+l*j+f*A,o[2]=y*b+d*P+p*_+x*E,o[6]=y*M+d*L+p*V+x*k,o[10]=y*w+d*T+p*q+x*O,o[14]=y*R+d*S+p*j+x*A,o[3]=m*b+v*P+g*_+z*E,o[7]=m*M+v*L+g*V+z*k,o[11]=m*w+v*T+g*q+z*O,o[15]=m*R+v*S+g*j+z*A,this},r.prototype.multiply=function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},r.prototype.getInverse=function(t,e){var i=this.elements,n=t.elements,o=n[0],s=n[4],r=n[8],a=n[12],h=n[1],u=n[5],c=n[9],l=n[13],f=n[2],y=n[6],d=n[10],p=n[14],x=n[3],m=n[7],v=n[11],g=n[15];i[0]=c*p*m-l*d*m+l*y*v-u*p*v-c*y*g+u*d*g,i[4]=a*d*m-r*p*m-a*y*v+s*p*v+r*y*g-s*d*g,i[8]=r*l*m-a*c*m+a*u*v-s*l*v-r*u*g+s*c*g,i[12]=a*c*y-r*l*y-a*u*d+s*l*d+r*u*p-s*c*p,i[1]=l*d*x-c*p*x-l*f*v+h*p*v+c*f*g-h*d*g,i[5]=r*p*x-a*d*x+a*f*v-o*p*v-r*f*g+o*d*g,i[9]=a*c*x-r*l*x-a*h*v+o*l*v+r*h*g-o*c*g,i[13]=r*l*f-a*c*f+a*h*d-o*l*d-r*h*p+o*c*p,i[2]=u*p*x-l*y*x+l*f*m-h*p*m-u*f*g+h*y*g,i[6]=a*y*x-s*p*x-a*f*m+o*p*m+s*f*g-o*y*g,i[10]=s*l*x-a*u*x+a*h*m-o*l*m-s*h*g+o*u*g,i[14]=a*u*f-s*l*f-a*h*y+o*l*y+s*h*p-o*u*p,i[3]=c*y*x-u*d*x-c*f*m+h*d*m+u*f*v-h*y*v,i[7]=s*d*x-r*y*x+r*f*m-o*d*m-s*f*v+o*y*v,i[11]=r*u*x-s*c*x-r*h*m+o*c*m+s*h*v-o*u*v,i[15]=s*c*f-r*u*f+r*h*y-o*c*y-s*h*d+o*u*d;var z=o*i[0]+h*i[4]+f*i[8]+x*i[12];if(0===z){var b=\"Matrix4.getInverse(): can't invert matrix, determinant is 0\";if(e)throw new Error(b);return console.warn(b),this.identity(),this}return this.multiplyScalar(1/z),this},r.prototype.applyToVector3Array=function(){var t=new s.default;return function(e,i,n){void 0===i&&(i=0),void 0===n&&(n=e.length);for(var o=0,s=i;o1||isNaN(r))){var a=this.start.clone().add(e.clone().multiplyScalar(r));return a.clone().sub(t.start).lengthSq()+a.clone().sub(t.end).lengthSq()<=t.distanceSq()?a:void 0}}}}]),t}();e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var n=f(i(8)),o=f(i(2)),s=i(0),r=f(i(7)),a=f(i(6)),h=f(i(5)),u=f(i(3)),c=f(i(4)),l=f(i(1));function f(t){return t&&t.__esModule?t:{default:t}}var y={Line3:n.default,lineSegment:o.default,clamp:s.clamp,degToRad:s.degToRad,radToDeg:s.radToDeg,sign:s.sign,Matrix4:r.default,Plane:a.default,point:h.default,quaternion:u.default,rect:c.default,Vector3:l.default};e.Line3=n.default,e.lineSegment=o.default,e.clamp=s.clamp,e.degToRad=s.degToRad,e.radToDeg=s.radToDeg,e.sign=s.sign,e.Matrix4=r.default,e.Plane=a.default,e.point=h.default,e.quaternion=u.default,e.rect=c.default,e.Vector3=l.default,e.default=y}])});\n//# sourceMappingURL=cornerstoneMath.min.js.map","/*! cornerstone-tools - 3.0.0-b.1512 - 2018-12-17 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstone-tools\",[],t):\"object\"==typeof exports?exports[\"cornerstone-tools\"]=t():e.cornerstoneTools=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=10)}([function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;return\"function\"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent(\"CustomEvent\")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}var b={drawColorId:0,radius:10,minRadius:1,maxRadius:50,alpha:.4,renderBrushIfHiddenButActive:!0,hiddenButActiveAlpha:.2,colorMapId:\"BrushColorMap\",visibleSegmentations:{},imageBitmapCache:{},segmentationMetadata:{}},E={radius:function(e){b.radius=Math.min(Math.max(e,b.minRadius),b.maxRadius)},brushColorMap:function(e){var t=f.cornerstone.colors.getColormap(b.colorMapId);t.setNumberOfColors(e.length);for(var n=0;n2&&void 0!==arguments[2])||arguments[2];b.visibleSegmentations[e]||(b.imageBitmapCache[e]=[]),b.visibleSegmentations[e][t]=n},imageBitmapCacheForElement:function(e,t,n){b.imageBitmapCache[e]||(b.imageBitmapCache[e]=[]),b.imageBitmapCache[e][t]=n},clearImageBitmapCacheForElement:function(e){b.imageBitmapCache[e]=[]},metadata:function(e,t,n){b.segmentationMetadata[e]||(b.segmentationMetadata[e]=[]),b.segmentationMetadata[e][t]=n}};var M={state:b,onRegisterCallback:function(){!function(){var e=f.cornerstone.colors.getColormap(b.colorMapId);e.setNumberOfColors(19);for(var t=0;t<19;t++)t0}).forEach(function(t){var n=!1;t.supportedInteractionTypes.forEach(function(e){t.options[\"is\".concat(e,\"Active\")]&&(n=!0)}),n||(console.info(\"Setting tool \".concat(t.name,\"'s to PASSIVE\")),N(e,t.name))})}(e,o,n,a),o.supportedInteractionTypes.forEach(function(e){void 0===a||a.includes(e)?n[\"is\".concat(e,\"Active\")]=!0:n[\"is\".concat(e,\"Active\")]=!1})),F(\"active\",null,e,t,n)},L=function(e,t,n){z(\"active\",e,t,n),_.state.enabledElements.forEach(function(a){D(a,e,t,n)})},A=F.bind(null,\"disabled\",null),H=V.bind(null,\"disabled\",null),R=F.bind(null,\"enabled\",null),U=V.bind(null,\"enabled\",null),N=F.bind(null,\"passive\",x.TOOL_DEACTIVATED),B=V.bind(null,\"passive\",x.TOOL_DEACTIVATED);function F(e,t,n,a,o){var i=O(n,a);i?(o=G(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(i.options.mouseButtonMask)&&(o.mouseButtonMask=o.mouseButtonMask.concat(i.options.mouseButtonMask)),i.mode=e,i.mergeOptions(o),i[\"\".concat(e,\"Callback\")]&&i[\"\".concat(e,\"Callback\")](n,o),t&&T(n,t,{options:o,toolName:a,type:t})):console.warn(\"Unable to find tool '\".concat(a,\"' for enabledElement\"))}function V(e,t,n,a){z(e,n,a),_.state.enabledElements.forEach(function(o){F(e,t,o,n,a)})}function j(e,t,n,a){var o=_.state.tools.find(function(t){return t.element===n&&\"active\"===t.mode&&!0===t.options[\"is\".concat(e,\"Active\")]});o&&(console.info(\"Setting tool \".concat(o.name,\"'s is\").concat(e,\"Active to false\")),o.options[\"is\".concat(e,\"Active\")]=!1)}function z(e,t,n,a){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),_.state.globalToolChangeHistory.push(o);_.state.globalToolChangeHistory.length>50&&_.state.globalToolChangeHistory.shift();var i=_.state.globalTools[t];if(\"active\"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=_.state.globalTools[e];if(o){var i=new o.tool(o.configuration);i.supportedInteractionTypes.forEach(function(e){if(void 0===n||n.includes(e))if(\"Mouse\"===e){var o=G(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach(function(t){return a.push(\"\".concat(e,\"-\").concat(t))}):Array.isArray(o)&&0===o.length&&a.push(\"\".concat(e,\"-DELETE\"))}else\"MultiTouch\"===e?a.push(\"\".concat(e,\"-\").concat(i.configuration.touchPointers)):a.push(e)})}return a}(t,n,a);Object.keys(_.state.globalTools).forEach(function(e){var t=_.state.globalTools[e];t.activeBindings=t.activeBindings.filter(function(e){return!r.includes(e)})}),r.some(function(e){return e.includes(\"Mouse-DELETE\")})&&(i.activeBindings=i.activeBindings.filter(function(e){return!e.includes(\"Mouse\")}),r=r.filter(function(e){return!e.includes(\"Mouse\")})),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[]}}var W={Mouse:function(e,t,n){var a=G(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some(function(e){return a.includes(e)})});o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter(function(e){return!a.includes(e)}),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:j.bind(void 0,\"MouseWheel\"),Touch:function(e,t,n){var a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive}),o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers});a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isTouchActive to false\")),o.options.isMultiTouchActive=!1)},TouchPinch:j.bind(void 0,\"TouchPinch\"),TouchRotate:j.bind(void 0,\"TouchRotate\"),DoubleTap:j.bind(void 0,\"DoubleTap\"),MultiTouch:function(e,t,n){var a,o=_.state.tools.find(function(n){return n.element===t&&\"active\"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers});1===e.configuration.touchPointers&&(a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive})),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isMultiTouchActive to false\")),o.options.isMultiTouchActive=!1),a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1)}};function G(e){if(e!==Object(e)||Array.isArray(e))if(\"number\"==typeof e){var t=[];t.push(e),e={mouseButtonMask:0===e?[]:t}}else null===e?e={mouseButtonMask:[]}:(console.info(\"No options provided when changing tool mode\"),e={});else if(0===e.mouseButtonMask||null===e.mouseButtonMask)e.mouseButtonMask=[];else if(\"number\"==typeof e.mouseButtonMask){var n=[];n.push(e.mouseButtonMask),e.mouseButtonMask=n}return e}var q={activeOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},enabledCallback:function(e){D(e,this.name)}},enabledOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},activeCallback:function(e){R(e,this.name)}}},Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.name,a=t.strategies,i=t.defaultStrategy,r=t.configuration,s=t.supportedInteractionTypes,l=t.mixins;o()(this,e),this.name=n,this.mode=\"disabled\",this.element=void 0,this.supportedInteractionTypes=s||[],this.strategies=a||{},this.defaultStrategy=i||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,this._options={},this._configuration=Object.assign({},r),this.hasCursor=!1,l&&l.length&&this._applyMixins(l)}return r()(e,[{key:\"mergeOptions\",value:function(e){this._options=Object.assign({},this._options,e)}},{key:\"clearOptions\",value:function(){this._options={}}},{key:\"applyActiveStrategy\",value:function(e){return this.strategies[this.activeStrategy](e,this.configuration)}},{key:\"_applyMixins\",value:function(e){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=a.detail,i=o.element,r=o.image,s=a.detail.deltaPoints.image,l=s.x,c=s.y;t.active=!0;for(var u=Object.keys(t.handles),d=0;d2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=s.detail,c=s.detail.element;t.active=!1,t.invalidated=!0,S.isToolLocked=!1,ce[a].forEach(function(e){c.removeEventListener(e,i)}),ue[a].forEach(function(e){c.removeEventListener(e,r)}),n.deleteIfHandleOutsideImage&&re(l,t.handles)&&$(c,e,t);\"function\"==typeof n.doneMovingCallback&&n.doneMovingCallback();f.cornerstone.updateImage(c)}(t,n,o,i,{dragHandler:r,upOrEndHandler:e},a)};n.active=!0,S.isToolLocked=!0,ce[i].forEach(function(e){a.addEventListener(e,r)}),ue[i].forEach(function(e){a.addEventListener(e,s)})};var he={value:!1},ve={mouse:[x.MOUSE_DRAG],touch:[x.TOUCH_DRAG]},ge={mouse:[x.MOUSE_UP,x.MOUSE_CLICK],touch:[x.TOUCH_END,x.TOUCH_DRAG_END,x.TOUCH_PINCH,x.TOUCH_PRESS,x.TAP]},me=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element,s=function(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=l.page,d=f.cornerstone.pageToPixel(c,u.x,\"touch\"===o?u.y+-57:u.y);!1===n.hasMoved&&(n.hasMoved=!0);he.value=!1,n.active=!0,n.x=d.x,n.y=d.y,a.preventHandleOutsideImage&&le(n,s);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function r(l){!function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=t.currentPoints.image,d=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,S.isToolLocked=!1,he.value=!1,ve[i].forEach(function(e){d.removeEventListener(e,s)}),ge[i].forEach(function(e){d.removeEventListener(e,l)}),o.deleteIfHandleOutsideImage&&re(t,n.handles)&&$(d,e,n);c.type===x.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=u.x,a.y=u.y);\"function\"==typeof o.doneMovingCallback&&o.doneMovingCallback();f.cornerstone.updateImage(d)}(t,e,n,a,o,i,{dragHandler:s,upOrEndHandler:r},l)};if(a.active=!0,n.active=!0,S.isToolLocked=!0,ve[i].forEach(function(e){r.addEventListener(e,s)}),ge[i].forEach(function(e){r.addEventListener(e,l)}),\"touch\"===i){he.value=!0;var c=f.cornerstone.getEnabledElement(r),u={x:e.currentPoints.page.x,y:e.currentPoints.page.y+-57},d=f.cornerstone.pageToPixel(r,u.x,u.y);!function e(t,n,a,o){if(!n.value)return;var i=Math.abs(t.y-o.y);var r=i/10;if(i<1)return t.y=o.y,void(n.value=!1);t.y>o.y?t.y-=r:t.y5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element;S.isToolLocked=!0,a.active=!0,n.active=!0;var s=function(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=s.page,d=f.cornerstone.pageToPixel(c,\"touch\"===o?u.x+-57:u.x,\"touch\"===o?u.y+-57:u.y);n.active=!0,n.x=d.x,n.y=d.y,a&&a.preventHandleOutsideImage&&le(n,l);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function e(r){!function(e,t,n,a,o,i,r){var s=i.moveHandler,l=i.moveEndHandler,c=r.detail,u=c.element,d=c.currentPoints.page,h=f.cornerstone.pageToPixel(u,\"touch\"===o?d.x+-57:d.x,\"touch\"===o?d.y+-57:d.y);if(n.active=!1,t.active=!1,S.isToolLocked=!1,n.x=h.x,n.y=h.y,fe[o].forEach(function(e){u.removeEventListener(e,s)}),pe[o].forEach(function(e){u.removeEventListener(e,l)}),u.removeEventListener(x.TOUCH_START,xe),r.type===x.TOUCH_PINCH||r.type===x.TOUCH_PRESS)return n.active=!1,f.cornerstone.updateImage(u),void(\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback());a.preventHandleOutsideImage&&le(n,r.detail.image);a.deleteIfHandleOutsideImage&&re(r.detail,t.handles)&&$(u,e,t);\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback();f.cornerstone.updateImage(u)}(t,n,a,o,i,{moveHandler:s,moveEndHandler:e},r)};fe[i].forEach(function(e){r.addEventListener(e,s)}),pe[i].forEach(function(e){r.addEventListener(e,l)}),r.addEventListener(x.TOUCH_START,xe)};function xe(e){return e.stopImmediatePropagation(),!1}var Te=function(e,t,n,a,o){n.active=!0,S.isToolLocked=!0,me(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},be=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"mouse\",i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=Object.assign({},{doneMovingCallback:function(){n.active=!1,S.isToolLocked=!1}},t.options);n.active=!0,S.isToolLocked=!0,de(e.detail,t.name,n,null,o,a),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Me=function(e){function t(e){var n=e.name,a=e.strategies,i=e.defaultStrategy,r=e.configuration,s=e.supportedInteractionTypes,c=e.mixins;return o()(this,t),l()(this,u()(t).call(this,{name:n,strategies:a,defaultStrategy:i,configuration:r,supportedInteractionTypes:s,mixins:c}))}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){throw new Error(\"Method createNewMeasurement not implemented for \".concat(this.name,\".\"))}},{key:\"pointNearTool\",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error(\"Method pointNearTool not implemented for \".concat(this.name,\".\"))}},{key:\"distanceFromPoint\",value:function(e,t,n){throw new Error(\"Method distanceFromPoint not implemented for \".concat(this.name,\".\"))}},{key:\"renderToolData\",value:function(e){throw new Error(\"renderToolData not implemented for \".concat(this.name,\".\"))}},{key:\"mouseMoveCallback\",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=Q(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:\"mouse\";Te(e,this,t,n,a)}},{key:\"toolSelectedCallback\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"mouse\";Ee(e,this,t,n)}}]),t}(Y),Ce=1,we=2;var Ie={setToolWidth:function(e){Ce=e},getToolWidth:function(){return Ce},setActiveWidth:function(e){we=e},getActiveWidth:function(){return we}},Se=\"white\",ke=\"greenyellow\",Pe=\"transparent\";var _e={setFillColor:function(e){Pe=e},getFillColor:function(){return Pe},setToolColor:function(e){Se=e},getToolColor:function(){return Se},setActiveColor:function(e){ke=e},getActiveColor:function(){return ke},getColorIfActive:function(e){return e.color?e.color:e.active?ke:Se}},Oe=function(e,t){e.save(),t(e),e.restore()},De=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Ie.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),e.stroke(),r&&e.setLineDash([])};function Le(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)})}var Ae=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=a.map(function(e){return f.cornerstone.pixelToCanvas(t,e)})),e.moveTo(n.x,n.y),a.forEach(function(t){var n=t.x,a=t.y;e.lineTo(n,a)})})},He=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Le(e,void 0,t,n,r,\"canvas\"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Ae(e,void 0,n,s,r,\"canvas\")},Re=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n)),De(e,o,function(e){e.arc(n.x,n.y,a,0,2*Math.PI)})},Ue=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a));var i=Math.min(n.x,a.x),r=Math.min(n.y,a.y),s=Math.abs(n.x-a.x),l=Math.abs(n.y-a.y),c=s/2*.5522848,u=l/2*.5522848,d=i+s,h=r+l,v=i+s/2,g=r+l/2;De(e,o,function(e){e.moveTo(i,g),e.bezierCurveTo(i,g-u,v-c,r,v,r),e.bezierCurveTo(v+c,r,d,g-u,d,g),e.bezierCurveTo(d,g+u,v+c,h,v,h),e.bezierCurveTo(v-c,h,i,g+u,i,g),e.closePath()})},Ne=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=_e.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return\"continue\";if(!0===a.drawHandlesIfActive&&!s.active)return\"continue\";var l=s.active?Ie.getActiveWidth():Ie.getToolWidth(),c=a.fill;De(e,{lineWidth:l,fillStyle:c},function(e){var t=f.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||S.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)})},l=0;l0?f.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Le(a,void 0,r,f.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},\"canvas\")},Fe=15,Ve=\"\".concat(Fe,\"px Arial\"),je=\"transparent\";var ze={setFont:function(e){Ve=e},getFont:function(){return Ve},setFontSize:function(e){Fe=e},getFontSize:function(){return Fe},setBackgroundColor:function(e){je=e},getBackgroundColor:function(){return je}},We=function(e,t,n,a,o){var i=ze.getFontSize();e.font=ze.getFont(),e.textBaseline=\"top\",e.fillStyle=a,n.forEach(function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))})},Ge=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function qe(e,t,n){var a=ze.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var Ye=function(e,t,n,a,o,i){\"[object Array]\"!==Object.prototype.toString.call(t)&&(t=[t]);var r=ze.getFontSize(),s=ze.getBackgroundColor(),l=0;t.forEach(function(t){var n=qe(e,t,5);l=Math.max(l,n)});var c={width:l,height:5+t.length*(r+5)};return Oe(e,function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?\"#FF0000\":s;Ge(e,c,r),We(e,c,t,o,5)}),c},Xe=function(e,t,n,a,o,i,r,s,l,c){var u=f.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=Ye(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map(function(e){return u.pixelToCanvas(t,e)});Be(v,d,n.boundingBox,e,r,s)}},Ke=function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(r,s,l,c)})},Ze=function(e){var t=e.getContext(\"2d\");return t.setTransform(1,0,0,1,0,0),t},Je=function(e,t){return void 0===e?t:e},Qe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Je(t.shadowColor,\"#000000\"),e.shadowBlur=Je(t.shadowBlur,0),e.shadowOffsetX=Je(t.shadowOffsetX,1),e.shadowOffsetY=Je(t.shadowOffsetY,1))},$e=function(e,t,n){if(n.vflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},et=function(e){e.setTransform(1,0,0,1,0,0)},tt=function(e,t,n,a){var o=f.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return f.cornerstoneMath.lineSegment.distanceToPoint(i,a)},nt=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n};function at(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}var ot=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Angle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(tt(e,t.handles.start,t.handles.middle,n)<25||tt(e,t.handles.middle,t.handles.end,n)<25)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=Q(e.currentTarget,this.name);if(s)for(var l=Ze(n.canvasContext.canvas),c=Ie.getToolWidth(),u=function(e){var o=s.data[e];if(!1===o.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var s=_e.getColorIfActive(o),l=f.cornerstone.pixelToCanvas(n.element,o.handles.start),u=f.cornerstone.pixelToCanvas(n.element,o.handles.middle);Ae(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var d={color:s,handleRadius:i,drawHandlesIfActive:r};Ne(e,n,o.handles,d);var v=n.image.columnPixelSpacing||1,g=n.image.rowPixelSpacing||1,m={x:(o.handles.middle.x-o.handles.start.x)*v,y:(o.handles.middle.y-o.handles.start.y)*g},p={x:(o.handles.end.x-o.handles.middle.x)*v,y:(o.handles.end.y-o.handles.middle.y)*g},y={x:(o.handles.end.x-o.handles.start.x)*v,y:(o.handles.end.y-o.handles.start.y)*g},x=at(m),T=at(p),b=at(y),E=Math.acos((Math.pow(x,2)+Math.pow(T,2)-Math.pow(b,2))/(2*x*T));if(E*=180/Math.PI,o.rAngle=nt(E,2),o.rAngle){var M,C=function(e,t,n){var a=t&&n?\"\":\" (isotropic)\";return e.rAngle.toString()+String.fromCharCode(parseInt(\"00B0\",16))+a}(o,n.image.rowPixelSpacing,n.image.columnPixelSpacing);if(!o.handles.textBox.hasMoved){M={x:u.x,y:u.y};var w=qe(e,C,5);u.x0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ArrowAnnotate\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{getTextCallback:rt,changeTextCallback:st,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=Q(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Ze(c),d=Ie.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return\"continue\";Oe(u,function(n){Qe(n,t.configuration);var l=_e.getColorIfActive(i),c=f.cornerstone.pixelToCanvas(a,i.handles.start),u=f.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?He(n,u,c,l,d):He(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&Ne(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&\"\"!==v){var m=qe(n,v,5),p=ze.getFontSize()+10,y=Math.max(m,p)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},ht=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,handles:{start:dt(n,a,0),end:dt(n,a,1,{active:!0}),perpendicularStart:dt(n,a,2,{locked:!0}),perpendicularEnd:dt(n,a,3),textBox:dt(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},vt=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=f.cornerstone,i=f.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ne(r.textBox,n))return!0;var c=\"mouse\"===a?S.clickProximity:S.touchProximity;return!!function(e,t,n,a){var o=f.cornerstone,i=f.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)u){var g=u;u=v,v=g}e.longestDiameter=u.toFixed(1),e.shortestDiameter=v.toFixed(1)},ft=function(e,t,n){var a=\" mm\";return t&&n||(a=\" pixels\"),[\" L \".concat(e.longestDiameter).concat(a),\" W \".concat(e.shortestDiameter).concat(a)]},pt=function(e,t){var n=this,a=e.detail,o=a.element,i=a.image,r=this.configuration;if(!yt(i)){var s=this.createNewMeasurement(a),l=function(){s.active=!1,f.cornerstone.updateImage(o)};J(o,this.name,s),f.cornerstone.updateImage(o);var c=(new Date).getTime(),u=s.handles,d=u.end,h=u.perpendicularStart;ye(a,this.name,s,d,{doneMovingCallback:function(){var e=s.handles,t=s.longestDiameter,i=s.shortestDiameter,u=re(a,e),d=parseFloat(t)||0,v=parseFloat(i)||0,g=d<1||v<1,m=(new Date).getTime()-c<150;u||g||m?(s.cancelled=!0,$(o,n.name,s)):r.getMeasurementLocationCallback(s,a,l),h.locked=!1,f.cornerstone.updateImage(o)}},t)}},yt=function(e){var t=f.cornerstone.metaData.get(\"imagePlaneModule\",e.imageId),n=e.rowPixelSpacing,a=e.columnPixelSpacing;return t&&(n=t.rowPixelSpacing||t.rowImagePixelSpacing,a=t.columnPixelSpacing||t.colImagePixelSpacing),!n||!a};var xt={setCoords:function(e){lt=e.currentPoints.canvas},getCoords:function(){return lt}},Tt=function(e){var t=this,n=e.detail,a=n.element;xt.setCoords(n);var o=Q(a,this.name);if(o){for(var i=!1,r=function(e){var r=n.currentPoints.canvas,s=o.data[e],l=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=oe(e,t,n,a),i=!1;return Object.keys(t).forEach(function(e){if(\"textBox\"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}}),i}(a,s.handles,r);Object.keys(s.handles).forEach(function(e){if(\"textBox\"!==e){var t=s.handles[e];t.hover=t.active}}),l&&(i=!0);var c=t.pointNearTool(a,s,r,\"mouse\"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;sn(e,i)?(r.x=y+u*g,r.y=x-u*v,s.x=r.x-d*g,s.y=r.y+d*v):(r.x=m+u*g,r.y=p-u*v,s.x=r.x-d*g,s.y=r.y+d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=f.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=f.cornerstoneMath.lineSegment.intersectLine(l,c),r=f.cornerstoneMath.point.distance(i,n.handles.start),s=f.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||function(e,t){var n=f.cornerstoneMath.point.distance,a=t.handles,o=a.start,i=a.end,r=a.perpendicularStart,s=a.perpendicularEnd,l=r,c=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,l),u=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,e),d=c+u;if(n(l,e)<=c)return!1;var h=n(o,i),v=(o.x-i.x)/h,g=(o.y-i.y)/h,m=o.x-1*v,p=o.y-1*g,y=i.x+1*v,x=i.y+1*g;r.x=e.x+d*g,r.y=e.y-d*v,s.x=e.x,s.y=e.y,s.locked=!1,r.locked=!1;var T={start:{x:o.x,y:o.y},end:{x:i.x,y:i.y}},b={start:{x:r.x,y:r.y},end:{x:s.x,y:s.y}};return f.cornerstoneMath.lineSegment.intersectLine(T,b)||(n(e,o)>n(e,i)?(s.x=y-u*g,s.y=x+u*v,r.x=s.x+d*g,r.y=s.y-d*v):(s.x=m-u*g,s.y=p+u*v,r.x=s.x+d*g,r.y=s.y-d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Et=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mt=function(e,t){Et(e,t,\"x\"),Et(e,t,\"y\"),Et(e,t,\"moving\"),Et(e,t,\"hover\"),Et(e,t,\"active\"),Et(e,t,\"selected\")};var Ct=function(e){var t,n=this,a=e.detail,o=a.element,i=S.clickProximity,r=function(e){t.invalidated=!0,re(a,t.handles)&&$(o,n.name,t),e&&(e.moving=!1,e.selected=!0),o.style.cursor=\"\",f.cornerstone.updateImage(o),o.addEventListener(x.MOUSE_MOVE,n._moveCallback),o.addEventListener(x.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=Q(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=oe.apply(void 0,u);if(d)return o.removeEventListener(x.MOUSE_MOVE,n._moveCallback),o.removeEventListener(x.TOUCH_START,n._moveCallback),t.active=!0,wt(t.handles),d.moving=!0,d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),m=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+m*m)||0)>v?(Mt(s,l),Mt(s,c),Mt(l,u),Object.values(r).find(function(e){return!0===e.moving})):n}(a,t,d),o.style.cursor=d.hasBoundingBox?\"move\":\"none\",function(e,t,n,a,o,i){var r=e.element,s={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},l=function(e){var o=e.detail;a.active=!0,a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+s.x,a.y=o.currentPoints.image.y+s.y):bt(a,o,n,s),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),f.cornerstone.updateImage(r);var l={toolType:t,element:r,measurementData:n};f.cornerstone.triggerEvent(r,x.MEASUREMENT_MODIFIED,l)};r.addEventListener(x.MOUSE_DRAG,l),r.addEventListener(x.TOUCH_DRAG,l);var c=f.cornerstone.getImage(r),u=function(){f.cornerstone.getImage(r).imageId!==c.imageId&&d()};r.addEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u);var d=function e(){r.removeEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u),r.removeEventListener(x.MOUSE_DRAG,l),r.removeEventListener(x.MOUSE_UP,e),r.removeEventListener(x.MOUSE_CLICK,e),r.removeEventListener(x.TOUCH_DRAG,l),r.removeEventListener(x.TOUCH_DRAG_END,e),r.removeEventListener(x.TAP,e),f.cornerstone.updateImage(r),\"function\"==typeof o&&o()};r.addEventListener(x.MOUSE_UP,d),r.addEventListener(x.MOUSE_CLICK,d),r.addEventListener(x.TOUCH_DRAG_END,d),r.addEventListener(x.TAP,d)}(a,n.name,t,d,function(){return r(d)}),St(e),{v:!0}},u=0;u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Bidirectional\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{changeMeasurementLocationCallback:Lt,getMeasurementLocationCallback:Lt,textBox:\"\",shadow:\"\",drawHandlesOnHover:!0,additionalData:[]}},i=Object.assign(a.configuration,n),r=Object.assign(a,{configuration:i});return(e=l()(this,u()(t).call(this,r))).createNewMeasurement=ht.bind(ut()(ut()(e))),e.pointNearTool=vt.bind(ut()(ut()(e))),e.renderToolData=gt.bind(ut()(ut()(e))),e.addNewMeasurement=pt.bind(ut()(ut()(e))),e._moveCallback=Tt.bind(ut()(ut()(e))),e.preMouseDownCallback=Ct.bind(ut()(ut()(e))),e.preTouchStartCallback=Pt.bind(ut()(ut()(e))),e}return h()(t,e),t}(Me),Ht=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"CobbAngle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.hasIncomplete=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,complete:!1,value:\"\",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(tt(e,t.handles.start,t.handles.end,n)<25||tt(e,t.handles.start2,t.handles.end2,n)<25))}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r)for(var s=Ze(n.canvasContext.canvas),l=Ie.getToolWidth(),c=ze.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(s,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Le(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Xe(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)})},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"EllipticalRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x)+7.5,top:Math.min(o.y,i.y)+7.5,width:Math.abs(o.x-i.x)-15,height:Math.abs(o.y-i.y)-15},s={left:Math.min(o.x,i.x)-7.5,top:Math.min(o.y,i.y)-7.5,width:Math.abs(o.x-i.x)+15,height:Math.abs(o.y-i.y)+15},l=Vt(r,n);return!(!Vt(s,n)||l)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ue(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.round(Math.min(a.handles.start.x,a.handles.end.x)),top:Math.round(Math.min(a.handles.start.y,a.handles.end.y)),width:Math.round(Math.abs(a.handles.start.x-a.handles.end.x)),height:Math.round(Math.abs(a.handles.start.y-a.handles.end.y))};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=jt(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=Math.PI*(y.width*(m||1)/2)*(y.height*(g||1)/2),isNaN(l)||(a.area=l),a.invalidated=!1}a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2);var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;ye.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.x+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>o.value}(e,t,n));var a,o,i}function Xt(e,t,n,a){qt(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var Kt=function e(t,n){o()(this,e),this.toolIndex=t,this.handleIndexArray=n},Zt=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];o()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function Jt(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function tn(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var nn={newHandle:function(e,t){var n=t.length-1;return Jt(t,$t(t[n]),$t(e),[n])},end:function(e){var t=e.length-1;return Jt(e,$t(e[t]),$t(e[0]),[t,0])},modify:function(e,t){var n=$t(e[t]),a=t-1;0===t&&(a=e.length-1);var o=$t(e[a]);return!!Jt(e,n,o,[t,a])||Jt(e,n,o=$t(e[a=t===e.length-1?0:t+1]),[t,a])}},an=function(){function e(t){o()(this,e),this._eventData=t}return r()(e,[{key:\"findLine\",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:\"findTool\",value:function(){return this._toolData=Q(this._eventData.element,\"FreehandMouse\"),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:\"_nearestHandleToPointAllTools\",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:5,activeHandleRadius:3,completeHandleRadius:6,alwaysShowHandles:!1,invalidColor:\"crimson\",currentHandle:0,currentTool:-1}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(ut()(ut()(e))),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(ut()(ut()(e))),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(ut()(ut()(e))),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(ut()(ut()(e))),e._editMouseUpCallback=e._editMouseUpCallback.bind(ut()(ut()(e))),e._editMouseDragCallback=e._editMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:[]};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles;if(!a)throw new Error(\"invalid parameters supplied to tool \".concat(this.name,\"'s pointNearTool\"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:\"distanceFromPoint\",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=e.detail,i=o.element;if(n.hasBoundingBox)Te(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};var s=this._pointNearHandleAllTools(o),l=s.handleNearby,c=s.toolIndex;this._modifying=!0,r.currentHandle=l,r.currentTool=c,this._activateModify(i),S.isToolLocked=!0,vn(e)}}},{key:\"_drawingMouseMoveCallback\",value:function(e){var t=e.detail,n=t.element,a=Q(t.element,this.name),o=this.configuration,i=o.currentTool,r=a.data[i],s=t.currentPoints.canvas;this._getMouseLocation(t),this._checkInvalidHandleLocation(r,t);var l=this._pointNearHandle(n,r,s);void 0!==l&&!l.hasBoundingBox&&l\")}},{key:\"_compareDistanceToSpacingCanvas\",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\">\",o=this.configuration;f.cornerstone.pixelToCanvas(e,t),f.cornerstone.pixelToCanvas(e,n);return\">\"===a?f.cornerstoneMath.point.distance(t,n)>o.spacing:f.cornerstoneMath.point.distance(t,n)0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Length\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;return a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!(!a||!1===t.visible)&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l,c=Ze(n.canvasContext.canvas),u=n.image,d=n.element,h=Ie.getToolWidth(),v=f.cornerstone.metaData.get(\"imagePlaneModule\",u.imageId);v?(s=v.rowPixelSpacing||v.rowImagePixelSpacing,l=v.columnPixelSpacing||v.colImagePixelSpacing):(s=u.rowPixelSpacing,l=u.columnPixelSpacing);for(var g=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(c,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,d,a.handles.start,a.handles.end,{color:r});var c={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,c);var u=(a.handles.end.x-a.handles.start.x)*(l||1),v=(a.handles.end.y-a.handles.start.y)*(s||1),g=Math.sqrt(u*u+v*v);if(a.length=g,!a.handles.textBox.hasMoved){var m={x:Math.max(a.handles.start.x,a.handles.end.x)};m.x===a.handles.start.x?m.y=a.handles.start.y:m.y=a.handles.end.y,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}var f=function(e,t,n){var a=\" mm\";t&&n||(a=\" pixels\");return\"\".concat(e.length.toFixed(2)).concat(a)}(a,s,l);Xe(e,d,a.handles.textBox,f,a.handles,p,r,h,10,!0)})},m=0;m0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Probe\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};console.error(\"required eventData not supplieed to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.end);return f.cornerstoneMath.point.distance(o,n)<5}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration.handleRadius,a=Q(e.currentTarget,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=t.image,r=ze.getFontSize(),s=function(e){var s=a.data[e];if(!1===s.visible)return\"continue\";Oe(o,function(e){var a=_e.getColorIfActive(s);Ne(e,t,s.handles,{handleRadius:n,color:a});var o,l,c,u=Math.round(s.handles.end.x),d=Math.round(s.handles.end.y);if(u>=0&&d>=0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RectangleRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x),top:Math.min(o.y,i.y),width:Math.abs(o.x-i.x),height:Math.abs(o.y-i.y)};return f.cornerstoneMath.rect.distanceToPoint(r,n)<5}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ke(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.min(a.handles.start.x,a.handles.end.x),top:Math.min(a.handles.start.y,a.handles.end.y),width:Math.abs(a.handles.start.x-a.handles.end.x),height:Math.abs(a.handles.start.y-a.handles.end.y)};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=yn(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=y.width*(m||1)*(y.height*(g||1)),isNaN(l)||(a.area=l),a.invalidated=!1}var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2),Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"TextMarker\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{markers:[],current:\"\",ascending:!0,loop:!1,changeTextCallback:Tn}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.touchPressCallback=e._changeText.bind(ut()(ut()(e))),e.doubleClickCallback=e._changeText.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(f.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:\"pointNearTool\",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=f.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ne(t.handles.end,n);return a<10||o}}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration,a=Q(t.element,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return\"continue\";var r=_e.getColorIfActive(i);Oe(o,function(e){Qe(e,n);var a=f.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=Ye(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})})},r=0;r3&&void 0!==arguments[3]&&arguments[3];e.forEach(function(e){var o,i=(o=e[0],e[1]*n+o);t[i]=a?0:1})},drawBrushOnCanvas:function(e,t,n,a){var o=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),i=f.cornerstone.pixelToCanvas(a,{x:1,y:1}),r=i.x-o.x,s=i.y-o.y;Oe(t,function(t){e.forEach(function(e){var o=f.cornerstone.pixelToCanvas(a,{x:e[0],y:e[1]}),i={left:o.x,top:o.y,width:r,height:s};Ge(t,i,n)})})},getCircle:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.round(a),r=Math.round(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>n||h<0||d*d+c*c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Brush\",supportedInteractionTypes:[\"Mouse\"],strategies:{overlapping:_n,nonOverlapping:On},defaultStrategy:\"overlapping\",configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"renderBrush\",value:function(e){var t,n=e.detail,a=n.viewport;if(this._drawing?t=this._lastImageCoords:this._mouseUpRender?(t=this._lastImageCoords,this._mouseUpRender=!1):t=_.state.mousePositionImage,t){var o=n.image,i=o.rows,r=o.columns,s=t,l=s.x,c=s.y;if(!(l<0||l>r||c<0||c>i)){this._configuration;var u=kn.radius,d=n.canvasContext,h=n.element,v=kn.drawColorId,g=this._getBrushColor(v);d.setTransform(1,0,0,1,0,0);var m=f.cornerstone,p=u*a.scale,y=m.pixelToCanvas(h,t);d.beginPath(),d.strokeStyle=g,d.ellipse(y.x,y.y,p,p,0,0,2*Math.PI),d.stroke()}}}},{key:\"_paint\",value:function(e){this.applyActiveStrategy(e,this.configuration),f.cornerstone.updateImage(e.detail.element)}}]),t}(Cn);function _n(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData),d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u.data[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u.data[h].pixelData=v}var g=u.data[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u.data[h].invalidated=!0}}function On(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData).data,d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u[h].pixelData=v}var g=u[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u[h].invalidated=!0;for(var p=Cn.getNumberOfColors(),y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Crosshairs\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDownCallback=e._chooseLocation.bind(ut()(ut()(e))),e.mouseDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e.touchDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_chooseLocation\",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=Q(n,this.name);if(a){var o=n,i=f.cornerstone.getEnabledElement(o).image.imageId,r=f.cornerstone.metaData.get(\"imagePlaneModule\",i);if(r){var s=Bn(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach(function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=Q(e,\"stack\");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach(function(e,a){var o=f.cornerstone.metaData.get(\"imagePlaneModule\",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Un(o.imagePositionPatient),r=Un(o.rowCosines),l=Un(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"DoubleTapFitToWindow\",supportedInteractionTypes:[\"DoubleTap\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"doubleTapCallback\",value:function(e){var t=e.detail;f.cornerstone.fitToWindow(t.element)}}]),t}(Y),qn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"DragProbe\",strategies:{default:Yn,minimal:Xn},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).touchDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.touchEndCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.mouseUpCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.initialConfiguration=i,e.dragEventData={},e}return h()(t,e),r()(t,[{key:\"_movingEventCallback\",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,f.cornerstone.updateImage(n)}},{key:\"_endMovingEventCallback\",value:function(e){var t=e.detail.element;this.dragEventData={},f.cornerstone.updateImage(t)}},{key:\"renderToolData\",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(Y),Yn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Ze(s.canvas),c=_e.getActiveColor(),u=ze.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Oe(l,function(e){Qe(e,t);var a,s,l=\"\".concat(d,\", \").concat(h);if(i.color)a=mn(o,d,h,1,1),s=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2],\" A: \").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,m=Rt(i,v);s=\"SP: \".concat(v,\" MO: \").concat(parseFloat(g.toFixed(3))),m&&(s+=\" SUV: \".concat(parseFloat(m.toFixed(3))))}var f={x:r.canvas.x+5,y:r.canvas.y-5};Ye(e,s,f.x,f.y+u+5,c),Ye(e,l,f.x,f.y,c)})},Xn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Ze(s.canvas),u=_e.getActiveColor(),d=r.page.y-ze.getFontSize()/2;l&&(d=r.page.y-4*ze.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Oe(c,function(e){Qe(e,t);var a,r=n.metaData.get(\"generalSeriesModule\",i.imageId),s=r&&r.modality,c=\"\";if(i.color)a=mn(o,h.x,h.y,1,1),c=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if(\"CT\"===s)c+=\"HU: \".concat(g);else if(\"PT\"===s){c+=g;var m=Rt(i,d);m&&(c+=\" SUV: \".concat(parseFloat(m.toFixed(2))))}else c+=g}var f=n.pixelToCanvas(o,h),p={x:12,y:-(ze.getFontSize()+10)/2},y=qe(e,c,5);l&&(p={x:-y/2,y:-ze.getFontSize()-10-12}),Re(e,o,f,6,{color:u},\"canvas\"),Ye(e,c,f.x+p.x,f.y+p.y,u)})},Kn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Eraser\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preMouseDownCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_deleteAllNearbyTools\",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;S.tools.forEach(function(e){var a=Q(n,e.name);a&&a.data.forEach(function(a){\"function\"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&($(n,e.name,a),f.cornerstone.updateImage(n))})});return!0}}]),t}(Y),Zn=rn.FreehandHandleData,Jn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandSculpterMouse\",referencedToolName:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],mixins:[\"activeOrDisabledBinaryTool\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:5,maxSpacing:20,currentTool:null,dragColor:_e.getActiveColor(),hoverColor:_e.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).hasCursor=!0,e.initialConfiguration=i,e.referencedToolName=i.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(ut()(ut()(e))),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;if(this._active){var n=t.canvasContext.canvas.getContext(\"2d\"),a={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};Ne(n,t,this.configuration.mouseLocation.handles,a)}else this.configuration.showCursorOnHover&&this._renderHoverCursor(e)}},{key:\"doubleClickCallback\",value:function(e){var t=e.detail;this._selectFreehandTool(t),f.cornerstone.updateImage(t.element)}},{key:\"preMouseDownCallback\",value:function(e){var t=e.detail;return null===this.configuration.currentTool?this._selectFreehandTool(t):this._initialiseSculpting(t),f.cornerstone.updateImage(t.element),!0}},{key:\"activeMouseDragCallback\",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=Q(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles;this._getMouseLocation(n),this._sculpt(n,o),f.cornerstone.updateImage(n.element)}}}},{key:\"activeMouseUpCallback\",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,S.isToolLocked=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),f.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:\"_renderHoverCursor\",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext(\"2d\"),i=Q(a,this.referencedToolName).data[this.configuration.currentTool];this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=S.mousePositionImage;var r=O(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};Ne(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:\"newImageCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"enabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"passiveCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"disabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"_selectFreehandTool\",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a)}},{key:\"_activateFreehandTool\",value:function(e,t){var n=Q(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;ae.maxSpacing&&a.push(o)}return a}},{key:\"_insertHandleRadially\",value:function(e,t){var n=e.dataHandles,a=t-1,o=this.constructor._getNextHandleIndexBeforeInsert(t,n.length),i=this.constructor._getInsertPosition(e,t,a,o),r=new Zn(i);n.splice(t,0,r),n[a].lines.pop(),n[a].lines.push(n[t]),t===n.length-1?n[t].lines.push(n[0]):n[t].lines.push(n[t+1])}},{key:\"_consolidateHandles\",value:function(e){if(e.dataHandles.length>3){var t=this._findCloseHandlePairs(e);this._mergeCloseHandles(e,t)}}},{key:\"_findCloseHandlePairs\",value:function(e){for(var t=e.dataHandles,n=e.element,a=e.minSpacing,o=[],i=t.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=Q(a,this.referencedToolName).data[i.currentTool],s=1;if(n){var l=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),c=f.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height});s=(c.x-l.x)*(c.y-l.y)/(o.width*o.height)}var u=r.area*s,d=Math.pow(u/Math.PI,.5);return Math.min(t,d)}},{key:\"_getClosestFreehandToolOnElement\",value:function(e,t){var n=O(e,this.referencedToolName),a=Q(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Magnify\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{magnifySize:300,magnificationLevel:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.enabledCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.disabledCallback=e._destroyMagnificationCanvas.bind(ut()(ut()(e))),e.postTouchStartCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.touchEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.postMouseDownCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.mouseDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.mouseUpCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.mouseClickCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.newImageCallback=e._drawMagnificationTool.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_addMagnifyingGlass\",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame(function(){return t._drawMagnificationTool(e)}),e.preventDefault(),e.stopPropagation()}},{key:\"_updateMagnifyingGlass\",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:\"_removeMagnifyingGlass\",value:function(e){e.detail.element.querySelector(\".magnifyTool\").style.display=\"none\",document.body.style.cursor=\"default\",this._removeZoomElement()}},{key:\"_drawMagnificationTool\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector(\"canvas:not(.magnifyTool)\"),o=Ze(n),i=f.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top=\"\".concat(u.top,\"px\"),n.style.left=\"\".concat(u.left,\"px\"),n.style.display=\"block\",document.body.style.cursor=\"none\"}}},{key:\"_drawZoomedElement\",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=f.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement=document.createElement(\"div\"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,f.cornerstone.enable(this.zoomElement,n.options);var r=f.cornerstone.getEnabledElement(this.zoomElement),s=f.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,f.cornerstone.displayImage(this.zoomElement,i),f.cornerstone.setViewport(this.zoomElement,s)}},{key:\"_removeZoomElement\",value:function(){void 0!==this.zoomElement&&(f.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:\"_createMagnificationCanvas\",value:function(e){if(null===e.querySelector(\".magnifyTool\")){var t=document.createElement(\"canvas\");t.classList.add(\"magnifyTool\"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position=\"absolute\",t.style.display=\"none\",e.appendChild(t)}}},{key:\"_destroyMagnificationCanvas\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");n&&t.removeChild(n)}}]),t}(Y),$n=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"PanMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{touchPointers:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Pan\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ReferenceLines\",mixins:[\"enabledOrDisabledBinaryTool\"],configuration:{renderer:ia}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.renderer=null,e.synchronizationContext=null,e}var n;return h()(t,e),r()(t,[{key:\"enabledCallback\",value:(n=oa()(na.a.mark(function e(t){var n,a,o,i=arguments;return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,sa(t);case 4:if(e.sent&&o&&a){e.next=8;break}return console.warn(\"Unable to enable \".concat(this.name,\". Exiting enable callback. Tool will be enabled, but will not render.\")),e.abrupt(\"return\");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case\"end\":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Ze(n.canvasContext.canvas);f.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach(function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)})}}}]),t}(Y),ua=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},da=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Rotate\",strategies:{default:ha,horizontal:va,vertical:ga},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"mouseDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"postMouseDownCallback\",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:\"dragCallback\",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y),ha=function(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=ua(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle},va=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},ga=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},ma=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RotateTouch\",supportedInteractionTypes:[\"TouchRotate\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchRotateCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,f.cornerstone.setViewport(n,a)}}]),t}(Y),fa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ScaleOverlay\",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:[\"enabledOrDisabledBinaryTool\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"enabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=Ze(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=f.cornerstone.metaData.get(\"imagePlaneModule\",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=pa(c,.25,.05),v=pa(c,.05,.15);if(c.width&&c.height&&h&&v){var g=_e.getToolColor(),m=Ie.getToolWidth(),p=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:m},this.configuration);Oe(n,function(e){Qe(e,p),Le(e,i,p.verticalLine.start,p.verticalLine.end,{color:g,lineWidth:m},\"canvas\"),ya(e,i,p),Le(e,i,p.horizontalLine.start,p.horizontalLine.end,{color:g,lineWidth:m},\"canvas\"),xa(e,i,p)})}}else console.warn(\"unable to define rowPixelSpacing or colPixelSpacing from data on \".concat(this.name,\"'s renderToolData\"))}}]),t}(Y),pa=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},ya=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},xa=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},Ta={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function ba(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];return/trident/i.test(n[1])?(e=/\\brv[ :]+(\\d+)/g.exec(t)||[],\"IE \".concat(e[1]||\"\")):\"Chrome\"===n[1]&&null!==(e=t.match(/\\b(OPR|Edge)\\/(\\d+)/))?e.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(e=t.match(/version\\/(\\d+)/i))&&n.splice(1,1,e[1]),n.join(\" \"))}function Ea(){return la||Ma()}function Ma(){var e=ba().split(\" \"),t=e[0],n=e[1],a=Ta[t];return a?a[n]?a[n]:a.default:Ta.default}var Ca={interaction:[],thumbnail:[],prefetch:[]},wa={interaction:0,thumbnail:0,prefetch:0},Ia={interaction:6,thumbnail:6,prefetch:5},Sa=!1,ka=20;function Pa(){Sa&&setTimeout(function(){Oa()},ka)}function _a(e){var t=f.cornerstone,n=e.type;wa[n]++,Sa=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()});else{var s=function(e){return\"prefetch\"===e.type?-5:\"interactive\"===e.type?0:\"thumbnail\"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()})}}function Oa(){var e=Ea();Ia={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(wa.interaction+wa.thumbnail+wa.prefetch),n=0;n1){var i=Q(e,\"stackRenderer\");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=Rn.getStartLoadHandler(),l=Rn.getEndLoadHandler(),c=Rn.getErrorLoadingHandler();if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then(function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}},function(n){var a=r.imageIds[t];c&&c(e,a,n)}),La.startGrabbing(),T(e,x.STACK_SCROLL,u)}}},Ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n)r%=i.imageIds.length;else r=se(r,0,i.imageIds.length-1);if(a)Aa(e,r);else{var s={index:r};i.pending.push(s),function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function e(o){t.imageIds.indexOf(o.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,e),t.pending.length>0&&function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function o(i){t.imageIds.indexOf(i.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,o),t.pending.length>0&&e(t,t.pending[0],a))}),Aa(a,n.index)}}(t,t.pending[0],a))}),Aa(a,n.index)}}(i,s,e)}}};function Ra(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index){e.pending.splice(e.pending.indexOf(t),1);if(e.pending.length>0){Ra(e,e.pending[0],n)}return}var a=function a(o){var i;if(e.imageIds.indexOf(o.detail.image.imageId)===t.index){e.pending.splice(e.pending.indexOf(t),1);n.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);if(e.pending.length>0){Ra(e,e.pending[0],n)}}};n.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);Aa(n,t.index)}}var Ua=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{loop:!1,allowSkipping:!0,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;Ha(a,s?-n:n,i,r)}}]),t}(Y),Na=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Ba=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScroll\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{loop:!1,allowSkipping:!0}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Fa=function(e,t,n,a,o){if(!e)throw new Error(\"getLuminance: parameter element must not be undefined\");t=Math.round(t),n=Math.round(n);var i,r,s,l=f.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"WwwcRegion\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{minWindowWidth:10}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.touchDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.touchEndCallback=e._applyStrategy.bind(ut()(ut()(e))),e.postMouseDownCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseClickCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseUpCallback=e._applyStrategy.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=_e.getColorIfActive({active:!0}),i=Ze(n.canvasContext.canvas);Oe(i,function(e){Ke(e,a,t.handles.start,t.handles.end,{color:o})})}},{key:\"_startOutliningRegion\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return ja(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),f.cornerstone.updateImage(t),!0}},{key:\"_setHandlesAndUpdate\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,f.cornerstone.updateImage(t)}},{key:\"_applyStrategy\",value:function(e){ja(this.handles.start)||ja(this.handles.end)||(e.detail.handles=this.handles,za(e,this.configuration),this._resetHandles())}},{key:\"_resetHandles\",value:function(){this.handles={start:{},end:{}}}}]),t}(Y),ja=function(e){return 0===Object.keys(e).length&&e.constructor===Object},za=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=se(l,0,a.width),c=se(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Fa(o,l,c,u,d),v=Wa(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,f.cornerstone.setViewport(o,g),f.cornerstone.updateImage(o)},Wa=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Wwwc\",strategies:{basicLevelingStrategy:qa},supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{orientation:0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"mouseDragCallback\",value:function(e){this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:\"touchDragCallback\",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y);function qa(e,t){var n=t.orientation,a=e.detail,o=(a.image.maxPixelValue*a.image.slope+a.image.intercept-(a.image.minPixelValue*a.image.slope+a.image.intercept))/1024,i=a.deltaPoints.page.x*o,r=a.deltaPoints.page.y*o;0===n?(a.viewport.voi.windowWidth+=i,a.viewport.voi.windowCenter+=r):(a.viewport.voi.windowWidth+=r,a.viewport.voi.windowCenter+=i)}var Ya=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{minScale:.25,maxScale:20,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Ya(a,r?o/4:-o/4,{maxScale:s,minScale:l});f.cornerstone.setViewport(n,c)}}]),t}(Y),Za=Xa.correctShift,Ja=Xa.changeViewportScale,Qa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Zoom\",strategies:{default:eo,translate:to,zoomToCenter:no},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){$a.call(this,e)}},{key:\"mouseDragCallback\",value:function(e){$a.call(this,e)}}]),t}(Y),$a=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function eo(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],m=Ja(c,r,{maxScale:a,minScale:o});f.cornerstone.setViewport(l,m);var p=f.cornerstone.pageToPixel(l,d,h),y={x:v-p.x,y:g-p.y};y=Za(y,m),c.translation.x-=y.x,c.translation.y-=y.y}function to(e,t){var n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=Ja(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&le(e.detail.startPoints.image,l);var m={x:l.width/2-d,y:l.height/2-h};m=Za(m,v);var f={x:v.translation.x-m.x,y:v.translation.y-m.y};Math.abs(f.x)<.01?v.translation.x=m.x:g.x=f.x/8,Math.abs(f.y)<.01?v.translation.y=m.y:g.y=f.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function no(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;Ja(s,r,{maxScale:a,minScale:o})}var ao=Xa.correctShift,oo=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomTouchPinch\",supportedInteractionTypes:[\"TouchPinch\"],configuration:{minScale:.25,maxScale:20}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchPinchCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var so,lo={48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",13:\"RETURN\",8:\"BACKSPACE\",9:\"TAB\",46:\"DELETE\",12:\"DELETE\",27:\"ESCAPE\",20:\"CAPSLOCK\",173:\"-\",189:\"-\",109:\"-\",61:\"+\",187:\"+\",107:\"+\",219:\"[\",221:\"]\",59:\";\",186:\";\",188:\",\",190:\".\",199:\"/\"},co={\"base/BaseTool\":Y,\"base/BaseAnnotationTool\":Me,\"base/BaseBrushTool\":Cn,\"manipulators/anyHandlesOutsideImage\":re,\"manipulators/getHandleNearImagePoint\":oe,\"manipulators/handleActivator\":ie,\"manipulators/moveAllHandles\":de,\"manipulators/moveHandle\":me,\"manipulators/moveNewHandle\":ye,\"manipulators/moveHandleNearImagePoint\":Te,\"manipulators/findHandleDataNearImagePoint\":be,\"manipulators/moveAnnotation\":Ee,\"mixins/activeOrDisabledBinaryTool\":q.activeOrDisabledBinaryTool,\"mixins/enabledOrDisabledBinaryTool\":q.enabledOrDisabledBinaryTool,\"drawing/getNewContext\":Ze,\"drawing/draw\":Oe,\"drawing/path\":De,\"drawing/setShadow\":Qe,\"drawing/drawLine\":Le,\"drawing/drawLines\":function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"pixel\";De(e,a,function(e){n.forEach(function(n){var a=n.start,i=n.end;if(\"pixel\"===o){var r=f.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)})})},\"drawing/drawJoinedLines\":Ae,\"drawing/drawCircle\":Re,\"drawing/drawEllipse\":Ue,\"drawing/drawRect\":Ke,\"drawing/fillOutsideRect\":function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(r+l,s,-l,c)})},\"drawing/drawTextBox\":Ye,\"drawing/drawArrow\":He,\"drawing/fillBox\":Ge,\"drawing/fillTextLines\":We,\"drawing/drawLink\":Be,\"drawing/drawLinkedTextBox\":Xe,\"drawing/drawHandles\":Ne,\"drawing/textBoxWidth\":qe,\"util/getLuminance\":Fa,\"util/copyPoints\":io,\"util/calculateSUV\":Rt,\"util/setContextToDisplayFontSize\":function(e,t,n){return f.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},\"util/scrollToIndex\":Aa,\"util/scroll\":Ha,\"util/roundToDecimal\":nt,\"util/projectPatientPointToImagePlane\":Nn,\"util/imagePointToPatientPoint\":Bn,\"util/planePlaneIntersection\":Fn,\"util/pointInsideBoundingBox\":ne,\"util/makeUnselectable\":function(e,t){e.style.webkitUserSelect=\"none\",e.style.webkitTouchCallout=\"none\",e.style.mozUserSelect=\"none\",e.style.msUserSelect=\"none\",e.style.oUserSelect=\"none\",e.style.khtmlUserSelect=\"none\",e.style.userSelect=\"none\",e.unselectable=\"on\",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents=\"none\")},\"util/getRGBPixels\":mn,\"util/getDefaultSimultaneousRequests\":Ma,\"util/getMaxSimultaneousRequests\":Ea,\"util/getBrowserInfo\":ba,\"util/isMobileDevice\":function(){return new RegExp(\"Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\").test(navigator.userAgent)},\"util/angleBetweenPoints\":ua,\"util/getKeyFromKeyCode\":function(e){return lo[e]},\"util/numbersWithCommas\":Nt,\"util/lineSegDistance\":tt,\"util/triggerEvent\":T,\"util/convertToVectro3\":Un,\"util/ellipseUtils\":Ft,\"util/freehandUtils\":rn,\"util/brushUtils\":wn,\"util/zoomUtils\":Xa},uo=function(e){return co[e]},ho=!0,vo=200;function go(e){if(\"number\"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function mo(){ho=!1}function fo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_DOUBLE_CLICK,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o);console.log(\"double-click: \".concat(go(e))),T(t,a,{event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function po(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){so=setTimeout(mo,vo),t.removeEventListener(\"mousemove\",yo);var a={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=f.cornerstone.pixelToCanvas(t,a.image);var o=io(a),i={event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:x.MOUSE_DOWN};T(i.element,x.MOUSE_DOWN,i)&&(i.type=x.MOUSE_DOWN_ACTIVATE,T(i.element,x.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",function e(i){clearTimeout(so);var s=x.MOUSE_UP;ho&&(s=x.MOUSE_CLICK);var l={page:f.cornerstoneMath.point.pageToPoint(i),image:f.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=f.cornerstone.pixelToCanvas(t,l.image);var c={page:f.cornerstoneMath.point.subtract(l.page,o.page),image:f.cornerstoneMath.point.subtract(l.image,o.image),client:f.cornerstoneMath.point.subtract(l.client,o.client),canvas:f.cornerstoneMath.point.subtract(l.canvas,o.canvas)};console.log(\"mouseup: \".concat(go(i)));var u={event:i,buttons:go(i),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};T(u.element,s,u),document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e),t.addEventListener(\"mousemove\",yo),ho=!0})}function r(e){var i=x.MOUSE_DRAG,r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,o.page),image:f.cornerstoneMath.point.subtract(r.image,o.image),client:f.cornerstoneMath.point.subtract(r.client,o.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,o.canvas)};console.log(\"mousemove \".concat(go(e)));var l={buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};T(l.element,i,l),o=io(r)}}function yo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_MOVE,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o),r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,i.page),image:f.cornerstoneMath.point.subtract(r.image,i.image),client:f.cornerstoneMath.point.subtract(r.client,i.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,i.canvas)};T(t,a,{viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=io(r)}}function xo(e){e.removeEventListener(\"mousedown\",po),e.removeEventListener(\"mousemove\",yo),e.removeEventListener(\"dblclick\",fo)}var To={enable:function(e){xo(e),e.addEventListener(\"mousedown\",po),e.addEventListener(\"mousemove\",yo),e.addEventListener(\"dblclick\",fo)},disable:xo},bo=function(e){var t=0,n=0,a=0,o=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),a=10*t,o=10*n,\"deltaY\"in e&&(o=e.deltaY),\"deltaX\"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function Eo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){e.preventDefault();var a=e.pageX,o=e.pageY,i=f.cornerstone.pageToPixel(t,a,o),r=bo(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:f.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};T(t,x.MOUSE_WHEEL,h)}}function Mo(e){e.removeEventListener(\"wheel\",Eo,{passive:!1})}var Co,wo,Io={enable:function(e){Mo(e),e.addEventListener(\"wheel\",Eo,{passive:!1})},disable:Mo},So=2e3,ko={mouse:0,touch:1};function Po(e,t){var n=Date.now();if(e!==Co){if(n-wo<=So)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Co=e}wo=n}var _o=Po.bind(null,ko.mouse),Oo=Po.bind(null,ko.touch);function Do(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.addEventListener(t,a,{passive:!1})})}function Lo(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.removeEventListener(t,a)})}var Ao=[\"mousedown\",\"mouseup\"],Ho=[\"touchstart\",\"touchend\"];function Ro(e){Lo(e,Ao,ko.mouse),Lo(e,Ho,ko.touch)}var Uo,No,Bo,Fo,Vo,jo,zo,Wo,Go,qo={enable:function(e){Ro(e),Do(e,Ao,ko.mouse),Do(e,Ho,ko.touch)},disable:Ro},Yo=1,Xo=0,Ko=!1,Zo=!1,Jo=700,Qo=5,$o=\"touchInput\";function ei(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Zo=!1,clearTimeout(zo)),e.type){case\"tap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"doubletap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.DOUBLE_TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"pinchstart\":Zo=!1,clearTimeout(zo),Yo=1;break;case\"pinchmove\":if(Zo=!1,clearTimeout(zo),!0===Ko){Yo=e.scale,Ko=!1;break}o=(e.scale-Yo)/Yo,(Uo={page:e.center,image:f.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PINCH,Vo={event:e,startPoints:Uo,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},T(t,a,Vo),Yo=e.scale;break;case\"touchstart\":Yo=1,clearTimeout(zo),clearTimeout(jo),jo=setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_START,e.touches.length>1&&(a=x.MULTI_TOUCH_START),Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},!0===T(t,a,Vo)&&(a=x.TOUCH_START_ACTIVE,e.touches.length>1&&(a=x.MULTI_TOUCH_START_ACTIVE),Vo.type=a,T(t,a,Vo)),Bo=io(Uo)},50),Zo=!0,Wo=0,zo=setTimeout(function(){Zo&&((No={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PRESS,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo))},Jo);break;case\"touchend\":Yo=1,Zo=!1,clearTimeout(zo),setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:f.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_END,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},T(t,a,Vo)},50);break;case\"panmove\":i={x:e.deltaX-Go.x,y:e.deltaY-Go.y},Go={x:e.deltaX,y:e.deltaY},(No={page:{x:Bo.page.x+i.x,y:Bo.page.y+i.y},image:f.cornerstone.pageToPixel(t,Bo.page.x+i.x,Bo.page.y+i.y),client:{x:Bo.client.x+i.x,y:Bo.client.y+i.y}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},(Wo+=Math.sqrt(Fo.page.x*Fo.page.x+Fo.page.y*Fo.page.y))>Qo&&(Zo=!1,clearTimeout(zo)),a=x.TOUCH_DRAG,e.pointers.length>1&&(a=x.MULTI_TOUCH_DRAG),Vo={viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,numPointers:e.pointers.length,type:a,isTouchEvent:!0},T(t,a,Vo),Bo=io(No);break;case\"panstart\":Go={x:e.deltaX,y:e.deltaY},(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Bo=io(No);break;case\"panend\":if(Zo=!1,clearTimeout(zo),!Bo)return!1;(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},a=x.TOUCH_DRAG_END,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,type:a,isTouchEvent:!0},T(t,a,Vo),2===e.pointers.length-e.changedPointers.length&&(Ko=!0);break;case\"rotatemove\":Zo=!1,clearTimeout(zo),r=e.rotation-Xo,Xo=e.rotation,a=x.TOUCH_ROTATE,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},T(t,a,Vo)}return!1}}function ti(e){qo.disable(e);[\"touchstart\",\"touchend\"].forEach(function(t){e.removeEventListener(t,ei)});var t=jn($o,e).hammer;t&&t.off(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei)}var ni={enable:function(e){ti(e);var t=f.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:\"doubletap\",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei),qo.enable(e),[\"touchstart\",\"touchend\"].forEach(function(t){e.addEventListener(t,ei,{passive:!1})});var c=jn($o,e);c.hammer=a,zn($o,e,c)},disable:ti},ai=function(e,t,n){return t.filter(function(t){return t.element===e&&\"active\"===t.mode&&(void 0===n||t.options[\"is\".concat(n,\"Active\")])})};\"createImageBitmap\"in window||(window.createImageBitmap=function(){var e=oa()(na.a.mark(function e(t){return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e){var n=document.createElement(\"img\");n.addEventListener(\"load\",function(){e(this)});var a=document.createElement(\"canvas\");a.width=t.width,a.height=t.height,a.getContext(\"2d\").putImageData(t,0,0,0,0,a.width,a.height),n.src=a.toDataURL()}));case 1:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}());var oi=_.modules.brush,ii=oi.state,ri=oi.getters,si=oi.setters;function li(e,t,n){var a=e.detail.element,o=n.toolData,i=n.visibleSegmentations;return!!o.data[t].pixelData&&(!!i[t]||ii.drawColorId===t&&ai(a,_.state.tools).filter(function(e){return e instanceof Cn}).length>0)}function ci(e,t,n){var a=n.toolData,o=n.imageBitmapCache,i=n.visibleSegmentations;o&&o[t]&&function(e,t,n){var a=e.detail,o=Ze(a.canvasContext.canvas),i=f.cornerstone.pixelToCanvas(a.element,{x:0,y:0}),r=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:0}),s=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:a.image.height}),l=f.cornerstoneMath.point.distance(i,r),c=f.cornerstoneMath.point.distance(r,s),u=a.canvasContext.canvas,d=a.viewport;o.imageSmoothingEnabled=!1,o.globalAlpha=function(e){if(e)return ii.alpha;return ii.hiddenButActiveAlpha}(n),$e(o,u,d);var h={x:d.translation.x*d.scale,y:d.translation.y*d.scale};o.drawImage(t,u.width/2-l/2+h.x,u.height/2-c/2+h.y,l,c),o.globalAlpha=1,et(o)}(e,o[t],i[t]),a.data[t].invalidated&&function(e,t,n){var a=e.detail,o=a.element,i=f.cornerstone.getEnabledElement(o),r=t.data[n].pixelData,s=ii.colorMapId,l=[[0,0,0,0],f.cornerstone.colors.getColormap(s).getColor(n)],c=new ImageData(a.image.width,a.image.height),u={stats:{},minPixelValue:0,getPixelData:function(){return r}};f.cornerstone.storedPixelDataToCanvasImageDataColorLUT(u,l,c.data),window.createImageBitmap(c).then(function(e){si.imageBitmapCacheForElement(i.uuid,n,e),t.data[n].invalidated=!1,f.cornerstone.updateImage(a.element)})}(e,a,t)}var ui=function(e){var t=e.detail.element,n=S.tools.filter(function(e){return e.element===t&&(\"active\"===e.mode||\"passive\"===e.mode||\"enabled\"===e.mode)});n.filter(function(e){return e instanceof Cn}).length>0&&function(e){var t=e.detail,n=t.element,a=Cn.getNumberOfColors(),o=Q(n,Cn.getReferencedToolDataName());if(!o){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\")?S.clickProximity:S.touchProximity;return t.filter(function(t){for(var o=Q(e,t.name),i=0;i0})},pi=function(e){if(!S.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mi(n,k.mouseTools()),i=o.filter(function(e){return\"active\"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preMouseDownCallback});if(r)if(r.preMouseDownCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"mouse\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"mouse\")}else{var g=o.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"mouse\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"mouse\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postMouseDownCallback});if(p)if(p.postMouseDownCallback(e))return}}}},yi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=ai(n,k.mouseTools());if(0!==(a=a.filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive})).length){var o=a[0];if(\"function\"==typeof o.preMouseDownActivateCallback)if(o.preMouseDownActivateCallback(e))return;o.addNewMeasurement?o.addNewMeasurement(e,\"mouse\"):o instanceof Me&&function(e,t){e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(J(a,t.name,o),f.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?me:ye)(n,t.name,o,o.handles.end,t.options,\"mouse\"))}(e,o)}}},xi=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element;if(0!==(t=(t=(t=ai(a,k.mouseTools())).filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive})).filter(function(e){return\"function\"==typeof e.mouseDragCallback})).length)t[0].mouseDragCallback(e)}},Ti=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element,o=n.currentPoints;S.mousePositionImage=o.image;var i=(t=mi(a,k.mouseTools())).filter(function(e){return\"active\"===e.mode&&e.options.isMouseActive}),r=!1;i.length>0&&(r=i.some(function(e){return e.hasCursor})),t=fi(a,t);for(var s=0;s0&&function(e){var t=e.detail,n=t.element,a=Q(n,Cn.getReferencedToolDataName());if(!a){for(var o=Cn.getNumberOfColors(),i=0;i0){var i=o[0],r=Q(n,i.name),s=r.data.find(function(e){return void 0!==oe(n,e.handles,a,28)});r.data.active=!0,s.active=!0,f.cornerstone.updateImage(n);var l=Object.assign({},{doneMovingCallback:function(){Di(r)}},i.options);return me(e.detail,i.name,r.data,s,l,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var c=t.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a)})});if(c.length>0){var u=c[0],d=Q(n,u.name),h=d.data.find(function(e){return u.pointNearTool(n,e,a)});h.active=!0,f.cornerstone.updateImage(n);var v=Object.assign({},{doneMovingCallback:function(){Di(d)}},u.options);return de(e.detail,u.name,h,null,v,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var g=ai(n,k.touchTools());return g.length>0&&g[0].touchStartActiveCallback?g[0].touchStartActiveCallback(e):Oi(e),!1}},Hi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mi(n,k.touchTools()),i=o.filter(function(e){return\"active\"===e.mode&&e.options.isTouchActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preTouchStartCallback});if(r)if(r.preTouchStartCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"touch\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a,\"touch\"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"touch\")}else{var g=s.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"touch\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"touch\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postTouchStartCallback});if(p)if(p.postTouchStartCallback(e))return}}}},Ri=vi.bind(null,\"DoubleTap\",\"doubleTapCallback\"),Ui=vi.bind(null,\"Touch\",\"touchDragCallback\"),Ni=vi.bind(null,\"Touch\",\"touchEndCallback\"),Bi=vi.bind(null,\"TouchPinch\",\"touchPinchCallback\"),Fi=vi.bind(null,\"Touch\",\"touchPressCallback\"),Vi=vi.bind(null,\"TouchRotate\",\"touchRotateCallback\"),ji=function(e){e.addEventListener(x.TAP,Ai),e.addEventListener(x.TOUCH_START,Hi,{passive:!1}),e.addEventListener(x.TOUCH_DRAG,Ui,{passive:!1}),e.addEventListener(x.TOUCH_END,Ni),e.addEventListener(x.TOUCH_START_ACTIVE,Oi),e.addEventListener(x.TOUCH_PRESS,Fi),e.addEventListener(x.DOUBLE_TAP,Ri),e.addEventListener(x.TOUCH_PINCH,Bi),e.addEventListener(x.TOUCH_ROTATE,Vi),e.addEventListener(x.MULTI_TOUCH_DRAG,_i)},zi=function(e){e.removeEventListener(x.TAP,Ai),e.removeEventListener(x.TOUCH_START,Hi),e.removeEventListener(x.TOUCH_DRAG,Ui),e.removeEventListener(x.TOUCH_END,Ni),e.removeEventListener(x.TOUCH_START_ACTIVE,Oi),e.removeEventListener(x.TOUCH_PRESS,Fi),e.removeEventListener(x.DOUBLE_TAP,Ri),e.removeEventListener(x.TOUCH_PINCH,Bi),e.removeEventListener(x.TOUCH_ROTATE,Vi),e.removeEventListener(x.MULTI_TOUCH_DRAG,_i)},Wi=function(e,t,n){var a=new t(n);O(e,a.name)?console.warn(\"\".concat(a.name,\" has already been added to the target element\")):(a.element=e,_.state.tools.push(a))},Gi=function(e,t){qi(e,t),_.state.enabledElements.forEach(function(n){Wi(n,e,t)})},qi=function(e,t){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var n=new e(t);void 0!==_.state.globalTools[n.name]?console.warn(\"\".concat(n.name,\" has already been added globally\")):_.state.globalTools[n.name]={tool:e,configuration:t,activeBindings:[]}}},Yi=function(e){console.log(\"EVENT:ELEMENT_ENABLED\");var t=e.detail.element;di(t),ki(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.enable(t),Io.enable(t),wi(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.enable(t),ji(t)),Xi(t)},Xi=function(e){_.state.enabledElements.push(e),_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;Object.keys(_.state.globalTools).forEach(function(t){var n=_.state.globalTools[t],a=n.tool,o=n.configuration;Wi(e,a,o)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;var t={active:D,passive:N,enabled:R,disabled:A};_.state.globalToolChangeHistory.forEach(function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)})}(e)};var Ki=function(e){console.info(\"EVENT:ELEMENT_DISABLED\");var t=e.detail.element;hi(t),Pi(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.disable(t),Io.disable(t),Ii(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.disable(t),zi(t)),Zi(t),Ji(t)},Zi=function(e){_.state.tools=_.state.tools.filter(function(t){return t.element!==e})},Ji=function(e){_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)})}(e);var t=_.state.enabledElements.findIndex(function(t){return t===e});t>-1?_.state.enabledElements.splice(t,1):console.warn(\"unable to remove element\")};var Qi,$i=function(){window.removeEventListener(\"resize\",er,!1)};function er(){Qi||(Qi=setTimeout(function(){Qi=null,tr()},66))}var tr=function(){S.enabledElements.forEach(function(e){f.cornerstone.resize(e)})},nr=function(){$i(),window.addEventListener(\"resize\",er,!1)},ar=function(e){var t;!function(){!function(){var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Yi),e.events.removeEventListener(n,Ki)}();var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Yi),e.events.addEventListener(n,Ki)}(),t=_.modules,Object.keys(t).forEach(function(e){\"function\"==typeof t[e].onRegisterCallback&&t[e].onRegisterCallback()}),nr(),_.modules.globalConfiguration.state=Object.assign({},_.modules.globalConfiguration.state,e)};var or,ir=\"stackPrefetch\",rr=\"prefetch\",sr={maxImagesToPrefetch:1/0},lr=10;var cr=function(e){return Math.max.apply(null,e)},ur=function(e){return Math.min.apply(null,e)};function dr(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0],a=Q(e,ir);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort(function(e,t){return e-t}),o.indicesToRequest.slice().forEach(function(e){var t=n.imageIds[e];t&&(f.cornerstone.imageCache.getImageLoadObject(t)&&b(e))}),o.indicesToRequest.length){La.clearRequestStack(rr);for(var i,r,s,l,c,u,d=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=[],l=[],i.forEach(function(e){er&&l.push(e)}),{low:i.indexOf(cr(s)),high:i.indexOf(ur(l))}),h=Rn.getErrorLoadingHandler(),v=d.low,g=d.high;v>=0||gsr.maxImagesToPrefetch,y=o.indicesToRequest[g]-m>sr.maxImagesToPrefetch,x=!p&&v>=0,T=!y&&g-1&&o.indicesToRequest.splice(t,1)}function E(e){b(n.imageIds.indexOf(e.imageId))}function M(t){console.log(\"prefetch errored: \".concat(t)),h&&h(e,c,t,\"stackPrefetch\")}}function hr(e){return function(t){var n,a=t.detail;try{n=Q(e,\"stack\")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=Q(e,ir);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function vr(e){clearTimeout(or),or=setTimeout(function(){var t=e.target;try{dr(t)}catch(e){return}},lr)}var gr={enable:function(e){Q(e,ir).data=[];var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:function(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),J(e,ir,a),dr(e),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr),e.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var i=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),f.cornerstone.events.addEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else console.warn(\"A stack that should not be cached was given the stackPrefetch\")}},disable:function(e){clearTimeout(or),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var t=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=Q(e,ir);n&&n.data.length&&(n.data[0].enabled=!1,La.clearRequestStack(rr))},getConfiguration:function(){return sr},setConfiguration:function(e){var t;sr=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,la=t)}},mr=function(){function e(){o()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return r()(e,[{key:\"render\",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error(\"FusionRenderer: render - Image ID Index is not an integer\");if(!this.findImageFn)throw new Error(\"No findImage function has been defined\");t||(t=Q(e,\"stack\").data);var a=f.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then(function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach(function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then(function(t){a.setLayerImage(e,t,c),a.updateImage(e)}):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))})})}}]),e}(),fr={};fr.FusionRenderer=mr;var pr=fr,yr=\"playClip\";function xr(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Tr(e,t){var n,a;if(void 0===e)throw new Error(\"playClip: element must not be undefined\");var o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i,r=f.cornerstone;if(o.data.length>1){var s=Q(e,\"stackRenderer\");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=Q(e,yr);c&&c.data&&c.data.length?xr(n=c.data[0]):J(e,yr,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,(\"number\"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return xr(n),void function(e){var t={element:e};T(e,x.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rn.getStartLoadHandler(),a=Rn.getEndLoadHandler(),s=Rn.getErrorLoadingHandler(),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then(function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}},function(t){var n=l.imageIds[c];s&&s(e,n,t)}))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout(function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()},0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function br(e){var t=Q(e,yr);t&&t.data&&t.data.length&&xr(t.data[0])}var Er=function(e,t){var n=_.state.tools.findIndex(function(n){return n.element===e&&n.name===t});n>=0&&_.state.tools.splice(n,1)},Mr=function(e){Cr(e),_.state.enabledElements.forEach(function(t){Er(t,e)})},Cr=function(e){_.modules.globalConfiguration.state.globalToolSyncEnabled&&_.state.globalTools[e]&&delete _.state.globalTools[e]},wr=function(e,t,n){var a=O(e,t);a&&a.mergeOptions(n)},Ir=function(e,t){S.enabledElements.forEach(function(e){wr(e,t)})};function Sr(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var kr=[];function Pr(e,t){var n=Z(e);n||(n=K);var a=[\"stack\",\"stackPrefetch\",\"playClip\",\"volume\",\"slab\",\"referenceLines\",\"crosshairs\",\"stackRenderer\"];t&&(a=a.concat(t));var o=Sr(a,n);kr.push(o),te(e,o)}var _r={newStackSpecificToolStateManager:Sr,addStackStateManager:Pr};function Or(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else{if(!(r.z>1e-4&&r.z>r.x&&r.z>r.y))break;n+=i,r.z=0}return n},invertOrientationString:function(e){var t=e.replace(\"H\",\"f\");return t=(t=(t=(t=(t=(t=t.replace(\"F\",\"h\")).replace(\"R\",\"l\")).replace(\"L\",\"r\")).replace(\"A\",\"p\")).replace(\"P\",\"a\")).toUpperCase()}},Ar=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"image/png\",a=e.querySelector(\"canvas\");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement(\"a\");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent(\"MouseEvents\");r.initMouseEvent(\"click\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent(\"onclick\")},Hr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return Object.keys(P).some(function(t){return t===e})}(e)){if(console.warn(\"A module with the name \".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting module \".concat(e))}P[e]=t};var Rr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return void 0!==q[e]}(e)){if(console.warn(\"mixins/\".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting mixins/\".concat(e))}q[e]=t,co[\"mixins/\".concat(e)]=q[e]};var Ur=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t){return void 0!==co[\"\".concat(e,\"/\").concat(t)]}(e,t)){if(console.warn(\"\".concat(e,\"/\").concat(t,\" is already registered\")),!a)return;console.warn(\"Overwriting \".concat(e,\"/\").concat(t))}co[\"\".concat(e,\"/\").concat(t)]=n};var Nr=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t,n){if(!e)return console.warn(\"The type must be given in order to register.\"),!1;if(!t)return console.warn(\"The \".concat(e,\" must have a name in order to register.\")),!1;if(\"object\"!==y()(n)&&\"function\"!=typeof n)return console.warn(\"The \".concat(n,\" is a \").concat(y()(n),\", it should be an Object or a function.\")),!1;return!0}(e,t,n))switch(e){case\"module\":Hr(t,n,a);break;case\"mixin\":Rr(t,n,a);break;default:Ur(e,t,n,a),console.warn(\"unrecognised type \".concat(e,\", not registering \").concat(t))}};var Br=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=0;n=0;--i){var r=this.tryEntries[i],s=r.completion;if(\"root\"===r.tryLoc)return a(\"end\");if(r.tryLoc<=this.prev){var l=o.call(r,\"catchLoc\"),c=o.call(r,\"finallyLoc\");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,\"finallyLoc\")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if(\"throw\"===a.type){var o=a.arg;P(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:O(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=n),m}}}function T(e,t,n,a){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),r=new _(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error(\"Generator is already running\");if(a===g){if(\"throw\"===o)throw i;return D()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===m)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);a=v;var l=b(e,t,n);if(\"normal\"===l.type){if(a=n.done?g:h,l.arg===m)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(a=g,n.method=\"throw\",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}function E(){}function M(){}function C(){}function w(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise(function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if(\"throw\"!==s.type){var l=s.arg,c=l.value;return c&&\"object\"==typeof c&&o.call(c,\"__await\")?Promise.resolve(c.__await).then(function(e){t(\"next\",e,i,r)},function(e){t(\"throw\",e,i,r)}):Promise.resolve(c).then(function(e){l.value=e,i(l)},function(e){return t(\"throw\",e,i,r)})}r(s.arg)}(n,a,t,i)})}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=n,S(e,t),\"throw\"===t.method))return m;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return m}var o=b(a,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,m;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,m):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,m)}function k(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 P(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function O(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(11),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t\\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","import dicomParser from 'dicom-parser';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';\nimport cornerstoneMath from 'cornerstone-math';\nimport cornerstoneTools from 'cornerstone-tools';\nimport Hammer from 'hammerjs';\nimport OHIF from 'ohif-core';\n//import sha from './sha.js';\n//import version from './version.js';\nimport { homepage } from '../package.json';\n\nwindow.info = {\n //sha,\n //version,\n homepage\n};\n\n// For debugging\nwindow.cornerstone = cornerstone;\nwindow.cornerstoneTools = cornerstoneTools;\nwindow.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\ncornerstoneTools.external.cornerstone = cornerstone;\ncornerstoneTools.external.Hammer = Hammer;\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\ncornerstoneTools.init();\n\ncornerstoneWADOImageLoader.external.cornerstone = cornerstone;\ncornerstoneWADOImageLoader.external.dicomParser = dicomParser;\n\nOHIF.external.cornerstone = cornerstone;\nOHIF.external.cornerstoneTools = cornerstoneTools;\nOHIF.external.cornerstoneMath = cornerstoneMath;\nOHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\n// TODO: Is there a better way to guess ROOT_URL?\nlet ROOT_URL = window.location.pathname;\n\nconst config = {\n maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),\n startWebWorkersOnDemand: true,\n webWorkerPath: ROOT_URL + '/cornerstoneWADOImageLoaderWebWorker.min.js',\n taskConfiguration: {\n decodeTask: {\n loadCodecsOnStartup: true,\n initializeCodecsOnStartup: false,\n codecsPath: ROOT_URL + '/cornerstoneWADOImageLoaderCodecs.min.js',\n usePDFJS: false,\n strict: false\n }\n }\n};\n\ncornerstoneWADOImageLoader.webWorkerManager.initialize(config);\n\n\nOHIF.user.getAccessToken = () => {\n // TODO: Get the Redux store from somewhere else\n const state = window.store.getState();\n if (!state.oidc || !state.oidc.user) {\n return;\n }\n\n return state.oidc.user.access_token;\n}\n\ncornerstoneWADOImageLoader.configure({\n beforeSend: function(xhr) {\n const headers = OHIF.DICOMWeb.getAuthorizationHeader();\n\n if (headers.Authorization) {\n xhr.setRequestHeader(\"Authorization\", headers.Authorization);\n }\n }\n});\n\n// Set the tool font and font size\n// context.font = \"[style] [variant] [weight] [size]/[line height] [font family]\";\nconst fontFamily =\n 'Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif';\ncornerstoneTools.textStyle.setFont(`16px ${fontFamily}`);\n\n// Set the tool width\ncornerstoneTools.toolStyle.setToolWidth(2);\n// Set color for inactive tools\ncornerstoneTools.toolColors.setToolColor('rgb(255, 255, 0)');\n\n// Set color for active tools\ncornerstoneTools.toolColors.setActiveColor('rgb(0, 255, 0)');\n\ncornerstoneTools.store.state.touchProximity = 40;\n","const defaultState = {\n leftSidebarOpen: true,\n rightSidebarOpen: false,\n}\n\nconst ui = (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LEFT_SIDEBAR_OPEN':\n return Object.assign({}, state, { leftSidebarOpen: action.state });\n case 'SET_RIGHT_SIDEBAR_OPEN':\n return Object.assign({}, state, { rightSidebarOpen: action.state });\n default:\n return state;\n }\n};\n\nexport default ui;\n","import React, { PureComponent, Component } from 'react';\nimport reactDom from 'react-dom';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".CineDialog {\\n background: var(--ui-gray-darkest);\\n color: var(--text-secondary-color);\\n filter: drop-shadow(0 0 3px var(--ui-gray-darkest));\\n border: none;\\n border-radius: 8px;\\n width: inherit;\\n}\\n.CineDialog h5 {\\n font-size: 20px;\\n line-height: 35px;\\n margin: 0;\\n}\\n.CineDialog h5,\\n.CineDialog label {\\n font-weight: 400;\\n}\\n.CineDialog .cine-navigation,\\n.CineDialog .cine-controls,\\n.CineDialog .cine-options {\\n cursor: default;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"] {\\n background-color: transparent;\\n border: 0 none;\\n outline: 0 none;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"]::-ms-tooltip {\\n display: none;\\n}\\n.CineDialog .double-row-style {\\n box-sizing: border-box;\\n width: 290px;\\n height: 80px;\\n padding: 10px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .double-row-style .cine-navigation {\\n position: absolute;\\n right: 16px;\\n top: 10px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn {\\n padding: 0 4px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 32px;\\n}\\n.CineDialog .double-row-style .cine-controls {\\n left: 0px;\\n}\\n.CineDialog .double-row-style .cine-options {\\n padding: 0px 0;\\n}\\n.CineDialog .double-row-style .cine-options .fps-section {\\n width: 175px;\\n float: left;\\n}\\n.CineDialog .double-row-style .cine-options .fps {\\n float: right;\\n margin: 5px 20px 0 0;\\n}\\n.CineDialog .single-row-style {\\n box-sizing: content-box;\\n width: 425px;\\n height: 45px;\\n padding: 4px 8px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .single-row-style .cine-navigation {\\n float: right;\\n overflow: hidden;\\n padding-right: 12px;\\n position: relative;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn {\\n padding: 0 2px;\\n margin: 0 0 0 2px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn:first-of-type {\\n margin-left: 0;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 45px;\\n}\\n.CineDialog .single-row-style .cine-controls {\\n position: relative;\\n float: left;\\n overflow: hidden;\\n}\\n.CineDialog .single-row-style .cine-controls .btn {\\n font-size: 22px;\\n line-height: 45px;\\n min-width: 28px;\\n padding: 0 0px;\\n margin: 0 4px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-options {\\n display: block;\\n position: relative;\\n width: 150px;\\n float: left;\\n overflow: hidden;\\n padding: 0;\\n margin: 0 0 0 10px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section {\\n display: block;\\n float: left;\\n width: 80px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section input[type=\\\"range\\\"] {\\n line-height: 45px;\\n height: 45px;\\n}\\n.CineDialog .single-row-style .cine-options .fps {\\n display: block;\\n width: 68px;\\n float: left;\\n padding: 0;\\n margin: 0 0 0 2px;\\n text-align: center;\\n line-height: 45px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n}\\n.CineDialog .btn {\\n color: var(--text-secondary-color);\\n background-color: transparent;\\n border: 0;\\n border-radius: 4px;\\n font-size: 15px;\\n font-weight: normal;\\n height: 37px;\\n line-height: 37px;\\n padding: 0 12px;\\n}\\n.CineDialog .btn:hover,\\n.CineDialog .btn:active,\\n.CineDialog .btn.active {\\n color: var(--hover-color);\\n}\\n.CineDialog .btn[disabled]:hover {\\n color: inherit;\\n}\\n.CineDialog .btn[disabled]:active {\\n color: var(--text-secondary-color);\\n}\\n.CineDialog .btn.btn-primary,\\n.CineDialog .btn.btn-secondary,\\n.CineDialog .btn.btn-danger {\\n transition: background-color 0.3s ease;\\n}\\n.CineDialog .btn.btn-primary:hover,\\n.CineDialog .btn.btn-secondary:hover,\\n.CineDialog .btn.btn-danger:hover,\\n.CineDialog .btn.btn-primary:active,\\n.CineDialog .btn.btn-secondary:active,\\n.CineDialog .btn.btn-danger:active,\\n.CineDialog .btn.btn-primary:focus,\\n.CineDialog .btn.btn-secondary:focus,\\n.CineDialog .btn.btn-danger:focus {\\n opacity: 0.8;\\n}\\n.CineDialog .btn.btn-primary {\\n background-color: var(--active-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-secondary {\\n background-color: var(--text-secondary-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-danger {\\n background-color: var(--text-destructive-color);\\n color: var(--text-primary-color);\\n}\\n.CineDialog .btn.active {\\n box-shadow: inset 1px 1px 2px var(--ui-gray-darkest);\\n}\\n\";\nstyleInject(css);\n\nvar CineDialog =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CineDialog, _PureComponent);\n\n function CineDialog(props) {\n var _this;\n\n _classCallCheck(this, CineDialog);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CineDialog).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var target = event.target;\n var value = target.value;\n\n if (target.type === 'range') {\n value = parseFloat(target.value);\n }\n\n var name = target.name;\n\n _this.setState(_defineProperty({}, name, value));\n\n if (name === 'cineFrameRate' && _this.props.onFrameRateChanged) {\n _this.props.onFrameRateChanged(parseFloat(value));\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickPlayPause\", function () {\n var value = !_this.state.isPlaying;\n\n _this.setState({\n isPlaying: value\n });\n\n if (_this.props.onPlayPauseChanged) {\n _this.props.onPlayPauseChanged(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickNextButton\", function (event) {\n if (_this.props.onClickNextButton) {\n _this.props.onClickNextButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickBackButton\", function (event) {\n if (_this.props.onClickBackButton) {\n _this.props.onClickBackButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToStart\", function (event) {\n if (_this.props.onClickSkipToStart) {\n _this.props.onClickSkipToStart(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToEnd\", function (event) {\n if (_this.props.onClickSkipToEnd) {\n _this.props.onClickSkipToEnd(event);\n }\n });\n\n _this.state = {\n cineFrameRate: props.cineFrameRate,\n isPlaying: props.isPlaying\n };\n return _this;\n }\n\n _createClass(CineDialog, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // TODO: Not sure if we should just switch this to a stateless\n // fully-controlled component instead\n if (this.props.isPlaying !== prevProps.isPlaying || this.props.isPlaying !== this.state.isPlaying) {\n this.setState({\n isPlaying: this.props.isPlaying\n });\n }\n\n if (this.props.cineFrameRate !== prevProps.cineFrameRate || this.props.cineFrameRate !== this.state.cineFrameRate) {\n this.setState({\n cineFrameRate: this.props.cineFrameRate\n });\n }\n }\n }, {\n key: \"render\",\n // TODO:\n // - Add next / previous display set buttons which just call\n // onClickNextDisplaySet and onClickPreviousDisplaySet which are passed in as props.\n // See https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.html#L38\n // - Add 'isEnabled' prop: https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.js#L301\n value: function render() {\n return React.createElement(\"div\", {\n className: \"CineDialog\"\n }, React.createElement(\"div\", {\n className: \"noselect double-row-style\"\n }, React.createElement(\"div\", {\n className: \"cine-controls\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"cineFirstButton\",\n title: \"Skip to first image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToStart\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-backward\"\n })), React.createElement(\"button\", {\n id: \"cineBackButton\",\n title: \"Previous image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickBackButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-backward\"\n })), React.createElement(\"button\", {\n id: \"cinePlayButton\",\n title: \"Play / Stop\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickPlayPause\n }, React.createElement(\"i\", {\n className: this.state.isPlaying ? 'fa fa-lg fa-stop' : 'fa fa-lg fa-play'\n })), React.createElement(\"button\", {\n id: \"cineNextButton\",\n title: \"Next image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickNextButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-forward\"\n })), React.createElement(\"button\", {\n id: \"cineLastButton\",\n title: \"Skip to last image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToEnd\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-forward\"\n })))), React.createElement(\"div\", {\n className: \"cine-options\"\n }, React.createElement(\"div\", {\n className: \"fps-section\"\n }, React.createElement(\"input\", {\n type: \"range\",\n name: \"cineFrameRate\",\n id: \"cineSlider\",\n min: this.props.cineMinFrameRate,\n max: this.props.cineMaxFrameRate,\n step: this.props.cineStepFrameRate,\n value: this.state.cineFrameRate,\n onChange: this.handleInputChange\n })), React.createElement(\"span\", {\n className: \"fps\"\n }, this.state.cineFrameRate.toFixed(1), \" fps\"))));\n }\n }]);\n\n return CineDialog;\n}(PureComponent);\n\n_defineProperty(CineDialog, \"propTypes\", {\n cineMinFrameRate: propTypes.number.isRequired,\n cineMaxFrameRate: propTypes.number.isRequired,\n cineStepFrameRate: propTypes.number.isRequired,\n cineFrameRate: propTypes.number.isRequired,\n isPlaying: propTypes.bool.isRequired,\n onPlayPauseChanged: propTypes.func,\n onFrameRateChanged: propTypes.func,\n onClickNextButton: propTypes.func,\n onClickBackButton: propTypes.func,\n onClickSkipToStart: propTypes.func,\n onClickSkipToEnd: propTypes.func\n});\n\n_defineProperty(CineDialog, \"defaultProps\", {\n cineMinFrameRate: 1,\n cineMaxFrameRate: 90,\n cineStepFrameRate: 1,\n cineFrameRate: 24,\n isPlaying: false\n});\n\nvar interfaces = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n});\n\nunwrapExports(interfaces);\nvar interfaces_1 = interfaces.HandlerRole;\n\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n}\n\n/* global window */\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread$1({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n createStore: createStore,\n combineReducers: combineReducers,\n bindActionCreators: bindActionCreators,\n applyMiddleware: applyMiddleware,\n compose: compose,\n __DO_NOT_USE__ActionTypes: ActionTypes\n});\n\nvar types = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n});\n\nunwrapExports(types);\nvar types_1 = types.INIT_COORDS;\nvar types_2 = types.BEGIN_DRAG;\nvar types_3 = types.PUBLISH_DRAG_SOURCE;\nvar types_4 = types.HOVER;\nvar types_5 = types.DROP;\nvar types_6 = types.END_DRAG;\n\nvar setClientOffset_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n});\n\nunwrapExports(setClientOffset_1);\nvar setClientOffset_2 = setClientOffset_1.setClientOffset;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\nvar beginDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar ResetCoordinatesAction = {\n type: types.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1(isObject_1(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n});\n\nunwrapExports(beginDrag);\n\nvar publishDragSource = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n});\n\nunwrapExports(publishDragSource);\n\nvar matchesType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n});\n\nunwrapExports(matchesType_1);\n\nvar hover = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n});\n\nunwrapExports(hover);\n\nvar drop = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target.drop(monitor, targetId);\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1(typeof dropResult === 'undefined' || isObject_1(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n});\n\nunwrapExports(drop);\n\nvar endDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n});\n\nunwrapExports(endDrag);\n\nvar dragDrop = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n__export(types);\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag.default(manager),\n publishDragSource: publishDragSource.default(manager),\n hover: hover.default(manager),\n drop: drop.default(manager),\n endDrag: endDrag.default(manager),\n };\n}\nexports.default = createDragDropActions;\n});\n\nunwrapExports(dragDrop);\n\nvar equality = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n});\n\nunwrapExports(equality);\nvar equality_1 = equality.strictEquality;\nvar equality_2 = equality.areCoordsEqual;\nvar equality_3 = equality.areArraysEqual;\n\nvar dragOffset_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.INIT_COORDS:\n case dragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop.HOVER:\n if (equality.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n});\n\nunwrapExports(dragOffset_1);\n\nvar registry = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n});\n\nunwrapExports(registry);\nvar registry_1 = registry.ADD_SOURCE;\nvar registry_2 = registry.ADD_TARGET;\nvar registry_3 = registry.REMOVE_SOURCE;\nvar registry_4 = registry.REMOVE_TARGET;\nvar registry_5 = registry.addSource;\nvar registry_6 = registry.addTarget;\nvar registry_7 = registry.removeSource;\nvar registry_8 = registry.removeTarget;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$1 = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$1;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$1.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = _getNative(_root, 'Map');\n\nvar _Map = Map$1;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\nvar _setCacheAdd = setCacheAdd;\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nvar _setCacheHas = setCacheHas;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\n\nvar _SetCache = SetCache;\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nvar _baseFindIndex = baseFindIndex;\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nvar _baseIsNaN = baseIsNaN;\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nvar _strictIndexOf = strictIndexOf;\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? _strictIndexOf(array, value, fromIndex)\n : _baseFindIndex(array, _baseIsNaN, fromIndex);\n}\n\nvar _baseIndexOf = baseIndexOf;\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && _baseIndexOf(array, value, 0) > -1;\n}\n\nvar _arrayIncludes = arrayIncludes;\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nvar _arrayIncludesWith = arrayIncludesWith;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nvar _arrayMap = arrayMap;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nvar _cacheHas = cacheHas;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = _arrayMap(values, _baseUnary(iteratee));\n }\n if (comparator) {\n includes = _arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = _cacheHas;\n isCommon = false;\n values = new _SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseDifference = baseDifference;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$2 = defineProperty;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$2 ? identity_1 : function(func, string) {\n return _defineProperty$2(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = _baseRest(function(array, values) {\n return isArrayLikeObject_1(array)\n ? _baseDifference(array, values)\n : [];\n});\n\nvar without_1 = without;\n\nvar dragOperation_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: without_1(state.targetIds, payload.targetId) });\n case dragDrop.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n});\n\nunwrapExports(dragOperation_1);\n\nvar refCount_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n return state + 1;\n case registry.REMOVE_SOURCE:\n case registry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n});\n\nunwrapExports(refCount_1);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? _arrayIncludesWith : _arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = _arrayMap(array, _baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new _SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? _cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? _cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseIntersection = baseIntersection;\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject_1(value) ? value : [];\n}\n\nvar _castArrayLikeObject = castArrayLikeObject;\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = _baseRest(function(arrays) {\n var mapped = _arrayMap(arrays, _castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? _baseIntersection(mapped)\n : [];\n});\n\nvar intersection_1 = intersection;\n\nvar dirtiness = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.NONE = [];\nexports.ALL = [];\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n return intersection_1(handlerIds, dirtyIds).length > 0;\n}\nexports.areDirty = areDirty;\n});\n\nunwrapExports(dirtiness);\nvar dirtiness_1 = dirtiness.NONE;\nvar dirtiness_2 = dirtiness.ALL;\nvar dirtiness_3 = dirtiness.areDirty;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nvar _arrayFilter = arrayFilter;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nvar _arrayPush = arrayPush;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nvar _isFlattenable = isFlattenable;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nvar _baseFlatten = baseFlatten;\n\n/* Built-in method references that are verified to be native. */\nvar Set = _getNative(_root, 'Set');\n\nvar _Set = Set;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nvar noop_1 = noop;\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nvar _setToArray = setToArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY) ? noop_1 : function(values) {\n return new _Set(values);\n};\n\nvar _createSet = createSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE$1 = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE$1) {\n var set = iteratee ? null : _createSet(array);\n if (set) {\n return _setToArray(set);\n }\n isCommon = false;\n includes = _cacheHas;\n seen = new _SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseUniq = baseUniq;\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? _baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = _baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return _baseUniq(_baseFlatten(result, 1), iteratee, comparator);\n}\n\nvar _baseXor = baseXor;\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = _baseRest(function(arrays) {\n return _baseXor(_arrayFilter(arrays, isArrayLikeObject_1));\n});\n\nvar xor_1 = xor;\n\nvar dirtyHandlerIds_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness.NONE; }\n switch (action.type) {\n case dragDrop.HOVER:\n break;\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n case registry.REMOVE_TARGET:\n case registry.REMOVE_SOURCE:\n return dirtiness.NONE;\n case dragDrop.BEGIN_DRAG:\n case dragDrop.PUBLISH_DRAG_SOURCE:\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n default:\n return dirtiness.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = xor_1(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n});\n\nunwrapExports(dirtyHandlerIds_1);\n\nvar stateId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n});\n\nunwrapExports(stateId_1);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol;\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nvar _isKey = isKey;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache;\n\nvar memoize_1 = memoize;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nvar _memoizeCapped = memoizeCapped;\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nvar _stringToPath = stringToPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n}\n\nvar _baseToString = baseToString;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : _baseToString(value);\n}\n\nvar toString_1 = toString;\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\n\nvar _castPath = castPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;\n}\n\nvar _toKey = toKey;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nvar _baseGet = baseGet;\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar get_1 = get;\n\nvar reducers = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: get_1(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n});\n\nunwrapExports(reducers);\n\nvar coords = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n});\n\nunwrapExports(coords);\nvar coords_1 = coords.add;\nvar coords_2 = coords.subtract;\nvar coords_3 = coords.getSourceClientOffset;\nvar coords_4 = coords.getDifferenceFromInitialOffset;\n\nvar DragDropMonitorImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n invariant_1(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n var source = this.registry.getSource(sourceId);\n invariant_1(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n var target = this.registry.getTarget(targetId);\n invariant_1(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n var source = this.registry.getSource(sourceId, true);\n invariant_1(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n});\n\nunwrapExports(DragDropMonitorImpl_1);\n\nvar getNextUniqueId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n});\n\nunwrapExports(getNextUniqueId_1);\n\nvar contracts = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction validateSourceContract(source) {\n invariant_1(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n});\n\nunwrapExports(contracts);\nvar contracts_1 = contracts.validateSourceContract;\nvar contracts_2 = contracts.validateTargetContract;\nvar contracts_3 = contracts.validateType;\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/*\n\n\n

License

\n\nUnless stated otherwise all works are:\n\n
\n\nand licensed under:\n\n\n\n

MIT License

\n\n
\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n\n\n*/\ninherits$1(Domain, EventEmitter);\nfunction createEmitError(d) {\n return emitError;\n function emitError(e) {\n d.emit('error', e);\n }\n}\n\nfunction Domain() {\n EventEmitter.call(this);\n this.__emitError = createEmitError(this);\n}\nDomain.prototype.add = function (emitter) {\n emitter.on('error', this.__emitError);\n};\nDomain.prototype.remove = function(emitter) {\n emitter.removeListener('error', this.__emitError);\n};\nDomain.prototype.bind = function(fn) {\n var emitError = this.__emitError;\n return function() {\n var args = Array.prototype.slice.call(arguments);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n};\nDomain.prototype.intercept = function(fn) {\n var emitError = this.__emitError;\n return function(err) {\n if (err) {\n emitError(err);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n }\n};\nDomain.prototype.run = function(fn) {\n var emitError = this.__emitError;\n try {\n fn();\n } catch (err) {\n emitError(err);\n }\n return this\n};\nDomain.prototype.dispose = function() {\n this.removeAllListeners();\n return this\n};\nDomain.prototype.enter = Domain.prototype.exit = function() {\n return this\n};\nfunction createDomain() {\n return new Domain();\n}\nvar create = createDomain;\n\nvar require$$0 = {\n Domain: Domain,\n createDomain: createDomain,\n create: create\n};\n\nvar domain$1; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nvar raw = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index$2 = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index$2 < queue.length) {\n var currentIndex = index$2;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index$2 = index$2 + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index$2 > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index$2; scan < newLength; scan++) {\n queue[scan] = queue[scan + index$2];\n }\n queue.length -= index$2;\n index$2 = 0;\n }\n }\n queue.length = 0;\n index$2 = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain$1) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain$1 = require$$0;\n }\n domain$1.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain$1.active = process.domain = parentDomain;\n }\n}\n\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nvar asap_1 = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n raw(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n raw.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\nvar HandlerRegistryImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces.HandlerRole.SOURCE;\n case 'T':\n return interfaces.HandlerRole.TARGET;\n default:\n invariant_1(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts.validateType(type);\n contracts.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts.validateType(type, true);\n contracts.validateTargetContract(target);\n var targetId = this.addHandler(interfaces.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry.removeSource(sourceId));\n asap_1(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n});\n\nunwrapExports(HandlerRegistryImpl_1);\n\nvar DragDropManagerImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux.createStore(reducers.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(createBackend, context, debugMode) {\n if (context === void 0) { context = {}; }\n if (debugMode === void 0) { debugMode = false; }\n var _this = this;\n this.context = context;\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n this.backend = createBackend(this);\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.getContext = function () {\n return this.context;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n});\n\nunwrapExports(DragDropManagerImpl_1);\n\nvar factories = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createDragDropManager(backend, context, debugMode) {\n return new DragDropManagerImpl_1.default(backend, context, debugMode);\n}\nexports.createDragDropManager = createDragDropManager;\n});\n\nunwrapExports(factories);\nvar factories_1 = factories.createDragDropManager;\n\nvar lib = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(interfaces);\n__export(factories);\n});\n\nunwrapExports(lib);\n\nvar checkDecoratorArguments_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction checkDecoratorArguments(functionName, signature) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (process.env.NODE_ENV !== 'production') {\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg && arg.prototype && arg.prototype.render) {\n // tslint:disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' +\n (\"It should be \" + functionName + \"(\" + signature + \")(Component), not the other way around. \") +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}\nexports.default = checkDecoratorArguments;\n});\n\nunwrapExports(checkDecoratorArguments_1);\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty$1 = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar isClassComponent_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar _default = isClassComponent;\nexports.default = _default;\n});\n\nunwrapExports(isClassComponent_1);\n\nvar DragDropContext_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n/**\n * Create the React Context\n */\nexports.Consumer = (_a = React.createContext({ dragDropManager: undefined }), _a.Consumer), exports.Provider = _a.Provider;\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createChildContext(backend, context, debugMode) {\n return {\n dragDropManager: lib.createDragDropManager(backend, context, debugMode),\n };\n}\nexports.createChildContext = createChildContext;\n/**\n * A React component that provides the React-DnD context\n */\nexports.DragDropContextProvider = function (_a) {\n var backend = _a.backend, context = _a.context, debugMode = _a.debugMode, children = _a.children;\n var contextValue = createChildContext(backend, context, debugMode);\n return React.createElement(exports.Provider, { value: contextValue }, children);\n};\n/**\n * Wrap the root component of your application with DragDropContext decorator to set up React DnD.\n * This lets you specify the backend, and sets up the shared DnD state behind the scenes.\n * @param backendFactory The DnD backend factory\n * @param backendContext The backend context\n */\nfunction DragDropContext(backendFactory, backendContext, debugMode) {\n checkDecoratorArguments_1.default('DragDropContext', 'backend', backendFactory);\n var childContext = createChildContext(backendFactory, backendContext, debugMode);\n return function decorateContext(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragDropContextContainer = /** @class */ (function (_super) {\n __extends(DragDropContextContainer, _super);\n function DragDropContextContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = React.createRef();\n _this.getManager = function () { return childContext.dragDropManager; };\n return _this;\n }\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragDropContextContainer.prototype.render = function () {\n return (React.createElement(exports.Provider, { value: childContext },\n React.createElement(Decorated, __assign({}, this.props, { ref: isClassComponent(Decorated) ? this.ref : undefined }))));\n };\n DragDropContextContainer.DecoratedComponent = DecoratedComponent;\n DragDropContextContainer.displayName = \"DragDropContext(\" + displayName + \")\";\n return DragDropContextContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContextContainer, DecoratedComponent);\n };\n}\nexports.DragDropContext = DragDropContext;\n});\n\nunwrapExports(DragDropContext_1);\nvar DragDropContext_2 = DragDropContext_1.Consumer;\nvar DragDropContext_3 = DragDropContext_1.Provider;\nvar DragDropContext_4 = DragDropContext_1.createChildContext;\nvar DragDropContext_5 = DragDropContext_1.DragDropContextProvider;\nvar DragDropContext_6 = DragDropContext_1.DragDropContext;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$6 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject$1(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$6.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject$1;\n\n//\n\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar DragLayer_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\nfunction DragLayer(collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragLayer', 'collect[, options]', collect, options);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' +\n 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _a = options.arePropsEqual, arePropsEqual = _a === void 0 ? shallowequal : _a;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragLayerContainer = /** @class */ (function (_super) {\n __extends(DragLayerContainer, _super);\n function DragLayerContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n return _this;\n }\n DragLayerContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragLayerContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragLayerContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.handleChange();\n };\n DragLayerContainer.prototype.componentWillUnmount = function () {\n this.isCurrentlyMounted = false;\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n };\n DragLayerContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: isClassComponent(Decorated) ? _this.ref : undefined })));\n }));\n };\n DragLayerContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n };\n DragLayerContainer.prototype.getCurrentState = function () {\n if (!this.manager) {\n return {};\n }\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n };\n DragLayerContainer.displayName = \"DragLayer(\" + displayName + \")\";\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragLayerContainer, DecoratedComponent);\n };\n}\nexports.default = DragLayer;\n});\n\nunwrapExports(DragLayer_1);\n\nvar Disposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable(action) {\n this.isDisposed = false;\n this.action = isFunction_1(action) ? action : noop_1;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n Disposable.isDisposable = function (d) {\n return d && isFunction_1(d.dispose);\n };\n Disposable._fixup = function (result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n };\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n Disposable.create = function (action) {\n return new Disposable(action);\n };\n /** Performs the task of cleaning up resources. */\n Disposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n };\n /**\n * Gets the disposable that does nothing when disposed.\n */\n Disposable.empty = { dispose: noop_1 };\n return Disposable;\n}());\nexports.Disposable = Disposable;\n});\n\nunwrapExports(Disposable_1);\nvar Disposable_2 = Disposable_1.Disposable;\n\nvar SerialDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\nvar SerialDisposable = /** @class */ (function () {\n function SerialDisposable() {\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n SerialDisposable.prototype.getDisposable = function () {\n return this.current;\n };\n SerialDisposable.prototype.setDisposable = function (value) {\n var shouldDispose = this.isDisposed;\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n if (old) {\n old.dispose();\n }\n }\n if (shouldDispose && value) {\n value.dispose();\n }\n };\n /** Performs the task of cleaning up resources. */\n SerialDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n if (old) {\n old.dispose();\n }\n }\n };\n return SerialDisposable;\n}());\nexports.SerialDisposable = SerialDisposable;\n});\n\nunwrapExports(SerialDisposable_1);\nvar SerialDisposable_2 = SerialDisposable_1.SerialDisposable;\n\nvar CompositeDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\nvar CompositeDisposable = /** @class */ (function () {\n function CompositeDisposable() {\n var disposables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n disposables[_i] = arguments[_i];\n }\n this.isDisposed = false;\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n CompositeDisposable.prototype.add = function (item) {\n if (this.isDisposed) {\n item.dispose();\n }\n else {\n this.disposables.push(item);\n }\n };\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n CompositeDisposable.prototype.remove = function (item) {\n var shouldDispose = false;\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n return shouldDispose;\n };\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n CompositeDisposable.prototype.clear = function () {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n CompositeDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n return CompositeDisposable;\n}());\nexports.CompositeDisposable = CompositeDisposable;\n});\n\nunwrapExports(CompositeDisposable_1);\nvar CompositeDisposable_2 = CompositeDisposable_1.CompositeDisposable;\n\nvar disposables = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(Disposable_1);\n__export(SerialDisposable_1);\n__export(CompositeDisposable_1);\n});\n\nunwrapExports(disposables);\n\nvar decorateHandler_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n\n\n\n\nfunction decorateHandler(_a) {\n var DecoratedComponent = _a.DecoratedComponent, createHandler = _a.createHandler, createMonitor = _a.createMonitor, createConnector = _a.createConnector, registerHandler = _a.registerHandler, containerDisplayName = _a.containerDisplayName, getType = _a.getType, collect = _a.collect, options = _a.options;\n var _b = options.arePropsEqual, arePropsEqual = _b === void 0 ? shallowequal : _b;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n var DragDropContainer = /** @class */ (function (_super) {\n __extends(DragDropContainer, _super);\n function DragDropContainer(props) {\n var _this = _super.call(this, props) || this;\n _this.isCurrentlyMounted = false;\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n _this.disposable = new disposables.SerialDisposable();\n _this.receiveProps(props);\n _this.dispose();\n return _this;\n }\n DragDropContainer.prototype.getHandlerId = function () {\n return this.handlerId;\n };\n DragDropContainer.prototype.getDecoratedComponentInstance = function () {\n if (!this.handler) {\n return null;\n }\n return this.handler.ref.current;\n };\n DragDropContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragDropContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.disposable = new disposables.SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n };\n DragDropContainer.prototype.componentDidUpdate = function (prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n };\n DragDropContainer.prototype.componentWillUnmount = function () {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n DragDropContainer.prototype.receiveProps = function (props) {\n if (!this.handler) {\n return;\n }\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n DragDropContainer.prototype.receiveType = function (type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n if (type === this.currentType) {\n return;\n }\n this.currentType = type;\n var _a = registerHandler(type, this.handler, this.manager), handlerId = _a.handlerId, unregister = _a.unregister;\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n this.disposable.setDisposable(new disposables.CompositeDisposable(new disposables.Disposable(unsubscribe), new disposables.Disposable(unregister)));\n };\n DragDropContainer.prototype.dispose = function () {\n this.disposable.dispose();\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n };\n DragDropContainer.prototype.getCurrentState = function () {\n if (!this.handlerConnector) {\n return {};\n }\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(nextState), 'Expected `collect` specified as the second argument to ' +\n '%s for %s to return a plain object of props to inject. ' +\n 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n return nextState;\n };\n DragDropContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: _this.handler && isClassComponent(Decorated)\n ? _this.handler.ref\n : undefined })));\n }));\n };\n DragDropContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n };\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = containerDisplayName + \"(\" + displayName + \")\";\n return DragDropContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContainer, DecoratedComponent);\n}\nexports.default = decorateHandler;\n});\n\nunwrapExports(decorateHandler_1);\n\nvar registerSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n return {\n handlerId: sourceId,\n unregister: unregisterSource,\n };\n}\nexports.default = registerSource;\n});\n\nunwrapExports(registerSource_1);\n\nvar createSourceFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n var SourceImpl = /** @class */ (function () {\n function SourceImpl(monitor) {\n var _this = this;\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n var item = spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(item), 'beginDrag() must return a plain object that represents the dragged item. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n }\n SourceImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n SourceImpl.prototype.canDrag = function () {\n if (!this.props) {\n return false;\n }\n if (!spec.canDrag) {\n return true;\n }\n return spec.canDrag(this.props, this.monitor);\n };\n SourceImpl.prototype.isDragging = function (globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n return spec.isDragging(this.props, this.monitor);\n };\n SourceImpl.prototype.endDrag = function () {\n if (!this.props) {\n return;\n }\n if (!spec.endDrag) {\n return;\n }\n spec.endDrag(this.props, this.monitor, this.ref.current);\n };\n return SourceImpl;\n }());\n return function createSource(monitor) {\n return new SourceImpl(monitor);\n };\n}\nexports.default = createSourceFactory;\n});\n\nunwrapExports(createSourceFactory_1);\n\nvar createSourceMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar SourceMonitor = /** @class */ (function () {\n function SourceMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n SourceMonitor.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n SourceMonitor.prototype.canDrag = function () {\n invariant_1(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n SourceMonitor.prototype.isDragging = function () {\n invariant_1(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n SourceMonitor.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n SourceMonitor.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n SourceMonitor.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n SourceMonitor.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n SourceMonitor.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n SourceMonitor.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n SourceMonitor.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n SourceMonitor.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n SourceMonitor.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n SourceMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n SourceMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n SourceMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n SourceMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n SourceMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n SourceMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n SourceMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n SourceMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return SourceMonitor;\n}());\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\nexports.default = createSourceMonitor;\n});\n\nunwrapExports(createSourceMonitor_1);\n\nvar cloneWithRef_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return React.cloneElement(element, {\n ref: newRef,\n });\n }\n return React.cloneElement(element, {\n ref: function (node) {\n newRef(node);\n if (previousRef) {\n previousRef(node);\n }\n },\n });\n}\nexports.default = cloneWithRef;\n});\n\nunwrapExports(cloneWithRef_1);\n\nvar wrapConnectorHooks_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a
, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!React.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return undefined;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.default(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook; };\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n});\n\nunwrapExports(wrapConnectorHooks_1);\n\nvar createSourceConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createSourceConnector(backend) {\n var currentHandlerId;\n var currentDragSourceNode;\n var currentDragSourceOptions;\n var disconnectCurrentDragSource;\n var currentDragPreviewNode;\n var currentDragPreviewOptions;\n var disconnectCurrentDragPreview;\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = undefined;\n }\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = undefined;\n }\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n var hooks = wrapConnectorHooks_1.default({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode &&\n shallowequal(options, currentDragSourceOptions)) {\n return;\n }\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n reconnectDragSource();\n },\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode &&\n shallowequal(options, currentDragPreviewOptions)) {\n return;\n }\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n reconnectDragPreview();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createSourceConnector;\n});\n\nunwrapExports(createSourceConnector_1);\n\nvar isValidType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isValidType(type, allowArray) {\n return (typeof type === 'string' ||\n typeof type === 'symbol' ||\n (!!allowArray &&\n Array.isArray(type) &&\n type.every(function (t) { return isValidType(t, false); })));\n}\nexports.default = isValidType;\n});\n\nunwrapExports(isValidType_1);\n\nvar DragSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\nfunction DragSource(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type), 'Expected \"type\" provided as the first argument to DragSource to be ' +\n 'a string, or a function that returns a string given the current props. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = createSourceFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource_1.default,\n createMonitor: createSourceMonitor_1.default,\n createConnector: createSourceConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DragSource;\n});\n\nunwrapExports(DragSource_1);\n\nvar registerTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n return {\n handlerId: targetId,\n unregister: unregisterTarget,\n };\n}\nexports.default = registerTarget;\n});\n\nunwrapExports(registerTarget_1);\n\nvar createTargetFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n var TargetImpl = /** @class */ (function () {\n function TargetImpl(monitor) {\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n }\n TargetImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n TargetImpl.prototype.receiveMonitor = function (monitor) {\n this.monitor = monitor;\n };\n TargetImpl.prototype.canDrop = function () {\n if (!spec.canDrop) {\n return true;\n }\n return spec.canDrop(this.props, this.monitor);\n };\n TargetImpl.prototype.hover = function () {\n if (!spec.hover) {\n return;\n }\n spec.hover(this.props, this.monitor, this.ref.current);\n };\n TargetImpl.prototype.drop = function () {\n if (!spec.drop) {\n return undefined;\n }\n var dropResult = spec.drop(this.props, this.monitor, this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(typeof dropResult === 'undefined' || isPlainObject_1(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n return TargetImpl;\n }());\n return function createTarget(monitor) {\n return new TargetImpl(monitor);\n };\n}\nexports.default = createTargetFactory;\n});\n\nunwrapExports(createTargetFactory_1);\n\nvar createTargetMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrop = false;\nvar TargetMonitor = /** @class */ (function () {\n function TargetMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n TargetMonitor.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n TargetMonitor.prototype.canDrop = function () {\n invariant_1(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n TargetMonitor.prototype.isOver = function (options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n TargetMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n TargetMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n TargetMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n TargetMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n TargetMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n TargetMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n TargetMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n TargetMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return TargetMonitor;\n}());\nexports.TargetMonitor = TargetMonitor;\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\nexports.default = createTargetMonitor;\n});\n\nunwrapExports(createTargetMonitor_1);\nvar createTargetMonitor_2 = createTargetMonitor_1.TargetMonitor;\n\nvar createTargetConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createTargetConnector(backend) {\n var currentHandlerId;\n var currentDropTargetNode;\n var currentDropTargetOptions;\n var disconnectCurrentDropTarget;\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = undefined;\n }\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n var hooks = wrapConnectorHooks_1.default({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode &&\n shallowequal(options, currentDropTargetOptions)) {\n return;\n }\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n reconnectDropTarget();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createTargetConnector;\n});\n\nunwrapExports(createTargetConnector_1);\n\nvar DropTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' +\n 'a string, an array of strings, or a function that returns either given ' +\n 'the current props. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = createTargetFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget_1.default,\n createMonitor: createTargetMonitor_1.default,\n createConnector: createTargetConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DropTarget;\n});\n\nunwrapExports(DropTarget_1);\n\nvar lib$1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.DragDropContext = DragDropContext_1.DragDropContext;\nexports.DragDropContextProvider = DragDropContext_1.DragDropContextProvider;\n\nexports.DragLayer = DragLayer_1.default;\n\nexports.DragSource = DragSource_1.default;\n\nexports.DropTarget = DropTarget_1.default;\n});\n\nunwrapExports(lib$1);\nvar lib_1 = lib$1.DragDropContext;\nvar lib_2 = lib$1.DragDropContextProvider;\nvar lib_3 = lib$1.DragLayer;\nvar lib_4 = lib$1.DragSource;\nvar lib_5 = lib$1.DropTarget;\n\nvar css$1 = \".ExampleDropTarget {\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\\n width: 100%;\\n min-height: 100px;\\n\\n border: 2px dashed black;\\n padding: 20px;\\n transition: 0.2s all ease;\\n}\\n\\n.ExampleDropTarget h4,\\n.ExampleDropTarger p {\\n text-align: center;\\n word-break: break-word;\\n}\\n\\n.ExampleDropTarget.can-drop {\\n border: 2px dashed #20a5d6;\\n background-color: #fafafa;\\n color: black;\\n}\\n\\n.ExampleDropTarget.hovered {\\n border: 2px dashed #20a5d6;\\n background-color: black;\\n color: #91b9cd;\\n}\\n\";\nstyleInject(css$1);\n\n// if they have the same string type.\n\nvar Types = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget = {\n drop: function drop(props, monitor, component) {\n // Note: For this example we use setState, but in\n // OHIF we will update the redux store instead\n var item = monitor.getItem();\n component.setState({\n item: {\n id: item.id,\n seriesDescription: item.seriesDescription\n }\n });\n return {\n id: 'ExampleDropTarget'\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar ExampleDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ExampleDropTarget, _Component);\n\n function ExampleDropTarget() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ExampleDropTarget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ExampleDropTarget)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n item: null\n });\n\n return _this;\n }\n\n _createClass(ExampleDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = ExampleDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, React.createElement(\"h4\", null, isActive ? 'Release to drop' : 'Drag / Drop something from the Study Browser here'), React.createElement(\"p\", {\n className: \"study-drop-results\"\n }, this.state.item && JSON.stringify(this.state.item))));\n }\n }]);\n\n return ExampleDropTarget;\n}(Component);\n\n_defineProperty(ExampleDropTarget, \"className\", 'ExampleDropTarget');\n\n_defineProperty(ExampleDropTarget, \"defaultProps\", {\n isOver: false\n});\n\n_defineProperty(ExampleDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired\n});\n\nvar collect = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n};\n\nvar ExampleDropTarget$1 = lib_5(Types.THUMBNAIL, divTarget, collect)(ExampleDropTarget);\n\nvar css$2 = \".layoutChooser {\\n border: 1px solid rgba(77,99,110,0.81);\\n border-radius: 8px;\\n padding: 5px 0;\\n position: absolute;\\n z-index: 5000;\\n}\\n.layoutChooser .selectedBefore {\\n background-color: #5cc3eb;\\n}\\n.layoutChooser table {\\n margin: 0 auto;\\n}\\n.layoutChooser table td {\\n cursor: pointer;\\n}\\n.layoutChooser table td:hover,\\n.layoutChooser table td.hover {\\n background-color: #209ac9;\\n}\\n\";\nstyleInject(css$2);\n\n/**\n * Adds the 'hover' class to cells above and to the left of the current cell\n * This is used to \"fill in\" the grid that the user will change the layout to,\n * if they click on a specific table cell.\n **/\n\nvar LayoutChooser =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutChooser, _PureComponent);\n\n function LayoutChooser(props) {\n var _this;\n\n _classCallCheck(this, LayoutChooser);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayoutChooser).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isRange\", function (cell, parentCell) {\n return cell.row <= parentCell.row && cell.col <= parentCell.col;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"highlightCells\", function (currentCell) {\n var table = [];\n\n for (var row = 0; row < _this.props.rows; row++) {\n var newRow = [];\n\n for (var col = 0; col < _this.props.columns; col++) {\n var cell = {\n row: row,\n col: col\n };\n\n if (_this.isRange(cell, currentCell)) {\n cell.className = 'hover';\n } else if (_this.isRange(currentCell, _this.emptyCell) && _this.isRange(cell, _this.state.selectedCell)) {\n cell.className = 'selectedBefore';\n }\n\n newRow.push(cell);\n }\n\n table.push(newRow);\n }\n\n _this.setState({\n table: table\n });\n });\n\n _this.emptyCell = {\n row: -1,\n column: -1\n };\n _this.state = {\n table: [[]],\n selectedCell: _this.props.selectedCell\n };\n return _this;\n }\n\n _createClass(LayoutChooser, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.highlightCells(this.emptyCell);\n }\n }, {\n key: \"onClick\",\n value: function onClick(currentCell) {\n this.setState({\n selectedCell: currentCell\n });\n this.highlightCells(currentCell);\n\n if (this.props.onClick) {\n this.props.onClick(currentCell);\n }\n\n if (this.props.onChange) {\n this.props.onChange(currentCell);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var columns = this.props.columns;\n var style = {\n display: this.props.visible ? 'block' : 'none',\n minWidth: columns * this.props.boxSize + (columns + 5) * this.props.cellBorder\n };\n return React.createElement(\"div\", {\n className: \"layoutChooser pull-left dropdown-menu\",\n role: \"menu\",\n style: style\n }, React.createElement(\"table\", null, React.createElement(\"tbody\", null, this.state.table.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (cell, j) {\n return React.createElement(\"td\", {\n className: cell.className,\n style: {\n width: _this2.props.boxSize,\n height: _this2.props.boxSize,\n border: 'solid 1px black'\n },\n key: j,\n onMouseEnter: function onMouseEnter() {\n return _this2.highlightCells(cell);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.highlightCells(_this2.emptyCell);\n },\n onClick: function onClick() {\n return _this2.onClick(cell);\n }\n });\n }));\n }))));\n }\n }]);\n\n return LayoutChooser;\n}(PureComponent);\n\n_defineProperty(LayoutChooser, \"propTypes\", {\n rows: propTypes.number.isRequired,\n columns: propTypes.number.isRequired,\n visible: propTypes.bool.isRequired,\n selectedCell: propTypes.object,\n boxSize: propTypes.number.isRequired,\n cellBorder: propTypes.number.isRequired,\n onClick: propTypes.func,\n onChange: propTypes.func\n});\n\n_defineProperty(LayoutChooser, \"defaultProps\", {\n rows: 3,\n columns: 3,\n visible: true,\n boxSize: 20,\n cellBorder: 1,\n selectedCell: {\n row: -1,\n col: -1\n }\n});\n\nvar LayoutButton =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutButton, _PureComponent);\n\n function LayoutButton() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutButton);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutButton)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownVisible: _this.props.dropdownVisible\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (selectedCell) {\n if (_this.props.onChange) {\n _this.props.onChange(selectedCell);\n }\n });\n\n return _this;\n }\n\n _createClass(LayoutButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.dropdownVisible !== prevProps.dropdownVisible) {\n this.setState({\n dropdownVisible: this.props.dropdownVisible\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"layout\",\n type: \"button\",\n className: \"btn btn-sm btn-default dropdown-toggle\",\n \"data-container\": \"body\",\n \"data-toggle\": \"dropdown\",\n \"aria-expanded\": \"false\",\n \"data-placement\": \"right\",\n title: \"Layout\",\n rel: \"tooltip\",\n onClick: this.onClick\n }, React.createElement(\"span\", {\n className: \"fa fa-th-large\"\n })), React.createElement(LayoutChooser, {\n visible: this.state.dropdownVisible,\n onChange: this.onChange,\n onClick: this.onClick,\n selectedCell: this.props.selectedCell\n }));\n }\n }]);\n\n return LayoutButton;\n}(PureComponent);\nLayoutButton.defaultProps = {\n dropdownVisible: false\n};\nLayoutButton.propTypes = {\n dropdownVisible: propTypes.bool.isRequired,\n onChange: propTypes.func,\n selectedCell: propTypes.object\n};\n\nvar css$3 = \".viewport-container {\\n float: left;\\n\\n border: var(--viewport-border-thickness) solid var(--ui-border-color);\\n}\\n\\n.viewport-container.active {\\n border: var(--viewport-border-thickness) solid var(--active-color);\\n}\\n\\n.EmptyViewport {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n color: var(--text-secondary-color);\\n}\\n\";\nstyleInject(css$3);\n\nvar css$4 = \".LayoutPanelDropTarget {\\n width: 100%;\\n height: 100%;\\n\\n opacity: 1;\\n transition: 0.3s all ease;\\n}\\n\\n.LayoutPanelDropTarget.hovered {\\n opacity: 0.5;\\n}\\n\";\nstyleInject(css$4);\n\n// if they have the same string type.\n\nvar Types$1 = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget$1 = {\n drop: function drop(props, monitor, component) {\n var item = monitor.getItem();\n\n if (props.onDrop) {\n props.onDrop({\n viewportIndex: props.viewportIndex,\n item: item\n });\n }\n\n return {\n id: \"LayoutPanelDropTarget-\".concat(props.viewportIndex),\n viewportIndex: props.viewportIndex,\n item: item\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar LayoutPanelDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutPanelDropTarget, _Component);\n\n function LayoutPanelDropTarget() {\n _classCallCheck(this, LayoutPanelDropTarget);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LayoutPanelDropTarget).apply(this, arguments));\n }\n\n _createClass(LayoutPanelDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = LayoutPanelDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, this.props.children));\n }\n }]);\n\n return LayoutPanelDropTarget;\n}(Component);\n\n_defineProperty(LayoutPanelDropTarget, \"className\", 'LayoutPanelDropTarget');\n\n_defineProperty(LayoutPanelDropTarget, \"defaultProps\", {\n isOver: false,\n canDrop: false\n});\n\n_defineProperty(LayoutPanelDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired,\n viewportComponent: propTypes.object\n});\n\nvar collect$1 = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n canDrop: monitor.canDrop(),\n isOver: monitor.isOver()\n };\n};\n\nvar LayoutPanelDropTarget$1 = lib_5(Types$1.THUMBNAIL, divTarget$1, collect$1)(LayoutPanelDropTarget);\n\nfunction defaultViewportPlugin(props) {\n return React.createElement(\"div\", null, JSON.stringify(props));\n}\n\nfunction EmptyViewport() {\n return React.createElement(\"div\", {\n className: \"EmptyViewport\"\n }, React.createElement(\"p\", null, \"Please drag a stack here to view images.\"));\n}\n\nvar LayoutManager =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutManager, _Component);\n\n function LayoutManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDrop\", function (_ref) {\n var viewportIndex = _ref.viewportIndex,\n item = _ref.item;\n\n if (_this.props.setViewportData) {\n _this.props.setViewportData({\n viewportIndex: viewportIndex,\n item: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPluginComponent\", function (plugin) {\n var pluginComponent = _this.props.availablePlugins[plugin || _this.props.defaultPlugin];\n\n if (!pluginComponent) {\n throw new Error(\"No Viewport Plugin available for plugin \".concat(plugin, \". Available plugins: \").concat(JSON.stringify(_this.props.availablePlugins)));\n }\n\n return pluginComponent;\n });\n\n return _this;\n }\n\n _createClass(LayoutManager, [{\n key: \"getChildComponent\",\n value: function getChildComponent(plugin, data, viewportIndex) {\n if (data.displaySet) {\n var PluginComponent = this.getPluginComponent(plugin);\n return React.createElement(PluginComponent, {\n viewportData: data,\n viewportIndex: viewportIndex\n });\n }\n\n return React.createElement(EmptyViewport, null);\n }\n }, {\n key: \"getContent\",\n value: function getContent(childComponent, supportsDragAndDrop, viewportIndex) {\n if (supportsDragAndDrop) {\n return React.createElement(LayoutPanelDropTarget$1, {\n onDrop: this.onDrop,\n viewportIndex: viewportIndex\n }, childComponent);\n }\n\n return React.createElement(\"div\", {\n className: \"LayoutPanel\"\n }, childComponent);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!this.props.viewportData.length) {\n return '';\n }\n\n var _this$props = this.props,\n supportsDragAndDrop = _this$props.supportsDragAndDrop,\n studies = _this$props.studies,\n viewportData = _this$props.viewportData;\n var viewports = this.props.layout.viewports;\n var viewportElements = viewports.map(function (layout, viewportIndex) {\n var displaySet = viewportData[viewportIndex];\n var data = {\n displaySet: displaySet,\n studies: studies\n };\n\n var childComponent = _this2.getChildComponent(layout.plugin, data, viewportIndex);\n\n var content = _this2.getContent(childComponent, supportsDragAndDrop, viewportIndex);\n\n var className = 'viewport-container';\n\n if (_this2.props.activeViewportIndex === viewportIndex) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n key: viewportIndex,\n className: className,\n style: _objectSpread({}, layout)\n }, content);\n });\n return React.createElement(\"div\", {\n className: LayoutManager.className\n }, viewportElements);\n }\n }]);\n\n return LayoutManager;\n}(Component);\n\n_defineProperty(LayoutManager, \"className\", 'LayoutManager');\n\n_defineProperty(LayoutManager, \"defaultProps\", {\n viewportData: [],\n layout: {\n viewports: [{\n top: 0,\n left: 0,\n height: '100%',\n width: '100%'\n }]\n },\n activeViewportIndex: 0,\n supportsDragAndDrop: true,\n availablePlugins: {\n defaultViewportPlugin: defaultViewportPlugin\n },\n defaultPlugin: 'defaultViewportPlugin'\n});\n\n_defineProperty(LayoutManager, \"propTypes\", {\n viewportData: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n activeViewportIndex: propTypes.number.isRequired,\n layout: propTypes.object.isRequired,\n availablePlugins: propTypes.object.isRequired,\n setViewportData: propTypes.func,\n studies: propTypes.array\n});\n\nvar css$5 = \".tableList {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n}\\n.tableList .tableListHeader {\\n background-color: var(--ui-gray-darker);\\n color: var(--text-secondary-color);\\n fill: var(--text-secondary-color);\\n display: flex;\\n height: 63px;\\n line-height: 63px;\\n margin-top: 2px;\\n overflow: hidden;\\n width: 100%;\\n}\\n.tableList .tableListHeader .tableListHeaderTitle {\\n color: var(--text-secondary-color);\\n font-size: 22px;\\n font-weight: 300;\\n line-height: 63px;\\n padding: 0 10px;\\n text-align: left;\\n flex: 1;\\n}\\n.tableList .tableListHeader .numberOfItems {\\n color: var(--ui-sky-blue);\\n float: right;\\n font-weight: 300;\\n font-size: 40px;\\n max-width: 54px;\\n height: 63px;\\n line-height: 66px;\\n flex: 1;\\n}\\n\";\nstyleInject(css$5);\n\nvar TableList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableList, _Component);\n\n function TableList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getHeader\", function () {\n if (_this.props.customHeader) {\n return _this.props.customHeader;\n } else {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, _this.props.headerTitle), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, _this.props.children.length));\n }\n });\n\n return _this;\n }\n\n _createClass(TableList, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableList\"\n }, React.createElement(\"div\", {\n className: \"tableListHeader\",\n onClick: this.onHeaderClick\n }, this.getHeader()), React.createElement(\"div\", {\n className: \"tableListContent\"\n }, this.props.children));\n }\n }]);\n\n return TableList;\n}(Component);\n\n_defineProperty(TableList, \"propTypes\", {\n customHeader: propTypes.node,\n defaultItems: propTypes.object,\n children: propTypes.node.isRequired,\n headerTitle: propTypes.string\n});\n\nvar css$6 = \".tableListItem {\\n display: flex;\\n margin-left: -6px;\\n margin-top: 2px;\\n padding-left: 6px;\\n opacity: 0.7;\\n width: calc(100% + 6px);\\n}\\n.tableListItem:hover {\\n opacity: 1;\\n}\\n.tableListItem.selected {\\n opacity: 1;\\n}\\n.tableListItem.selected .itemIndex {\\n color: $activeColor;\\n}\\n.tableListItem .itemIndex {\\n background-color: var(--ui-gray);\\n color: var(--text-secondary-color);\\n cursor: pointer;\\n flex: 1;\\n max-width: 40px;\\n font-size: 14px;\\n font-weight: 400;\\n margin-right: 5px;\\n padding: 10px;\\n text-align: center;\\n}\\n.tableListItem .itemContent {\\n flex: 1;\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n margin-left: -2px;\\n}\\n\";\nstyleInject(css$6);\n\nvar TableListItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableListItem, _Component);\n\n function TableListItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableListItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableListItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event) {\n if (_this.props.onItemClick) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onItemClick(event, _this.props);\n }\n });\n\n return _this;\n }\n\n _createClass(TableListItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableListItem \".concat(this.props.itemClass),\n onClick: this.onItemClick\n }, React.createElement(\"div\", {\n className: \"itemIndex\"\n }, this.props.itemIndex + 1), React.createElement(\"div\", {\n className: \"itemContent\"\n }, this.props.children));\n }\n }]);\n\n return TableListItem;\n}(Component);\n\n_defineProperty(TableListItem, \"propTypes\", {\n children: propTypes.node,\n itemClass: propTypes.string,\n itemIndex: propTypes.number,\n onItemClick: propTypes.func.isRequired\n});\n\nvar css$7 = \".measurementItem .rowActions {\\n background-color: var(--ui-gray-darker);\\n height: 0;\\n overflow: hidden;\\n transition: all 0.3s ease;\\n visibility: hidden;\\n padding-left: 14px;\\n}\\n.measurementItem .rowActions .btnAction {\\n background-color: transparent;\\n border: none;\\n color: var(--default-color);\\n cursor: pointer;\\n line-height: 35px;\\n transition: all 0.3s ease;\\n}\\n.measurementItem .rowActions .btnAction:hover,\\n.measurementItem .rowActions .btnAction:active {\\n color: var(--text-primary-color);\\n}\\n.measurementItem .rowActions .btnAction i {\\n margin-right: 4px;\\n}\\n.measurementItem.selected .rowActions {\\n height: 35px;\\n visibility: visible;\\n}\\n.measurementItem .measurementLocation {\\n margin-left: 9px;\\n margin-top: 9px;\\n}\\n.measurementItem .measurementDisplayText {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n\";\nstyleInject(css$7);\n\nvar MeasurementTableItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTableItem, _Component);\n\n function MeasurementTableItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MeasurementTableItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MeasurementTableItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getDataDisplayText\", function () {\n return _this.props.measurementData.data.map(function (data, index) {\n return React.createElement(\"div\", {\n key: \"displayText_\".concat(index),\n className: \"measurementDisplayText\"\n }, data.displayText ? data.displayText : '...');\n });\n });\n\n return _this;\n }\n\n _createClass(MeasurementTableItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(TableListItem, {\n itemKey: this.props.itemKey,\n itemClass: \"measurementItem \".concat(this.props.itemClass),\n itemIndex: this.props.itemIndex,\n onItemClick: this.props.onItemClick\n }, React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"measurementLocation\"\n }, this.props.measurementData.label), React.createElement(\"div\", null, this.getDataDisplayText()), React.createElement(\"div\", {\n className: \"rowActions\"\n }, React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onRelabel\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Relabel\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onEditDescription\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Description\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onDelete\n }, React.createElement(\"i\", {\n className: \"fa fa-trash-o\"\n }), \"Delete\"))));\n }\n }]);\n\n return MeasurementTableItem;\n}(Component);\n\n_defineProperty(MeasurementTableItem, \"propTypes\", {\n measurementData: propTypes.object.isRequired,\n onItemClick: propTypes.func.isRequired,\n onRelabel: propTypes.func.isRequired,\n onDelete: propTypes.func.isRequired,\n onEditDescription: propTypes.func.isRequired,\n itemKey: propTypes.string.isRequired,\n itemClass: propTypes.string,\n itemIndex: propTypes.number\n});\n\nfunction throttled(delay, fn) {\n var lastCall = 0;\n return function () {\n var now = new Date().getTime();\n\n if (now - lastCall < delay) {\n return;\n }\n\n lastCall = now;\n return fn.apply(void 0, arguments);\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar css$8 = \".scrollArea {\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollArea .scrollable {\\n max-height: inherit;\\n overflow: hidden;\\n zoom: 1;\\n}\\n.scrollArea .scrollable.scrollX {\\n overflow-x: scroll;\\n}\\n.scrollArea .scrollable.scrollY {\\n overflow-y: scroll;\\n}\\n.scrollArea.fit {\\n height: 100%;\\n width: 100%;\\n}\\n.scrollArea.fit .scrollable {\\n bottom: 0;\\n left: 0;\\n max-height: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scrollArea .scrollNav {\\n background-color: rgba(0,0,0,0.75);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.75);\\n cursor: pointer;\\n height: 24px;\\n left: 10px;\\n opacity: 0;\\n position: absolute;\\n right: 10px;\\n transition: all 0.3s ease;\\n}\\n.scrollArea .scrollNav:after {\\n color: var(--active-color);\\n display: block;\\n font-family: FontAwesome;\\n font-size: 20px;\\n text-align: center;\\n transition: color 0.3s ease;\\n}\\n.scrollArea .scrollNav:hover {\\n background-color: rgba(0,0,0,0.9);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.9);\\n}\\n.scrollArea .scrollNav:hover:after {\\n color: var(--hover-color);\\n}\\n.scrollArea .scrollNavUp {\\n border-bottom-left-radius: 24px/2;\\n border-bottom-right-radius: 24px/2;\\n top: 0;\\n transform: ranslateY(-24px);\\n}\\n.scrollArea .scrollNavUp:after {\\n content: '\\\\f102';\\n}\\n.scrollArea .scrollNavDown {\\n border-top-left-radius: 24px/2;\\n border-top-right-radius: 24px/2;\\n bottom: 0;\\n transform: translateY(24px);\\n}\\n.scrollArea .scrollNavDown:after {\\n content: '\\\\f103';\\n}\\n.scrollArea.canScrollUp .scrollNavUp,\\n.scrollArea.canScrollDown .scrollNavDown {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\";\nstyleInject(css$8);\n\nvar ScrollableArea =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollableArea, _Component);\n\n function ScrollableArea(props) {\n var _this;\n\n _classCallCheck(this, ScrollableArea);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollableArea).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavDown\", function (event) {\n var _this$scrollableEleme = _this.scrollableElement,\n currentTop = _this$scrollableEleme.scrollTop,\n height = _this$scrollableEleme.offsetHeight,\n scrollHeight = _this$scrollableEleme.scrollHeight;\n var limit = scrollHeight - height;\n var scrollTop = currentTop + _this.props.scrollStep;\n scrollTop = scrollTop > limit ? limit : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavUp\", function (event) {\n var currentTop = _this.scrollableElement.scrollTop;\n var scrollTop = currentTop - _this.props.scrollStep;\n scrollTop = scrollTop < 0 ? 0 : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"adjustMargins\", function () {\n if (_this.props.hideScrollbar) {\n var x = _this.props.scrollX ? 1 : 0;\n var y = _this.props.scrollY ? 1 : 0;\n var scrollbarSize = getScrollbarSize();\n _this.scrollableElement.style.marginRight = \"\".concat(0 - scrollbarSize[0] * y, \"px\");\n _this.scrollableElement.style.marginBottom = \"\".concat(0 - scrollbarSize[1] * x, \"px\");\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollHandler\", function () {\n var _this$scrollableEleme2 = _this.scrollableElement,\n height = _this$scrollableEleme2.offsetHeight,\n scrollTop = _this$scrollableEleme2.scrollTop,\n scrollHeight = _this$scrollableEleme2.scrollHeight;\n var scrollAreaClasses = ''; // Stop here if unable to scroll\n\n if (scrollHeight <= height) return; // Check if can scroll up\n\n if (scrollTop) {\n scrollAreaClasses += 'canScrollUp';\n } // Check if can scroll down\n\n\n if (scrollTop + height < scrollHeight) {\n scrollAreaClasses += ' canScrollDown';\n }\n\n if (_this.state.scrollAreaClasses !== scrollAreaClasses) {\n _this.setState({\n scrollAreaClasses: scrollAreaClasses\n });\n }\n });\n\n _this.state = {\n scrollAreaClasses: ''\n };\n _this.scrollHandlerThrottled = throttled(150, _this.scrollHandler);\n return _this;\n }\n\n _createClass(ScrollableArea, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var scrollableClass = 'scrollable';\n\n if (this.props.scrollableClass) {\n scrollableClass += \" \".concat(this.props.scrollableClass);\n }\n\n if (this.props.scrollX) {\n scrollableClass += \" scrollX\";\n }\n\n if (this.props.scrollY) {\n scrollableClass += \" scrollY\";\n }\n\n return React.createElement(\"div\", {\n className: \"scrollArea \".concat(this.props.class, \" \").concat(this.state.scrollAreaClasses)\n }, React.createElement(\"div\", {\n className: scrollableClass,\n ref: function ref(element) {\n _this2.scrollableElement = element;\n },\n onScroll: this.scrollHandlerThrottled,\n onMouseEnter: this.scrollHandlerThrottled,\n onTransitionEnd: this.scrollHandlerThrottled\n }, this.props.children), React.createElement(\"div\", {\n className: \"scrollNav scrollNavUp\",\n onClick: this.scrollNavUp\n }), React.createElement(\"div\", {\n className: \"scrollNav scrollNavDown\",\n onClick: this.scrollNavDown\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.adjustMargins();\n this.scrollHandler();\n window.addEventListener('resize', this.adjustMargins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.adjustMargins);\n }\n }]);\n\n return ScrollableArea;\n}(Component);\n\n_defineProperty(ScrollableArea, \"propTypes\", {\n children: propTypes.node.isRequired,\n class: propTypes.string,\n scrollableClass: propTypes.string,\n scrollX: propTypes.bool,\n scrollY: propTypes.bool,\n hideScrollbar: propTypes.bool,\n scrollStep: propTypes.number\n});\n\n_defineProperty(ScrollableArea, \"defaultProps\", {\n hideScrollbar: true,\n class: 'flex-grow fit',\n scrollY: true,\n scrollX: false,\n scrollStep: 100\n});\n\nvar css$9 = \".measurementTable {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n.measurementTable .maxMeasurements {\\n border-radius: 3px;\\n color: var(--primary-background-color);\\n font-size: 12px;\\n font-weight: 500;\\n height: 19px;\\n line-height: 17px;\\n margin-top: 22px;\\n margin-right: 15px;\\n padding: 2px 6px 0;\\n text-transform: uppercase;\\n transition: all 0.3s ease;\\n background-color: var(--default-color);\\n}\\n.measurementTable .measurementTableHeader {\\n padding-left: 45px;\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem .timepointLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n}\\n\";\nstyleInject(css$9);\n\nvar MeasurementTable =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTable, _Component);\n\n function MeasurementTable(props) {\n var _this;\n\n _classCallCheck(this, MeasurementTable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MeasurementTable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurementsGroups\", function () {\n return _this.props.measurementCollection.map(function (measureGroup, index) {\n return React.createElement(TableList, {\n key: index,\n customHeader: _this.getCustomHeader(measureGroup)\n }, _this.getMeasurements(measureGroup));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurements\", function (measureGroup) {\n return measureGroup.measurements.map(function (measurement, index) {\n var key = \"\".concat(measureGroup.groupName, \"_\").concat(index);\n return React.createElement(MeasurementTableItem, {\n key: key,\n itemIndex: index,\n itemKey: key,\n itemClass: _this.state.selectedKey === key ? 'selected' : '',\n measurementData: measurement,\n onItemClick: _this.onItemClick,\n onRelabel: function onRelabel() {\n alert('relabel');\n },\n onDelete: function onDelete() {\n alert('delete');\n },\n onEditDescription: function onEditDescription() {\n alert('editDescription');\n }\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getCustomHeader\", function (measureGroup) {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, measureGroup.groupName), measureGroup.maxMeasurements && React.createElement(\"div\", {\n className: \"maxMeasurements\"\n }, \"MAX \", measureGroup.maxMeasurements), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, measureGroup.measurements.length));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTimepointsHeader\", function () {\n return _this.props.timepoints.map(function (timepoint, index) {\n return React.createElement(\"div\", {\n key: index,\n className: \"measurementTableHeaderItem\"\n }, React.createElement(\"div\", {\n className: \"timepointLabel\"\n }, timepoint.label), React.createElement(\"div\", {\n className: \"timepointDate\"\n }, timepoint.date));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event, itemProps) {\n _this.setState({\n selectedKey: itemProps.itemKey\n });\n });\n\n _this.state = {\n selectedKey: null\n };\n return _this;\n }\n\n _createClass(MeasurementTable, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"measurementTable\"\n }, React.createElement(\"div\", {\n className: \"measurementTableHeader\"\n }, this.getTimepointsHeader()), React.createElement(ScrollableArea, null, React.createElement(\"div\", null, this.getMeasurementsGroups())));\n }\n }]);\n\n return MeasurementTable;\n}(Component);\n\n_defineProperty(MeasurementTable, \"propTypes\", {\n measurementCollection: propTypes.array.isRequired,\n timepoints: propTypes.array.isRequired\n});\n\nvar PlayClipButton =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PlayClipButton, _Component);\n\n function PlayClipButton() {\n _classCallCheck(this, PlayClipButton);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PlayClipButton).apply(this, arguments));\n }\n\n _createClass(PlayClipButton, [{\n key: \"render\",\n value: function render() {\n var playClass = 'fa-stop';\n\n if (this.props.isPlaying) {\n playClass = 'fa-play';\n }\n\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"playClip\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Play/Stop Clip\"\n }, React.createElement(\"span\", {\n className: \"fa \".concat(playClass)\n })), React.createElement(\"button\", {\n id: \"toggleCineDialog\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Toggle CINE Dialog\"\n }, React.createElement(\"span\", {\n className: \"fa fa-youtube-play\"\n })));\n }\n }]);\n\n return PlayClipButton;\n}(Component);\nPlayClipButton.propTypes = {\n isPlaying: propTypes.bool.isRequired\n};\nPlayClipButton.defaultProps = {\n isPlaying: false\n};\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css$a = \".RoundedButtonGroup {\\n --height: 25px;\\n\\n position: relative;\\n z-index: 0;\\n}\\n\\n.roundedButtonWrapper {\\n cursor: pointer;\\n display: inline-block;\\n float: left;\\n margin-left: -2px;\\n text-decoration: none;\\n text-align: center;\\n}\\n\\n.roundedButtonWrapper.disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper .roundedButton {\\n align-items: center;\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--ui-border-color-dark);\\n color: var(--text-secondary-color);\\n display: flex;\\n font-size: 11px;\\n font-weight: 500;\\n justify-content: center;\\n height: var(--height);\\n line-height: var(--height);\\n padding: 0 22px;\\n position: relative;\\n text-transform: uppercase;\\n transition: var(--sidebar-transition);\\n z-index: 1;\\n}\\n\\n.roundedButtonWrapper .roundedButton svg {\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n\\n.roundedButtonWrapper\\n .roundedButton\\n svg\\n .roundedButtonWrapper\\n .roundedButton\\n span {\\n margin: 0 2px;\\n}\\n\\n.roundedButtonWrapper .roundedButton i {\\n line-height: 15px;\\n font-size: 15px;\\n}\\n\\n.bottomLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n font-weight: 500;\\n line-height: 12px;\\n margin-top: 8px;\\n}\\n\\n.roundedButtonWrapper:first-child {\\n margin-left: 0;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:first-child .roundedButton {\\n border-bottom-left-radius: var(--height);\\n border-top-left-radius: var(--height);\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:last-child .roundedButton {\\n border-bottom-right-radius: var(--height);\\n border-top-right-radius: var(--height);\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton {\\n background-color: var(--box-background-color);\\n color: var(--ui-gray-dark);\\n}\\n\\n.roundedButtonWrapper.active .roundedButton {\\n background-color: var(--active-color);\\n border-color: var(--ui-border-color-active);\\n color: var(--ui-gray-dark);\\n z-index: 2;\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton svg,\\n.roundedButtonWrapper.active .roundedButton svg {\\n fill: var(--ui-gray-dark);\\n stroke: var(--ui-gray-dark);\\n}\\n\";\nstyleInject(css$a);\n\nvar RoundedButtonGroup =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RoundedButtonGroup, _Component);\n\n function RoundedButtonGroup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RoundedButtonGroup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RoundedButtonGroup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickOption\", function (value) {\n var newValue = value;\n\n if (_this.props.value === value) {\n newValue = null;\n }\n\n if (_this.props.onValueChanged) {\n _this.props.onValueChanged(newValue);\n }\n });\n\n return _this;\n }\n\n _createClass(RoundedButtonGroup, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classnames(RoundedButtonGroup.className, 'clearfix center-table');\n var buttons = this.props.options.map(function (option, index) {\n var className = classnames({\n roundedButtonWrapper: true,\n noselect: true,\n active: _this2.props.value === option.value\n });\n var optionSVG;\n\n if (option.svgLink) {\n var svgStyle = {\n width: \"\".concat(option.svgWidth, \"px\"),\n height: \"\".concat(option.svgHeight, \"px\")\n };\n optionSVG = React.createElement(\"svg\", {\n style: svgStyle\n }, React.createElement(\"use\", {\n xlinkHref: option.svgLink\n }));\n }\n\n var optionText = option.text && React.createElement(\"span\", null, option.text);\n var optionIcon = option.iconClasses && React.createElement(\"i\", {\n className: option.iconClasses\n });\n var bottomLabel = option.bottomLabel && React.createElement(\"div\", {\n className: \"bottomLabel\"\n }, option.bottomLabel);\n return React.createElement(\"div\", {\n key: index,\n className: className,\n onClick: function onClick() {\n return _this2.onClickOption(option.value);\n }\n }, React.createElement(\"div\", {\n className: \"roundedButton\"\n }, optionSVG, optionText, optionIcon), bottomLabel);\n });\n return React.createElement(\"div\", {\n className: className\n }, buttons);\n }\n }]);\n\n return RoundedButtonGroup;\n}(Component);\n\n_defineProperty(RoundedButtonGroup, \"className\", 'RoundedButtonGroup');\n\n_defineProperty(RoundedButtonGroup, \"propTypes\", {\n options: propTypes.array,\n value: propTypes.string,\n onValueChanged: propTypes.func\n});\n\n_defineProperty(RoundedButtonGroup, \"defaultProps\", {\n options: [],\n value: null\n});\n\nvar css$b = \".dd-menu {\\n float: left;\\n margin-right: 10px;\\n cursor: pointer;\\n position: relative;\\n z-index: 999;\\n}\\n\\n.dd-title {\\n font-size: 13px;\\n}\\n\\n.dd-menu-toggle {\\n display: inline-block;\\n}\\n\\n.dd-caret-down {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-top: 0.5rem;\\n margin-left: 0.5rem;\\n border-top: 5px solid;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n}\\n\\n.dd-menu-list {\\n position: absolute;\\n top: 100%;\\n margin-top: 10px;\\n background: white;\\n border-radius: 5px;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n overflow: hidden;\\n transition: all 300ms ease;\\n -webkit-transition: all 300ms ease;\\n -moz-transition: all 300ms ease;\\n -ms-transition: all 300ms ease;\\n -o-transition: all 300ms ease;\\n}\\n\\n.dd-menu-list.open {\\n display: inline-block;\\n}\\n\\n.dd-menu-list.left {\\n left: 0;\\n}\\n\\n.dd-menu-list.right {\\n right: 0;\\n}\\n\\n.dd-menu-list.center {\\n left: 50%;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n -moz-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n}\\n\\n.dd-item {\\n display: flex;\\n color: var(--text-color-active);\\n padding: 10px 15px;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.dd-item:hover {\\n text-decoration: none;\\n background: #eee;\\n}\\n\\n.dd-item:last-child {\\n border-bottom: none;\\n}\\n\\n.dd-item-icon {\\n width: 10px;\\n text-align: center;\\n margin-right: 10px;\\n}\\n\\n.dd-item-icon:before {\\n vertical-align: middle;\\n}\\n\";\nstyleInject(css$b);\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Dropdown, _Component);\n\n function Dropdown() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Dropdown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Dropdown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n open: false\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderList\", function () {\n var _this$props = _this.props,\n list = _this$props.list,\n align = _this$props.align;\n\n if (!_this.state.open) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"dd-menu-list \".concat(align || 'left')\n }, list.map(function (_ref, key) {\n var icon = _ref.icon,\n title = _ref.title,\n link = _ref.link,\n _onClick = _ref.onClick;\n return React.createElement(\"a\", {\n href: link || '#',\n key: key,\n className: \"dd-item\",\n onClick: function onClick() {\n return _this.handleOnClick(_onClick);\n }\n }, icon && React.createElement(\"span\", {\n className: \"dd-item-icon \".concat(icon)\n }), React.createElement(\"span\", null, title));\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleOnClick\", function (onClick) {\n _this.toggleList();\n\n if (onClick) {\n onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMouseClick\", function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n _this.toggleList();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderTitleElement\", function () {\n var _this$props2 = _this.props,\n titleElement = _this$props2.titleElement,\n title = _this$props2.title;\n\n if (titleElement) {\n return titleElement;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"span\", {\n className: \"dd-title\"\n }, title), React.createElement(\"span\", {\n className: \"dd-caret-down\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"toggleList\", function () {\n var open = _this.state.open;\n var state = true;\n document.addEventListener('mousedown', _this.handleMouseClick, false);\n\n if (open) {\n document.removeEventListener('mousedown', _this.handleMouseClick, false);\n state = false;\n }\n\n _this.setState({\n open: state\n });\n });\n\n return _this;\n }\n\n _createClass(Dropdown, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", {\n className: \"dd-menu\",\n ref: function ref(node) {\n return _this2.node = node;\n }\n }, React.createElement(\"div\", {\n className: \"dd-menu-toggle\",\n onClick: this.toggleList\n }, this.renderTitleElement()), this.renderList());\n }\n }]);\n\n return Dropdown;\n}(Component);\n\n_defineProperty(Dropdown, \"propTypes\", {\n titleElement: propTypes.node,\n title: propTypes.string,\n align: propTypes.oneOf(['left', 'center', 'right']),\n list: propTypes.arrayOf(propTypes.shape({\n title: propTypes.string.isRequired,\n icon: propTypes.string,\n onClick: propTypes.func,\n link: propTypes.string\n }))\n});\n\nvar InputRadio =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InputRadio, _Component);\n\n function InputRadio() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, InputRadio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(InputRadio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (evt) {\n _this.props.onSelected(evt, _this.props.itemData);\n });\n\n return _this;\n }\n\n _createClass(InputRadio, [{\n key: \"render\",\n value: function render() {\n var labelClass = this.props.labelClass ? this.props.labelClass : '';\n return React.createElement(\"label\", {\n className: 'wrapperLabel radioLabel ' + labelClass,\n htmlFor: this.props.id\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: this.props.id,\n className: \"radioInput\",\n value: this.props.value,\n onChange: this.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, this.props.label));\n }\n }]);\n\n return InputRadio;\n}(Component);\n\nInputRadio.propTypes = {\n value: propTypes.string,\n label: propTypes.string.isRequired,\n itemData: propTypes.object.isRequired,\n labelClass: propTypes.string,\n id: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar SelectTreeBreadcrumb =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTreeBreadcrumb, _Component);\n\n function SelectTreeBreadcrumb() {\n _classCallCheck(this, SelectTreeBreadcrumb);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SelectTreeBreadcrumb).apply(this, arguments));\n }\n\n _createClass(SelectTreeBreadcrumb, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"selectTreeBreadcrumb\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel radioLabel\",\n htmlFor: \"selectTreeBreadcrumb\"\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: \"selectTreeBreadcrumb\",\n className: \"treeNode radioInput\",\n value: this.props.value,\n onChange: this.props.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, React.createElement(\"span\", {\n className: \"backIcon\"\n }, React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: \"/icons.svg#fast-backward\"\n }))), this.props.label)));\n }\n }]);\n\n return SelectTreeBreadcrumb;\n}(Component);\n\nSelectTreeBreadcrumb.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar css$c = \".selectTreeRoot {\\n text-align: initial;\\n width: 320px;\\n max-height: inherit;\\n font-size: 14px;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeContent {\\n max-height: inherit;\\n overflow: hidden;\\n border: 1px solid #c4c4c4;\\n border-radius: 5px;\\n background-color: #fff;\\n display: flex;\\n flex-direction: column;\\n}\\n.selectTreeRoot .treeHeader {\\n background-color: #c0c0c0;\\n border-bottom: 1px solid #c4c4c4;\\n color: #303030;\\n padding: 5px;\\n text-align: center;\\n}\\n.selectTreeRoot .treeHeader .wrapperText {\\n font-weight: bold;\\n padding-bottom: 2px;\\n}\\n.selectTreeRoot .treeHeader .wrapperSearch {\\n width: 100%;\\n}\\n.selectTreeRoot .treeHeader .searchIcon {\\n position: absolute;\\n width: 18px;\\n height: 15px;\\n margin: 10px;\\n color: #a3a3a3;\\n}\\n.selectTreeRoot .treeHeader .searchInput {\\n width: 100%;\\n height: 34px;\\n padding: 6px 12px 6px 35px;\\n background-color: #fff;\\n background-image: none;\\n border: 1px solid #9b9b9b;\\n border-radius: 4px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n color: #555;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.selectTreeRoot .treeHeader .searchInput:focus {\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6);\\n}\\n.selectTreeRoot .wrapperText {\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .wrapperLabel {\\n cursor: pointer;\\n padding: 0 12px;\\n height: 41px;\\n width: 100%;\\n line-height: 41px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon {\\n padding-right: 10px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon svg {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n top: 2px;\\n color: #457fb0;\\n}\\n.selectTreeRoot .treeOptions {\\n overflow: auto;\\n height: 100%;\\n}\\n.selectTreeRoot .treeOptions .selectTreeBreadcrumb + .treeInputsWrapper .treeInputs .treeLeaf {\\n border: none;\\n height: initial;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeOptions > .treeInputsWrapper > .treeInputs .treeLeaf {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .treeNode,\\n.selectTreeRoot .treeLeaf {\\n cursor: pointer;\\n display: block;\\n overflow: hidden;\\n font-weight: normal;\\n box-shadow: 0 0 0 200px transparent;\\n padding: 0 12px;\\n}\\n.selectTreeRoot .treeNode {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .radioLabel .radioInput {\\n display: none;\\n}\\n\";\nstyleInject(css$c);\n\nvar SelectTree =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTree, _Component);\n\n function SelectTree(props) {\n var _this;\n\n _classCallCheck(this, SelectTree);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTree).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"componentDidUpdate\", function () {\n _this.props.onComponentChange();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isLeafSelected\", function (item) {\n return item && !Array.isArray(item.items);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getLabelClass\", function (item) {\n var labelClass = 'treeLeaf';\n\n if (_this.state.searchTerm || Array.isArray(item.items)) {\n labelClass = 'treeNode';\n }\n\n return labelClass;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"headerItem\", function () {\n var title = _this.props.selectTreeFirstTitle;\n\n if (_this.state.currentNode && _this.props.selectTreeSecondTitle) {\n title = _this.props.selectTreeSecondTitle;\n }\n\n return React.createElement(\"div\", {\n className: \"wrapperLabel treeHeader\"\n }, React.createElement(\"div\", {\n className: \"wrapperText\"\n }, title), _this.props.searchEnabled && React.createElement(\"div\", {\n className: \"wrapperSearch\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-search searchIcon\"\n }), React.createElement(\"input\", {\n type: \"text\",\n className: \"searchInput\",\n placeholder: \"Search labels\",\n autoFocus: true,\n onChange: _this.searchLocations,\n value: _this.state.searchTerm ? _this.state.searchTerm : ''\n })));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"searchLocations\", function (evt) {\n _this.setState({\n currentNode: null,\n searchTerm: evt.currentTarget.value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (event, item) {\n if (_this.isLeafSelected(item)) {\n _this.setState({\n searchTerm: null,\n currentNode: null,\n value: null\n });\n\n return _this.props.onSelected(event, item);\n } else {\n _this.setState({\n currentNode: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onBreadcrumbSelected\", function () {\n _this.setState({\n currentNode: null\n });\n });\n\n _this.state = {\n searchTerm: null,\n currentNode: null,\n value: null\n };\n return _this;\n }\n\n _createClass(SelectTree, [{\n key: \"render\",\n value: function render() {\n var treeItems = this.getTreeItems();\n return React.createElement(\"div\", {\n className: \"selectTree selectTreeRoot\"\n }, React.createElement(\"div\", {\n className: \"treeContent\"\n }, this.headerItem(), React.createElement(\"div\", {\n className: \"treeOptions\"\n }, this.state.currentNode && React.createElement(SelectTreeBreadcrumb, {\n onSelected: this.onBreadcrumbSelected,\n label: this.state.currentNode.label,\n value: this.state.currentNode.value\n }), React.createElement(\"div\", {\n className: \"treeInputsWrapper\"\n }, React.createElement(\"div\", {\n className: \"treeInputs\"\n }, treeItems)))));\n }\n }, {\n key: \"getTreeItems\",\n value: function getTreeItems() {\n var _this2 = this;\n\n var storageKey = 'SelectTree';\n var treeItems;\n\n if (this.state.searchTerm) {\n var filteredItems = [];\n var rawItems = lodash_clonedeep(this.props.items);\n rawItems.forEach(function (item) {\n if (Array.isArray(item.items)) {\n item.items.forEach(function (item) {\n var label = item.label.toLowerCase();\n\n var searchTerm = _this2.state.searchTerm.toLowerCase();\n\n if (label.indexOf(searchTerm) !== -1) {\n filteredItems.push(item);\n }\n });\n }\n });\n treeItems = filteredItems;\n } else if (this.state.currentNode) {\n treeItems = lodash_clonedeep(this.state.currentNode.items);\n } else {\n treeItems = lodash_clonedeep(this.props.items);\n }\n\n return treeItems.map(function (item, index) {\n var itemKey = index;\n\n if (_this2.state.currentNode) {\n itemKey += \"_\".concat(_this2.state.currentNode.value);\n }\n\n return React.createElement(InputRadio, {\n key: itemKey,\n id: \"\".concat(storageKey, \"_\").concat(item.value),\n name: index,\n itemData: item,\n value: item.value,\n label: item.label,\n labelClass: _this2.getLabelClass(item),\n onSelected: _this2.onSelected\n });\n });\n }\n }]);\n\n return SelectTree;\n}(Component);\n\n_defineProperty(SelectTree, \"defaultProps\", {\n searchEnabled: true,\n selectTreeFirstTitle: 'First Level itens',\n items: []\n});\n\nSelectTree.propTypes = {\n searchEnabled: propTypes.bool,\n selectTreeFirstTitle: propTypes.string,\n selectTreeSecondTitle: propTypes.string,\n onComponentChange: propTypes.func,\n items: propTypes.array.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar css$d = \".simpleDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n z-index: 1000;\\n border: 0;\\n border-radius: 6px;\\n background-color: var(--ui-gray-darker);\\n}\\n.simpleDialog .header {\\n border-bottom: 3px solid var(--primary-background-color);\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.simpleDialog .header .title {\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 24px;\\n padding-right: 40px;\\n color: var(--text-secondary-color);\\n margin: 0;\\n}\\n.simpleDialog .header .closeBtn {\\n -webkit-transform: translateY(-50%);\\n color: var(--text-secondary-color);\\n height: 20px;\\n opacity: 1;\\n overflow: hidden;\\n padding: 2px;\\n position: absolute;\\n right: 21px;\\n text-align: center;\\n text-shadow: none;\\n top: 50%;\\n transform: translateY(-50%);\\n transition: color 0.3s ease;\\n width: 20px;\\n}\\n.simpleDialog .header .closeIcon {\\n color: transparent;\\n display: block;\\n font-size: 0;\\n height: 100%;\\n line-height: 0;\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n}\\n.simpleDialog .header .closeIcon:after,\\n.simpleDialog .header .closeIcon:before {\\n content: ' ';\\n display: block;\\n height: 2px;\\n transition: background-color 0.3s ease;\\n width: 19px;\\n background-color: var(--text-secondary-color);\\n}\\n.simpleDialog .header .closeIcon:before {\\n left: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n -webkit-transform-origin: 1px 50%;\\n transform-origin: 1px 50%;\\n}\\n.simpleDialog .header .closeIcon:after {\\n right: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-transform-origin: calc(100% - 1px) 50%;\\n transform-origin: calc(100% - 1px) 50%;\\n}\\n.simpleDialog .content {\\n padding: 16px 22px 25px;\\n position: relative;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .content .simpleDialogSelect,\\n.simpleDialog .content .simpleDialogInput {\\n background-color: var(--input-background-color);\\n color: var(--text-primary-color);\\n border: 0;\\n border-radius: 2px;\\n font-size: 14px;\\n height: 30px;\\n width: 100%;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n margin-top: 10px;\\n display: block;\\n}\\n.simpleDialog .content .simpleDialogLabelFor {\\n font-size: 14px;\\n font-weight: 700;\\n line-height: 16px;\\n margin: 10px 0 0 0;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .footer {\\n padding: 15px;\\n text-align: right;\\n}\\n.simpleDialog .footer .btn {\\n margin-left: 5px;\\n}\\n\";\nstyleInject(css$d);\n\nvar SimpleDialog =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SimpleDialog, _Component);\n\n function SimpleDialog() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SimpleDialog);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SimpleDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClose\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onClose();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onConfirm\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onConfirm();\n });\n\n return _this;\n }\n\n _createClass(SimpleDialog, [{\n key: \"render\",\n value: function render() {\n return React.createElement(React.Fragment, null, this.props.isOpen && React.createElement(\"div\", {\n className: \"simpleDialog \".concat(this.props.rootClass, \" \"),\n ref: this.props.componentRef,\n style: this.props.componentStyle\n }, React.createElement(\"form\", null, React.createElement(\"div\", {\n className: \"header\"\n }, React.createElement(\"span\", {\n className: \"closeBtn\",\n onClick: this.onClose\n }, React.createElement(\"span\", {\n className: \"closeIcon\"\n }, \"x\")), React.createElement(\"h4\", {\n className: \"title\"\n }, this.props.headerTitle)), React.createElement(\"div\", {\n className: \"content\"\n }, this.props.children), React.createElement(\"div\", {\n className: \"footer\"\n }, React.createElement(\"button\", {\n className: \"btn btn-default\",\n onClick: this.onClose\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.onConfirm\n }, \"Confirm\")))));\n }\n }]);\n\n return SimpleDialog;\n}(Component);\n\n_defineProperty(SimpleDialog, \"defaultProps\", {\n isOpen: true,\n componentStyle: {},\n rootClass: ''\n});\n\nSimpleDialog.propTypes = {\n headerTitle: propTypes.string.isRequired,\n onClose: propTypes.func.isRequired,\n onConfirm: propTypes.func.isRequired\n};\n\nfunction ViewportLoadingIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, \"Loading \", props.percentComplete);\n}\nViewportLoadingIndicator.propTypes = {\n percentComplete: propTypes.number\n};\n\nfunction ViewportErrorIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, React.createElement(\"p\", null, \"Error\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, props.details));\n}\nViewportErrorIndicator.propTypes = {\n details: propTypes.string\n};\n\nvar css$e = \":root {\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n --primary-background-color: #000;\\n --ui-border-color-dark: #3c5d80;\\n --sidebar-transition: all 0.3s ease;\\n}\\n.ThumbnailEntry.active .ImageThumbnail {\\n border-color: var(--active-color);\\n box-shadow: none;\\n transition: var(--sidebar-transition);\\n}\\n.ImageThumbnail {\\n background-color: var(--primary-background-color);\\n box-shadow: inset 0 0 0 1px var(--ui-border-color-dark);\\n border: 5px solid transparent;\\n border-radius: 12px;\\n height: 135px;\\n margin: 0 auto;\\n padding: 5px;\\n position: relative;\\n transition: var(--sidebar-transition);\\n width: 217px;\\n -moz-background-clip: padding;\\n -webkit-background-clip: padding;\\n background-clip: padding-box;\\n}\\n.image-thumbnail-canvas {\\n height: 100%;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n}\\n.image-thumbnail-canvas img {\\n -webkit-user-drag: none;\\n}\\n.thumbnailLoadingIndicator {\\n display: none;\\n pointer-events: none;\\n color: var(--text-secondary-color);\\n height: 20px;\\n width: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n margin: auto;\\n position: absolute;\\n}\\n.thumbnailLoadingIndicator.d-block {\\n display: block;\\n}\\n.thumbnailLoadingIndicator p {\\n text-align: center;\\n font-size: 10pt;\\n}\\n.image-thumbnail-progress-bar {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n top: -5px;\\n}\\n.image-thumbnail-progress-bar .image-thumbnail-progress-bar-inner {\\n height: 100%;\\n width: 0;\\n border-radius: 5px;\\n background-color: var(--active-color);\\n}\\n\";\nstyleInject(css$e);\n\n// - Passed in as a prop?\n// - Set as external dependency?\n// - Pass in the entire load and render function as a prop?\n//import cornerstone from 'cornerstone-core';\n\n/**\n * Asynchronous wrapper around Cornerstone's renderToCanvas method.\n *\n * @param {HTMLElement} canvasElement An HTML element\n * @param {Image} image A Cornerstone Image\n *\n * @return {Promise} A promise tracking the progress of the rendering. Resolves empty.\n */\n\nfunction renderAsync(canvasElement, image) {\n return new Promise(function (resolve, reject) {\n try {\n cornerstone.renderToCanvas(canvasElement, image);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nvar ImageThumbnail =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageThumbnail, _PureComponent);\n\n function ImageThumbnail(props) {\n var _this;\n\n _classCallCheck(this, ImageThumbnail);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageThumbnail).call(this, props));\n _this.canvas = React.createRef();\n var renderIntoCanvas = _this.props.imageId && !_this.props.imageSrc;\n _this.state = {\n loading: renderIntoCanvas\n };\n return _this;\n }\n\n _createClass(ImageThumbnail, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n\n if (renderIntoCanvas) {\n var imageId = this.props.imageId;\n var canvas = this.canvas.current;\n cornerstone.loadAndCacheImage(imageId).then(function (image) {\n renderAsync(canvas, image).then(function () {\n _this2.setState({\n loading: false\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var loadingOrError;\n\n if (this.props.error) {\n loadingOrError = React.createElement(ViewportErrorIndicator, null);\n } else if (this.state.loading) {\n loadingOrError = React.createElement(ViewportLoadingIndicator, null);\n }\n\n var showStackLoadingProgressBar = this.props.stackPercentComplete !== undefined;\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n return React.createElement(\"div\", {\n className: \"ImageThumbnail\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-canvas\"\n }, renderIntoCanvas ? React.createElement(\"canvas\", {\n ref: this.canvas,\n width: this.props.width,\n height: this.props.height\n }) : React.createElement(\"img\", {\n className: \"static-image\",\n src: this.props.imageSrc //width={this.props.width}\n ,\n height: this.props.height,\n alt: ''\n })), loadingOrError, showStackLoadingProgressBar && React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar-inner\",\n style: {\n width: \"\".concat(this.props.stackPercentComplete, \"%\")\n }\n })));\n }\n }]);\n\n return ImageThumbnail;\n}(PureComponent);\n\n_defineProperty(ImageThumbnail, \"propTypes\", {\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n width: propTypes.number.isRequired,\n height: propTypes.number.isRequired,\n stackPercentComplete: propTypes.number.isRequired\n});\n\n_defineProperty(ImageThumbnail, \"defaultProps\", {\n error: false,\n stackPercentComplete: 0,\n width: 217,\n height: 123\n});\n\nvar css$f = \":root {\\n --series-count-background-color: #678696;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n}\\n.ThumbnailEntry {\\n cursor: pointer;\\n display: table;\\n}\\n.ThumbnailEntry .p-x-1 {\\n padding: 0 1rem;\\n}\\n.ThumbnailEntry .series-details {\\n display: flex;\\n flex-direction: row;\\n color: var(--text-primary-color);\\n font-size: 14px;\\n line-height: 1.3em;\\n margin-top: 5px;\\n margin-left: 1rem;\\n margin-right: 1rem;\\n max-width: 217px;\\n min-height: 36px;\\n position: relative;\\n word-wrap: break-word;\\n}\\n.ThumbnailEntry .series-details .series-description {\\n flex-grow: 1;\\n}\\n.ThumbnailEntry .series-details.info-only .series-description {\\n display: none;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information {\\n display: flex;\\n flex-grow: 1;\\n float: none;\\n max-width: none;\\n padding-right: 0;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item {\\n flex: 1;\\n text-align: center;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .icon,\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n display: inline;\\n float: none;\\n line-height: 25px;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n margin-left: 0;\\n width: auto;\\n}\\n.ThumbnailEntry .series-information {\\n padding-right: 4px;\\n max-width: 50px;\\n}\\n.ThumbnailEntry .series-information .item-frames .icon {\\n height: 18px;\\n}\\n.ThumbnailEntry .series-information .value {\\n color: var(--text-secondary-color);\\n display: inline-block;\\n float: right;\\n font-size: 12px;\\n margin-left: 4px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: calc(100% - 15px);\\n}\\n.ThumbnailEntry .series-information .icon {\\n color: var(--active-color);\\n display: inline-block;\\n float: left;\\n font-size: 10px;\\n font-weight: 900;\\n text-align: right;\\n width: 11px;\\n}\\n.ThumbnailEntry .series-information .icon div {\\n background-color: var(--series-count-background-color);\\n margin-top: 6px;\\n position: relative;\\n}\\n.ThumbnailEntry .series-information .icon div:after {\\n background-color: var(--active-color);\\n box-shadow: 1px 1px rgba(0,0,0,0.115);\\n left: -5px;\\n position: absolute;\\n top: -5px;\\n}\\n.ThumbnailEntry .series-information .icon div,\\n.ThumbnailEntry .series-information .icon div:after {\\n border: 1px solid var(--series-count-background-color);\\n content: '';\\n display: inline-block;\\n height: 11px;\\n width: 11px;\\n}\\n.image-thumbnail-clone {\\n z-index: 100000;\\n pointer-events: none;\\n}\\n.image-thumbnail-clone:hover {\\n border-color: var(--hover-color);\\n box-shadow: none;\\n}\\n\";\nstyleInject(css$f);\n\nvar ThumbnailEntry =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntry, _Component);\n\n function ThumbnailEntry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThumbnailEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThumbnailEntry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n if (_this.props.onClick) {\n _this.props.onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDoubleClick\", function () {\n if (_this.props.onDoubleClick) {\n _this.props.onDoubleClick();\n }\n });\n\n return _this;\n }\n\n _createClass(ThumbnailEntry, [{\n key: \"render\",\n value: function render() {\n var hasInstanceNumber = this.props.instanceNumber !== undefined;\n var className = classnames('ThumbnailEntry noselect', {\n active: this.props.active\n });\n return React.createElement(\"div\", {\n className: className,\n onClick: this.onClick,\n onDoubleClick: this.onDoubleClick,\n onMouseDown: this.onMouseDown\n }, React.createElement(\"div\", {\n className: \"p-x-1\"\n }, React.createElement(ImageThumbnail, {\n imageSrc: this.props.imageSrc,\n imageId: this.props.imageId,\n error: this.props.error,\n stackPercentComplete: this.props.stackPercentComplete\n })), React.createElement(\"div\", {\n className: 'series-details'\n }, React.createElement(\"div\", {\n className: \"series-description\"\n }, this.props.seriesDescription), React.createElement(\"div\", {\n className: \"series-information\"\n }, React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"S:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.seriesNumber)), hasInstanceNumber && React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"I:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.instanceNumber)), React.createElement(\"div\", {\n className: \"item item-frames clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, React.createElement(\"div\", null)), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.numImageFrames)))));\n }\n }]);\n\n return ThumbnailEntry;\n}(Component);\n\n_defineProperty(ThumbnailEntry, \"defaultProps\", {\n active: false,\n error: false,\n stackPercentComplete: 0\n});\n\n_defineProperty(ThumbnailEntry, \"propTypes\", {\n id: propTypes.string.isRequired,\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n active: propTypes.bool.isRequired,\n stackPercentComplete: propTypes.number,\n seriesDescription: propTypes.string,\n seriesNumber: propTypes.string,\n instanceNumber: propTypes.string,\n numImageFrames: propTypes.number,\n onDoubleClick: propTypes.func,\n onClick: propTypes.func\n});\n\n// if they have the same string type.\n\nvar Types$2 = {\n THUMBNAIL: 'thumbnail'\n};\nvar thumbnailSource = {\n /*canDrag(props) {\n return props.error === false;\n },*/\n beginDrag: function beginDrag(props) {\n return props;\n },\n endDrag: function endDrag(props, monitor) {\n //const item = monitor.getItem();\n var dropResult = monitor.getDropResult();\n }\n};\n\nvar ThumbnailEntryDragSource =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntryDragSource, _Component);\n\n function ThumbnailEntryDragSource() {\n _classCallCheck(this, ThumbnailEntryDragSource);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThumbnailEntryDragSource).apply(this, arguments));\n }\n\n _createClass(ThumbnailEntryDragSource, [{\n key: \"render\",\n value: function render() {\n var connectDragSource = this.props.connectDragSource;\n var dropEffect = 'copy';\n return connectDragSource(React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, this.props)), {\n dropEffect: dropEffect\n });\n }\n }]);\n\n return ThumbnailEntryDragSource;\n}(Component);\n\n_defineProperty(ThumbnailEntryDragSource, \"propTypes\", {\n connectDragSource: propTypes.func.isRequired,\n isDragging: propTypes.bool.isRequired\n});\n\n_defineProperty(ThumbnailEntryDragSource, \"defaultProps\", {\n isDragging: false\n});\n\nvar collect$2 = function collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n};\n\nvar ThumbnailEntryDragSource$1 = lib_4(Types$2.THUMBNAIL, thumbnailSource, collect$2)(ThumbnailEntryDragSource);\n\nvar css$g = \".StudyBrowser {\\n float: left;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n background-color: #000;\\n padding-bottom: 20px;\\n}\\n.StudyBrowser .scrollable-study-thumbnails {\\n height: 100%;\\n overflow-y: auto;\\n overflow-x: hidden;\\n padding-bottom: 50px;\\n padding-right: 16px;\\n padding-left: 4px;\\n margin-right: -16px;\\n display: flex;\\n flex-direction: column;\\n}\\n.StudyBrowser .scrollable-study-thumbnails::-webkit-scrollbar {\\n display: none;\\n}\\n.StudyBrowser .scrollable-study-thumbnails .ThumbnailEntryContainer {\\n margin: 0 auto;\\n padding-top: 1rem;\\n padding-bottom: 1.5rem;\\n}\\n.draggable {\\n cursor: copy;\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n}\\n\";\nstyleInject(css$g);\n\nvar StudyBrowser =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyBrowser, _Component);\n\n function StudyBrowser() {\n _classCallCheck(this, StudyBrowser);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudyBrowser).apply(this, arguments));\n }\n\n _createClass(StudyBrowser, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var studies = this.props.studies;\n var thumbnails = studies.map(function (study, studyIndex) {\n return study.thumbnails.map(function (thumb, thumbIndex) {\n if (_this.props.supportsDragAndDrop) {\n return React.createElement(ThumbnailEntryDragSource$1, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n })));\n }\n });\n });\n var components = thumbnails.flat();\n return React.createElement(\"div\", {\n className: \"StudyBrowser\"\n }, React.createElement(\"div\", {\n className: \"scrollable-study-thumbnails\"\n }, components));\n }\n }]);\n\n return StudyBrowser;\n}(Component);\n\n_defineProperty(StudyBrowser, \"defaultProps\", {\n studies: [],\n supportsDragAndDrop: true\n});\n\n_defineProperty(StudyBrowser, \"propTypes\", {\n studies: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n onThumbnailClick: propTypes.func,\n onThumbnailDoubleClick: propTypes.func\n});\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar css$h = \".studyListToolbar {\\n background-color: var(--ui-gray-darker);\\n height: 75px;\\n margin-bottom: 2px;\\n padding: 0 8%;\\n}\\n.studyListToolbar>div {\\n display: inline-block;\\n}\\n.studyListToolbar .header {\\n font-size: 22px;\\n font-weight: 300;\\n color: var(--table-text-secondary-color);\\n line-height: 75px;\\n}\\n.studyListToolbar .studylistToolbar {\\n height: 75px;\\n line-height: 75px;\\n}\\n.studyListToolbar .studyCount {\\n color: var(--large-numbers-color);\\n font-size: 40px;\\n font-weight: 100;\\n line-height: 75px;\\n}\\n.theadBackground {\\n height: 121px;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before,\\n.theadBackground:after {\\n content: '';\\n display: block;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before {\\n background-color: var(--ui-gray-darker);\\n height: 100%;\\n top: 0;\\n z-index: 1;\\n}\\n.theadBackground:after {\\n background-color: var(--large-numbers-color);\\n bottom: -1px;\\n height: 1px;\\n z-index: 3;\\n}\\n#studyListContainer {\\n width: 100%;\\n padding: 0 8%;\\n position: absolute;\\n z-index: 2;\\n}\\n#studyListContainer .loadingTextDiv {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n}\\n#studyListContainer .notFound {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n font-weight: 200;\\n text-align: center;\\n}\\n#studyListContainer table#tblStudyList tr {\\n height: 20px;\\n}\\n#studyListContainer table#tblStudyList thead {\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList thead tr th {\\n padding: 0;\\n border-bottom: solid 1px var(--ui-border-color-active);\\n width: 100%;\\n}\\n#studyListContainer table#tblStudyList thead tr th.studyDate {\\n min-width: 230px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell {\\n display: inline-block;\\n cursor: pointer;\\n width: 100%;\\n min-width: 95px;\\n margin: 0 auto;\\n color: var(--table-text-primary-color);\\n font-weight: 400;\\n padding: 20px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell span {\\n font-size: 15px;\\n float: left;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell i {\\n margin: 0 5px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:hover {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell.active,\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:active {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search {\\n height: 40px;\\n margin: 0 5px 20px 5px;\\n padding: 0 20px;\\n cursor: pointer;\\n border: none;\\n background-color: var(--input-background-color);\\n color: var(--input-placeholder-color);\\n font-size: 10pt;\\n font-weight: normal;\\n width: calc(100% - 10px);\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-webkit-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-ms-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search.invisible {\\n visibility: hidden;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:active,\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:hover {\\n background-color: var(--input-background-color);\\n}\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-year-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-month-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-day-field:not([aria-valuenow]) {\\n color: transparent;\\n}\\n#studyListContainer table#tblStudyList tbody tr {\\n padding: 5px;\\n background-color: #000;\\n}\\n#studyListContainer table#tblStudyList tbody tr:nth-child(even) {\\n background-color: var(--ui-gray-darker);\\n}\\n#studyListContainer table#tblStudyList tbody tr td {\\n height: 40px;\\n line-height: 40px;\\n color: var(--table-text-primary-color);\\n font-weight: 300;\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList tbody tr td.emptyValue {\\n color: var(--ui-gray-light);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover,\\n#studyListContainer table#tblStudyList tbody tr:active,\\n#studyListContainer table#tblStudyList tbody tr.active {\\n background-color: var(--table-hover-color);\\n color: var(--text-primary-color);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover td,\\n#studyListContainer table#tblStudyList tbody tr:active td,\\n#studyListContainer table#tblStudyList tbody tr.active td {\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n background-color: var(--table-hover-color);\\n}\\n@media only screen and (max-width: 1362px) {\\n #studyListContainer {\\n padding: 0 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 5%;\\n }\\n}\\n@media only screen and (max-width: 1161px) {\\n #studyListContainer {\\n padding: 0 $tablePaddingBigWidth;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 3%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 3%;\\n }\\n}\\n@media only screen and (max-width: 1069px) {\\n .theadBackground {\\n height: 101px;\\n }\\n .studylist-pagination > .row {\\n margin-right: 0;\\n }\\n .studyListToolbar {\\n padding: 0 5px;\\n }\\n #studyListContainer {\\n padding: 0;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th input.worklist-search {\\n padding: 10px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell {\\n padding: 10px 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell i {\\n width: auto;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer .worklistPagination .row {\\n margin-left: 0;\\n margin-right: 0;\\n }\\n}\\n\";\nstyleInject(css$h);\n\nvar css$i = \".studyListToolbar .addNewStudy {\\n margin: 0 10px;\\n}\\n.studyListToolbar .addNewStudy label {\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n cursor: pointer;\\n}\\n.studyListToolbar .addNewStudy:hover {\\n color: var(--hover-color);\\n}\\n.studyListToolbar .addNewStudy:active {\\n color: var(--active-color);\\n}\\n.studyListToolbar .addNewStudy input {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\n\";\nstyleInject(css$i);\n\nvar StudylistToolbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(StudylistToolbar, _PureComponent);\n\n function StudylistToolbar() {\n _classCallCheck(this, StudylistToolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudylistToolbar).apply(this, arguments));\n }\n\n _createClass(StudylistToolbar, [{\n key: \"clear\",\n value: function clear(e) {\n e.target.value = null;\n }\n }, {\n key: \"getImportTool\",\n value: function getImportTool() {\n if (this.props.onImport && this.props.studyListFunctionsEnabled) {\n return React.createElement(\"div\", {\n className: \"addNewStudy btn-file\"\n }, React.createElement(\"label\", {\n htmlFor: \"btnImport\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }), \"Import study\"), React.createElement(\"input\", {\n id: \"btnImport\",\n onChange: this.props.onImport,\n onClick: this.clear,\n className: \"js-import-files\",\n type: \"file\",\n webkitdirectory: \"true\",\n directory: \"true\",\n multiple: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"studylistToolbar\"\n }, this.getImportTool());\n }\n }]);\n\n return StudylistToolbar;\n}(PureComponent);\n\n_defineProperty(StudylistToolbar, \"propTypes\", {\n studyListFunctionsEnabled: propTypes.bool.isRequired,\n onImport: propTypes.func\n});\n\n_defineProperty(StudylistToolbar, \"defaultProps\", {\n studyListFunctionsEnabled: true\n});\n\nfunction LoadingText() {\n return React.createElement(\"div\", {\n className: \"loadingTextDiv\"\n }, React.createElement(\"h5\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spinner fa-pulse\"\n })));\n}\n\nvar css$j = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --primary-background-color: #000;\\n}\\n.pagination-area {\\n color: var(--text-secondary-color);\\n font-size: 13px;\\n font-weight: normal !important;\\n}\\n.pagination-area label {\\n font-weight: normal;\\n}\\n.pagination-area select {\\n margin: 5px;\\n background-color: var(--primary-background-color);\\n color: #fff;\\n}\\n.rows-per-page label.wrapperLabel {\\n display: inline-table !important;\\n margin: 0 4px;\\n}\\n.rows-per-page label.wrapperLabel select {\\n margin: 0px 4px 0px 4px;\\n width: 42px;\\n}\\n.page-buttons {\\n margin: 0;\\n text-align: right;\\n}\\n.page-buttons label {\\n font-weight: normal;\\n}\\n.page-buttons label ul.pagination-control {\\n margin: 0;\\n}\\n.page-buttons label ul.pagination-control li {\\n display: table-cell;\\n padding: 5px 2px;\\n}\\n.page-buttons label ul.pagination-control li button {\\n padding: 4px 8px;\\n background-color: var(--primary-background-color);\\n border-color: var(--ui-gray);\\n color: var(--ui-gray-darkest);\\n color: #fff;\\n text-decoration: none;\\n}\\n.page-buttons label ul.pagination-control li button:hover:enabled {\\n color: var(--active-color);\\n}\\n.page-buttons label ul.pagination-control li .active button {\\n background-color: var(--ui-gray);\\n border-color: #ddd;\\n color: #fff;\\n}\\n\";\nstyleInject(css$j);\n\nvar PaginationArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PaginationArea, _PureComponent);\n\n function PaginationArea() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PaginationArea);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationArea)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nextPage\", function () {\n _this.props.nextPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"prevPage\", function () {\n _this.props.prevPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onRowsPerPageChange\", function (event) {\n _this.props.onRowsPerPageChange(parseInt(event.target.value));\n });\n\n return _this;\n }\n\n _createClass(PaginationArea, [{\n key: \"renderPaginationButtons\",\n value: function renderPaginationButtons() {\n return React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-buttons noselect\"\n }, React.createElement(\"label\", null, React.createElement(\"ul\", {\n className: \"pagination-control no-margins\"\n }, React.createElement(\"li\", {\n className: \"page-item prev\"\n }, React.createElement(\"button\", {\n onClick: this.prevPage,\n disabled: this.props.currentPage === 0,\n className: \"btn page-link\"\n }, \"Previous\")), React.createElement(\"li\", {\n className: \"page-item next\"\n }, React.createElement(\"button\", {\n onClick: this.nextPage,\n disabled: this.props.currentPage === this.props.numberOfPages - 1,\n className: \"btn page-link\"\n }, \"Next\"))))));\n }\n }, {\n key: \"renderRowsPerPageDropdown\",\n value: function renderRowsPerPageDropdown() {\n return React.createElement(\"div\", {\n className: \"form-inline form-group rows-per-page\"\n }, React.createElement(\"span\", null, \"Show\"), React.createElement(\"select\", {\n onChange: this.onRowsPerPageChange,\n defaultValue: this.props.rowsPerPage\n }, this.props.pageOptions.map(function (pageNumber) {\n return React.createElement(\"option\", {\n key: pageNumber,\n value: pageNumber\n }, pageNumber);\n })), React.createElement(\"span\", null, \"rows per page\"));\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n name: \"paginationArea\"\n }, React.createElement(\"div\", {\n className: \"pagination-area\"\n }, React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"div\", {\n className: \"col-xs-4 col-sm-3 col-md-3\"\n }, this.renderRowsPerPageDropdown()), React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-number pull-right\"\n }, this.renderPaginationButtons())))));\n }\n }]);\n\n return PaginationArea;\n}(PureComponent);\n\n_defineProperty(PaginationArea, \"defaultProps\", {\n pageOptions: [5, 10, 25, 50, 100],\n rowsPerPage: 25,\n currentPage: 0,\n numberOfPages: 1\n});\n\n_defineProperty(PaginationArea, \"propTypes\", {\n pageOptions: propTypes.array.isRequired,\n rowsPerPage: propTypes.number.isRequired,\n currentPage: propTypes.number.isRequired,\n numberOfPages: propTypes.number.isRequired,\n nextPageFunc: propTypes.func,\n prevPageFunc: propTypes.func,\n onRowsPerPageChange: propTypes.func\n});\n\nvar StudyList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyList, _Component);\n\n function StudyList(props) {\n var _this;\n\n _classCallCheck(this, StudyList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyList).call(this, props));\n var sortData = {};\n var sortClasses = {\n patientName: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n patientId: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n accessionNumber: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDate: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n modality: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDescription: StudyList.DEFAULT_SORTABLE_ICON_CLS\n };\n\n if (props.defaultSort) {\n sortData.field = props.defaultSort.field;\n sortData.order = props.defaultSort.order;\n sortClasses[props.defaultSort.field] = props.defaultSort.order === 'desc' ? StudyList.DESC_SORT_ICON_CLS : StudyList.ASC_SORT_ICON_CLS;\n }\n\n _this.state = {\n loading: false,\n error: false,\n sortClasses: sortClasses,\n searchData: {\n sortData: sortData,\n currentPage: _this.props.currentPage,\n rowsPerPage: _this.props.rowsPerPage\n },\n highlightedItem: ''\n };\n _this.getChangeHandler = _this.getChangeHandler.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onInputKeydown = _this.onInputKeydown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.nextPage = _this.nextPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.prevPage = _this.prevPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onRowsPerPageChange = _this.onRowsPerPageChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(StudyList, [{\n key: \"getChangeHandler\",\n value: function getChangeHandler(key) {\n var _this2 = this;\n\n return function (event) {\n _this2.setSearchData(key, event.target.value);\n };\n }\n }, {\n key: \"setSearchData\",\n value: function setSearchData(key, value, callback) {\n var searchData = this.state.searchData;\n searchData[key] = value;\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"setSearchDataBatch\",\n value: function setSearchDataBatch(keyValues, callback) {\n var searchData = this.state.searchData;\n Object.keys(keyValues).forEach(function (key) {\n searchData[key] = keyValues[key];\n });\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"onInputKeydown\",\n value: function () {\n var _onInputKeydown = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(event) {\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation(); // reset the page because user is doing a new search\n\n this.setSearchData('currentPage', 0, this.search);\n }\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onInputKeydown(_x) {\n return _onInputKeydown.apply(this, arguments);\n }\n\n return onInputKeydown;\n }()\n }, {\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2() {\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n this.setState({\n loading: true,\n error: false\n });\n _context2.next = 4;\n return this.props.onSearch(this.state.searchData);\n\n case 4:\n _context2.next = 10;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2[\"catch\"](0);\n this.setState({\n error: true\n });\n throw new Error(_context2.t0);\n\n case 10:\n _context2.prev = 10;\n this.setState({\n loading: false\n });\n return _context2.finish(10);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6, 10, 13]]);\n }));\n\n function search() {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"renderNoMachingResults\",\n value: function renderNoMachingResults() {\n if (!this.props.studies.length && !this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"No matching results\");\n }\n }\n }, {\n key: \"renderHasError\",\n value: function renderHasError() {\n if (this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"There was an error fetching studies\");\n }\n }\n }, {\n key: \"renderIsLoading\",\n value: function renderIsLoading() {\n if (this.state.loading) {\n return React.createElement(\"div\", {\n className: \"loading\"\n }, React.createElement(LoadingText, null));\n }\n }\n }, {\n key: \"nextPage\",\n value: function nextPage(currentPage) {\n currentPage = currentPage + 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"prevPage\",\n value: function prevPage(currentPage) {\n currentPage = currentPage - 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"onRowsPerPageChange\",\n value: function onRowsPerPageChange(rowsPerPage) {\n this.setSearchDataBatch({\n rowsPerPage: rowsPerPage,\n currentPage: 0\n }, this.search);\n }\n }, {\n key: \"onSortClick\",\n value: function onSortClick(key) {\n var _this3 = this;\n\n return function () {\n var sortClasses = _this3.state.sortClasses;\n var order;\n\n if (sortClasses[key] === StudyList.ASC_SORT_ICON_CLS) {\n sortClasses[key] = StudyList.DESC_SORT_ICON_CLS;\n order = 'desc';\n } else {\n sortClasses[key] = StudyList.ASC_SORT_ICON_CLS;\n order = 'asc';\n }\n\n Object.keys(sortClasses).forEach(function (sortClassKey) {\n if (sortClassKey !== key) {\n sortClasses[sortClassKey] = StudyList.DEFAULT_SORTABLE_ICON_CLS;\n }\n });\n\n _this3.setState({\n sortClasses: sortClasses\n }, function () {\n _this3.setSearchData('sortData', {\n field: key,\n order: order\n }, _this3.search);\n });\n };\n }\n }, {\n key: \"onHighlightItem\",\n value: function onHighlightItem(studyItemUid) {\n this.setState({\n highlightedItem: studyItemUid\n });\n }\n }, {\n key: \"renderTableRow\",\n value: function renderTableRow(study) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: study.studyInstanceUID,\n className: this.state.highlightedItem === study.studyInstanceUID ? 'studylistStudy noselect active' : 'studylistStudy noselect',\n onClick: function onClick() {\n _this4.onHighlightItem(study.studyInstanceUID);\n },\n onMouseDown: function onMouseDown(event) {\n // middle/wheel click\n if (event.button === 1) {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n },\n onDoubleClick: function onDoubleClick() {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n }, React.createElement(\"td\", {\n className: \"patientName\"\n }, study.patientName), React.createElement(\"td\", {\n className: \"patientId\"\n }, study.patientId), React.createElement(\"td\", {\n className: \"accessionNumber\"\n }, study.accessionNumber), React.createElement(\"td\", {\n className: \"studyDate\"\n }, study.studyDate), React.createElement(\"td\", {\n className: \"modalities\"\n }, study.modalities), React.createElement(\"td\", {\n className: \"studyDescription\"\n }, study.studyDescription));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n className: \"StudyList\"\n }, React.createElement(\"div\", {\n className: \"studyListToolbar clearfix\"\n }, React.createElement(\"div\", {\n className: \"header pull-left\"\n }, \"Study List\"), React.createElement(\"div\", {\n className: \"studyCount pull-right\"\n }, this.props.studyCount), React.createElement(\"div\", {\n className: \"pull-right\"\n }, React.createElement(StudylistToolbar, {\n studyListFunctionsEnabled: this.props.studyListFunctionsEnabled,\n onImport: this.props.onImport\n }))), React.createElement(\"div\", {\n className: \"theadBackground\"\n }), React.createElement(\"div\", {\n id: \"studyListContainer\"\n }, React.createElement(\"table\", {\n id: \"tblStudyList\",\n className: \"studylistResult table noselect\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"patientName\"\n }, React.createElement(\"div\", {\n id: \"_patientName\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientName')\n }, React.createElement(\"span\", null, \"Patient Name\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientName\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientName\",\n value: this.state.patientName,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientName')\n })), React.createElement(\"th\", {\n className: \"patientId\"\n }, React.createElement(\"div\", {\n id: \"_patientId\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientId')\n }, React.createElement(\"span\", null, \"MRN\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientId\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientId\",\n value: this.state.patientId,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientId')\n })), React.createElement(\"th\", {\n className: \"accessionNumber\"\n }, React.createElement(\"div\", {\n id: \"_accessionNumber\",\n className: \"sortingCell\",\n onClick: this.onSortClick('accessionNumber')\n }, React.createElement(\"span\", null, \"Accession #\"), React.createElement(\"i\", {\n className: this.state.sortClasses.accessionNumber\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"accessionNumber\",\n value: this.state.accessionNumber,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('accessionNumber')\n })), React.createElement(\"th\", {\n className: \"studyDate\"\n }, React.createElement(\"div\", {\n id: \"_studyDate\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDate')\n }, React.createElement(\"span\", null, \"Study Date\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDate\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n name: \"daterange\",\n id: \"studyDate\",\n value: this.state.studyDateRange,\n onChange: this.getChangeHandler('studyDateRange')\n })), React.createElement(\"th\", {\n className: \"modality\"\n }, React.createElement(\"div\", {\n id: \"_modality\",\n className: \"sortingCell\",\n onClick: this.onSortClick('modality')\n }, React.createElement(\"span\", null, \"Modality\"), React.createElement(\"i\", {\n className: this.state.sortClasses.modality\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"modality\",\n onKeyDown: this.onInputKeydown,\n value: this.state.modality,\n onChange: this.getChangeHandler('modality')\n })), React.createElement(\"th\", {\n className: \"studyDescription\"\n }, React.createElement(\"div\", {\n id: \"_studyDescription\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDescription')\n }, React.createElement(\"span\", null, \"Study Description\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDescription\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"studyDescription\",\n onKeyDown: this.onInputKeydown,\n value: this.state.studyDescription,\n onChange: this.getChangeHandler('studyDescription')\n })))), React.createElement(\"tbody\", {\n id: \"studyListData\"\n }, this.props.studies.map(function (study) {\n return _this5.renderTableRow(study);\n }))), this.renderIsLoading(), this.renderHasError(), this.renderNoMachingResults(), React.createElement(PaginationArea, {\n currentPage: this.state.searchData.currentPage,\n nextPageFunc: this.nextPage,\n prevPageFunc: this.prevPage,\n onRowsPerPageChange: this.onRowsPerPageChange,\n rowsPerPage: this.state.searchData.rowsPerPage,\n numberOfPages: Math.ceil(this.props.studyCount / this.state.searchData.rowsPerPage)\n })));\n }\n }]);\n\n return StudyList;\n}(Component);\n\n_defineProperty(StudyList, \"propTypes\", {\n studies: propTypes.array.isRequired,\n onSelectItem: propTypes.func.isRequired,\n onSearch: propTypes.func.isRequired,\n studyCount: propTypes.number.isRequired,\n currentPage: propTypes.number,\n rowsPerPage: propTypes.number,\n studyListFunctionsEnabled: propTypes.bool,\n defaultSort: propTypes.shape({\n field: propTypes.string.isRequired,\n order: propTypes.oneOf(['desc', 'asc']).isRequired\n }),\n onImport: propTypes.func\n});\n\n_defineProperty(StudyList, \"defaultProps\", {\n currentPage: 0,\n rowsPerPage: 25\n});\n\n_defineProperty(StudyList, \"DEFAULT_SORTABLE_ICON_CLS\", 'fa fa-fw fa-sort');\n\n_defineProperty(StudyList, \"DESC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-desc');\n\n_defineProperty(StudyList, \"ASC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-asc');\n\nfunction SimpleToolbarButton(props) {\n var className = classnames(props.className, 'btn btn-sm btn-default');\n return React.createElement(\"button\", {\n id: props.id,\n type: \"button\",\n className: className,\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: props.title\n }, React.createElement(\"span\", {\n className: props.iconClassName\n }));\n}\nSimpleToolbarButton.propTypes = {\n iconClassName: propTypes.string,\n title: propTypes.string,\n className: propTypes.string,\n id: propTypes.string,\n onClick: propTypes.func\n};\n\nfunction getDefaultButtonData() {\n var buttonData = [];\n buttonData.push({\n id: 'wwwc',\n title: 'WW/WC',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-sun-o'\n });\n buttonData.push({\n id: 'wwwcRegion',\n title: 'Window by Region',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square'\n });\n buttonData.push({\n id: 'magnify',\n title: 'Magnify',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle'\n });\n buttonData.push({\n id: 'annotate',\n title: 'Annotation',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-h'\n });\n buttonData.push({\n id: 'invert',\n title: 'Invert',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-adjust'\n });\n buttonData.push({\n id: 'zoom',\n title: 'Zoom',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-search'\n });\n buttonData.push({\n id: 'pan',\n title: 'Pan',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows'\n });\n buttonData.push({\n id: 'stackScroll',\n title: 'Stack Scroll',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-bars'\n });\n buttonData.push({\n id: 'length',\n title: 'Length Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-v'\n });\n buttonData.push({\n id: 'angle',\n title: 'Angle Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-angle-left'\n });\n buttonData.push({\n id: 'dragProbe',\n title: 'Pixel Probe',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-dot-circle-o'\n });\n buttonData.push({\n id: 'ellipticalRoi',\n title: 'Elliptical ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle-o'\n });\n buttonData.push({\n id: 'rectangleRoi',\n title: 'Rectangle ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square-o'\n });\n buttonData.push({\n id: 'resetViewport',\n title: 'Reset Viewport',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-undo'\n });\n buttonData.push({\n id: 'clearTools',\n title: 'Clear tools',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-trash'\n });\n return buttonData;\n}\n\nvar Toolbar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Toolbar, _Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Toolbar).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: \"render\",\n value: function render() {\n var maybePlayClipButton;\n\n if (this.props.includePlayClipButton) {\n maybePlayClipButton = React.createElement(PlayClipButton, null);\n }\n\n var maybeLayoutButton;\n\n if (this.props.includeLayoutButton) {\n maybeLayoutButton = React.createElement(LayoutButton, null);\n }\n\n return React.createElement(\"div\", {\n id: \"toolbar\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, this.props.buttons.map(function (button, i) {\n return React.createElement(SimpleToolbarButton, _extends({}, button, {\n key: i\n }));\n }), maybePlayClipButton, maybeLayoutButton));\n }\n }]);\n\n return Toolbar;\n}(Component);\nToolbar.propTypes = {\n buttons: propTypes.array.isRequired,\n includeLayoutButton: propTypes.bool.isRequired,\n includePlayClipButton: propTypes.bool.isRequired\n};\nToolbar.defaultProps = {\n buttons: getDefaultButtonData(),\n includeLayoutButton: true,\n includePlayClipButton: true\n};\n\nvar css$k = \".ToolbarButton {\\n height: 48px;\\n color: var(--default-color);\\n float: left;\\n text-align: center;\\n padding: 0 1rem;\\n cursor: pointer;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none; /* Non-prefixed version, currently\\n supported by Chrome and Opera */\\n}\\n.ToolbarButton svg {\\n height: 21px;\\n width: 21px;\\n margin: 2px;\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n.ToolbarButton i {\\n font-size: 18px;\\n line-height: 30px;\\n}\\n.ToolbarButton:hover {\\n color: var(--hover-color);\\n}\\n.ToolbarButton:hover svg {\\n fill: var(--hover-color);\\n stroke: var(--hover-color);\\n}\\n.ToolbarButton:hover i {\\n color: var(--hover-color);\\n}\\n.ToolbarButton.active,\\n.ToolbarButton:active {\\n color: var(--active-color);\\n}\\n.ToolbarButton.active svg,\\n.ToolbarButton:active svg {\\n fill: var(--active-color);\\n stroke: var(--active-color);\\n}\\n.ToolbarButton.active i,\\n.ToolbarButton:active i {\\n color: var(--active-color);\\n}\\n.ToolbarButton span.toolbar-button-label {\\n font-size: 12px;\\n font-weight: 500;\\n display: block;\\n}\\n\";\nstyleInject(css$k);\n\nfunction ToolbarButton(props) {\n var onClick = function onClick(event) {\n if (props.onClick) {\n props.onClick(event, props);\n }\n\n if (props.setToolActive) {\n props.setToolActive(props);\n }\n };\n\n var className = classnames(props.className, {\n active: props.active\n });\n var active = props.active,\n svgUrlActive = props.svgUrlActive,\n iconClassesActive = props.iconClassesActive,\n textActive = props.textActive;\n var svgUrl = props.svgUrl;\n\n if (active && svgUrlActive) {\n svgUrl = svgUrlActive;\n }\n\n var iconClasses = props.iconClasses;\n\n if (active && iconClassesActive) {\n iconClasses = iconClassesActive;\n }\n\n var label = props.text;\n\n if (active && textActive) {\n label = textActive;\n }\n\n return React.createElement(\"div\", {\n className: className,\n onClick: onClick\n }, svgUrl && React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: svgUrl\n })), iconClasses && React.createElement(\"i\", {\n className: iconClasses\n }), React.createElement(\"span\", {\n className: \"toolbar-button-label\"\n }, label));\n}\nToolbarButton.defaultProps = {\n command: 'ToolbarButton',\n onClick: function onClick() {//console.log(`ToolbarButton does not have an onClick event`);\n },\n className: 'ToolbarButton'\n};\nToolbarButton.propTypes = {\n active: propTypes.bool.isRequired,\n className: propTypes.string.isRequired,\n text: propTypes.string.isRequired,\n textActive: propTypes.string,\n iconClasses: propTypes.string,\n iconClassesActive: propTypes.string,\n svgUrl: propTypes.string,\n svgUrlActive: propTypes.string,\n onClick: propTypes.func,\n setToolActive: propTypes.func\n};\n\nvar css$l = \".ToolbarSection {\\n float: left;\\n background-color: var(--primary-background-color);\\n border-radius: 8px;\\n}\\n\";\nstyleInject(css$l);\n\nvar ToolbarSection =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ToolbarSection, _PureComponent);\n\n function ToolbarSection() {\n _classCallCheck(this, ToolbarSection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ToolbarSection).apply(this, arguments));\n }\n\n _createClass(ToolbarSection, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var items = this.props.buttons.map(function (item, index) {\n return React.createElement(ToolbarButton, _extends({\n key: index\n }, item, {\n active: item.command === _this.props.activeCommand,\n setToolActive: _this.props.setToolActive\n }));\n });\n return React.createElement(\"div\", {\n className: 'ToolbarSection'\n }, items);\n }\n }]);\n\n return ToolbarSection;\n}(PureComponent);\n\nToolbarSection.propTypes = {\n buttons: propTypes.array.isRequired,\n activeCommand: propTypes.string,\n setToolActive: propTypes.func\n};\n\nvar range = function range(start, end) {\n return new Array(end - start).fill().map(function (d, i) {\n return i + start;\n });\n};\nvar allowedKeys = [8, 13, 27, 32, 46].concat([12, 106, 107, 109, 110, 111], _toConsumableArray(range(218, 220)), _toConsumableArray(range(185, 190)), _toConsumableArray(range(111, 131)), _toConsumableArray(range(32, 41)), _toConsumableArray(range(47, 58)), _toConsumableArray(range(64, 91)));\nvar specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 191: '/',\n 224: 'meta'\n};\n\nvar HotKeysPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HotKeysPreferences, _Component);\n\n function HotKeysPreferences(props) {\n var _this;\n\n _classCallCheck(this, HotKeysPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HotKeysPreferences).call(this, props));\n _this.columns = {};\n Object.keys(_this.props.hotKeysData).forEach(function (key) {\n var hotKey = _this.props.hotKeysData[key];\n\n if (_this.columns.hasOwnProperty(hotKey.column)) {\n _this.columns[hotKey.column].push(key);\n } else {\n _this.columns[hotKey.column] = [key];\n }\n });\n _this.columnClass = \"col-md-\".concat(12 / Object.keys(_this.columns).length || 1);\n _this.state = {\n hotKeys: _this.props.hotKeysData,\n errorMessages: {}\n };\n _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(HotKeysPreferences, [{\n key: \"getKeysPressedArray\",\n value: function getKeysPressedArray(event) {\n var keysPressedArray = [];\n\n if (event.ctrlKey && !event.altKey) {\n keysPressedArray.push('CTRL');\n }\n\n if (event.shiftKey && !event.altKey) {\n keysPressedArray.push('SHIFT');\n }\n\n if (event.altKey && !event.ctrlKey) {\n keysPressedArray.push('ALT');\n }\n\n return keysPressedArray;\n }\n }, {\n key: \"getConflictingCommand\",\n value: function getConflictingCommand(currentToolKey, hotKeyCommand) {\n var _this2 = this;\n\n return Object.keys(this.state.hotKeys).find(function (tool) {\n var value = _this2.state.hotKeys[tool].command;\n return value && value === hotKeyCommand && tool !== currentToolKey;\n });\n }\n }, {\n key: \"updateInputText\",\n value: function updateInputText(toolKey, event) {\n var displayPressedKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pressedKeys = this.getKeysPressedArray(event);\n\n if (displayPressedKey) {\n var specialKeyName = specialKeys[event.which];\n var keyName = specialKeyName || event.key || String.fromCharCode(event.keyCode);\n pressedKeys.push(keyName.toUpperCase());\n }\n\n this.updateHotKeysState(toolKey, pressedKeys.join('+'));\n }\n }, {\n key: \"updateHotKeysState\",\n value: function updateHotKeysState(toolKey, command) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var hotKeys = this.state.hotKeys;\n hotKeys[toolKey].command = command;\n this.setState(hotKeys, callback);\n }\n }, {\n key: \"updateErrorsState\",\n value: function updateErrorsState(toolKey, errorMessage) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var errorMessages = this.state.errorMessages;\n errorMessages[toolKey] = errorMessage;\n this.setState({\n errorMessages: errorMessages\n }, callback);\n }\n }, {\n key: \"onInputKeyDown\",\n value: function onInputKeyDown(event, toolKey) {\n // Prevent ESC key from propagating and closing the modal\n if (event.key === 'Escape') {\n event.stopPropagation();\n }\n\n if (allowedKeys.includes(event.keyCode)) {\n this.updateInputText(toolKey, event, true);\n } else {\n this.updateInputText(toolKey, event, false);\n }\n\n event.preventDefault();\n }\n }, {\n key: \"onChange\",\n value: function onChange(event, toolKey) {\n var _this3 = this;\n\n if (event.ctrlKey || event.altKey || event.shiftKey) {\n return;\n }\n\n var hotKey = this.state.hotKeys[toolKey];\n var command = hotKey.command;\n var pressedKeys = command.split('+');\n var lastPressedKey = pressedKeys[pressedKeys.length - 1].toUpperCase(); // clear the prior errors\n\n this.setState({\n errorMessages: {}\n }, function () {\n // Check if it has a valid modifier\n var isModifier = ['CTRL', 'ALT', 'SHIFT'].includes(lastPressedKey);\n\n if (isModifier) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n /*\n * Check if it has some conflict\n */\n\n\n var conflictedCommandKey = _this3.getConflictingCommand(toolKey, command);\n\n if (conflictedCommandKey) {\n var conflictedCommand = _this3.state.hotKeys[conflictedCommandKey];\n\n _this3.updateErrorsState(toolKey, \"\\\"\".concat(conflictedCommand.label, \"\\\" is already using the \\\"\").concat(conflictedCommand.command, \"\\\" shortcut.\"));\n\n _this3.updateErrorsState(conflictedCommandKey, '');\n\n _this3.updateHotKeysState(toolKey, '');\n\n return;\n }\n /*\n * Check if is a valid combination\n */\n\n\n var modifierCommand = pressedKeys.slice(0, pressedKeys.length - 1).join('+').toUpperCase();\n var disallowedCombinations$$1 = HotKeysPreferences.disallowedCombinations[modifierCommand];\n var hasDisallowedCombinations = disallowedCombinations$$1 ? disallowedCombinations$$1.includes(lastPressedKey) : false;\n\n if (hasDisallowedCombinations) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n });\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(toolKey, hotKey) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: toolKey\n }, React.createElement(\"td\", {\n className: \"text-right p-r-1\"\n }, hotKey.label), React.createElement(\"td\", {\n width: \"200\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel \".concat(this.state.errorMessages[toolKey] !== undefined ? 'state-error' : '', \" \"),\n ref: function ref(input) {\n return _this4[toolKey] = input;\n },\n \"data-key\": \"defaultTool\"\n }, React.createElement(\"input\", {\n readOnly: true,\n type: \"text\",\n value: hotKey.command,\n vali: \"true\",\n className: \"form-control hotkey text-center\",\n onKeyDown: function onKeyDown(event) {\n return _this4.onInputKeyDown(event, toolKey);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.onChange(event, toolKey);\n }\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }), React.createElement(\"span\", {\n className: \"errorMessage\"\n }, this.state.errorMessages[toolKey]))));\n }\n }, {\n key: \"renderColumn\",\n value: function renderColumn(columnIndex, hotkeysColumn) {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n key: columnIndex,\n className: this.columnClass\n }, React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"text-right p-r-1\"\n }, \"Function\"), React.createElement(\"th\", {\n className: \"text-center\"\n }, \"Shortcut\"))), React.createElement(\"tbody\", null, hotkeysColumn.map(function (keyTool) {\n return _this5.renderRow(keyTool, _this5.state.hotKeys[keyTool]);\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return React.createElement(\"div\", {\n className: \"row\"\n }, Object.keys(this.columns).sort().map(function (columnIndex) {\n return _this6.renderColumn(columnIndex, _this6.columns[columnIndex]);\n }));\n }\n }]);\n\n return HotKeysPreferences;\n}(Component);\n\n_defineProperty(HotKeysPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$m = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n.presetIndex {\\n padding: 0px 10px 0px 10px;\\n}\\n\";\nstyleInject(css$m);\n\nvar WindowLevelPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(WindowLevelPreferences, _Component);\n\n function WindowLevelPreferences(props) {\n var _this;\n\n _classCallCheck(this, WindowLevelPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WindowLevelPreferences).call(this, props));\n _this.state = {\n data: _this.props.windowLevelData\n };\n return _this;\n }\n\n _createClass(WindowLevelPreferences, [{\n key: \"onChange\",\n value: function onChange(event, key, field) {\n var data = this.state.data;\n var entry = data[key];\n entry[field] = event.target.value;\n this.setState({\n data: data\n });\n\n if (this.props.onChange) {\n this.props.onChange(data);\n }\n }\n }, {\n key: \"getWLPreferencesRows\",\n value: function getWLPreferencesRows(key) {\n var _this2 = this;\n\n var entry = this.state.data[key];\n return React.createElement(\"tr\", {\n key: key\n }, React.createElement(\"td\", {\n className: \"p-r-1 text-center\"\n }, key), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.description,\n type: \"text\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'description');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.window,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'window');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.level,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'level');\n }\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"p-x-1 text-center presetIndex\"\n }, \"Preset\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Description\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Window\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Level\"))), React.createElement(\"tbody\", null, Object.keys(this.state.data).map(function (key) {\n return _this3.getWLPreferencesRows(key);\n })));\n }\n }]);\n\n return WindowLevelPreferences;\n}(Component);\n\n_defineProperty(WindowLevelPreferences, \"propTypes\", {\n windowLevelData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$n = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n\";\nstyleInject(css$n);\n\nvar UserPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferences, _Component);\n\n function UserPreferences() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, UserPreferences);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(UserPreferences)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n tabIndex: 0\n });\n\n return _this;\n }\n\n _createClass(UserPreferences, [{\n key: \"tabClick\",\n value: function tabClick(tabIndex) {\n this.setState({\n tabIndex: tabIndex\n });\n }\n }, {\n key: \"renderHotkeysTab\",\n value: function renderHotkeysTab() {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(HotKeysPreferences, {\n hotKeysData: this.props.hotKeysData\n })));\n }\n }, {\n key: \"renderWindowLevelTab\",\n value: function renderWindowLevelTab() {\n if (this.props.windowLevelData) {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(WindowLevelPreferences, {\n windowLevelData: this.props.windowLevelData\n })));\n }\n }\n }, {\n key: \"renderTabs\",\n value: function renderTabs(tabIndex) {\n if (tabIndex === 0) {\n return this.renderHotkeysTab();\n } else {\n return this.renderWindowLevelTab();\n }\n }\n }, {\n key: \"getTabClass\",\n value: function getTabClass(tabIndex) {\n return tabIndex === this.state.tabIndex ? 'nav-link active' : 'nav-link';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"dialog-separator-after\"\n }, React.createElement(\"ul\", {\n className: \"nav nav-tabs\"\n }, React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(0);\n },\n className: this.getTabClass(0)\n }, React.createElement(\"button\", null, \"Hotkeys\")), React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(1);\n },\n className: this.getTabClass(1)\n }, React.createElement(\"button\", null, \"Window Level\")))), this.renderTabs(this.state.tabIndex));\n }\n }]);\n\n return UserPreferences;\n}(Component);\n\n_defineProperty(UserPreferences, \"defaultProps\", {\n hotKeysData: {},\n windowLevelData: {}\n});\n\n_defineProperty(UserPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n windowLevelData: propTypes.object.isRequired\n});\n\nvar createChainableTypeChecker_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(createChainableTypeChecker_1);\n\nvar componentOrElement = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(componentOrElement);\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar ownerDocument_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(ownerDocument_1);\n\nvar activeElement_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = interopRequireDefault(ownerDocument_1);\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(activeElement_1);\n\nvar inDOM = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(inDOM);\n\nvar contains = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(contains);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning$1 = function() {};\n\nif (__DEV__) {\n warning$1 = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nvar warning_1 = warning$1;\n\nvar deprecated_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecated;\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] != null) {\n var messageKey = componentName + '.' + propName;\n\n (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n warned[messageKey] = true;\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(deprecated_1);\n\nvar elementType_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(elementType_1);\n\nvar hasClass_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hasClass_1);\n\nvar addClass_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(addClass_1);\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nvar removeClass = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\nvar _class = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = interopRequireDefault(addClass_1);\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = interopRequireDefault(removeClass);\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;\n});\n\nunwrapExports(_class);\nvar _class_1 = _class.addClass;\nvar _class_2 = _class.removeClass;\nvar _class_3 = _class.hasClass;\n\nvar camelize_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelize_1);\n\nvar camelizeStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = interopRequireDefault(camelize_1);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelizeStyle);\n\nvar hyphenate_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenate_1);\n\nvar hyphenateStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = interopRequireDefault(hyphenate_1);\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenateStyle);\n\nvar getComputedStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(getComputedStyle);\n\nvar removeStyle_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(removeStyle_1);\n\nvar properties = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}\n});\n\nunwrapExports(properties);\nvar properties_1 = properties.animationEnd;\nvar properties_2 = properties.animationDelay;\nvar properties_3 = properties.animationTiming;\nvar properties_4 = properties.animationDuration;\nvar properties_5 = properties.animationName;\nvar properties_6 = properties.transitionEnd;\nvar properties_7 = properties.transitionDuration;\nvar properties_8 = properties.transitionDelay;\nvar properties_9 = properties.transitionTiming;\nvar properties_10 = properties.transitionProperty;\nvar properties_11 = properties.transform;\n\nvar isTransform_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isTransform_1);\n\nvar style_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar _hyphenateStyle = interopRequireDefault(hyphenateStyle);\n\nvar _getComputedStyle2 = interopRequireDefault(getComputedStyle);\n\nvar _removeStyle = interopRequireDefault(removeStyle_1);\n\n\n\nvar _isTransform = interopRequireDefault(isTransform_1);\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(style_1);\n\nvar scrollbarSize_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(scrollbarSize_1);\n\nvar isWindow = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isWindow);\n\nvar isOverflowing_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\n\n\nvar _isWindow2 = _interopRequireDefault(isWindow);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument2.default)(node);\n var win = (0, _isWindow2.default)(doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow2.default)(container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isOverflowing_1);\n\nvar manageAriaHidden = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n});\n\nunwrapExports(manageAriaHidden);\nvar manageAriaHidden_1 = manageAriaHidden.ariaHidden;\nvar manageAriaHidden_2 = manageAriaHidden.hideSiblings;\nvar manageAriaHidden_3 = manageAriaHidden.showSiblings;\n\nvar ModalManager_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _class2 = _interopRequireDefault(_class);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\nfunction setContainerStyle(state, container) {\n var style = { overflow: 'hidden' };\n\n // we are only interested in the actual `style` here\n // becasue we will override it\n state.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (state.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n }\n\n (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n var style = _ref.style;\n\n\n Object.keys(style).forEach(function (key) {\n return container.style[key] = style[key];\n });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n var _this = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n _ref2$handleContainer = _ref2.handleContainerOverflow,\n handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n _classCallCheck(this, ModalManager);\n\n this.add = function (modal, container, className) {\n var modalIdx = _this.modals.indexOf(modal);\n var containerIdx = _this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = _this.modals.length;\n _this.modals.push(modal);\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.hideSiblings)(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n _this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n\n overflowing: (0, _isOverflowing2.default)(container)\n };\n\n if (_this.handleContainerOverflow) {\n setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n _this.containers.push(container);\n _this.data.push(data);\n\n return modalIdx;\n };\n\n this.remove = function (modal) {\n var modalIdx = _this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(_this.data, modal);\n var data = _this.data[containerIdx];\n var container = _this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n _this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (data.modals.length === 0) {\n data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n if (_this.handleContainerOverflow) {\n removeContainerStyle(data, container);\n }\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.showSiblings)(container, modal.mountNode);\n }\n _this.containers.splice(containerIdx, 1);\n _this.data.splice(containerIdx, 1);\n } else if (_this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n (0, manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n this.isTopModal = function (modal) {\n return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n };\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ModalManager_1);\n\nvar getContainer_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getContainer;\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(getContainer_1);\n\nvar ownerDocument$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ownerDocument$1);\n\nvar LegacyPortal = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(LegacyPortal);\n\nvar Portal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\n\n\nvar _LegacyPortal2 = _interopRequireDefault(LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Portal_1);\n\nvar RefHolder_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes$$1 = {\n children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n _inherits(RefHolder, _React$Component);\n\n function RefHolder() {\n _classCallCheck(this, RefHolder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n RefHolder.prototype.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes$$1;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(RefHolder_1);\n\nvar on_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(on_1);\n\nvar off_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(off_1);\n\nvar addEventListener = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\n\n\nvar _on2 = _interopRequireDefault(on_1);\n\n\n\nvar _off2 = _interopRequireDefault(off_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addEventListener);\n\nvar addFocusListener_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = void 0;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function remove() {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function remove() {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addFocusListener_1);\n\nvar Modal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _activeElement2 = _interopRequireDefault(activeElement_1);\n\n\n\nvar _contains2 = _interopRequireDefault(contains);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _deprecated2 = _interopRequireDefault(deprecated_1);\n\n\n\nvar _elementType2 = _interopRequireDefault(elementType_1);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\n\n\nvar _ModalManager2 = _interopRequireDefault(ModalManager_1);\n\n\n\nvar _Portal2 = _interopRequireDefault(Portal_1);\n\n\n\nvar _RefHolder2 = _interopRequireDefault(RefHolder_1);\n\n\n\nvar _addEventListener2 = _interopRequireDefault(addEventListener);\n\n\n\nvar _addFocusListener2 = _interopRequireDefault(addFocusListener_1);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n function Modal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Modal.prototype.omitProps = function omitProps(props, propTypes$$1) {\n\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes$$1, prop)) {\n newProps[prop] = props[prop];\n }\n });\n\n return newProps;\n };\n\n Modal.prototype.render = function render() {\n var _props = this.props,\n show = _props.show,\n container = _props.container,\n children = _props.children,\n Transition = _props.transition,\n backdrop = _props.backdrop,\n className = _props.className,\n style = _props.style,\n onExit = _props.onExit,\n onExiting = _props.onExiting,\n onEnter = _props.onEnter,\n onEntering = _props.onEntering,\n onEntered = _props.onEntered;\n\n\n var dialog = _react2.default.Children.only(children);\n var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n var mountModal = show || Transition && !this.state.exited;\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props,\n role = _dialog$props.role,\n tabIndex = _dialog$props.tabIndex;\n\n\n if (role === undefined || tabIndex === undefined) {\n dialog = (0, React.cloneElement)(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2.default.createElement(\n Transition,\n {\n appear: true,\n unmountOnExit: true,\n 'in': show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2.default.createElement(\n _Portal2.default,\n {\n ref: this.setMountNode,\n container: container,\n onRendered: this.onPortalRendered\n },\n _react2.default.createElement(\n 'div',\n _extends({\n ref: this.setModalNodeRef,\n role: role || 'dialog'\n }, filteredProps, {\n style: style,\n className: className\n }),\n backdrop && this.renderBackdrop(),\n _react2.default.createElement(\n _RefHolder2.default,\n { ref: this.setDialogRef },\n dialog\n )\n )\n );\n };\n\n Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n if (!this.props.show && nextProps.show) {\n this.checkForFocus();\n }\n };\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n show = _props2.show,\n transition = _props2.transition;\n\n\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n Modal.prototype.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) {\n return;\n }\n\n var dialogElement = this.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n\n if (!dialogElement.hasAttribute('tabIndex')) {\n (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n dialogElement.setAttribute('tabIndex', -1);\n }\n\n dialogElement.focus();\n }\n };\n\n Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n Modal.prototype.getDialogElement = function getDialogElement() {\n return _reactDom2.default.findDOMNode(this.dialog);\n };\n\n Modal.prototype.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes2.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes2.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes2.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => }\n * ```\n */\n renderBackdrop: _propTypes2.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes2.default.func,\n\n /**\n * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n * @deprecated\n */\n onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes2.default.func,\n\n /**\n * A style object for the backdrop component.\n */\n backdropStyle: _propTypes2.default.object,\n\n /**\n * A css class or classes for the backdrop component.\n */\n backdropClassName: _propTypes2.default.string,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes2.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes2.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the dialog component.\n */\n transition: _elementType2.default,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType2.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes2.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes2.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react2.default.createElement('div', props);\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = { exited: !this.props.show };\n\n this.renderBackdrop = function () {\n var _props3 = _this2.props,\n backdropStyle = _props3.backdropStyle,\n backdropClassName = _props3.backdropClassName,\n renderBackdrop = _props3.renderBackdrop,\n Transition = _props3.backdropTransition;\n\n\n var backdropRef = function backdropRef(ref) {\n return _this2.backdrop = ref;\n };\n\n var backdrop = renderBackdrop({\n ref: backdropRef,\n style: backdropStyle,\n className: backdropClassName,\n onClick: _this2.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2.default.createElement(\n Transition,\n {\n appear: true,\n 'in': _this2.props.show\n },\n backdrop\n );\n }\n\n return backdrop;\n };\n\n this.onPortalRendered = function () {\n _this2.autoFocus();\n\n if (_this2.props.onShow) {\n _this2.props.onShow();\n }\n };\n\n this.onShow = function () {\n var doc = (0, _ownerDocument2.default)(_this2);\n var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n };\n\n this.onHide = function () {\n _this2.props.manager.remove(_this2);\n\n _this2._onDocumentKeydownListener.remove();\n\n _this2._onDocumentKeyupListener.remove();\n\n _this2._onFocusinListener.remove();\n\n if (_this2.props.restoreFocus) {\n _this2.restoreLastFocus();\n }\n };\n\n this.setMountNode = function (ref) {\n _this2.mountNode = ref ? ref.getMountNode() : ref;\n };\n\n this.setModalNodeRef = function (ref) {\n _this2.modalNode = ref;\n };\n\n this.setDialogRef = function (ref) {\n _this2.dialog = ref;\n };\n\n this.handleHidden = function () {\n _this2.setState({ exited: true });\n _this2.onHide();\n\n if (_this2.props.onExited) {\n var _props4;\n\n (_props4 = _this2.props).onExited.apply(_props4, arguments);\n }\n };\n\n this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this2.props.onBackdropClick) {\n _this2.props.onBackdropClick(e);\n }\n\n if (_this2.props.backdrop === true) {\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyDown = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyDown) {\n _this2.props.onEscapeKeyDown(e);\n }\n\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyUp = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyUp) {\n _this2.props.onEscapeKeyUp(e);\n }\n }\n };\n\n this.checkForFocus = function () {\n if (_inDOM2.default) {\n _this2.lastFocus = (0, _activeElement2.default)();\n }\n };\n\n this.enforceFocus = function () {\n if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n return;\n }\n\n var dialogElement = _this2.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n dialogElement.focus();\n }\n };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Modal_1);\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({\n polyfill: polyfill\n});\n\nvar PropTypes = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.'); // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]);\n\nexports.classNamesShape = classNamesShape;\n});\n\nunwrapExports(PropTypes);\nvar PropTypes_1 = PropTypes.transitionTimeout;\nvar PropTypes_2 = PropTypes.classNamesShape;\nvar PropTypes_3 = PropTypes.timeoutsShape;\n\nvar Transition_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes$$1 = _interopRequireWildcard(propTypes);\n\nvar _react = _interopRequireDefault(React);\n\nvar _reactDom = _interopRequireDefault(reactDom);\n\n\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {(state) => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n * this.setState({ in: true });\n * }\n *\n * render() {\n * return (\n *
\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter;\n appear = timeout.appear;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n _this2.onTransitionEnd(node, timeouts.enter, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes$$1.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element.\n * This function is called with the current transition status\n * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n * to apply context specific props to a component.\n *\n * ```jsx\n * \n * {(status) => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes$$1.oneOfType([PropTypes$$1.func.isRequired, PropTypes$$1.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes$$1.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes$$1.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes$$1.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes$$1.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes$$1.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes$$1.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided\n *\n * You may specify a single timeout for all transitions like: `timeout={500}`,\n * or individually like:\n *\n * ```jsx\n * timeout={{\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * @type {number | { enter?: number, exit?: number }}\n */\n timeout: function timeout(props) {\n var pt = process.env.NODE_ENV !== \"production\" ? PropTypes.timeoutsShape : {}; if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes$$1.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, reactLifecyclesCompat_es.polyfill)(Transition);\n\nexports.default = _default;\n});\n\nunwrapExports(Transition_1);\nvar Transition_2 = Transition_1.EXITING;\nvar Transition_3 = Transition_1.ENTERED;\nvar Transition_4 = Transition_1.ENTERING;\nvar Transition_5 = Transition_1.EXITED;\nvar Transition_6 = Transition_1.UNMOUNTED;\n\nvar Fade_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _fadeStyles;\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _Transition2 = _interopRequireDefault(Transition_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[Transition_1.ENTERING] = 'in', _fadeStyles[Transition_1.ENTERED] = 'in', _fadeStyles);\n\nvar Fade = function (_React$Component) {\n _inherits(Fade, _React$Component);\n\n function Fade(props, context) {\n _classCallCheck(this, Fade);\n\n return _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n }\n\n Fade.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['className', 'children']);\n\n return _react2.default.createElement(\n _Transition2.default,\n props,\n function (status, innerProps) {\n return _react2.default.cloneElement(children, _extends({}, innerProps, {\n className: (0, _classnames2.default)('fade', className, children.props.className, fadeStyles[status])\n }));\n }\n );\n };\n\n return Fade;\n}(_react2.default.Component);\n\nexports.default = Fade;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Fade_1);\n\nvar Body = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalBody = function (_React$Component) {\n _inherits(ModalBody, _React$Component);\n\n function ModalBody() {\n _classCallCheck(this, ModalBody);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalBody.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalBody.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalBody.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-body') }),\n children\n );\n };\n\n return ModalBody;\n}(_react2.default.Component);\n\nModalBody.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalBody;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Body);\n\nvar Dismiss_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar chain = function chain(a, b) {\n return function () {\n a && a.apply(undefined, arguments);\n b && b.apply(undefined, arguments);\n };\n};\n\nvar Dismiss = function (_React$Component) {\n _inherits(Dismiss, _React$Component);\n\n function Dismiss() {\n _classCallCheck(this, Dismiss);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Dismiss.prototype.render = function render() {\n var _props = this.props,\n Tag = _props.component,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['component', 'children']);\n\n return _react2.default.createElement(\n Tag,\n _extends({}, props, {\n onClick: chain(props.onClick, this.context.onModalHide)\n }),\n children\n );\n };\n\n return Dismiss;\n}(_react2.default.Component);\n\nDismiss.propTypes = {\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n};\nDismiss.defaultProps = {\n component: 'button'\n};\nDismiss.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = Dismiss;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Dismiss_1);\n\nvar Header = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalHeader = function (_React$Component) {\n _inherits(ModalHeader, _React$Component);\n\n function ModalHeader() {\n _classCallCheck(this, ModalHeader);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalHeader.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalHeader.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n closeButton = _props.closeButton,\n children = _props.children,\n className = _props.className,\n label = _props['aria-label'],\n props = _objectWithoutProperties(_props, ['modalPrefix', 'closeButton', 'children', 'className', 'aria-label']);\n\n var prefix = modalPrefix || ModalHeader.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-header')\n }),\n closeButton && _react2.default.createElement(\n _Dismiss2.default,\n {\n className: 'close',\n 'aria-label': label\n },\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n )\n ),\n children\n );\n };\n\n return ModalHeader;\n}(_react2.default.Component);\n\nModalHeader._isModalHeader = true;\nModalHeader.propTypes = {\n closeButton: _propTypes2.default.bool,\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string,\n\n 'aria-label': _propTypes2.default.string\n};\nModalHeader.defaultProps = {\n closeButton: false,\n 'aria-label': 'Close Modal'\n};\nModalHeader.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = ModalHeader;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Header);\n\nvar Title = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalTitle = function (_React$Component) {\n _inherits(ModalTitle, _React$Component);\n\n function ModalTitle() {\n _classCallCheck(this, ModalTitle);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalTitle.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalTitle.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'className']);\n\n var prefix = modalPrefix || ModalTitle.getDefaultPrefix();\n\n return _react2.default.createElement('h4', _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-title')\n }));\n };\n\n return ModalTitle;\n}(_react2.default.Component);\n\nModalTitle.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\nexports.default = ModalTitle;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Title);\n\nvar Footer = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalFooter = function (_React$Component) {\n _inherits(ModalFooter, _React$Component);\n\n function ModalFooter() {\n _classCallCheck(this, ModalFooter);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalFooter.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalFooter.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalFooter.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-footer') }),\n children\n );\n };\n\n return ModalFooter;\n}(_react2.default.Component);\n\nModalFooter.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalFooter;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Footer);\n\nvar Modal_1$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\n\n\nvar _Modal2 = _interopRequireDefault(Modal_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nvar _Fade2 = _interopRequireDefault(Fade_1);\n\n\n\nvar _Body2 = _interopRequireDefault(Body);\n\n\n\nvar _Header2 = _interopRequireDefault(Header);\n\n\n\nvar _Title2 = _interopRequireDefault(Title);\n\n\n\nvar _Footer2 = _interopRequireDefault(Footer);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar baseIndex = {};\nvar PREFIX = 'modal';\n\nvar getZIndex = void 0;\n\nvar omit = function omit(obj, keys) {\n return Object.keys(obj).reduce(function (o, key) {\n if (keys.indexOf(key) === -1) o[key] = obj[key];\n return o;\n }, {});\n};\n\nfunction DialogTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.TRANSITION_DURATION }));\n}\nfunction BackdropTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));\n}\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n Modal.getDefaultPrefix = function getDefaultPrefix() {\n return PREFIX;\n };\n\n Modal.prototype.getChildContext = function getChildContext() {\n return this._context || (this._context = { onModalHide: this.props.onHide });\n };\n\n function Modal() {\n _classCallCheck(this, Modal);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n _this.handleEntering = _this.handleEntering.bind(_this);\n _this.handleExiting = _this.handleExiting.bind(_this);\n\n _this.state = {\n classes: ''\n };\n return _this;\n }\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n getZIndex = getZIndex || function () {\n var modal = document.createElement('div'),\n backdrop = document.createElement('div'),\n zIndexFactor = void 0;\n\n modal.className = 'modal hide';\n backdrop.className = 'modal-backdrop hide';\n\n document.body.appendChild(modal);\n document.body.appendChild(backdrop);\n\n baseIndex.modal = +(0, _style2.default)(modal, 'z-index');\n baseIndex.backdrop = +(0, _style2.default)(backdrop, 'z-index');\n zIndexFactor = baseIndex.modal - baseIndex.backdrop;\n\n document.body.removeChild(modal);\n document.body.removeChild(backdrop);\n\n return function (type) {\n return baseIndex[type] + zIndexFactor * (_this2.props.manager.modals.length - 1);\n };\n }();\n };\n\n Modal.prototype.handleEntering = function handleEntering() {\n this._show.apply(this, arguments);\n\n if (this.props.onEntering) {\n this.props.onEntering();\n }\n };\n\n Modal.prototype.handleExiting = function handleExiting() {\n this._removeAttentionClasses();\n if (this.props.onExiting) {\n this.props.onExiting();\n }\n };\n\n Modal.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n keyboard = _props.keyboard,\n transition = _props.transition,\n modalPrefix = _props.modalPrefix,\n dialogClassName = _props.dialogClassName,\n container = _props.container,\n onEnter = _props.onEnter,\n onEntered = _props.onEntered,\n onExit = _props.onExit,\n onExited = _props.onExited,\n props = _objectWithoutProperties(_props, ['className', 'children', 'keyboard', 'transition', 'modalPrefix', 'dialogClassName', 'container', 'onEnter', 'onEntered', 'onExit', 'onExited']);\n\n var _state = this.state,\n dialog = _state.dialog,\n classes = _state.classes,\n backdrop = _state.backdrop;\n\n\n delete props.manager;\n var elementProps = omit(props, Object.keys(Modal.propTypes));\n\n var prefix = modalPrefix || Modal.getDefaultPrefix();\n\n if (transition === true) transition = DialogTransition;\n\n var modal = _react2.default.createElement(\n 'div',\n _extends({}, elementProps, {\n ref: function ref(r) {\n return _this3.dialog = r;\n },\n style: dialog,\n className: (0, _classnames2.default)(className, prefix, { in: props.show && !transition }),\n onClick: this.props.backdrop ? function (e) {\n return _this3.handleBackdropClick(e);\n } : null\n }),\n _react2.default.createElement(\n 'div',\n {\n key: 'modal',\n ref: function ref(r) {\n return _this3.innerRef = r;\n },\n className: (0, _classnames2.default)(prefix + '-dialog', dialogClassName, classes, (props.small || props.sm) && prefix + '-sm', (props.large || props.lg) && prefix + '-lg')\n },\n _react2.default.createElement(\n 'div',\n { className: prefix + '-content' },\n children\n )\n )\n );\n\n return _react2.default.createElement(\n _Modal2.default,\n {\n keyboard: keyboard,\n ref: function ref(_ref) {\n _this3.modal = _ref && _ref.modal;\n _this3.backdrop = _ref && _ref.backdrop;\n },\n container: container,\n backdrop: props.backdrop,\n show: props.show,\n backdropStyle: backdrop,\n backdropClassName: prefix + '-backdrop',\n containerClassName: prefix + '-open',\n transition: transition || undefined,\n backdropTransition: transition ? BackdropTransition : undefined,\n onHide: this.props.onHide,\n onEnter: onEnter,\n onEntering: this.handleEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: this.handleExiting,\n onExited: onExited\n },\n modal\n );\n };\n\n Modal.prototype.attention = function attention() {\n var _this4 = this;\n\n var attentionClass = this.props.attentionClass;\n\n\n if (attentionClass) this.setState({ classes: '' }, function () {\n if (_this4.props.show) {\n // eslint-disable-next-line no-unused-expressions\n _this4.innerRef.offsetWidth;\n _this4.setState({\n classes: attentionClass + ' animated'\n });\n }\n });\n };\n\n Modal.prototype.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) return;\n if (this.props.backdrop === 'static') return this.attention();\n\n this.props.onHide();\n };\n\n Modal.prototype._show = function _show() {\n if (this.props.show) this.setState(this._getStyles());\n };\n\n Modal.prototype._getStyles = function _getStyles() {\n if (!_inDOM2.default) return {};\n\n var node = (0, reactDom.findDOMNode)(this.dialog),\n doc = (0, _ownerDocument2.default)(node),\n scrollHt = node.scrollHeight,\n bodyIsOverflowing = (0, _isOverflowing2.default)(this.props.container || doc.body),\n modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;\n\n return {\n dialog: {\n zIndex: getZIndex('modal'),\n paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0,\n paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0\n },\n backdrop: {\n zIndex: getZIndex('backdrop')\n }\n };\n };\n\n Modal.prototype._removeAttentionClasses = function _removeAttentionClasses() {\n this.setState({ classes: '' });\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = {\n show: _propTypes2.default.bool,\n\n /** sizes **/\n small: _propTypes2.default.bool,\n sm: _propTypes2.default.bool,\n large: _propTypes2.default.bool,\n lg: _propTypes2.default.bool,\n /** --- **/\n\n backdrop: _propTypes2.default.oneOf(['static', true, false]),\n keyboard: _propTypes2.default.bool,\n animate: _propTypes2.default.bool,\n transition: _propTypes2.default.any,\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onHide: _propTypes2.default.func,\n onEnter: _propTypes2.default.func,\n onEntering: _propTypes2.default.func,\n onEntered: _propTypes2.default.func,\n onExit: _propTypes2.default.func,\n onExiting: _propTypes2.default.func,\n onExited: _propTypes2.default.func,\n\n modalPrefix: _propTypes2.default.string,\n dialogClassName: _propTypes2.default.string,\n attentionClass: _propTypes2.default.string\n};\nModal.defaultProps = {\n backdrop: true,\n keyboard: true,\n animate: true,\n transition: true,\n container: _inDOM2.default ? document.body : null,\n attentionClass: 'shake',\n manager: (_Modal2.default.getDefaultProps ? _Modal2.default.getDefaultProps() : _Modal2.default.defaultProps).manager\n};\nModal.childContextTypes = {\n onModalHide: _propTypes2.default.func\n};\n\n\nModal.injectCSSPrefix = function (prefix) {\n PREFIX = prefix;\n};\n\nfunction getDefaultPrefix() {\n return PREFIX;\n}\n\n_Body2.default.getDefaultPrefix = getDefaultPrefix;\n_Header2.default.getDefaultPrefix = getDefaultPrefix;\n_Title2.default.getDefaultPrefix = getDefaultPrefix;\n_Footer2.default.getDefaultPrefix = getDefaultPrefix;\n\nModal.Body = _Body2.default;\nModal.Header = _Header2.default;\nModal.Title = _Title2.default;\nModal.Footer = _Footer2.default;\nModal.Dismiss = _Dismiss2.default;\n\nModal.BaseModal = Modal;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nvar Modal$1 = unwrapExports(Modal_1$1);\n\nvar css$o = \"/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/*\\nAnimate.css - http://daneden.me/animate\\nLicensed under the ☺ license (http://licence.visualidiot.com/)\\nCopyright (c) 2012 Dan Eden*/\\n.animated {\\n -webkit-animation-duration: 1s;\\n -moz-animation-duration: 1s;\\n -o-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n@-webkit-keyframes shake {\\n 0%,\\n 100% {\\n -webkit-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -webkit-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -webkit-transform: translateX(10px);\\n }\\n}\\n@-moz-keyframes shake {\\n 0%,\\n 100% {\\n -moz-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -moz-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -moz-transform: translateX(10px);\\n }\\n}\\n@-o-keyframes shake {\\n 0%,\\n 100% {\\n -o-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -o-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -o-transform: translateX(10px);\\n }\\n}\\n@keyframes shake {\\n 0%,\\n 100% {\\n transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n transform: translateX(10px);\\n }\\n}\\n.shake {\\n -webkit-animation-name: shake;\\n -moz-animation-name: shake;\\n -o-animation-name: shake;\\n animation-name: shake;\\n}\\n.modal {\\n display: block;\\n}\\n.modal-content > .close {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n}\\n@media (min-width: 768px) {\\n .modal-sm > .modal-dialog {\\n width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg > .modal-dialog {\\n width: 900px;\\n }\\n}\\n\";\nstyleInject(css$o);\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\nvar css$p = \":root {\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --ui-border-color: #44626f;\\n}\\n.modal-dialog .modal-content {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-border-color);\\n color: var(--text-secondary-color);\\n border: 0;\\n}\\n.modal-dialog .modal-content .modal-header,\\n.modal-dialog .modal-content .modal-footer {\\n border-color: var(--ui-border-color);\\n}\\n.modal-dialog .modal-content .dialog-separator,\\n.modal-dialog .modal-content .dialog-separator-before,\\n.modal-dialog .modal-content .dialog-separator-after {\\n position: relative;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-before:before,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n background-color: #000;\\n content: ' ';\\n display: block;\\n height: 3px;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator-before:before {\\n top: -3px;\\n}\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n bottom: -3px;\\n}\\n.modal-dialog .modal-content .modal-body {\\n color: var(--text-primary-color);\\n padding: 16px 22px 0px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar {\\n width: 6px;\\n background-color: var(--ui-gray-dark);\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar-thumb {\\n background-color: var(--ui-gray-light);\\n border-radius: 5px;\\n}\\n.modal-dialog .modal-content .modal-header {\\n border-bottom-width: 3px;\\n border-bottom-style: solid;\\n border-bottom-color: #000;\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-header h4 {\\n color: var(--text-secondary-color);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 24px;\\n padding-right: 24px;\\n}\\n.modal-dialog .modal-content .modal-footer {\\n border-top: 0;\\n padding-top: 0;\\n}\\n.modal-dialog .card-round {\\n background-color: var(--ui-gray-dark);\\n padding: 10px;\\n}\\n.modal-dialog .modal-header {\\n position: relative;\\n}\\n.button-close,\\n.modal-dialog button.close {\\n color: var(--text-secondary-color);\\n height: 25px;\\n opacity: 1;\\n overflow: hidden;\\n text-align: center;\\n text-shadow: none;\\n width: 25px;\\n font-size: 25px;\\n font-weight: lighter;\\n}\\n\";\nstyleInject(css$p);\n\nvar UserPreferencesModal =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferencesModal, _Component);\n\n // TODO: Make this component more generic to allow things other than W/L and hotkeys...\n function UserPreferencesModal(props) {\n var _this;\n\n _classCallCheck(this, UserPreferencesModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UserPreferencesModal).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"save\", function () {\n _this.props.onSave({\n windowLevelData: _this.state.windowLevelData,\n hotKeysData: _this.state.hotKeysData\n });\n });\n\n _this.state = {\n windowLevelData: lodash_clonedeep(props.windowLevelData),\n hotKeysData: lodash_clonedeep(props.hotKeysData)\n };\n return _this;\n }\n\n _createClass(UserPreferencesModal, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prev, next) {\n var newStateData = {};\n\n if (!lodash_isequal(prev.windowLevelData, next.windowLevelData)) {\n newStateData.windowLevelData = prev.windowLevelData;\n }\n\n if (!lodash_isequal(prev.hotKeysData, next.hotKeysData)) {\n newStateData.hotKeysData = prev.hotKeysData;\n }\n\n if (newStateData.hotKeysData || newStateData.windowLevelData) {\n this.setState(newStateData);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Modal$1, {\n show: this.props.isOpen,\n onHide: this.props.onCancel,\n \"aria-labelledby\": \"ModalHeader\",\n className: \"modal fade themed in\",\n backdrop: false,\n large: true,\n keyboard: false\n }, React.createElement(Modal$1.Header, {\n closeButton: true\n }, React.createElement(Modal$1.Title, null, \"User Preferences\")), React.createElement(Modal$1.Body, null, React.createElement(UserPreferences, {\n windowLevelData: this.state.windowLevelData,\n hotKeysData: this.state.hotKeysData\n })), React.createElement(Modal$1.Footer, null, React.createElement(\"button\", {\n className: \"btn btn-danger pull-left\",\n onClick: this.props.onResetToDefaults\n }, \"Reset to Defaults\"), React.createElement(Modal$1.Dismiss, {\n className: \"btn btn-default\"\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.save\n }, \"Save\")));\n }\n }]);\n\n return UserPreferencesModal;\n}(Component);\n\n_defineProperty(UserPreferencesModal, \"propTypes\", {\n isOpen: propTypes.bool.isRequired,\n onCancel: propTypes.func,\n onSave: propTypes.func,\n onResetToDefaults: propTypes.func,\n windowLevelData: propTypes.object,\n hotKeysData: propTypes.object\n});\n\n_defineProperty(UserPreferencesModal, \"defaultProps\", {\n isOpen: false\n});\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = _baseRest(function(arrays) {\n return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));\n});\n\nvar union_1 = union;\n\nvar EnterLeaveCounter_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = union_1(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without_1(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n});\n\nunwrapExports(EnterLeaveCounter_1);\n\nvar BrowserDetector = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.isFirefox = memoize_1(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = memoize_1(function () { return Boolean(window.safari); });\n});\n\nunwrapExports(BrowserDetector);\nvar BrowserDetector_1 = BrowserDetector.isFirefox;\nvar BrowserDetector_2 = BrowserDetector.isSafari;\n\nvar MonotonicInterpolant_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n});\n\nunwrapExports(MonotonicInterpolant_1);\n\nvar OffsetUtils = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n});\n\nunwrapExports(OffsetUtils);\nvar OffsetUtils_1 = OffsetUtils.getNodeClientOffset;\nvar OffsetUtils_2 = OffsetUtils.getEventClientOffset;\nvar OffsetUtils_3 = OffsetUtils.getDragPreviewOffset;\n\nvar NativeTypes = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n});\n\nunwrapExports(NativeTypes);\nvar NativeTypes_1 = NativeTypes.FILE;\nvar NativeTypes_2 = NativeTypes.URL;\nvar NativeTypes_3 = NativeTypes.TEXT;\n\nvar NativeDragSources = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, null);\n return result != null ? result : defaultValue;\n}\nvar nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n },\n _a[NativeTypes.URL] = {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n _a[NativeTypes.TEXT] = {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n _a);\nfunction createNativeDragSource(type) {\n var _a = nativeTypesConfig[type], exposeProperty = _a.exposeProperty, matchesTypes = _a.matchesTypes, getData = _a.getData;\n return /** @class */ (function () {\n function NativeDragSource() {\n var _a;\n this.item = (_a = {},\n Object.defineProperty(_a, exposeProperty, {\n get: function () {\n // tslint:disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + exposeProperty + \"\\\" until the drop event.\");\n return null;\n },\n enumerable: true,\n configurable: true\n }),\n _a);\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n }());\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n});\n\nunwrapExports(NativeDragSources);\nvar NativeDragSources_1 = NativeDragSources.createNativeDragSource;\nvar NativeDragSources_2 = NativeDragSources.matchNativeItemType;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$a.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq_1(value, objectProto$a[key]) && !hasOwnProperty$9.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nvar defaults_1 = defaults;\n\nvar HTML5Backend_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return ((!!document && document.body.contains(node)) ||\n (!!_this.window && _this.window.document.body.contains(node)));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (!dataTransfer.types &&\n (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n else {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.context = manager.getContext();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n if (this.context && this.context.window) {\n return this.context.window;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return defaults_1(sourceNodeOptions || {}, {\n dropEffect: this.altKeyPressed ? 'copy' : 'move',\n });\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return defaults_1(sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false,\n });\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n var SourceType = NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n});\n\nunwrapExports(HTML5Backend_1);\n\nvar getEmptyImage_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.default = getEmptyImage;\n});\n\nunwrapExports(getEmptyImage_1);\n\nvar lib$2 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nexports.getEmptyImage = getEmptyImage_1.default;\n\nexports.NativeTypes = NativeTypes;\nfunction createHTML5Backend(manager) {\n return new HTML5Backend_1.default(manager);\n}\nexports.default = createHTML5Backend;\n});\n\nvar HTML5Backend$1 = unwrapExports(lib$2);\nvar lib_1$1 = lib$2.getEmptyImage;\nvar lib_2$1 = lib$2.NativeTypes;\n\n// TODO: Find a way for this context to be used in the parent application as well.\n\nfunction ViewerbaseDragDropContext(DecoratedClass) {\n return lib_1(HTML5Backend$1, null, true)(DecoratedClass);\n}\n\nexport { CineDialog, ExampleDropTarget$1 as ExampleDropTarget, LayoutButton, LayoutChooser, LayoutManager, LayoutPanelDropTarget$1 as LayoutPanelDropTarget, MeasurementTable, MeasurementTableItem, PlayClipButton, RoundedButtonGroup, ScrollableArea, SelectTree, SimpleDialog, StudyBrowser, StudyList, TableList, TableListItem, ThumbnailEntry, Toolbar, ToolbarSection, UserPreferences, UserPreferencesModal, ViewerbaseDragDropContext, Dropdown };\n//# sourceMappingURL=index.es.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport { Dropdown } from \"react-viewerbase\";\nimport './Header.css';\nimport list from './HeaderMenuList.json';\n//import Icons from \"../../images/icons.svg\";\n\nconst Icons = '/icons.svg';\n\nfunction Header({ home, location }) {\n const { state } = location\n\n return (\n
\n
\n {\n state && state.studyLink &&\n \n Back to Viewer\n \n }\n\n \n \n \n \n
Open Health Imaging Foundation
\n
\n\n {!home &&\n Study list\n }\n
\n\n\n
\n \n INVESTIGATIONAL USE ONLY\n \n \n
\n\n
\n )\n}\n\nHeader.propTypes = {\n home: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired\n};\n\nHeader.defaultProps = {\n home: true\n};\n\nexport default withRouter(Header)\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","import { connect } from 'react-redux';\nimport { StudyBrowser } from 'react-viewerbase';\nimport cloneDeep from 'lodash.clonedeep';\n\n// TODO\n// - Determine in which display set is active from Redux (activeViewportIndex and layout viewportData)\n// - Pass in errors and stack loading progress from Redux\nconst mapStateToProps = (state, ownProps) => {\n // If we know that the stack loading progress details have changed,\n // we can try to update the component state so that the thumbnail\n // progress bar is updated\n const stackLoadingProgressMap = state.loading.progress;\n const studiesWithLoadingData = cloneDeep(ownProps.studies);\n\n studiesWithLoadingData.forEach(study => {\n study.thumbnails.forEach(data => {\n const { displaySetInstanceUid } = data\n const stackId = `StackProgress:${displaySetInstanceUid}`;\n const stackProgressData = stackLoadingProgressMap[stackId];\n\n let stackPercentComplete = 0;\n if (stackProgressData) {\n stackPercentComplete = stackProgressData.percentComplete;\n }\n\n data.stackPercentComplete = stackPercentComplete;\n })\n });\n\n return {\n studies: studiesWithLoadingData\n };\n};\n\nconst ConnectedStudyBrowser = connect(\n mapStateToProps,\n null\n)(StudyBrowser);\n\nexport default ConnectedStudyBrowser;\n","import { connect } from 'react-redux';\nimport { LayoutManager } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\n\nconst mapStateToProps = state => {\n const viewportPluginIds = state.plugins.availablePlugins.filter(plugin => plugin.type === OHIF.plugins.PLUGIN_TYPES.VIEWPORT).map(plugin => plugin.id);\n const availablePlugins = {}\n viewportPluginIds.forEach(id => {\n const plugin = OHIF.plugins.availablePlugins.find(plugin => plugin.id === id);\n if (plugin) {\n availablePlugins[id] = plugin.component;\n }\n });\n\n // TODO Use something like state.plugins.defaultPlugin[OHIF.plugins.PLUGIN_TYPES.VIEWPORT]\n let defaultPlugin;\n if (viewportPluginIds && viewportPluginIds.length) {\n defaultPlugin = viewportPluginIds[0];\n }\n\n return {\n layout: state.viewports.layout,\n activeViewportIndex: state.viewports.activeViewportIndex,\n availablePlugins,\n defaultPlugin\n };\n};\n\nconst ConnectedLayoutManager = connect(\n mapStateToProps,\n null\n)(LayoutManager);\n\nexport default ConnectedLayoutManager;\n","import { Component } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport cornerstoneMath from \"cornerstone-math\";\nimport { OHIF } from 'ohif-core';\nimport ConnectedLayoutManager from './ConnectedLayoutManager.js';\nimport './ViewerMain.css';\n\n// Attempt to fix weird undefined dep issue\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\n\nclass ViewerMain extends Component {\n state = {\n viewportData: [],\n };\n\n static propTypes = {\n studies: PropTypes.array.isRequired\n };\n\n getDisplaySetsWithImages(studies) {\n const displaySets = [];\n studies.forEach((study) => {\n study.displaySets.forEach(dSet => {\n if (dSet.images.length) {\n displaySets.push(dSet);\n }\n });\n });\n\n return displaySets;\n }\n\n findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {\n const study = studies.find(study => {\n return study.studyInstanceUid === studyInstanceUid;\n });\n\n if (!study) {\n return;\n }\n\n return study.displaySets.find(displaySet => {\n return displaySet.displaySetInstanceUid === displaySetInstanceUid;\n });\n }\n\n componentDidMount() {\n // Add beforeUnload event handler to check for unsaved changes\n //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Get all the display sets for the viewer studies\n const displaySets = this.getDisplaySetsWithImages(this.props.studies);\n\n this.setState({\n viewportData: displaySets\n });\n }\n\n setViewportData = ({viewportIndex, item}) => {\n // TODO: Replace this with mapDispatchToProps call\n // if we decide to put viewport info into redux\n\n // Note: Use Slice because React does a shallow equality check. Mutating the array\n // would not trigger a re-render. We have to create a copy.\n debugger;\n console.warn(item);\n const updatedViewportData = this.state.viewportData.slice(0);\n\n const displaySet = this.findDisplaySet(this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid);\n\n console.warn(displaySet);\n\n updatedViewportData[viewportIndex] = Object.assign({}, displaySet);\n\n this.setState({\n viewportData: updatedViewportData\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n\n componentWillUnmount() {\n // Remove beforeUnload event handler...\n //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Destroy the synchronizer used to update reference lines\n OHIF.viewer.updateImageSynchronizer.destroy();\n\n // TODO: Instruct all plugins to clean up themselves\n //\n // Clear references to all stacks in the StackManager\n //StackManager.clearStacks();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n }\n}\n\nexport default ViewerMain;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedStudyBrowser from './ConnectedStudyBrowser.js';\nimport ViewerMain from './ViewerMain.js';\nimport './FlexboxLayout.css';\n\nclass FlexboxLayout extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n studiesForBrowser: []\n };\n\n componentDidMount() {\n const studiesForBrowser = this.getStudiesForBrowser();\n\n this.setState({\n studiesForBrowser\n });\n }\n\n getStudiesForBrowser = () => {\n const { studies } = this.props;\n\n // TODO[react]:\n // - Add sorting of display sets\n // - Add useMiddleSeriesInstanceAsThumbnail\n // - Add showStackLoadingProgressBar option\n return studies.map((study) => {\n const { studyInstanceUid } = study;\n\n const thumbnails = study.displaySets.map((displaySet) => {\n const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet;\n const imageId = displaySet.images[0].getImageId();\n\n return {\n imageId,\n displaySetInstanceUid,\n seriesDescription,\n seriesNumber,\n instanceNumber,\n numImageFrames,\n };\n });\n\n return {\n studyInstanceUid,\n thumbnails\n };\n });\n }\n\n render() {\n let mainContentClassName = \"main-content\"\n if (this.props.leftSidebarOpen) {\n mainContentClassName += ' sidebar-left-open';\n }\n\n if (this.props.rightSidebarOpen) {\n mainContentClassName += ' sidebar-right-open';\n }\n\n // TODO[react]: Add measurementLightTable\n return (\n
\n
\n \n
\n
\n \n
\n {/*
\n {{> measurementLightTable (clone this)}}\n
*/}\n
\n );\n }\n}\n\nexport default FlexboxLayout;\n","import { connect } from 'react-redux';\nimport FlexboxLayout from './FlexboxLayout';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen,\n };\n};\n\nconst ConnectedFlexboxLayout = connect(\n mapStateToProps,\n null\n)(FlexboxLayout);\n\nexport default ConnectedFlexboxLayout;\n","import { connect } from 'react-redux';\nimport { ToolbarSection } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setToolActive } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n return {\n buttons: state.tools.buttons,\n activeCommand: activeButton && activeButton.command\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n setToolActive: tool => {\n dispatch(setToolActive(tool.command))\n }\n };\n};\n\nconst ConnectedToolbarSection = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarSection);\n\nexport default ConnectedToolbarSection;\n","import { connect } from 'react-redux';\nimport { LayoutButton } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setLayout } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n return {\n currentLayout: state.viewports.layout,\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n // TODO: Change if layout switched becomes more complex\n onChange: selectedCell => {\n let viewports = [];\n const rows = selectedCell.row + 1;\n const columns = selectedCell.col + 1;\n const numViewports = rows * columns;\n for (let i = 0; i < numViewports; i++) {\n viewports.push({\n height: `${100 / rows}%`,\n width: `${100 / columns}%`\n });\n }\n const layout = {\n viewports\n };\n\n dispatch(setLayout(layout))\n }\n };\n};\n\nconst ConnectedLayoutButton = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutButton);\n\nexport default ConnectedLayoutButton;\n","import { connect } from 'react-redux';\nimport { CineDialog } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\nimport cloneDeep from 'lodash.clonedeep';\n\nconst { setViewportSpecificData } = OHIF.redux.actions;\n\n// TODO: I'm guessing this function will be used in other connect locations\n// so we might want to put it somewhere shared\nfunction getActiveViewportSpecificData(state) {\n const { viewportSpecificData, activeViewportIndex } = state.viewports;\n return viewportSpecificData[activeViewportIndex];\n}\n\nconst mapStateToProps = state => {\n // TODO:\n // - Test if including CineDialog in the toolbarRow will prevent it\n // from hovering over the rest of the UI when visible.\n //\n // - Create custom ToolbarButton which just shows Play state\n // - Connect this ToolbarButton to Redux\n const activeViewportSpecificData = getActiveViewportSpecificData(state);\n\n let stack = {\n imageIds: [],\n currentImageIdIndex: 0\n };\n if (activeViewportSpecificData && activeViewportSpecificData.stack) {\n stack = activeViewportSpecificData.stack\n }\n\n let cine = {\n isPlaying: false,\n cineFrameRate: 24\n };\n if (activeViewportSpecificData && activeViewportSpecificData.cine) {\n cine = activeViewportSpecificData.cine\n }\n\n\n // TODO: activeViewportStackData won't currently change anything on\n // CornerstoneViewport. The updates are too frequent and it's killing\n // performance. Need to revisit how we can do this.\n return {\n activeViewportStackData: stack,\n activeViewportCineData: cine,\n activeViewportIndex: state.viewports.activeViewportIndex\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n dispatchSetViewportSpecificData: (viewportIndex, data) => {\n dispatch(setViewportSpecificData(viewportIndex, data));\n },\n };\n};\n\nconst mergeProps = (propsFromState, propsFromDispatch, ownProps) => {\n const { activeViewportStackData, activeViewportCineData, activeViewportIndex } = propsFromState;\n\n return {\n cineFrameRate: activeViewportCineData.cineFrameRate,\n isPlaying: activeViewportCineData.isPlaying,\n onPlayPauseChanged: isPlaying => {\n const cine = cloneDeep(activeViewportCineData);\n cine.isPlaying = !cine.isPlaying;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onFrameRateChanged: frameRate => {\n const cine = cloneDeep(activeViewportCineData);\n cine.cineFrameRate = frameRate;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onClickNextButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n const largestPossibleIndex = stack.imageIds.length - 1;\n stack.currentImageIdIndex = Math.min(stack.currentImageIdIndex + 1, largestPossibleIndex)\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickBackButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = Math.max(stack.currentImageIdIndex - 1, 0);\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToStart: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = 0;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToEnd: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = stack.imageIds.length;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n }\n };\n};\n\nconst ConnectedCineDialog = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(CineDialog);\n\nexport default ConnectedCineDialog;\n","import React, { Component } from \"react\";\nimport ConnectedToolbarSection from './ConnectedToolbarSection';\nimport ConnectedLayoutButton from './ConnectedLayoutButton';\nimport ConnectedCineDialog from './ConnectedCineDialog.js';\nimport PropTypes from 'prop-types';\nimport { RoundedButtonGroup } from 'react-viewerbase';\nimport './ToolbarRow.css';\n//import Icons from \"../images/icons.svg\"\n\nconst Icons = '/icons.svg';\n\nclass ToolbarRow extends Component {\n static propTypes = {\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n setLeftSidebarOpen: PropTypes.func,\n setRightSidebarOpen: PropTypes.func\n };\n\n static defaultProps = {\n leftSidebarOpen: false,\n rightSidebarOpen: false\n };\n\n onLeftSidebarValueChanged = (value) => {\n this.props.setLeftSidebarOpen(!!value);\n }\n\n render() {\n const leftSidebarToggle = [{\n value: 'studies',\n svgLink: `${Icons}#icon-studies`,\n svgWidth: 15,\n svgHeight: 13,\n bottomLabel: 'Series',\n }];\n\n const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null;\n\n return (
\n
\n \n
\n \n \n {/* TODO: Putting cine dialog here for now */}\n
\n \n
\n
\n {/* > roundedButtonGroup rightSidebarToggleButtonData */}\n
\n
\n );\n }\n}\n\nexport default ToolbarRow;\n","export const setLeftSidebarOpen = state => ({\n type: 'SET_LEFT_SIDEBAR_OPEN',\n state\n});\n\nexport const setRightSidebarOpen = state => ({\n type: 'SET_RIGHT_SIDEBAR_OPEN',\n state\n});\n\nconst actions = {\n setLeftSidebarOpen,\n setRightSidebarOpen\n};\n\nexport default actions;\n","import { connect } from 'react-redux';\nimport ToolbarRow from './ToolbarRow';\nimport { setLeftSidebarOpen, setRightSidebarOpen } from '../redux/actions.js';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen\n };\n};\n\n\nconst mapDispatchToProps = dispatch => {\n return {\n setLeftSidebarOpen: state => {\n dispatch(setLeftSidebarOpen(state))\n },\n setRightSidebarOpen: state => {\n dispatch(setRightSidebarOpen(state))\n }\n };\n};\n\nconst ConnectedToolbarRow = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarRow);\n\nexport default ConnectedToolbarRow;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nclass StudyLoadingMonitor extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n setStudyLoadingProgress: PropTypes.func.isRequired,\n clearStudyLoadingProgress: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n // TODO: This is pretty ugly. The thing is that the StudyLoadingListener\n // needs to update the Redux store, but shouldn't know that it exists.\n // I am therefore passing in some functions to update the store instead,\n // but this should definitely be cleaned up somehow.\n const options = {\n _setProgressData: (progressId, progressData) => {\n this.props.setStudyLoadingProgress(progressId, progressData)\n },\n _clearProgressById: (progressId) => {\n this.props.clearStudyLoadingProgress(progressId)\n }\n }\n\n const { StudyLoadingListener } = OHIF.classes;\n this.studyLoadingListener = StudyLoadingListener.getInstance(options);\n this.studyLoadingListener.clear();\n this.studyLoadingListener.addStudies(this.props.studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Destroy stack loading listeners when we close the viewer\n this.studyLoadingListener.clear();\n }\n}\n\n\nexport default StudyLoadingMonitor;\n","import { connect } from 'react-redux';\nimport StudyLoadingMonitor from '../components/StudyLoadingMonitor.js';\nimport OHIF from 'ohif-core'\n\nconst { setStudyLoadingProgress, clearStudyLoadingProgress } = OHIF.redux.actions;\n\nconst mapDispatchToProps = dispatch => {\n return {\n setStudyLoadingProgress: (progressId, progressData) => {\n dispatch(setStudyLoadingProgress(progressId, progressData))\n },\n clearStudyLoadingProgress: progressId => {\n dispatch(clearStudyLoadingProgress(progressId))\n }\n };\n};\n\nconst ConnectedStudyLoadingMonitor = connect(\n null,\n mapDispatchToProps\n)(StudyLoadingMonitor);\n\nexport default ConnectedStudyLoadingMonitor;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nconst { StudyPrefetcher } = OHIF.classes;\n\nclass StudyPrefetcherComponent extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n componentDidMount() {\n const { studies } = this.props;\n\n this.studyPrefetcher = StudyPrefetcher.getInstance();\n this.studyPrefetcher.setStudies(studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Stop prefetching when we close the viewer\n this.studyPrefetcher.destroy();\n }\n}\n\n\nexport default StudyPrefetcherComponent;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport OHIF from 'ohif-core';\n//import { CineDialog } from 'react-viewerbase';\n\nimport Header from '../components/Header'\nimport ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';\nimport ConnectedToolbarRow from \"./ConnectedToolbarRow\";\nimport ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js';\nimport StudyPrefetcher from '../components/StudyPrefetcher.js';\nimport './Viewer.css';\n\nconst { StackManager } = OHIF.utils;\n\n/**\n * Inits OHIF Hanging Protocol's onReady.\n * It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine\n * Hanging Protocol will use OHIF LayoutManager to render viewports properly\n */\n/*const initHangingProtocol = () => {\n // When Hanging Protocol is ready\n HP.ProtocolStore.onReady(() => {\n\n // Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata\n const studyMetadataList = OHIF.viewer.StudyMetadataList.all();\n\n // Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata\n const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();\n\n // Get prior studies map\n const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);\n\n // Creates Protocol Engine object with required arguments\n const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);\n\n // Sets up Hanging Protocol engine\n HP.setEngine(ProtocolEngine);\n });\n};*/\n\n\nOHIF.viewer.defaultTool = {\n left: 'wwwc',\n right: 'zoom',\n middle: 'pan'\n};\n\nOHIF.viewer.refLinesEnabled = true;\n\n/*const viewportUtils = OHIF.viewerbase.viewportUtils;\n\nOHIF.viewer.functionList = {\n toggleCineDialog: viewportUtils.toggleCineDialog,\n toggleCinePlay: viewportUtils.toggleCinePlay,\n clearTools: viewportUtils.clearTools,\n resetViewport: viewportUtils.resetViewport,\n invert: viewportUtils.invert\n};*/\n\n// Create the synchronizer used to update reference lines\nOHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);\n\n// Metadata configuration\nconst metadataProvider = new OHIF.cornerstone.MetadataProvider();\ncornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));\n\nStackManager.setMetadataProvider(metadataProvider);\n\nclass Viewer extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n render() {\n return (<>\n
\n
\n {/**/}\n
\n
\n \n \n \n \n
\n \n );\n }\n}\n\n\nexport default Viewer;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport Viewer from \"./Viewer.js\";\n\nconst { createDisplaySets } = OHIF.utils;\n\nclass ViewerRetrieveStudyData extends Component {\n static propTypes = {\n studyInstanceUids: PropTypes.array.isRequired,\n seriesInstanceUids: PropTypes.array,\n server: PropTypes.object\n };\n\n state = {\n studies: null,\n error: null\n }\n\n componentDidMount() {\n // TODO: Avoid using timepoints here\n //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };\n const { studyInstanceUids, seriesInstanceUids, server } = this.props;\n const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)\n\n // Render the viewer when the data is ready\n promise.then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({\n studies: updatedStudies,\n });\n }).catch(error => {\n this.setState({\n error: true,\n });\n\n throw new Error(error);\n });\n\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default ViewerRetrieveStudyData;\n","import { connect } from 'react-redux';\nimport ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';\n\nconst isActive = (a) => a.active === true;\n\nconst mapStateToProps = state => {\n const activeServer = state.servers.servers.find(isActive);\n\n return {\n server: activeServer,\n };\n};\n\nconst ConnectedViewerRetrieveStudyData = connect(\n mapStateToProps,\n null\n)(ViewerRetrieveStudyData);\n\nexport default ConnectedViewerRetrieveStudyData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ConnectedViewerRetrieveStudyData from \"../connectedComponents/ConnectedViewerRetrieveStudyData\";\n\nfunction ViewerRouting({ match }) {\n const { studyInstanceUids, seriesInstanceUids } = match.params;\n\n let studyUIDs;\n let seriesUIDs;\n\n if (studyInstanceUids && !seriesInstanceUids) {\n studyUIDs = studyInstanceUids.split(';');\n } else if (studyInstanceUids && seriesInstanceUids) {\n studyUIDs = [match.params.studyInstanceUid];\n seriesUIDs = match.params.seriesInstanceUids.split(';');\n }\n\n return (\n \n );\n}\n\nViewerRouting.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n studyInstanceUids: PropTypes.string.isRequired,\n seriesInstanceUids: PropTypes.string\n })\n })\n};\n\nexport default ViewerRouting;\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport qs from 'query-string'\nimport Viewer from \"../connectedComponents/Viewer\";\nimport OHIF from 'ohif-core';\n\nconst { createDisplaySets } = OHIF.utils;\n\nfunction parseQueryAndFetchStudies(query) {\n return new Promise((resolve, reject) => {\n const url = query.url;\n\n if (!url) {\n reject(new Error('No URL was specified. Use ?url=$yourURL'));\n }\n\n // Define a request to the server to retrieve the study data\n // as JSON, given a URL that was in the Route\n const oReq = new XMLHttpRequest();\n\n // Add event listeners for request failure\n oReq.addEventListener('error', (error) => {\n OHIF.log.warn('An error occurred while retrieving the JSON data');\n reject(error)\n });\n\n // When the JSON has been returned, parse it into a JavaScript Object\n // and render the OHIF Viewer with this data\n oReq.addEventListener('load', () => {\n // Parse the response content\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText\n if (!oReq.responseText) {\n OHIF.log.warn('Response was undefined');\n reject(new Error('Response was undefined'));\n }\n\n OHIF.log.info(JSON.stringify(oReq.responseText, null, 2));\n\n const data = JSON.parse(oReq.responseText);\n if (data.servers && query.studyInstanceUids) {\n const server = data.servers.dicomWeb[0];\n server.type = 'dicomWeb';\n\n const studyInstanceUids = query.studyInstanceUids.split(';');\n const seriesInstanceUids = [];\n\n OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => {\n resolve(studies);\n }, error => {\n reject(error);\n });\n } else {\n resolve(data.studies);\n }\n });\n\n // Open the Request to the server for the JSON data\n // In this case we have a server-side route called /api/\n // which responds to GET requests with the study data\n OHIF.log.info(`Sending Request to: ${url}`);\n oReq.open('GET', url);\n oReq.setRequestHeader('Accept', 'application/json')\n\n // Fire the request to the server\n oReq.send();\n });\n}\n\nclass StandaloneRouting extends Component {\n state = {\n studies: null,\n error: null\n }\n\n static propTypes = {\n location: PropTypes.object,\n store: PropTypes.object\n };\n\n componentDidMount() {\n const query = qs.parse(this.props.location.search);\n parseQueryAndFetchStudies(query).then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({ studies: updatedStudies });\n }, error => {\n this.setState({ error });\n });\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default StandaloneRouting;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ViewerRetrieveStudyData from \"../connectedComponents/ViewerRetrieveStudyData.js\";\n\nfunction IHEInvokeImageDisplay({ match }) {\n const requestType = match.params.query.requestType;\n let studyInstanceUids;\n //let patientUids;\n let displayStudyList = false;\n\n if (requestType === \"STUDY\") {\n studyInstanceUids = match.params.query.studyUID.split(';');\n } else if (requestType === \"STUDYBASE64\") {\n const uids = this.params.query.studyUID;\n const decodedData = window.atob(uids);\n studyInstanceUids = decodedData.split(';');\n } else if (requestType === \"PATIENT\") {\n //patientUidspatientUids = this.params.query.patientID.split(';');\n displayStudyList = true\n } else {\n displayStudyList = true\n }\n\n if (displayStudyList) {\n return ('')//);\n }\n\n return (\n \n );\n}\n\nIHEInvokeImageDisplay.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n query: PropTypes.shape({\n requestType: PropTypes.string.isRequired,\n studyUID: PropTypes.string,\n patientID: PropTypes.string\n })\n })\n })\n};\n\nexport default IHEInvokeImageDisplay;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { ViewerbaseDragDropContext } from 'react-viewerbase';\nimport ViewerRouting from \"./routes/ViewerRouting.js\";\nimport StandaloneRouting from './routes/StandaloneRouting.js';\nimport IHEInvokeImageDisplay from './routes/IHEInvokeImageDisplay.js';\n//import CallbackPage from './CallbackPage.js';\n//import userManager from \"./userManager.js\";\nimport './OHIFStandaloneViewer.css';\nimport './variables.css';\nimport './theme-tide.css';\n\nconst reload = () => window.location.reload();\n\n/*function LoadingUser() {\n return (
Loading user...
);\n}*/\n\nclass App extends Component {\n static propTypes = {\n history: PropTypes.object.isRequired,\n user: PropTypes.object\n }\n\n componentDidMount() {\n this.unlisten = this.props.history.listen((location, action) => {\n if (this.props.setContext) {\n this.props.setContext(window.location.pathname);\n }\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n render() {\n const user = this.props.user;\n\n /*if (!user || user.expired) {\n // TODO: redirect to OAuth page if necessary\n return \n \n {\n userManager.signinRedirect();\n }}/>\n \n ;\n }*/\n\n return (\n \n \n \n \n \n \n\n \n \n {/* {\n userManager.signinRedirect();\n }}\n />*/\n /**/}\n \n
Sorry, this page does not exist.
}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {};\n /*return {\n user: state.oidc.user,\n };*/\n};\n\nconst ConnectedApp = connect(\n mapStateToProps,\n null\n)(App);\n\nexport default ViewerbaseDragDropContext(withRouter(ConnectedApp));\n","import React, { PureComponent, Component } from 'react';\n\n/*function metaDataProvider(type, imageId) {\n const metaData = cornerstoneWADOImageLoader.wadors.metaDataManager.get(\n imageId\n );\n\n if (!metaData) {\n return;\n }\n\n if (\n metaData[type] !== undefined &&\n metaData[type].Value !== undefined &&\n metaData[type].Value.length\n ) {\n return metaData[type].Value[0];\n }\n\n if (type === 'instance') {\n return metaData;\n }\n}\n\ncornerstone.metaData.addProvider(metaDataProvider);*/\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".scroll {\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scroll .scroll-holder {\\n height: calc(100% - 20px);\\n margin-top: 5px;\\n position: relative;\\n width: 12px;\\n}\\n.scroll .scroll-holder .imageSlider {\\n height: 12px;\\n left: 12px;\\n padding: 0;\\n position: absolute;\\n top: 0;\\n transform: rotate(90deg);\\n transform-origin: top left;\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider:focus {\\n outline: none;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-focus-outer {\\n border: none;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-runnable-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 5px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 2px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-track {\\n animate: 0.2s;\\n background: transparent;\\n border: none;\\n border-width: 15px 0;\\n color: rgba(0,0,0,0);\\n cursor: pointer;\\n height: 12px;\\n width: 100%;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-lower {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-upper {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb {\\n -webkit-appearance: none !important;\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -webkit-grab;\\n height: 12px;\\n margin-top: -4px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb:active {\\n background-color: #20a5d6;\\n cursor: -webkit-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -moz-grab;\\n height: 12px;\\n width: 39px;\\n z-index: 7;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb:active {\\n background-color: #20a5d6;\\n cursor: -moz-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: ns-resize;\\n height: 12px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb:active {\\n background-color: #20a5d6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-tooltip {\\n display: none;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .imageSlider {\\n left: 50px;\\n }\\n}\\n\";\nstyleInject(css);\n\nvar ImageScrollbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageScrollbar, _PureComponent);\n\n function ImageScrollbar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ImageScrollbar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ImageScrollbar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (event) {\n var intValue = parseInt(event.target.value, 10);\n\n _this.props.onInputCallback(intValue);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n // We don't allow direct keyboard up/down input on the\n // image sliders since the natural direction is reversed (0 is at the top)\n // Store the KeyCodes in an object for readability\n var keys = {\n DOWN: 40,\n UP: 38\n }; // TODO: Enable scroll down / scroll up without depending on ohif-core\n\n if (event.which === keys.DOWN) {\n //OHIF.commands.run('scrollDown');\n event.preventDefault();\n } else if (event.which === keys.UP) {\n //OHIF.commands.run('scrollUp');\n event.preventDefault();\n }\n });\n\n return _this;\n }\n\n _createClass(ImageScrollbar, [{\n key: \"render\",\n value: function render() {\n if (this.props.max === 0) {\n return null;\n }\n\n this.style = {\n width: \"\".concat(this.props.height)\n };\n return React.createElement(\"div\", {\n className: \"scroll\"\n }, React.createElement(\"div\", {\n className: \"scroll-holder\"\n }, React.createElement(\"input\", {\n className: \"imageSlider\",\n style: this.style,\n type: \"range\",\n min: \"0\",\n max: this.props.max,\n step: \"1\",\n value: this.props.value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown\n })));\n }\n }]);\n\n return ImageScrollbar;\n}(PureComponent);\n\n_defineProperty(ImageScrollbar, \"propTypes\", {\n value: propTypes.number.isRequired,\n max: propTypes.number.isRequired,\n height: propTypes.string.isRequired,\n onInputCallback: propTypes.func.isRequired\n});\n\n/**\n * Formats a patient name for display purposes\n */\nfunction formatPN(name) {\n if (!name) {\n return;\n } // Convert the first ^ to a ', '. String.replace() only affects\n // the first appearance of the character.\n\n\n var commaBetweenFirstAndLast = name.replace('^', ', '); // Replace any remaining '^' characters with spaces\n\n var cleaned = commaBetweenFirstAndLast.replace(/\\^/g, ' '); // Trim any extraneous whitespace\n\n return cleaned.trim();\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory();\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && ('object' !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.23.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n});\n\nfunction formatDA(date) {\n var strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';\n\n if (!date) {\n return;\n }\n\n var dateAsMoment = moment(date, 'YYYYMMDD');\n return dateAsMoment.format(strFormat);\n}\n\nfunction formatTM(time) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';\n\n if (!time) {\n return;\n } // DICOM Time is stored as HHmmss.SSS, where:\n // HH 24 hour time:\n // m mm 0..59 Minutes\n // s ss 0..59 Seconds\n // S SS SSS 0..999 Fractional seconds\n //\n // See MomentJS: http://momentjs.com/docs/#/parsing/string-format/\n\n\n var dateTime = moment(time, 'HHmmss.SSS');\n return dateTime.format(format);\n}\n\nfunction formatNumberPrecision(number, precision) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\nfunction isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar helpers = {\n formatPN: formatPN,\n formatDA: formatDA,\n formatTM: formatTM,\n formatNumberPrecision: formatNumberPrecision,\n isValidNumber: isValidNumber\n};\n\nvar css$1 = \".imageViewerViewport.empty ~ .ViewportOverlay {\\n display: none;\\n}\\n.ViewportOverlay {\\n color: #9ccef9;\\n}\\n.ViewportOverlay .overlay-element {\\n position: absolute;\\n font-weight: 400;\\n text-shadow: 1px 1px #000;\\n pointer-events: none;\\n}\\n.ViewportOverlay .top-left {\\n top: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .top-center {\\n top: 20px;\\n padding-top: 20px;\\n width: 100%;\\n text-align: center;\\n}\\n.ViewportOverlay .top-right {\\n top: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay .bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .bottom-right {\\n bottom: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay.controlsVisible .topright,\\n.ViewportOverlay.controlsVisible .bottomright {\\n right: calc(20px + 19px);\\n}\\n.ViewportOverlay svg {\\n color: #9ccef9;\\n fill: #9ccef9;\\n stroke: #9ccef9;\\n background-color: transparent;\\n margin: 2px;\\n width: 18px;\\n height: 18px;\\n}\\n\";\nstyleInject(css$1);\n\nvar formatPN$1 = helpers.formatPN,\n formatDA$1 = helpers.formatDA,\n formatNumberPrecision$1 = helpers.formatNumberPrecision,\n formatTM$1 = helpers.formatTM,\n isValidNumber$1 = helpers.isValidNumber;\n/*function getCompression(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n if (\n instance.lossyImageCompression === '01' &&\n instance.lossyImageCompressionRatio !== ''\n ) {\n const compressionMethod = instance.lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n instance.lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n\nfunction getImageDimensions(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n return `${instance.columns} x ${instance.rows}`;\n}*/\n\nvar ViewportOverlay =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOverlay, _PureComponent);\n\n function ViewportOverlay() {\n _classCallCheck(this, ViewportOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOverlay).apply(this, arguments));\n }\n\n _createClass(ViewportOverlay, [{\n key: \"render\",\n value: function render() {\n var zoom = this.props.viewport.scale * 100;\n var imageId = this.props.imageId; //const patientMetadata = cornerstone.metaData.get('patient', imageId);\n //const studyMetadata = cornerstone.metaData.get('study', imageId);\n //const seriesMetadata = cornerstone.metaData.get('generalSeriesModule', imageId);\n //const instanceMetadata = cornerstone.metaData.get('instance', imageId);\n\n var patientName = ''; //patientMetadata.name;\n\n var patientId = ''; //patientMetadata.id;\n\n /*const { studyDate, studyTime, studyDescription } = studyMetadata;\n const { seriesNumber, seriesDescription } = seriesMetadata;\n const { instanceNumber, frameTime, thickness, spacingBetweenSlices, sliceLocation } = instanceMetadata;*/\n //const frameRate = formatNumberPrecision(1000 / frameTime, 1);\n //const compression = getCompression(imageId);\n\n var windowWidth = this.props.viewport.voi.windowWidth || 0;\n var windowCenter = this.props.viewport.voi.windowCenter || 0;\n var wwwc = \"W: \".concat(windowWidth.toFixed(0), \" L: \").concat(windowCenter.toFixed(0));\n var imageIndex = this.props.stack.imageIds.indexOf(this.props.imageId) + 1;\n var numImages = this.props.stack.imageIds.length; //const imageDimensions = getImageDimensions(imageId);\n\n var studyDescription = '';\n var studyDate = null;\n var studyTime = null;\n var compression = null;\n var seriesNumber = null;\n var instanceNumber = null;\n var frameRate = null;\n var imageDimensions = null;\n var sliceLocation = null;\n var seriesDescription = null;\n var normal = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId)), React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Zoom: \", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\"), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, React.createElement(\"span\", null, isValidNumber$1(sliceLocation) ? \"Loc: \".concat(formatNumberPrecision$1(sliceLocation, 2), \" mm\") : ''), React.createElement(\"span\", null, ''), React.createElement(\"span\", null, '')), React.createElement(\"div\", null, seriesDescription))));\n var rightOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n var leftOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n return React.createElement(\"div\", {\n className: \"ViewportOverlay\"\n }, normal);\n }\n }]);\n\n return ViewportOverlay;\n}(PureComponent);\n\nViewportOverlay.propTypes = {\n viewport: propTypes.object.isRequired,\n imageId: propTypes.string.isRequired,\n stack: propTypes.object.isRequired\n};\n\nvar css$2 = \".imageViewerLoadingIndicator {\\n color: #91b9cd;\\n}\\n.faded {\\n opacity: 0.5;\\n}\\n.imageViewerErrorLoadingIndicator {\\n color: #e29e4a;\\n}\\n.imageViewerErrorLoadingIndicator p,\\n.imageViewerErrorLoadingIndicator h4 {\\n padding: 4px 0;\\n text-align: center;\\n word-wrap: break-word;\\n}\\n.imageViewerErrorLoadingIndicator p {\\n font-size: 11pt;\\n}\\n.loadingIndicator {\\n background-color: rgba(0,0,0,0.75);\\n font-size: 18px;\\n height: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index: 1;\\n}\\n.loadingIndicator .indicatorContents {\\n font-size: 30px;\\n font-weight: 300;\\n position: absolute;\\n text-align: center;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 100%;\\n}\\n\";\nstyleInject(css$2);\n\nvar LoadingIndicator =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LoadingIndicator, _PureComponent);\n\n function LoadingIndicator() {\n _classCallCheck(this, LoadingIndicator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LoadingIndicator).apply(this, arguments));\n }\n\n _createClass(LoadingIndicator, [{\n key: \"render\",\n value: function render() {\n // TODO[react]: Pass this in as a prop reactively\n //const percentComplete = Session.get('CornerstoneLoadProgress' + this.viewportIndex);\n var percComplete;\n\n if (this.props.percentComplete && this.props.percentComplete !== 100) {\n percComplete = \"\".concat(this.props.percentComplete, \"%\");\n }\n\n return React.createElement(React.Fragment, null, this.props.error ? React.createElement(\"div\", {\n className: \"imageViewerErrorLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"h4\", null, \"Error Loading Image\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, this.props.error.message))) : React.createElement(\"div\", {\n className: \"imageViewerLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"p\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spin fa-circle-o-notch fa-fw\"\n }), ' ', percComplete))));\n }\n }]);\n\n return LoadingIndicator;\n}(PureComponent);\n\n_defineProperty(LoadingIndicator, \"propTypes\", {\n percentComplete: propTypes.number,\n error: propTypes.object\n});\n\n_defineProperty(LoadingIndicator, \"defaultProps\", {\n percentComplete: 0,\n error: null\n});\n\nvar css$3 = \".ViewportOrientationMarkers {\\n pointer-events: none;\\n font-size: 15px;\\n color: #ccc;\\n line-height: 18px;\\n}\\n.ViewportOrientationMarkers .orientation-marker {\\n position: absolute;\\n}\\n.ViewportOrientationMarkers .top-mid {\\n top: 5px;\\n left: 50%;\\n}\\n.ViewportOrientationMarkers .left-mid {\\n top: 47%;\\n left: 5px;\\n}\\n\";\nstyleInject(css$3);\n\n/**\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param imageId The Cornerstone ImageId\n * @param viewport The current viewport\n */\n\nfunction getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools) {\n var imagePlane = cornerstone.metaData.get('imagePlane', imageId);\n\n if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {\n return;\n }\n\n var rowString = cornerstoneTools.orientation.getOrientationString(imagePlane.rowCosines);\n var columnString = cornerstoneTools.orientation.getOrientationString(imagePlane.columnCosines);\n var oppositeRowString = cornerstoneTools.orientation.invertOrientationString(rowString);\n var oppositeColumnString = cornerstoneTools.orientation.invertOrientationString(columnString);\n var markers = {\n top: oppositeColumnString,\n left: oppositeRowString\n }; // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n\n if (viewport.vflip) {\n markers.top = cornerstoneTools.orientation.invertOrientationString(markers.top);\n }\n\n if (viewport.hflip) {\n markers.left = cornerstoneTools.orientation.invertOrientationString(markers.left);\n } // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n\n\n if (viewport.rotation === 90 || viewport.rotation === -270) {\n return {\n top: markers.left,\n left: cornerstoneTools.orientation.invertOrientationString(markers.top)\n };\n } else if (viewport.rotation === -90 || viewport.rotation === 270) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.left),\n left: markers.top\n };\n } else if (viewport.rotation === 180 || viewport.rotation === -180) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.top),\n left: cornerstoneTools.orientation.invertOrientationString(markers.left)\n };\n }\n\n return markers;\n}\n\nvar ViewportOrientationMarkers =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOrientationMarkers, _PureComponent);\n\n function ViewportOrientationMarkers() {\n _classCallCheck(this, ViewportOrientationMarkers);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOrientationMarkers).apply(this, arguments));\n }\n\n _createClass(ViewportOrientationMarkers, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageId = _this$props.imageId,\n viewport = _this$props.viewport,\n cornerstone = _this$props.cornerstone,\n cornerstoneTools = _this$props.cornerstoneTools;\n var markers = getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools);\n\n if (!markers) {\n return '';\n }\n\n return React.createElement(\"div\", {\n className: \"ViewportOrientationMarkers noselect\"\n }, React.createElement(\"div\", {\n className: \"top-mid orientation-marker\"\n }, markers.top), React.createElement(\"div\", {\n className: \"left-mid orientation-marker\"\n }, markers.left));\n }\n }]);\n\n return ViewportOrientationMarkers;\n}(PureComponent);\n\nViewportOrientationMarkers.propTypes = {\n imageId: propTypes.string.isRequired,\n viewport: propTypes.object.isRequired\n};\n\nvar css$4 = \".CornerstoneViewport {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n\\n.viewport-element {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n background-color: black;\\n\\n /* Prevent the blue outline in Chrome when a viewport is selected */\\n outline: 0 !important;\\n\\n /* Prevents the entire page from getting larger\\n when the magnify tool is near the sides/corners of the page */\\n overflow: hidden;\\n}\\n\\n.viewportInstructions {\\n display: block;\\n font-size: 13px;\\n /*theme('color', '$textSecondaryColor')*/\\n color: #91b9cd;\\n line-height: 18px;\\n pointer-events: none; /* Necessary for drag/drop through to cornerstone element below */\\n text-align: center;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n margin: auto;\\n height: 20px;\\n}\\n\\n/* These are some good CSS settings for a circular magnifying glass\\n Try removing the border-radius to make a square magnifying glass */\\n.magnifyTool {\\n border: 4px white solid;\\n box-shadow: 2px 2px 10px #1e1e1e;\\n border-radius: 50%;\\n display: none;\\n cursor: none;\\n}\\n\";\nstyleInject(css$4);\n\nvar EVENT_RESIZE = 'resize';\n\nfunction setToolsPassive(cornerstoneTools, tools) {\n tools.forEach(function (tool) {\n cornerstoneTools.setToolPassive(tool);\n });\n}\n\nfunction initializeTools(cornerstoneTools, tools) {\n Array.from(tools).forEach(function (tool) {\n var apiTool = cornerstoneTools[\"\".concat(tool.name, \"Tool\")];\n\n if (apiTool) {\n cornerstoneTools.addTool(apiTool, tool.configuration);\n } else {\n throw new Error(\"Tool not found: \".concat(tool.name, \"Tool\"));\n }\n });\n}\n\nvar CornerstoneViewport =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CornerstoneViewport, _Component);\n\n function CornerstoneViewport(props) {\n var _this;\n\n _classCallCheck(this, CornerstoneViewport);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CornerstoneViewport).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onContextMenu\", function (event) {\n // Preventing the default behaviour for right-click is essential to\n // allow right-click tools to work.\n event.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWindowResize\", function () {\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageRendered\", function () {\n var viewport = _this.cornerstone.getViewport(_this.element);\n\n _this.setState({\n viewport: viewport\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onNewImage\", function () {\n var image = _this.cornerstone.getImage(_this.element);\n\n _this.setState({\n imageId: image.imageId\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setActiveTool\", function (activeTool) {\n // TODO: allow this config as props\n var leftMouseTools = ['Bidirectional', 'Wwwc', 'Length', 'Angle', 'StackScroll'];\n setToolsPassive(_this.cornerstoneTools, leftMouseTools); // pan is the default tool for middle mouse button\n\n var isPanToolActive = activeTool === 'Pan';\n var panOptions = {\n mouseButtonMask: isPanToolActive ? [1, 4] : [4],\n isTouchActive: isPanToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Pan', panOptions); // zoom is the default tool for right mouse button\n\n\n var isZoomToolActive = activeTool === 'Zoom';\n var zoomOptions = {\n mouseButtonMask: isZoomToolActive ? [1, 2] : [2],\n isTouchActive: isZoomToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Zoom', zoomOptions);\n\n _this.cornerstoneTools.setToolActive(activeTool, {\n mouseButtonMask: 1,\n isTouchActive: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onStackScroll\", function (event) {\n _this.setViewportActive();\n\n var element = event.currentTarget;\n\n var stackData = _this.cornerstoneTools.getToolState(element, 'stack');\n\n var stack = stackData.data[0];\n\n _this.hideExtraButtons();\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageLoaded\", function () {\n _this.setState({\n numImagesLoaded: _this.state.numImagesLoaded + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"startLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n _this.loadHandlerTimeout = setTimeout(function () {\n _this.setState({\n isLoading: true\n });\n }, CornerstoneViewport.loadIndicatorDelay);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"doneLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n\n _this.setState({\n isLoading: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMeasurementAddedOrRemoved\", function () {\n console.log('onMeasurementAddedOrRemoved');\n /* const { toolType, measurementData } = event.detail;\n // TODO: Pass in as prop?\n const toolsOfInterest = ['Bidirectional'];\n this.hideExtraButtons();\n if (toolsOfInterest.includes(toolType)) {\n const image = cornerstone.getImage(this.element);\n const viewport = cornerstone.getViewport(this.element);\n const type = {\n cornerstonetoolsmeasurementadded: 'added',\n cornerstonetoolsmeasurementremoved: 'removed'\n };\n const action = type[event.type];\n if (action === 'added') {\n measurementData._id = guid();\n measurementData.viewport = cloneDeep(viewport);\n }\n this.props.measurementsAddedOrRemoved(\n action,\n image.imageId,\n toolType,\n measurementData\n );\n }*/\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setViewportActive\", function () {\n if (!_this.props.isActive && _this.props.setViewportActive) {\n _this.props.setViewportActive();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMouseClick\", function (event) {\n _this.setViewportActive();\n\n if (event.detail.event.which === 3) {\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: false\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchPress\", function (event) {\n _this.setViewportActive();\n\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: true\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function () {\n _this.setViewportActive();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCloseToolContextMenu\", function () {\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"imageSliderOnInputCallback\", function (value) {\n _this.setViewportActive();\n\n var stack = _this.state.stack;\n stack.currentImageIdIndex = value;\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n // TODO: For some reason this isn't working?\n\n\n _this.scrollToIndex(_this.element, value);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hideExtraButtons\", function () {\n if (_this.state.bidirectionalAddLabelShow === true) {\n _this.setState({\n bidirectionalAddLabelShow: false\n });\n }\n\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _this.cornerstone = props.cornerstone;\n _this.cornerstoneTools = props.cornerstoneTools;\n _this.scrollToIndex = _this.cornerstoneTools.import('util/scrollToIndex'); // TODO: Allow viewport as a prop\n\n var _stack = props.viewportData.stack;\n _this.state = {\n stack: _stack,\n displaySetInstanceUid: props.viewportData.displaySetInstanceUid,\n imageId: _stack.imageIds[0],\n viewportHeight: '100%',\n isLoading: false,\n numImagesLoaded: 0,\n error: null,\n viewport: _this.cornerstone.getDefaultViewport(null, undefined)\n };\n var loadHandlerManager = _this.cornerstoneTools.loadHandlerManager;\n loadHandlerManager.setStartLoadHandler(_this.startLoadingHandler);\n loadHandlerManager.setEndLoadHandler(_this.doneLoadingHandler);\n _this.debouncedResize = lodash_debounce(function () {\n try {\n _this.cornerstone.getEnabledElement(_this.element);\n } catch (error) {\n console.error(error);\n return;\n }\n\n _this.cornerstone.resize(_this.element, true);\n\n _this.setState({\n viewportHeight: \"\".concat(_this.element.clientHeight - 20, \"px\")\n });\n }, 300);\n return _this;\n }\n\n _createClass(CornerstoneViewport, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var isLoading = this.state.isLoading || this.state.numImagesLoaded < 1;\n var displayLoadingIndicator = isLoading || this.state.error;\n var className = 'CornerstoneViewport';\n\n if (this.props.isActive) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"viewport-element\",\n onContextMenu: this.onContextMenu,\n ref: function ref(input) {\n _this2.element = input;\n }\n }, displayLoadingIndicator && React.createElement(LoadingIndicator, {\n error: this.state.error\n }), React.createElement(\"canvas\", {\n className: \"cornerstone-canvas\"\n }), React.createElement(ViewportOverlay, {\n stack: this.state.stack,\n viewport: this.state.viewport,\n imageId: this.state.imageId,\n numImagesLoaded: this.state.numImagesLoaded\n }), React.createElement(ViewportOrientationMarkers, {\n imageId: this.state.imageId,\n viewport: this.state.viewport,\n cornerstone: this.props.cornerstone,\n cornerstoneTools: this.props.cornerstoneTools\n })), React.createElement(ImageScrollbar, {\n onInputCallback: this.imageSliderOnInputCallback,\n max: this.state.stack.imageIds.length - 1,\n value: this.state.stack.currentImageIdIndex,\n height: this.state.viewportHeight\n }), this.props.children);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this3 = this;\n\n var element = this.element;\n this.eventHandlerData = [{\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.IMAGE_RENDERED,\n handler: this.onImageRendered\n }, {\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.NEW_IMAGE,\n handler: this.onNewImage\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.STACK_SCROLL,\n handler: this.onStackScroll\n },\n /*{\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_ADDED,\n handler: this.onMeasurementAddedOrRemoved\n },\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_REMOVED,\n handler: this.onMeasurementAddedOrRemoved\n },*/\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_CLICK,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_DOWN,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_PRESS,\n handler: this.onTouchPress\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_START,\n handler: this.onTouchStart\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_CLICK,\n handler: this.onDoubleClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_TAP,\n handler: this.onDoubleClick\n }, {\n eventTarget: window,\n eventType: EVENT_RESIZE,\n handler: this.onWindowResize\n }, {\n eventTarget: this.cornerstone.events,\n eventType: this.cornerstone.EVENTS.IMAGE_LOADED,\n handler: this.onImageLoaded\n }]; // Enable the DOM Element for use with Cornerstone\n\n this.cornerstone.enable(element, this.props.cornerstoneOptions); // Handle the case where the imageId isn't loaded correctly and the\n // imagePromise returns undefined\n // To test, uncomment the next line\n //let imageId = 'AfileThatDoesntWork'; // For testing only!\n\n var imageId = this.state.imageId;\n var imagePromise;\n\n try {\n imagePromise = this.cornerstone.loadAndCacheImage(imageId);\n } catch (error) {\n console.error(error);\n\n if (!imagePromise) {\n this.setState({\n error: error\n });\n return;\n }\n } // Load the first image in the stack\n\n\n imagePromise.then(function (image) {\n try {\n _this3.cornerstone.getEnabledElement(element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n } // Set Soft Tissue preset for all images by default\n\n\n var viewport = _this3.cornerstone.getDefaultViewportForImage(element, image);\n\n viewport.voi = {\n windowWidth: 400,\n windowCenter: 40\n }; // Display the first image\n\n _this3.cornerstone.displayImage(element, image, viewport); // Clear any previous tool state\n\n\n _this3.cornerstoneTools.clearToolState(_this3.element, 'stack');\n /* Add the stack tool state to the enabled element, and\n add stack state managers for the stack tool, CINE tool, and reference lines\n */\n\n\n var stack = _this3.state.stack;\n\n _this3.cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);\n\n _this3.cornerstoneTools.addToolState(element, 'stack', stack);\n\n if (_this3.props.enableStackPrefetch) {\n _this3.cornerstoneTools.stackPrefetch.enable(_this3.element);\n }\n\n var tools = [{\n name: 'Bidirectional',\n configuration: {\n getMeasurementLocationCallback: _this3.bidirectionalToolLabellingCallback,\n shadow: true,\n drawHandlesOnHover: true\n }\n }, {\n name: 'Wwwc'\n }, {\n name: 'Zoom',\n configuration: {\n minScale: 0.3,\n maxScale: 25,\n preventZoomOutsideImage: true\n }\n }, {\n name: 'Length'\n }, {\n name: 'Angle'\n }, {\n name: 'Pan'\n }, {\n name: 'StackScroll'\n }, {\n name: 'PanMultiTouch'\n }, {\n name: 'ZoomTouchPinch'\n }, {\n name: 'StackScrollMouseWheel'\n }, {\n name: 'StackScrollMultiTouch'\n }];\n initializeTools(_this3.cornerstoneTools, tools);\n\n _this3.setActiveTool(_this3.props.activeTool);\n /* For touch devices, by default we activate:\n - Pinch to zoom\n - Two-finger Pan\n - Three (or more) finger Stack Scroll\n */\n\n\n _this3.cornerstoneTools.setToolActive('PanMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('ZoomTouchPinch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('StackScrollMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n }); // TODO: We should probably configure this somewhere else\n\n\n _this3.cornerstoneTools.stackPrefetch.setConfiguration({\n maxImagesToPrefetch: Infinity,\n preserveExistingPool: false,\n maxSimultaneousRequests: 6\n });\n /* For mouse devices, by default we turn on:\n - Stack scrolling by mouse wheel\n - Stack scrolling by keyboard up / down arrow keys\n - Pan with middle click\n - Zoom with right click\n */\n\n\n _this3.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.addEventListener(eventType, handler);\n });\n\n _this3.setState({\n viewportHeight: \"\".concat(_this3.element.clientHeight - 20, \"px\")\n });\n }, function (error) {\n console.error(error);\n\n _this3.setState({\n error: error\n });\n });\n }\n }, {\n key: \"onDoubleClick\",\n value: function onDoubleClick() {\n console.log('onDoubleClick');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.removeEventListener(eventType, handler);\n });\n var element = this.element; // Remove all tools for the destroyed element\n // TODO[cornerstoneTools]: Make this happen internally\n // toolManager.removeToolsForElement(element);\n // Clear the stack prefetch data\n // TODO[cornerstoneTools]: Make this happen internally\n\n this.cornerstoneTools.clearToolState(element, 'stackPrefetch'); // Disable the viewport element with Cornerstone\n // This also triggers the removal of the element from all available\n // synchronizers, such as the one used for reference lines.\n\n this.cornerstone.disable(element); // Try to stop any currently playing clips\n // Otherwise the interval will continuously throw errors\n // TODO[cornerstoneTools]: Make this happen internally\n\n try {\n var enabledElement = this.cornerstone.getEnabledElement(element);\n\n if (enabledElement) {\n this.cornerstoneTools.stopClip(element);\n }\n } catch (error) {//console.warn(error);\n }\n\n if (this.props.clearViewportSpecificData) {\n this.props.clearViewportSpecificData();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n // TODO: Add a real object shallow comparison here?\n if (this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid) {\n var _this$props$viewportD = this.props.viewportData,\n displaySetInstanceUid = _this$props$viewportD.displaySetInstanceUid,\n studyInstanceUid = _this$props$viewportD.studyInstanceUid;\n var currentImageIdIndex = this.props.viewportData.stack.currentImageIdIndex; // Create shortcut to displaySet\n\n /*const study = OHIF.viewer.Studies.findBy({\n studyInstanceUid,\n });\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });*/\n\n var stack = this.props.viewportData.stack;\n var stackData = this.cornerstoneTools.getToolState(this.element, 'stack');\n var currentStack = stackData && stackData.data[0];\n\n if (!currentStack) {\n currentStack = {\n currentImageIdIndex: currentImageIdIndex,\n imageIds: stack.imageIds\n };\n this.cornerstoneTools.addStackStateManager(this.element, ['stack']);\n this.cornerstoneTools.addToolState(this.element, 'stack', currentStack);\n } else {\n // TODO: we should make something like setToolState by an ID\n currentStack.currentImageIdIndex = currentImageIdIndex;\n currentStack.imageIds = stack.imageIds;\n }\n\n var imageId = currentStack.imageIds[currentImageIdIndex];\n var viewportSpecificData = {\n displaySetInstanceUid: displaySetInstanceUid,\n studyInstanceUid: studyInstanceUid,\n stack: stack,\n imageId: imageId\n };\n this.setState(viewportSpecificData);\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData(viewportSpecificData);\n }*/\n\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n this.cornerstone.loadAndCacheImage(imageId).then(function (image) {\n try {\n _this4.cornerstone.getEnabledElement(_this4.element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n }\n\n var viewport = _this4.cornerstone.getDefaultViewportForImage(_this4.element, image); // Workaround for Cornerstone issue #304\n\n\n viewport.displayedArea.brhc = {\n x: image.width,\n y: image.height\n };\n\n _this4.cornerstone.displayImage(_this4.element, image, viewport);\n\n _this4.cornerstoneTools.stackPrefetch.enable(_this4.element);\n });\n }\n\n if (this.props.activeTool !== prevProps.activeTool) {\n this.setActiveTool(this.props.activeTool); // TODO: Why do we need to do this in v3?\n\n this.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.debouncedResize();\n }\n\n if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === true) {\n this.cornerstoneTools.stackPrefetch.enable(this.element);\n } else if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === false) {\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n }\n\n if (this.props.cineToolData.isPlaying !== prevProps.cineToolData.isPlaying) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element);\n } else {\n this.cornerstoneTools.stopClip(this.element);\n }\n }\n\n if (this.props.cineToolData.cineFrameRate !== prevProps.cineToolData.cineFrameRate) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element, this.props.cineToolData.cineFrameRate);\n } else {\n this.cornerstoneTools.stopClip(this.element, this.props.cineToolData.cineFrameRate);\n }\n }\n }\n }]);\n\n return CornerstoneViewport;\n}(Component);\n\n_defineProperty(CornerstoneViewport, \"defaultProps\", {\n activeTool: 'Wwwc',\n viewportData: {\n stack: {\n imageIds: [],\n currentImageIdIndex: 0\n }\n },\n isActive: false,\n cornerstoneOptions: {},\n enableStackPrefetch: true,\n cineToolData: {\n isPlaying: false,\n cineFrameRate: 24\n }\n});\n\n_defineProperty(CornerstoneViewport, \"propTypes\", {\n cornerstone: propTypes.object.isRequired,\n cornerstoneTools: propTypes.object.isRequired,\n children: propTypes.node,\n activeTool: propTypes.string,\n viewportData: propTypes.object.isRequired,\n measurementsAddedOrRemoved: propTypes.func,\n measurementsChanged: propTypes.func,\n isActive: propTypes.bool.isRequired,\n cornerstoneOptions: propTypes.object,\n setViewportActive: propTypes.func,\n setViewportSpecificData: propTypes.func,\n clearViewportSpecificData: propTypes.func,\n layout: propTypes.object,\n cineToolData: propTypes.object\n});\n\n_defineProperty(CornerstoneViewport, \"loadIndicatorDelay\", 45);\n\nexport default CornerstoneViewport;\n//# sourceMappingURL=index.es.js.map\n","import { connect } from 'react-redux';\nimport CornerstoneViewport from 'react-cornerstone-viewport';\nimport OHIF from 'ohif-core'\nimport cornerstone from \"cornerstone-core\";\nimport cornerstoneTools from \"cornerstone-tools\";\n\nconst { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;\n\nconst mapStateToProps = (state, ownProps) => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n // If this is the active viewport, enable prefetching.\n const { viewportIndex } = ownProps;//.viewportData;\n const isActive = viewportIndex === state.viewports.activeViewportIndex;\n const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {};\n\n return {\n layout: state.viewports.layout,\n isActive,\n activeTool: activeButton && activeButton.command,\n enableStackPrefetch: isActive,\n //stack: viewportSpecificData.stack,\n cineToolData: viewportSpecificData.cine,\n cornerstone,\n cornerstoneTools\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n const { viewportIndex } = ownProps;\n\n return {\n setViewportActive: () => {\n dispatch(setViewportActive(viewportIndex))\n },\n\n setViewportSpecificData: (data) => {\n dispatch(setViewportSpecificData(viewportIndex, data))\n },\n\n clearViewportSpecificData: () => {\n dispatch(clearViewportSpecificData(viewportIndex));\n }\n };\n};\n\nconst ConnectedCornerstoneViewport = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CornerstoneViewport);\n\nexport default ConnectedCornerstoneViewport;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction OHIFComponentPlugin(props) {\n return ({props.children});\n}\n\nOHIFComponentPlugin.propTypes = {\n id: PropTypes.string.isRequired,\n init: PropTypes.func.isRequired,\n destroy: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default OHIFComponentPlugin;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';\nimport OHIFComponentPlugin from './OHIFComponentPlugin.js';\n\nconst { StackManager } = OHIF.utils;\n\nclass OHIFCornerstoneViewportPlugin extends Component {\n static propTypes = {\n studies: PropTypes.object,\n displaySet: PropTypes.object,\n viewportIndex: PropTypes.number,\n };\n\n static id = 'CornerstoneViewportPlugin';\n\n static init() {\n console.log('CornerstoneViewportPlugin init()');\n }\n\n static destroy() {\n console.log('CornerstoneViewportPlugin destroy()');\n StackManager.clearStacks();\n }\n\n static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {\n // Create shortcut to displaySet\n const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);\n\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });\n\n // Get stack from Stack Manager\n return StackManager.findOrCreateStack(study, displaySet);\n }\n\n static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {\n const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);\n\n // Clone the stack here so we don't mutate it later\n const stack = Object.assign({}, currentStack);\n stack.currentImageIdIndex = 0;\n\n return stack;\n }\n\n render() {\n const { viewportIndex } = this.props;\n const { studies, displaySet } = this.props.viewportData;\n const { studyInstanceUid, displaySetInstanceUid } = displaySet;\n const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);\n const viewportData = {\n studyInstanceUid,\n displaySetInstanceUid,\n stack\n };\n\n const { id, init, destroy } = OHIFCornerstoneViewportPlugin;\n const pluginProps = { id, init, destroy };\n\n return (\n \n \n \n );\n }\n}\n\n\nexport default OHIFCornerstoneViewportPlugin;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers } from 'redux';\nimport PropTypes from 'prop-types';\nimport OHIF from 'ohif-core';\nimport './config';\nimport ui from './redux/ui.js'\nimport OHIFStandaloneViewer from './OHIFStandaloneViewer';\nimport OHIFCornerstoneViewportPlugin from './connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js';\n//import { loadUser, reducer as oidcReducer, OidcProvider} from 'redux-oidc';\n//import userManager from './userManager.js';\n//import Icons from \"./images/icons.svg\"\n\nconst Icons = 'icons.svg';\n\nconst reducers = OHIF.redux.reducers;\nreducers.ui = ui;\n//reducers.oidc = oidcReducer;\n\nconst combined = combineReducers(reducers)\n\nconst store = createStore(combined);\n//loadUser(store, userManager);\n\nconst defaultButtons = [\n {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: `${Icons}#icon-tools-stack-scroll`,\n active: false\n },\n {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: `${Icons}#icon-tools-zoom`,\n active: false\n },\n {\n command: 'Wwwc',\n type: 'tool',\n text: 'Levels',\n svgUrl: `${Icons}#icon-tools-levels`,\n active: true\n },\n {\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: `${Icons}#icon-tools-pan`,\n active: false\n },\n {\n command: 'Length',\n type: 'tool',\n text: 'Length',\n svgUrl: `${Icons}#icon-tools-measure-temp`,\n active: false\n },\n /*{\n command: 'Annotate',\n type: 'tool',\n text: 'Annotate',\n svgUrl: `${Icons}#icon-tools-measure-non-target`,\n active: false\n },*/\n {\n command: 'Angle',\n type: 'tool',\n text: 'Angle',\n iconClasses: 'fa fa-angle-left',\n active: false\n },\n {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: `${Icons}#icon-tools-measure-target`,\n active: false\n },\n {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: `${Icons}#icon-tools-reset`,\n active: false\n },\n];\n\nconst buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);\n\nstore.dispatch(buttonsAction);\n\nconst pluginAction = OHIF.redux.actions.addPlugin({\n id: 'cornerstone',\n type: 'viewport',\n component: OHIFCornerstoneViewportPlugin\n});\n\nstore.dispatch(pluginAction);\n\nconst servers = {\n dicomWeb: [\n {\n \"name\": \"DCM4CHEE\",\n //\"wadoUriRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoUriRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoUriRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado\",\n \"qidoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"qidoSupportsIncludeField\": true,\n \"imageRendering\": \"wadors\",\n \"thumbnailRendering\": \"wadors\",\n \"requestOptions\": {\n \"requestFromBrowser\": true,\n \"logRequests\": true,\n \"logResponses\": false,\n \"logTiming\": true,\n //\"auth\": \"admin:admin\"\n //\"auth\": \"cloud:healthcare\"\n }\n }\n ]\n};\n\nOHIF.utils.addServers(servers, store);\n\n// TODO[react] Use a provider when the whole tree is React\nwindow.store = store;\n\nclass App extends Component {\n static propTypes = {\n routerBasename: PropTypes.string\n }\n\n render() {\n return (\n \n {/**/}\n \n \n \n {/**/}\n \n );\n }\n}\n\nexport default App;\n"],"names":["_typeof","printWarning","ReactPropTypesSecret","require$$0","assign","checkPropTypes","require$$1","__DEV__","warning","_extends","invariant","HashChangeEvent","_classCallCheck","_possibleConstructorReturn","_inherits","PropTypes","createHistory","pathToRegexp","_objectWithoutProperties","patternCache","cacheLimit","cacheCount","addLeadingSlash","stripBasename","defineProperty","getOwnPropertySymbols","getPrototypeOf","Component","hoistStatics","_assertThisInitialized","REACT_STATICS","KNOWN_STATICS","ReactIs","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","isValidElementType","ponyfill","$$observable","isPlainObject","defaultSelectorFactory","cornerstone","window","cornerstoneTools","cornerstoneWADOImageLoader","cornerstoneMath","external","this","define","info","homepage","Hammer","init","dicomParser","OHIF","ROOT_URL","location","pathname","config","maxWebWorkers","Math","max","navigator","hardwareConcurrency","startWebWorkersOnDemand","webWorkerPath","taskConfiguration","decodeTask","loadCodecsOnStartup","initializeCodecsOnStartup","codecsPath","usePDFJS","strict","webWorkerManager","initialize","user","getAccessToken","state","store","getState","oidc","access_token","configure","beforeSend","xhr","headers","DICOMWeb","getAuthorizationHeader","Authorization","setRequestHeader","fontFamily","textStyle","setFont","toolStyle","setToolWidth","toolColors","setToolColor","setActiveColor","touchProximity","defaultState","leftSidebarOpen","rightSidebarOpen","ui","action","type","Object","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","objectAssign","styleInject","Icons","Header","home","studyLink","list","propTypes","bool","isRequired","object","defaultProps","withRouter","global","mapStateToProps","ownProps","stackLoadingProgressMap","loading","progress","studiesWithLoadingData","cloneDeep","studies","forEach","study","thumbnails","data","displaySetInstanceUid","stackId","stackProgressData","stackPercentComplete","percentComplete","ConnectedStudyBrowser","connect","StudyBrowser","viewportPluginIds","plugins","availablePlugins","filter","plugin","PLUGIN_TYPES","VIEWPORT","map","id","find","component","defaultPlugin","length","layout","viewports","activeViewportIndex","ConnectedLayoutManager","LayoutManager","ViewerMain","viewportData","viewportIndex","item","console","warn","updatedViewportData","slice","displaySet","findDisplaySet","props","studyInstanceUid","setState","displaySets","dSet","images","push","getDisplaySetsWithImages","setViewportData","viewer","updateImageSynchronizer","destroy","array","FlexboxLayout","studiesForBrowser","seriesDescription","seriesNumber","instanceNumber","numImageFrames","imageId","getImageId","getStudiesForBrowser","mainContentClassName","ConnectedFlexboxLayout","setToolActive","redux","actions","activeButton","tools","buttons","tool","active","activeCommand","command","mapDispatchToProps","dispatch","ConnectedToolbarSection","ToolbarSection","setLayout","currentLayout","onChange","selectedCell","rows","row","columns","col","numViewports","i","height","width","ConnectedLayoutButton","LayoutButton","setViewportSpecificData","getActiveViewportSpecificData","viewportSpecificData","activeViewportSpecificData","stack","imageIds","currentImageIdIndex","cine","isPlaying","cineFrameRate","activeViewportStackData","activeViewportCineData","dispatchSetViewportSpecificData","mergeProps","propsFromState","propsFromDispatch","onPlayPauseChanged","onFrameRateChanged","frameRate","onClickNextButton","largestPossibleIndex","min","onClickBackButton","onClickSkipToStart","onClickSkipToEnd","ConnectedCineDialog","CineDialog","ToolbarRow","value","setLeftSidebarOpen","leftSidebarToggle","svgLink","svgWidth","svgHeight","bottomLabel","leftSidebarValue","padding","onLeftSidebarValueChanged","marginLeft","display","func","setRightSidebarOpen","ConnectedToolbarRow","StudyLoadingMonitor","options","_setProgressData","progressId","progressData","setStudyLoadingProgress","_clearProgressById","clearStudyLoadingProgress","StudyLoadingListener","classes","studyLoadingListener","getInstance","clear","addStudies","ConnectedStudyLoadingMonitor","StudyPrefetcher","StudyPrefetcherComponent","studyPrefetcher","setStudies","StackManager","utils","defaultTool","left","right","middle","refLinesEnabled","Synchronizer","metadataProvider","MetadataProvider","metaData","addProvider","provider","bind","setMetadataProvider","Viewer","createDisplaySets","ViewerRetrieveStudyData","error","studyInstanceUids","seriesInstanceUids","server","promise","retrieveStudiesMetadata","then","updatedStudies","catch","Error","JSON","stringify","isActive","a","activeServer","servers","ConnectedViewerRetrieveStudyData","ViewerRouting","match","params","studyUIDs","seriesUIDs","split","shape","string","parseQueryAndFetchStudies","query","Promise","resolve","reject","url","oReq","XMLHttpRequest","addEventListener","log","responseText","parse","dicomWeb","open","send","StandaloneRouting","qs","search","IHEInvokeImageDisplay","requestType","displayStudyList","studyUID","uids","decodedData","atob","patientID","reload","App","unlisten","history","listen","setContext","ConnectedApp","ViewerbaseDragDropContext","setViewportActive","clearViewportSpecificData","activeTool","enableStackPrefetch","cineToolData","ConnectedCornerstoneViewport","CornerstoneViewport","OHIFComponentPlugin","children","node","OHIFCornerstoneViewportPlugin","getPluginViewportData","pluginProps","clearStacks","set","findOrCreateStack","number","currentStack","getCornerstoneStack","reducers","combined","combineReducers","createStore","defaultButtons","text","svgUrl","iconClasses","buttonsAction","setAvailableButtons","pluginAction","addPlugin","addServers","routerBasename"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,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AAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,C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MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,C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,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC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C,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,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CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,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C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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AAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,C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C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,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E,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACjwJ;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GAC9jK;EACD,YAAY,EAAE;IACZ,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACh3J;EACD,SAAS,EAAE;IACT,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACh+J;EACD,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;GACF;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MACzE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACvF,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3E;GACF;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACnO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACnJ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAC/J;GACF;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACvD,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACjE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/C;GACF;EACD,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;GACF;EACD,MAAM,EAAE;IACN,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;GACF;EACD,MAAM,EAAE;IACN,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACjC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACrC;GACF;EACD,MAAM,EAAE;IACN,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7B;GACF;EACD,MAAM,EAAE;IACN,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACjC;GACF;EACD,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC3D,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7F,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAC7D;GACF;EACD,MAAM,EAAE;IACN,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7C,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;MACvC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC;GACF;EACD,QAAQ,EAAE;IACR,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MACnW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MACjZ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,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AAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;MAC5pC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE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C,MAAM,EAAE;MAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;MAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;MAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC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,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CA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kB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI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AC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,6DAA6D,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,C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AAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,C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E,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAA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,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC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AC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,MAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,qBAAoB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,UAAU,CAAC,OAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,EAAE,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,cAAc,GAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kCAAkC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iCAAiC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,GAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,GAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,GAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file diff --git a/Packages-react/ohif-viewer/dist/index.js b/Packages-react/ohif-viewer/dist/index.js index b436dcb2f..5f7af756b 100644 --- a/Packages-react/ohif-viewer/dist/index.js +++ b/Packages-react/ohif-viewer/dist/index.js @@ -20386,14 +20386,7 @@ OHIF$1.external.cornerstoneTools = cornerstoneTools$1; OHIF$1.external.cornerstoneMath = cornerstoneMath$1; OHIF$1.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader$1; // TODO: Is there a better way to guess ROOT_URL? -var ROOT_URL = window.location.pathname; // If the page we are on is not a subset of the expected homepage -// provided in the package.json file, we might be doing local development. -// In this case, set the base URL to the current location's origin. - -if (homepage.includes(window.location.origin) === false) { - ROOT_URL = window.location.origin; -} - +var ROOT_URL = window.location.pathname; var config = { maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1), startWebWorkersOnDemand: true, diff --git a/Packages-react/ohif-viewer/dist/index.js.map b/Packages-react/ohif-viewer/dist/index.js.map index f919b1ace..5aed75f26 100644 --- a/Packages-react/ohif-viewer/dist/index.js.map +++ b/Packages-react/ohif-viewer/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router-dom/node_modules/warning/warning.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/warning/warning.js","../node_modules/invariant/invariant.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/history/es/PathUtils.js","../node_modules/history/es/LocationUtils.js","../node_modules/history/es/createTransitionManager.js","../node_modules/history/es/DOMUtils.js","../node_modules/history/es/createBrowserHistory.js","../node_modules/history/es/createHashHistory.js","../node_modules/history/es/createMemoryHistory.js","../node_modules/react-router/node_modules/warning/warning.js","../node_modules/react-router/es/Router.js","../node_modules/react-router-dom/es/Router.js","../node_modules/react-router-dom/es/BrowserRouter.js","../node_modules/react-router-dom/es/HashRouter.js","../node_modules/react-router-dom/es/Link.js","../node_modules/react-router/es/MemoryRouter.js","../node_modules/react-router-dom/es/MemoryRouter.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/path-to-regexp/index.js","../node_modules/react-router/es/matchPath.js","../node_modules/react-router/es/Route.js","../node_modules/react-router-dom/es/Route.js","../node_modules/react-router-dom/es/NavLink.js","../node_modules/react-router/es/Prompt.js","../node_modules/react-router-dom/es/Prompt.js","../node_modules/react-router/es/generatePath.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router-dom/es/Redirect.js","../node_modules/react-router/es/StaticRouter.js","../node_modules/react-router-dom/es/StaticRouter.js","../node_modules/react-router/es/Switch.js","../node_modules/react-router-dom/es/Switch.js","../node_modules/react-router-dom/es/generatePath.js","../node_modules/react-router-dom/es/matchPath.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router-dom/es/withRouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/utils/isPlainObject.js","../node_modules/react-redux/es/utils/warning.js","../node_modules/react-redux/es/utils/verifyPlainObject.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/verifySubselectors.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../../ohif-core/dist/index.es.js","../node_modules/dicom-parser/dist/dicomParser.min.js","../node_modules/cornerstone-core/dist/cornerstone.js","../node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js","../node_modules/cornerstone-math/dist/cornerstoneMath.min.js","../node_modules/cornerstone-tools/dist/cornerstoneTools.min.js","../node_modules/hammerjs/hammer.js","../src/config.js","../src/redux/ui.js","../../react-viewerbase/dist/index.es.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/Header/Header.js","../node_modules/lodash.clonedeep/index.js","../src/connectedComponents/ConnectedStudyBrowser.js","../src/connectedComponents/ConnectedLayoutManager.js","../src/connectedComponents/ViewerMain.js","../src/connectedComponents/FlexboxLayout.js","../src/connectedComponents/ConnectedFlexboxLayout.js","../src/connectedComponents/ConnectedToolbarSection.js","../src/connectedComponents/ConnectedLayoutButton.js","../src/connectedComponents/ConnectedCineDialog.js","../src/connectedComponents/ToolbarRow.js","../src/redux/actions.js","../src/connectedComponents/ConnectedToolbarRow.js","../src/components/StudyLoadingMonitor.js","../src/connectedComponents/ConnectedStudyLoadingMonitor.js","../src/components/StudyPrefetcher.js","../src/connectedComponents/Viewer.js","../src/connectedComponents/ViewerRetrieveStudyData.js","../src/connectedComponents/ConnectedViewerRetrieveStudyData.js","../src/routes/ViewerRouting.js","../node_modules/strict-uri-encode/index.js","../node_modules/query-string/index.js","../src/routes/StandaloneRouting.js","../src/routes/IHEInvokeImageDisplay.js","../src/OHIFStandaloneViewer.js","../../react-cornerstone-viewport/dist/index.es.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/ConnectedCornerstoneViewport.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFComponentPlugin.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js","../src/App.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createHashHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n _inherits(HashRouter, _React$Component);\n\n function HashRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, HashRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n HashRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\");\n };\n\n HashRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n basename: PropTypes.string,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"]),\n children: PropTypes.node\n};\n\n\nexport default HashRouter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware .\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use outside a \");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n _inherits(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MemoryRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\");\n };\n\n MemoryRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default MemoryRouter;","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from \"react-router/es/MemoryRouter\";\n\nexport default MemoryRouter;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // already computed the match for us\n\n invariant(router, \"You should not use or withRouter() outside a \");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from \n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n _inherits(Prompt, _React$Component);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Prompt.prototype.enable = function enable(message) {\n if (this.unblock) this.unblock();\n\n this.unblock = this.context.router.history.block(message);\n };\n\n Prompt.prototype.disable = function disable() {\n if (this.unblock) {\n this.unblock();\n this.unblock = null;\n }\n };\n\n Prompt.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.props.when) this.enable(this.props.message);\n };\n\n Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.when) {\n if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n } else {\n this.disable();\n }\n };\n\n Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n this.disable();\n };\n\n Prompt.prototype.render = function render() {\n return null;\n };\n\n return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n when: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n when: true\n};\nPrompt.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n block: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Prompt;","// Written in this round about way for babel-transform-imports\nimport Prompt from \"react-router/es/Prompt\";\n\nexport default Prompt;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var compiledGenerator = pathToRegexp.compile(pattern);\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n\n this.perform();\n };\n\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n\n return to;\n };\n\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n\n var to = this.computeTo(this.props);\n\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n\n Redirect.prototype.render = function render() {\n return null;\n };\n\n return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n computedMatch: PropTypes.object, // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport Router from \"./Router\";\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n};\n\nvar addBasename = function addBasename(basename, location) {\n if (!basename) return location;\n\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n if (!basename) return location;\n\n var base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n};\n\nvar createURL = function createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n return function () {\n invariant(false, \"You cannot %s with \", methodName);\n };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = function (_React$Component) {\n _inherits(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, StaticRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n return addLeadingSlash(_this.props.basename + createURL(path));\n }, _this.handlePush = function (location) {\n var _this$props = _this.props,\n basename = _this$props.basename,\n context = _this$props.context;\n\n context.action = \"PUSH\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleReplace = function (location) {\n var _this$props2 = _this.props,\n basename = _this$props2.basename,\n context = _this$props2.context;\n\n context.action = \"REPLACE\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleListen = function () {\n return noop;\n }, _this.handleBlock = function () {\n return noop;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n StaticRouter.prototype.getChildContext = function getChildContext() {\n return {\n router: {\n staticContext: this.props.context\n }\n };\n };\n\n StaticRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\");\n };\n\n StaticRouter.prototype.render = function render() {\n var _props = this.props,\n basename = _props.basename,\n context = _props.context,\n location = _props.location,\n props = _objectWithoutProperties(_props, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: this.createHref,\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return React.createElement(Router, _extends({}, props, { history: history }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object.isRequired,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n basename: \"\",\n location: \"/\"\n};\nStaticRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;","// Written in this round about way for babel-transform-imports\nimport StaticRouter from \"react-router/es/StaticRouter\";\n\nexport default StaticRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport generatePath from \"react-router/es/generatePath\";\n\nexport default generatePath;","// Written in this round about way for babel-transform-imports\nimport matchPath from \"react-router/es/matchPath\";\n\nexport default matchPath;","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.state = {\n storeState: store.getState(),\n store: store\n };\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.subscribe();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n if (this.unsubscribe) this.unsubscribe();\n this.subscribe();\n }\n };\n\n _proto.subscribe = function subscribe() {\n var _this2 = this;\n\n var store = this.props.store;\n this.unsubscribe = store.subscribe(function () {\n var newStoreState = store.getState();\n\n if (!_this2._isMounted) {\n return;\n }\n\n _this2.setState(function (providerState) {\n // If the value is the same, skip the unnecessary state update.\n if (providerState.storeState === newStoreState) {\n return null;\n }\n\n return {\n storeState: newStoreState\n };\n });\n }); // Actions might have been dispatched between render and mount - handle those\n\n var postMountStoreState = store.getState();\n\n if (postMountStoreState !== this.state.storeState) {\n this.setState({\n storeState: postMountStoreState\n });\n }\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.7.0\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, PureComponent } from 'react';\nimport { isValidElementType } from 'react-is';\nimport { ReactReduxContext } from './Context';\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React-Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n var OuterBaseComponent = Component;\n var FinalWrappedComponent = WrappedComponent;\n\n if (pure) {\n OuterBaseComponent = PureComponent;\n }\n\n function makeDerivedPropsSelector() {\n var lastProps;\n var lastState;\n var lastDerivedProps;\n var lastStore;\n var sourceSelector;\n return function selectDerivedProps(state, props, store) {\n if (pure && lastProps === props && lastState === state) {\n return lastDerivedProps;\n }\n\n if (store !== lastStore) {\n lastStore = store;\n sourceSelector = selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n\n lastProps = props;\n lastState = state;\n var nextProps = sourceSelector(state, props);\n\n if (lastDerivedProps === nextProps) {\n return lastDerivedProps;\n }\n\n lastDerivedProps = nextProps;\n return lastDerivedProps;\n };\n }\n\n function makeChildElementSelector() {\n var lastChildProps, lastForwardRef, lastChildElement;\n return function selectChildElement(childProps, forwardRef) {\n if (childProps !== lastChildProps || forwardRef !== lastForwardRef) {\n lastChildProps = childProps;\n lastForwardRef = forwardRef;\n lastChildElement = React.createElement(FinalWrappedComponent, _extends({}, childProps, {\n ref: forwardRef\n }));\n }\n\n return lastChildElement;\n };\n }\n\n var Connect =\n /*#__PURE__*/\n function (_OuterBaseComponent) {\n _inheritsLoose(Connect, _OuterBaseComponent);\n\n function Connect(props) {\n var _this;\n\n _this = _OuterBaseComponent.call(this, props) || this;\n invariant(forwardRef ? !props.wrapperProps[storeKey] : !props[storeKey], 'Passing redux store in props has been removed and does not do anything. ' + customStoreWarningMessage);\n _this.selectDerivedProps = makeDerivedPropsSelector();\n _this.selectChildElement = makeChildElementSelector();\n _this.renderWrappedComponent = _this.renderWrappedComponent.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.renderWrappedComponent = function renderWrappedComponent(value) {\n invariant(value, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var storeState = value.storeState,\n store = value.store;\n var wrapperProps = this.props;\n var forwardedRef;\n\n if (forwardRef) {\n wrapperProps = this.props.wrapperProps;\n forwardedRef = this.props.forwardedRef;\n }\n\n var derivedProps = this.selectDerivedProps(storeState, wrapperProps, store);\n return this.selectChildElement(derivedProps, forwardedRef);\n };\n\n _proto.render = function render() {\n var ContextToUse = this.props.context || Context;\n return React.createElement(ContextToUse.Consumer, null, this.renderWrappedComponent);\n };\n\n return Connect;\n }(OuterBaseComponent);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, {\n wrapperProps: props,\n forwardedRef: ref\n });\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar cornerstone = window.cornerstone;\nvar cornerstoneTools = window.cornerstoneTools;\nvar cornerstoneWADOImageLoader = window.cornerstoneWADOImageLoader;\nvar cornerstoneMath = window.cornerstoneMath;\nvar external = {\n set cornerstone(cs) {\n cornerstone = cs;\n },\n\n get cornerstone() {\n return cornerstone;\n },\n\n set cornerstoneTools(tools) {\n cornerstoneTools = tools;\n },\n\n get cornerstoneTools() {\n return cornerstoneTools;\n },\n\n set cornerstoneWADOImageLoader(wado) {\n cornerstoneWADOImageLoader = wado;\n },\n\n get cornerstoneWADOImageLoader() {\n return cornerstoneWADOImageLoader;\n },\n\n set cornerstoneMath(math) {\n cornerstoneMath = math;\n },\n\n get cornerstoneMath() {\n return cornerstoneMath;\n }\n\n};\n\nfunction getBoundingBox(context, textLines, x, y, options) {\n var cornerstoneTools = external.cornerstoneTools;\n\n if (Object.prototype.toString.call(textLines) !== '[object Array]') {\n textLines = [textLines];\n }\n\n var padding = 5;\n var font = cornerstoneTools.textStyle.getFont();\n var fontSize = cornerstoneTools.textStyle.getFontSize();\n context.save();\n context.font = font;\n context.textBaseline = 'top'; // Find the longest text width in the array of text data\n\n var maxWidth = 0;\n textLines.forEach(function (text) {\n // Get the text width in the current font\n var width = context.measureText(text).width; // Find the maximum with for all the text rows;\n\n maxWidth = Math.max(maxWidth, width);\n }); // Calculate the bounding box for this text box\n\n var boundingBox = {\n width: maxWidth + padding * 2,\n height: padding + textLines.length * (fontSize + padding)\n };\n\n if (options && options.centering && options.centering.x === true) {\n x -= boundingBox.width / 2;\n }\n\n if (options && options.centering && options.centering.y === true) {\n y -= boundingBox.height / 2;\n }\n\n boundingBox.left = x;\n boundingBox.top = y;\n context.restore(); // Return the bounding box so it can be used for pointNearHandle\n\n return boundingBox;\n}\n\nfunction pixelToPage(element, position) {\n var cornerstone = external.cornerstone;\n var enabledElement = cornerstone.getEnabledElement(element);\n var result = {\n x: 0,\n y: 0\n }; // Stop here if the cornerstone element is not enabled or position is not an object\n\n if (!enabledElement || _typeof(position) !== 'object') {\n return result;\n }\n\n var canvas = enabledElement.canvas;\n var canvasOffset = $(canvas).offset();\n result.x += canvasOffset.left;\n result.y += canvasOffset.top;\n var canvasPosition = cornerstone.pixelToCanvas(element, position);\n result.x += canvasPosition.x;\n result.y += canvasPosition.y;\n return result;\n}\n\nfunction repositionTextBox(eventData, measurementData, config) {\n var cornerstone = external.cornerstone; // Stop here if it's not a measurement creating\n\n if (!measurementData.isCreating) {\n return;\n }\n\n var element = eventData.element;\n var enabledElement = cornerstone.getEnabledElement(element);\n var image = enabledElement.image;\n var allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;\n var allow = {\n T: !allowedBorders || allowedBorders.includes('T'),\n R: !allowedBorders || allowedBorders.includes('R'),\n B: !allowedBorders || allowedBorders.includes('B'),\n L: !allowedBorders || allowedBorders.includes('L')\n };\n\n var getAvailableBlankAreas = function getAvailableBlankAreas(enabledElement, labelWidth, labelHeight) {\n var element = enabledElement.element,\n canvas = enabledElement.canvas,\n image = enabledElement.image;\n var topLeft = cornerstone.pixelToCanvas(element, {\n x: 0,\n y: 0\n });\n var bottomRight = cornerstone.pixelToCanvas(element, {\n x: image.width,\n y: image.height\n });\n var $canvas = $(canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var result = {};\n result['x-1'] = allow.L && topLeft.x > labelWidth;\n result['y-1'] = allow.T && topLeft.y > labelHeight;\n result.x1 = allow.R && canvasWidth - bottomRight.x > labelWidth;\n result.y1 = allow.B && canvasHeight - bottomRight.y > labelHeight;\n return result;\n };\n\n var getRenderingInformation = function getRenderingInformation(limits, tool) {\n var mid = {};\n mid.x = limits.x / 2;\n mid.y = limits.y / 2;\n var directions = {};\n directions.x = tool.x < mid.x ? -1 : 1;\n directions.y = tool.y < mid.y ? -1 : 1;\n var diffX = directions.x < 0 ? tool.x : limits.x - tool.x;\n var diffY = directions.y < 0 ? tool.y : limits.y - tool.y;\n var cornerAxis = diffY < diffX ? 'y' : 'x';\n var map = {\n 'x-1': 'L',\n 'y-1': 'T',\n x1: 'R',\n y1: 'B'\n };\n var current = 0;\n\n while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {\n // Invert the direction for the next iteration\n directions[cornerAxis] *= -1; // Invert the tempCornerAxis\n\n cornerAxis = cornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n return {\n directions: directions,\n cornerAxis: cornerAxis\n };\n };\n\n var calculateAxisCenter = function calculateAxisCenter(axis, start, end) {\n var a = start[axis];\n var b = end[axis];\n var lowest = Math.min(a, b);\n var highest = Math.max(a, b);\n return lowest + (highest - lowest) / 2;\n };\n\n var getTextBoxSizeInPixels = function getTextBoxSizeInPixels(element, bounds) {\n var topLeft = cornerstone.pageToPixel(element, 0, 0);\n var bottomRight = cornerstone.pageToPixel(element, bounds.x, bounds.y);\n return {\n x: bottomRight.x - topLeft.x,\n y: bottomRight.y - topLeft.y\n };\n };\n\n function getTextBoxOffset(config, cornerAxis, toolAxis, boxSize) {\n config = config || {};\n var centering = config.centering || {};\n var centerX = !!centering.x;\n var centerY = !!centering.y;\n var halfBoxSizeX = boxSize.x / 2;\n var halfBoxSizeY = boxSize.y / 2;\n var offset = {\n x: [],\n y: []\n };\n\n if (cornerAxis === 'x') {\n var offsetY = centerY ? 0 : halfBoxSizeY;\n offset.x[-1] = centerX ? halfBoxSizeX : 0;\n offset.x[1] = centerX ? -halfBoxSizeX : -boxSize.x;\n offset.y[-1] = offsetY;\n offset.y[1] = offsetY;\n } else {\n var offsetX = centerX ? 0 : halfBoxSizeX;\n offset.x[-1] = offsetX;\n offset.x[1] = offsetX;\n offset.y[-1] = centerY ? halfBoxSizeY : 0;\n offset.y[1] = centerY ? -halfBoxSizeY : -boxSize.y;\n }\n\n return offset;\n }\n\n var handles = measurementData.handles;\n var textBox = handles.textBox;\n var $canvas = $(enabledElement.canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var offset = $canvas.offset();\n var canvasDimensions = {\n x: canvasWidth,\n y: canvasHeight\n };\n var bounds = {};\n bounds.x = textBox.boundingBox.width;\n bounds.y = textBox.boundingBox.height;\n\n var getHandlePosition = function getHandlePosition(key) {\n var _handles$key = handles[key],\n x = _handles$key.x,\n y = _handles$key.y;\n return {\n x: x,\n y: y\n };\n };\n\n var start = getHandlePosition('start');\n var end = getHandlePosition('end');\n var tool = {};\n tool.x = calculateAxisCenter('x', start, end);\n tool.y = calculateAxisCenter('y', start, end);\n var limits = {};\n limits.x = image.width;\n limits.y = image.height;\n\n var _getRenderingInformat = getRenderingInformation(limits, tool),\n directions = _getRenderingInformat.directions,\n cornerAxis = _getRenderingInformat.cornerAxis;\n\n var availableAreas = getAvailableBlankAreas(enabledElement, bounds.x, bounds.y);\n var tempDirections = Object.assign({}, directions);\n var tempCornerAxis = cornerAxis;\n var foundPlace = false;\n var current = 0;\n\n while (current < 4) {\n if (availableAreas[tempCornerAxis + tempDirections[tempCornerAxis]]) {\n foundPlace = true;\n break;\n } // Invert the direction for the next iteration\n\n\n tempDirections[tempCornerAxis] *= -1; // Invert the tempCornerAxis\n\n tempCornerAxis = tempCornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n var cornerAxisPosition;\n\n if (foundPlace) {\n directions = Object.assign({}, directions, tempDirections);\n cornerAxis = tempCornerAxis;\n cornerAxisPosition = directions[cornerAxis] < 0 ? 0 : limits[cornerAxis];\n } else {\n limits = Object.assign({}, limits, canvasDimensions);\n var toolPositionOnCanvas = cornerstone.pixelToCanvas(element, tool);\n var renderingInformation = getRenderingInformation(limits, toolPositionOnCanvas);\n directions = renderingInformation.directions;\n cornerAxis = renderingInformation.cornerAxis;\n var position = {\n x: directions.x < 0 ? offset.left : offset.left + canvasWidth,\n y: directions.y < 0 ? offset.top : offset.top + canvasHeight\n };\n var pixelPosition = cornerstone.pageToPixel(element, position.x, position.y);\n cornerAxisPosition = pixelPosition[cornerAxis];\n }\n\n var toolAxis = cornerAxis === 'x' ? 'y' : 'x';\n var boxSize = getTextBoxSizeInPixels(element, bounds);\n textBox[cornerAxis] = cornerAxisPosition;\n textBox[toolAxis] = tool[toolAxis]; // Adjust the text box position reducing its size from the corner axis\n\n var textBoxOffset = getTextBoxOffset(config, cornerAxis, toolAxis, boxSize);\n textBox[cornerAxis] += textBoxOffset[cornerAxis][directions[cornerAxis]]; // Preventing the text box from partially going outside the canvas area\n\n var topLeft = cornerstone.pixelToCanvas(element, textBox);\n var bottomRight = {\n x: topLeft.x + bounds.x,\n y: topLeft.y + bounds.y\n };\n var canvasBorders = {\n x0: offset.left,\n y0: offset.top,\n x1: offset.left + canvasWidth,\n y1: offset.top + canvasHeight\n };\n\n if (topLeft[toolAxis] < 0) {\n var x = canvasBorders.x0;\n var y = canvasBorders.y0;\n\n var _pixelPosition = cornerstone.pageToPixel(element, x, y);\n\n textBox[toolAxis] = _pixelPosition[toolAxis];\n } else if (bottomRight[toolAxis] > canvasDimensions[toolAxis]) {\n var _x = canvasBorders.x1 - bounds.x;\n\n var _y = canvasBorders.y1 - bounds.y;\n\n var _pixelPosition2 = cornerstone.pageToPixel(element, _x, _y);\n\n textBox[toolAxis] = _pixelPosition2[toolAxis];\n }\n}\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar REGEX_TAG = /^x[0-9a-fx]{8}$/;\nvar DICOMTagDescriptions = Object.create(Object.prototype, {\n _descriptions: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n },\n tagNumberToString: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function tagNumberToString(tag) {\n var string; // by default, undefined is returned...\n\n if (this.isValidTagNumber(tag)) {\n // if it's a number, build its hexadecimal representation...\n string = 'x' + ('00000000' + tag.toString(16)).substr(-8);\n }\n\n return string;\n }\n },\n isValidTagNumber: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTagNumber(tag) {\n return _typeof(tag) === NUMBER && tag >= 0 && tag <= 0xffffffff;\n }\n },\n isValidTag: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTag(tag) {\n return _typeof(tag) === STRING ? REGEX_TAG.test(tag) : this.isValidTagNumber(tag);\n }\n },\n find: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function find(name) {\n var description; // by default, undefined is returned...\n\n if (_typeof(name) !== STRING) {\n // if it's a number, a tag string will be returned...\n name = this.tagNumberToString(name);\n }\n\n if (_typeof(name) === STRING) {\n description = this._descriptions[name];\n }\n\n return description;\n }\n },\n init: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function init(descriptionMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _descriptions = this._descriptions;\n\n for (var tag in descriptionMap) {\n if (_hasOwn.call(descriptionMap, tag)) {\n if (!this.isValidTag(tag)) {\n // Skip in case tag is not valid...\n console.info(\"DICOMTagDescriptions: Invalid tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n }\n\n if (tag in _descriptions) {\n // Skip in case the tag is duplicated...\n console.info(\"DICOMTagDescriptions: Duplicated tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n } // Save keyword...\n\n\n var keyword = descriptionMap[tag]; // Create a description entry and freeze it...\n\n var entry = Object.create(null);\n entry.tag = tag;\n entry.keyword = keyword;\n Object.freeze(entry); // Add tag references to entry...\n\n _descriptions[tag] = entry; // Add keyword references to entry (if not present already)...\n\n if (keyword in _descriptions) {\n var currentEntry = _descriptions[keyword];\n console.info(\"DICOMTagDescriptions: Using <\".concat(currentEntry.tag, \",\").concat(currentEntry.keyword, \"> instead of <\").concat(entry.tag, \",\").concat(entry.keyword, \"> for keyword \\\"\").concat(keyword, \"\\\"...\"));\n } else {\n _descriptions[keyword] = entry;\n }\n }\n } // Freeze internal description map...\n\n\n Object.freeze(_descriptions); // Freeze itself...\n\n Object.freeze(this);\n }\n }\n});\n/**\n * Map with DICOM Tag Descriptions\n */\n\nvar initialTagDescriptionMap = {\n x00020000: 'FileMetaInfoGroupLength',\n x00020001: 'FileMetaInfoVersion',\n x00020002: 'MediaStorageSOPClassUID',\n x00020003: 'MediaStorageSOPInstanceUID',\n x00020010: 'TransferSyntaxUID',\n x00020012: 'ImplementationClassUID',\n x00020013: 'ImplementationVersionName',\n x00020016: 'SourceApplicationEntityTitle',\n x00020100: 'PrivateInformationCreatorUID',\n x00020102: 'PrivateInformation',\n x00041130: 'FileSetID',\n x00041141: 'FileSetDescriptorFileID',\n x00041142: 'SpecificCharacterSetOfFile',\n x00041200: 'FirstDirectoryRecordOffset',\n x00041202: 'LastDirectoryRecordOffset',\n x00041212: 'FileSetConsistencyFlag',\n x00041220: 'DirectoryRecordSequence',\n x00041400: 'OffsetOfNextDirectoryRecord',\n x00041410: 'RecordInUseFlag',\n x00041420: 'LowerLevelDirectoryEntityOffset',\n x00041430: 'DirectoryRecordType',\n x00041432: 'PrivateRecordUID',\n x00041500: 'ReferencedFileID',\n x00041504: 'MRDRDirectoryRecordOffset',\n x00041510: 'ReferencedSOPClassUIDInFile',\n x00041511: 'ReferencedSOPInstanceUIDInFile',\n x00041512: 'ReferencedTransferSyntaxUIDInFile',\n x0004151a: 'ReferencedRelatedSOPClassUIDInFile',\n x00041600: 'NumberOfReferences',\n x00080000: 'IdentifyingGroupLength',\n x00080001: 'LengthToEnd',\n x00080005: 'SpecificCharacterSet',\n x00080006: 'LanguageCodeSequence',\n x00080008: 'ImageType',\n x00080010: 'RecognitionCode',\n x00080012: 'InstanceCreationDate',\n x00080013: 'InstanceCreationTime',\n x00080014: 'InstanceCreatorUID',\n x00080016: 'SOPClassUID',\n x00080018: 'SOPInstanceUID',\n x0008001a: 'RelatedGeneralSOPClassUID',\n x0008001b: 'OriginalSpecializedSOPClassUID',\n x00080020: 'StudyDate',\n x00080021: 'SeriesDate',\n x00080022: 'AcquisitionDate',\n x00080023: 'ContentDate',\n x00080024: 'OverlayDate',\n x00080025: 'CurveDate',\n x0008002a: 'AcquisitionDateTime',\n x00080030: 'StudyTime',\n x00080031: 'SeriesTime',\n x00080032: 'AcquisitionTime',\n x00080033: 'ContentTime',\n x00080034: 'OverlayTime',\n x00080035: 'CurveTime',\n x00080040: 'DataSetType',\n x00080041: 'DataSetSubtype',\n x00080042: 'NuclearMedicineSeriesType',\n x00080050: 'AccessionNumber',\n x00080052: 'QueryRetrieveLevel',\n x00080054: 'RetrieveAETitle',\n x00080056: 'InstanceAvailability',\n x00080058: 'FailedSOPInstanceUIDList',\n x00080060: 'Modality',\n x00080061: 'ModalitiesInStudy',\n x00080062: 'SOPClassesInStudy',\n x00080064: 'ConversionType',\n x00080068: 'PresentationIntentType',\n x00080070: 'Manufacturer',\n x00080080: 'InstitutionName',\n x00080081: 'InstitutionAddress',\n x00080082: 'InstitutionCodeSequence',\n x00080090: 'ReferringPhysicianName',\n x00080092: 'ReferringPhysicianAddress',\n x00080094: 'ReferringPhysicianTelephoneNumber',\n x00080096: 'ReferringPhysicianIDSequence',\n x00080100: 'CodeValue',\n x00080102: 'CodingSchemeDesignator',\n x00080103: 'CodingSchemeVersion',\n x00080104: 'CodeMeaning',\n x00080105: 'MappingResource',\n x00080106: 'ContextGroupVersion',\n x00080107: 'ContextGroupLocalVersion',\n x0008010b: 'ContextGroupExtensionFlag',\n x0008010c: 'CodingSchemeUID',\n x0008010d: 'ContextGroupExtensionCreatorUID',\n x0008010f: 'ContextIdentifier',\n x00080110: 'CodingSchemeIDSequence',\n x00080112: 'CodingSchemeRegistry',\n x00080114: 'CodingSchemeExternalID',\n x00080115: 'CodingSchemeName',\n x00080116: 'CodingSchemeResponsibleOrganization',\n x00080117: 'ContextUID',\n x00080201: 'TimezoneOffsetFromUTC',\n x00081000: 'NetworkID',\n x00081010: 'StationName',\n x00081030: 'StudyDescription',\n x00081032: 'ProcedureCodeSequence',\n x0008103e: 'SeriesDescription',\n x00081040: 'InstitutionalDepartmentName',\n x00081048: 'PhysiciansOfRecord',\n x00081049: 'PhysiciansOfRecordIDSequence',\n x00081050: 'PerformingPhysicianName',\n x00081052: 'PerformingPhysicianIDSequence',\n x00081060: 'NameOfPhysicianReadingStudy',\n x00081062: 'PhysicianReadingStudyIDSequence',\n x00081070: 'OperatorsName',\n x00081072: 'OperatorIDSequence',\n x00081080: 'AdmittingDiagnosesDescription',\n x00081084: 'AdmittingDiagnosesCodeSequence',\n x00081090: 'ManufacturersModelName',\n x00081100: 'ReferencedResultsSequence',\n x00081110: 'ReferencedStudySequence',\n x00081111: 'ReferencedPerformedProcedureStepSequence',\n x00081115: 'ReferencedSeriesSequence',\n x00081120: 'ReferencedPatientSequence',\n x00081125: 'ReferencedVisitSequence',\n x00081130: 'ReferencedOverlaySequence',\n x0008113a: 'ReferencedWaveformSequence',\n x00081140: 'ReferencedImageSequence',\n x00081145: 'ReferencedCurveSequence',\n x0008114a: 'ReferencedInstanceSequence',\n x00081150: 'ReferencedSOPClassUID',\n x00081155: 'ReferencedSOPInstanceUID',\n x0008115a: 'SOPClassesSupported',\n x00081160: 'ReferencedFrameNumber',\n x00081161: 'SimpleFrameList',\n x00081162: 'CalculatedFrameList',\n x00081163: 'TimeRange',\n x00081164: 'FrameExtractionSequence',\n x00081195: 'TransactionUID',\n x00081197: 'FailureReason',\n x00081198: 'FailedSOPSequence',\n x00081199: 'ReferencedSOPSequence',\n x00081200: 'OtherReferencedStudiesSequence',\n x00081250: 'RelatedSeriesSequence',\n x00082110: 'LossyImageCompressionRetired',\n x00082111: 'DerivationDescription',\n x00082112: 'SourceImageSequence',\n x00082120: 'StageName',\n x00082122: 'StageNumber',\n x00082124: 'NumberOfStages',\n x00082127: 'ViewName',\n x00082128: 'ViewNumber',\n x00082129: 'NumberOfEventTimers',\n x0008212a: 'NumberOfViewsInStage',\n x00082130: 'EventElapsedTimes',\n x00082132: 'EventTimerNames',\n x00082133: 'EventTimerSequence',\n x00082134: 'EventTimeOffset',\n x00082135: 'EventCodeSequence',\n x00082142: 'StartTrim',\n x00082143: 'StopTrim',\n x00082144: 'RecommendedDisplayFrameRate',\n x00082200: 'TransducerPosition',\n x00082204: 'TransducerOrientation',\n x00082208: 'AnatomicStructure',\n x00082218: 'AnatomicRegionSequence',\n x00082220: 'AnatomicRegionModifierSequence',\n x00082228: 'PrimaryAnatomicStructureSequence',\n x00082229: 'AnatomicStructureOrRegionSequence',\n x00082230: 'AnatomicStructureModifierSequence',\n x00082240: 'TransducerPositionSequence',\n x00082242: 'TransducerPositionModifierSequence',\n x00082244: 'TransducerOrientationSequence',\n x00082246: 'TransducerOrientationModifierSeq',\n x00082253: 'AnatomicEntrancePortalCodeSeqTrial',\n x00082255: 'AnatomicApproachDirCodeSeqTrial',\n x00082256: 'AnatomicPerspectiveDescrTrial',\n x00082257: 'AnatomicPerspectiveCodeSeqTrial',\n x00083001: 'AlternateRepresentationSequence',\n x00083010: 'IrradiationEventUID',\n x00084000: 'IdentifyingComments',\n x00089007: 'FrameType',\n x00089092: 'ReferencedImageEvidenceSequence',\n x00089121: 'ReferencedRawDataSequence',\n x00089123: 'CreatorVersionUID',\n x00089124: 'DerivationImageSequence',\n x00089154: 'SourceImageEvidenceSequence',\n x00089205: 'PixelPresentation',\n x00089206: 'VolumetricProperties',\n x00089207: 'VolumeBasedCalculationTechnique',\n x00089208: 'ComplexImageComponent',\n x00089209: 'AcquisitionContrast',\n x00089215: 'DerivationCodeSequence',\n x00089237: 'GrayscalePresentationStateSequence',\n x00089410: 'ReferencedOtherPlaneSequence',\n x00089458: 'FrameDisplaySequence',\n x00089459: 'RecommendedDisplayFrameRateInFloat',\n x00089460: 'SkipFrameRangeFlag',\n // x00091001: 'FullFidelity',\n // x00091002: 'SuiteID',\n // x00091004: 'ProductID',\n // x00091027: 'ImageActualDate',\n // x00091030: 'ServiceID',\n // x00091031: 'MobileLocationNumber',\n // x000910e3: 'EquipmentUID',\n // x000910e6: 'GenesisVersionNow',\n // x000910e7: 'ExamRecordChecksum',\n // x000910e9: 'ActualSeriesDataTimeStamp',\n x00100000: 'PatientGroupLength',\n x00100010: 'PatientName',\n x00100020: 'PatientID',\n x00100021: 'IssuerOfPatientID',\n x00100022: 'TypeOfPatientID',\n x00100030: 'PatientBirthDate',\n x00100032: 'PatientBirthTime',\n x00100040: 'PatientSex',\n x00100050: 'PatientInsurancePlanCodeSequence',\n x00100101: 'PatientPrimaryLanguageCodeSeq',\n x00100102: 'PatientPrimaryLanguageCodeModSeq',\n x00101000: 'OtherPatientIDs',\n x00101001: 'OtherPatientNames',\n x00101002: 'OtherPatientIDsSequence',\n x00101005: 'PatientBirthName',\n x00101010: 'PatientAge',\n x00101020: 'PatientSize',\n x00101030: 'PatientWeight',\n x00101040: 'PatientAddress',\n x00101050: 'InsurancePlanIdentification',\n x00101060: 'PatientMotherBirthName',\n x00101080: 'MilitaryRank',\n x00101081: 'BranchOfService',\n x00101090: 'MedicalRecordLocator',\n x00102000: 'MedicalAlerts',\n x00102110: 'Allergies',\n x00102150: 'CountryOfResidence',\n x00102152: 'RegionOfResidence',\n x00102154: 'PatientTelephoneNumbers',\n x00102160: 'EthnicGroup',\n x00102180: 'Occupation',\n x001021a0: 'SmokingStatus',\n x001021b0: 'AdditionalPatientHistory',\n x001021c0: 'PregnancyStatus',\n x001021d0: 'LastMenstrualDate',\n x001021f0: 'PatientReligiousPreference',\n x00102201: 'PatientSpeciesDescription',\n x00102202: 'PatientSpeciesCodeSequence',\n x00102203: 'PatientSexNeutered',\n x00102210: 'AnatomicalOrientationType',\n x00102292: 'PatientBreedDescription',\n x00102293: 'PatientBreedCodeSequence',\n x00102294: 'BreedRegistrationSequence',\n x00102295: 'BreedRegistrationNumber',\n x00102296: 'BreedRegistryCodeSequence',\n x00102297: 'ResponsiblePerson',\n x00102298: 'ResponsiblePersonRole',\n x00102299: 'ResponsibleOrganization',\n x00104000: 'PatientComments',\n x00109431: 'ExaminedBodyThickness',\n x00111010: 'PatientStatus',\n x00120010: 'ClinicalTrialSponsorName',\n x00120020: 'ClinicalTrialProtocolID',\n x00120021: 'ClinicalTrialProtocolName',\n x00120030: 'ClinicalTrialSiteID',\n x00120031: 'ClinicalTrialSiteName',\n x00120040: 'ClinicalTrialSubjectID',\n x00120042: 'ClinicalTrialSubjectReadingID',\n x00120050: 'ClinicalTrialTimePointID',\n x00120051: 'ClinicalTrialTimePointDescription',\n x00120060: 'ClinicalTrialCoordinatingCenter',\n x00120062: 'PatientIdentityRemoved',\n x00120063: 'DeidentificationMethod',\n x00120064: 'DeidentificationMethodCodeSequence',\n x00120071: 'ClinicalTrialSeriesID',\n x00120072: 'ClinicalTrialSeriesDescription',\n x00120084: 'DistributionType',\n x00120085: 'ConsentForDistributionFlag',\n x00180000: 'AcquisitionGroupLength',\n x00180010: 'ContrastBolusAgent',\n x00180012: 'ContrastBolusAgentSequence',\n x00180014: 'ContrastBolusAdministrationRoute',\n x00180015: 'BodyPartExamined',\n x00180020: 'ScanningSequence',\n x00180021: 'SequenceVariant',\n x00180022: 'ScanOptions',\n x00180023: 'MRAcquisitionType',\n x00180024: 'SequenceName',\n x00180025: 'AngioFlag',\n x00180026: 'InterventionDrugInformationSeq',\n x00180027: 'InterventionDrugStopTime',\n x00180028: 'InterventionDrugDose',\n x00180029: 'InterventionDrugSequence',\n x0018002a: 'AdditionalDrugSequence',\n x00180030: 'Radionuclide',\n x00180031: 'Radiopharmaceutical',\n x00180032: 'EnergyWindowCenterline',\n x00180033: 'EnergyWindowTotalWidth',\n x00180034: 'InterventionDrugName',\n x00180035: 'InterventionDrugStartTime',\n x00180036: 'InterventionSequence',\n x00180037: 'TherapyType',\n x00180038: 'InterventionStatus',\n x00180039: 'TherapyDescription',\n x0018003a: 'InterventionDescription',\n x00180040: 'CineRate',\n x00180042: 'InitialCineRunState',\n x00180050: 'SliceThickness',\n x00180060: 'KVP',\n x00180070: 'CountsAccumulated',\n x00180071: 'AcquisitionTerminationCondition',\n x00180072: 'EffectiveDuration',\n x00180073: 'AcquisitionStartCondition',\n x00180074: 'AcquisitionStartConditionData',\n x00180075: 'AcquisitionEndConditionData',\n x00180080: 'RepetitionTime',\n x00180081: 'EchoTime',\n x00180082: 'InversionTime',\n x00180083: 'NumberOfAverages',\n x00180084: 'ImagingFrequency',\n x00180085: 'ImagedNucleus',\n x00180086: 'EchoNumber',\n x00180087: 'MagneticFieldStrength',\n x00180088: 'SpacingBetweenSlices',\n x00180089: 'NumberOfPhaseEncodingSteps',\n x00180090: 'DataCollectionDiameter',\n x00180091: 'EchoTrainLength',\n x00180093: 'PercentSampling',\n x00180094: 'PercentPhaseFieldOfView',\n x00180095: 'PixelBandwidth',\n x00181000: 'DeviceSerialNumber',\n x00181002: 'DeviceUID',\n x00181003: 'DeviceID',\n x00181004: 'PlateID',\n x00181005: 'GeneratorID',\n x00181006: 'GridID',\n x00181007: 'CassetteID',\n x00181008: 'GantryID',\n x00181010: 'SecondaryCaptureDeviceID',\n x00181011: 'HardcopyCreationDeviceID',\n x00181012: 'DateOfSecondaryCapture',\n x00181014: 'TimeOfSecondaryCapture',\n x00181016: 'SecondaryCaptureDeviceManufacturer',\n x00181017: 'HardcopyDeviceManufacturer',\n x00181018: 'SecondaryCaptureDeviceModelName',\n x00181019: 'SecondaryCaptureDeviceSoftwareVers',\n x0018101a: 'HardcopyDeviceSoftwareVersion',\n x0018101b: 'HardcopyDeviceModelName',\n x00181020: 'SoftwareVersion',\n x00181022: 'VideoImageFormatAcquired',\n x00181023: 'DigitalImageFormatAcquired',\n x00181030: 'ProtocolName',\n x00181040: 'ContrastBolusRoute',\n x00181041: 'ContrastBolusVolume',\n x00181042: 'ContrastBolusStartTime',\n x00181043: 'ContrastBolusStopTime',\n x00181044: 'ContrastBolusTotalDose',\n x00181045: 'SyringeCounts',\n x00181046: 'ContrastFlowRate',\n x00181047: 'ContrastFlowDuration',\n x00181048: 'ContrastBolusIngredient',\n x00181049: 'ContrastBolusConcentration',\n x00181050: 'SpatialResolution',\n x00181060: 'TriggerTime',\n x00181061: 'TriggerSourceOrType',\n x00181062: 'NominalInterval',\n x00181063: 'FrameTime',\n x00181064: 'CardiacFramingType',\n x00181065: 'FrameTimeVector',\n x00181066: 'FrameDelay',\n x00181067: 'ImageTriggerDelay',\n x00181068: 'MultiplexGroupTimeOffset',\n x00181069: 'TriggerTimeOffset',\n x0018106a: 'SynchronizationTrigger',\n x0018106c: 'SynchronizationChannel',\n x0018106e: 'TriggerSamplePosition',\n x00181070: 'RadiopharmaceuticalRoute',\n x00181071: 'RadiopharmaceuticalVolume',\n x00181072: 'RadiopharmaceuticalStartTime',\n x00181073: 'RadiopharmaceuticalStopTime',\n x00181074: 'RadionuclideTotalDose',\n x00181075: 'RadionuclideHalfLife',\n x00181076: 'RadionuclidePositronFraction',\n x00181077: 'RadiopharmaceuticalSpecActivity',\n x00181078: 'RadiopharmaceuticalStartDateTime',\n x00181079: 'RadiopharmaceuticalStopDateTime',\n x00181080: 'BeatRejectionFlag',\n x00181081: 'LowRRValue',\n x00181082: 'HighRRValue',\n x00181083: 'IntervalsAcquired',\n x00181084: 'IntervalsRejected',\n x00181085: 'PVCRejection',\n x00181086: 'SkipBeats',\n x00181088: 'HeartRate',\n x00181090: 'CardiacNumberOfImages',\n x00181094: 'TriggerWindow',\n x00181100: 'ReconstructionDiameter',\n x00181110: 'DistanceSourceToDetector',\n x00181111: 'DistanceSourceToPatient',\n x00181114: 'EstimatedRadiographicMagnification',\n x00181120: 'GantryDetectorTilt',\n x00181121: 'GantryDetectorSlew',\n x00181130: 'TableHeight',\n x00181131: 'TableTraverse',\n x00181134: 'TableMotion',\n x00181135: 'TableVerticalIncrement',\n x00181136: 'TableLateralIncrement',\n x00181137: 'TableLongitudinalIncrement',\n x00181138: 'TableAngle',\n x0018113a: 'TableType',\n x00181140: 'RotationDirection',\n x00181141: 'AngularPosition',\n x00181142: 'RadialPosition',\n x00181143: 'ScanArc',\n x00181144: 'AngularStep',\n x00181145: 'CenterOfRotationOffset',\n x00181146: 'RotationOffset',\n x00181147: 'FieldOfViewShape',\n x00181149: 'FieldOfViewDimensions',\n x00181150: 'ExposureTime',\n x00181151: 'XRayTubeCurrent',\n x00181152: 'Exposure',\n x00181153: 'ExposureInMicroAmpSec',\n x00181154: 'AveragePulseWidth',\n x00181155: 'RadiationSetting',\n x00181156: 'RectificationType',\n x0018115a: 'RadiationMode',\n x0018115e: 'ImageAreaDoseProduct',\n x00181160: 'FilterType',\n x00181161: 'TypeOfFilters',\n x00181162: 'IntensifierSize',\n x00181164: 'ImagerPixelSpacing',\n x00181166: 'Grid',\n x00181170: 'GeneratorPower',\n x00181180: 'CollimatorGridName',\n x00181181: 'CollimatorType',\n x00181182: 'FocalDistance',\n x00181183: 'XFocusCenter',\n x00181184: 'YFocusCenter',\n x00181190: 'FocalSpots',\n x00181191: 'AnodeTargetMaterial',\n x001811a0: 'BodyPartThickness',\n x001811a2: 'CompressionForce',\n x00181200: 'DateOfLastCalibration',\n x00181201: 'TimeOfLastCalibration',\n x00181210: 'ConvolutionKernel',\n x00181240: 'UpperLowerPixelValues',\n x00181242: 'ActualFrameDuration',\n x00181243: 'CountRate',\n x00181244: 'PreferredPlaybackSequencing',\n x00181250: 'ReceiveCoilName',\n x00181251: 'TransmitCoilName',\n x00181260: 'PlateType',\n x00181261: 'PhosphorType',\n x00181300: 'ScanVelocity',\n x00181301: 'WholeBodyTechnique',\n x00181302: 'ScanLength',\n x00181310: 'AcquisitionMatrix',\n x00181312: 'InPlanePhaseEncodingDirection',\n x00181314: 'FlipAngle',\n x00181315: 'VariableFlipAngleFlag',\n x00181316: 'SAR',\n x00181318: 'DB-Dt',\n x00181400: 'AcquisitionDeviceProcessingDescr',\n x00181401: 'AcquisitionDeviceProcessingCode',\n x00181402: 'CassetteOrientation',\n x00181403: 'CassetteSize',\n x00181404: 'ExposuresOnPlate',\n x00181405: 'RelativeXRayExposure',\n x00181450: 'ColumnAngulation',\n x00181460: 'TomoLayerHeight',\n x00181470: 'TomoAngle',\n x00181480: 'TomoTime',\n x00181490: 'TomoType',\n x00181491: 'TomoClass',\n x00181495: 'NumberOfTomosynthesisSourceImages',\n x00181500: 'PositionerMotion',\n x00181508: 'PositionerType',\n x00181510: 'PositionerPrimaryAngle',\n x00181511: 'PositionerSecondaryAngle',\n x00181520: 'PositionerPrimaryAngleIncrement',\n x00181521: 'PositionerSecondaryAngleIncrement',\n x00181530: 'DetectorPrimaryAngle',\n x00181531: 'DetectorSecondaryAngle',\n x00181600: 'ShutterShape',\n x00181602: 'ShutterLeftVerticalEdge',\n x00181604: 'ShutterRightVerticalEdge',\n x00181606: 'ShutterUpperHorizontalEdge',\n x00181608: 'ShutterLowerHorizontalEdge',\n x00181610: 'CenterOfCircularShutter',\n x00181612: 'RadiusOfCircularShutter',\n x00181620: 'VerticesOfPolygonalShutter',\n x00181622: 'ShutterPresentationValue',\n x00181623: 'ShutterOverlayGroup',\n x00181624: 'ShutterPresentationColorCIELabVal',\n x00181700: 'CollimatorShape',\n x00181702: 'CollimatorLeftVerticalEdge',\n x00181704: 'CollimatorRightVerticalEdge',\n x00181706: 'CollimatorUpperHorizontalEdge',\n x00181708: 'CollimatorLowerHorizontalEdge',\n x00181710: 'CenterOfCircularCollimator',\n x00181712: 'RadiusOfCircularCollimator',\n x00181720: 'VerticesOfPolygonalCollimator',\n x00181800: 'AcquisitionTimeSynchronized',\n x00181801: 'TimeSource',\n x00181802: 'TimeDistributionProtocol',\n x00181803: 'NTPSourceAddress',\n x00182001: 'PageNumberVector',\n x00182002: 'FrameLabelVector',\n x00182003: 'FramePrimaryAngleVector',\n x00182004: 'FrameSecondaryAngleVector',\n x00182005: 'SliceLocationVector',\n x00182006: 'DisplayWindowLabelVector',\n x00182010: 'NominalScannedPixelSpacing',\n x00182020: 'DigitizingDeviceTransportDirection',\n x00182030: 'RotationOfScannedFilm',\n x00183100: 'IVUSAcquisition',\n x00183101: 'IVUSPullbackRate',\n x00183102: 'IVUSGatedRate',\n x00183103: 'IVUSPullbackStartFrameNumber',\n x00183104: 'IVUSPullbackStopFrameNumber',\n x00183105: 'LesionNumber',\n x00184000: 'AcquisitionComments',\n x00185000: 'OutputPower',\n x00185010: 'TransducerData',\n x00185012: 'FocusDepth',\n x00185020: 'ProcessingFunction',\n x00185021: 'PostprocessingFunction',\n x00185022: 'MechanicalIndex',\n x00185024: 'BoneThermalIndex',\n x00185026: 'CranialThermalIndex',\n x00185027: 'SoftTissueThermalIndex',\n x00185028: 'SoftTissueFocusThermalIndex',\n x00185029: 'SoftTissueSurfaceThermalIndex',\n x00185030: 'DynamicRange',\n x00185040: 'TotalGain',\n x00185050: 'DepthOfScanField',\n x00185100: 'PatientPosition',\n x00185101: 'ViewPosition',\n x00185104: 'ProjectionEponymousNameCodeSeq',\n x00185210: 'ImageTransformationMatrix',\n x00185212: 'ImageTranslationVector',\n x00186000: 'Sensitivity',\n x00186011: 'SequenceOfUltrasoundRegions',\n x00186012: 'RegionSpatialFormat',\n x00186014: 'RegionDataType',\n x00186016: 'RegionFlags',\n x00186018: 'RegionLocationMinX0',\n x0018601a: 'RegionLocationMinY0',\n x0018601c: 'RegionLocationMaxX1',\n x0018601e: 'RegionLocationMaxY1',\n x00186020: 'ReferencePixelX0',\n x00186022: 'ReferencePixelY0',\n x00186024: 'PhysicalUnitsXDirection',\n x00186026: 'PhysicalUnitsYDirection',\n x00186028: 'ReferencePixelPhysicalValueX',\n x0018602a: 'ReferencePixelPhysicalValueY',\n x0018602c: 'PhysicalDeltaX',\n x0018602e: 'PhysicalDeltaY',\n x00186030: 'TransducerFrequency',\n x00186031: 'TransducerType',\n x00186032: 'PulseRepetitionFrequency',\n x00186034: 'DopplerCorrectionAngle',\n x00186036: 'SteeringAngle',\n x00186038: 'DopplerSampleVolumeXPosRetired',\n x00186039: 'DopplerSampleVolumeXPosition',\n x0018603a: 'DopplerSampleVolumeYPosRetired',\n x0018603b: 'DopplerSampleVolumeYPosition',\n x0018603c: 'TMLinePositionX0Retired',\n x0018603d: 'TMLinePositionX0',\n x0018603e: 'TMLinePositionY0Retired',\n x0018603f: 'TMLinePositionY0',\n x00186040: 'TMLinePositionX1Retired',\n x00186041: 'TMLinePositionX1',\n x00186042: 'TMLinePositionY1Retired',\n x00186043: 'TMLinePositionY1',\n x00186044: 'PixelComponentOrganization',\n x00186046: 'PixelComponentMask',\n x00186048: 'PixelComponentRangeStart',\n x0018604a: 'PixelComponentRangeStop',\n x0018604c: 'PixelComponentPhysicalUnits',\n x0018604e: 'PixelComponentDataType',\n x00186050: 'NumberOfTableBreakPoints',\n x00186052: 'TableOfXBreakPoints',\n x00186054: 'TableOfYBreakPoints',\n x00186056: 'NumberOfTableEntries',\n x00186058: 'TableOfPixelValues',\n x0018605a: 'TableOfParameterValues',\n x00186060: 'RWaveTimeVector',\n x00187000: 'DetectorConditionsNominalFlag',\n x00187001: 'DetectorTemperature',\n x00187004: 'DetectorType',\n x00187005: 'DetectorConfiguration',\n x00187006: 'DetectorDescription',\n x00187008: 'DetectorMode',\n x0018700a: 'DetectorID',\n x0018700c: 'DateOfLastDetectorCalibration',\n x0018700e: 'TimeOfLastDetectorCalibration',\n x00187010: 'DetectorExposuresSinceCalibration',\n x00187011: 'DetectorExposuresSinceManufactured',\n x00187012: 'DetectorTimeSinceLastExposure',\n x00187014: 'DetectorActiveTime',\n x00187016: 'DetectorActiveOffsetFromExposure',\n x0018701a: 'DetectorBinning',\n x00187020: 'DetectorElementPhysicalSize',\n x00187022: 'DetectorElementSpacing',\n x00187024: 'DetectorActiveShape',\n x00187026: 'DetectorActiveDimensions',\n x00187028: 'DetectorActiveOrigin',\n x0018702a: 'DetectorManufacturerName',\n x0018702b: 'DetectorManufacturersModelName',\n x00187030: 'FieldOfViewOrigin',\n x00187032: 'FieldOfViewRotation',\n x00187034: 'FieldOfViewHorizontalFlip',\n x00187040: 'GridAbsorbingMaterial',\n x00187041: 'GridSpacingMaterial',\n x00187042: 'GridThickness',\n x00187044: 'GridPitch',\n x00187046: 'GridAspectRatio',\n x00187048: 'GridPeriod',\n x0018704c: 'GridFocalDistance',\n x00187050: 'FilterMaterial',\n x00187052: 'FilterThicknessMinimum',\n x00187054: 'FilterThicknessMaximum',\n x00187060: 'ExposureControlMode',\n x00187062: 'ExposureControlModeDescription',\n x00187064: 'ExposureStatus',\n x00187065: 'PhototimerSetting',\n x00188150: 'ExposureTimeInMicroSec',\n x00188151: 'XRayTubeCurrentInMicroAmps',\n x00189004: 'ContentQualification',\n x00189005: 'PulseSequenceName',\n x00189006: 'MRImagingModifierSequence',\n x00189008: 'EchoPulseSequence',\n x00189009: 'InversionRecovery',\n x00189010: 'FlowCompensation',\n x00189011: 'MultipleSpinEcho',\n x00189012: 'MultiPlanarExcitation',\n x00189014: 'PhaseContrast',\n x00189015: 'TimeOfFlightContrast',\n x00189016: 'Spoiling',\n x00189017: 'SteadyStatePulseSequence',\n x00189018: 'EchoPlanarPulseSequence',\n x00189019: 'TagAngleFirstAxis',\n x00189020: 'MagnetizationTransfer',\n x00189021: 'T2Preparation',\n x00189022: 'BloodSignalNulling',\n x00189024: 'SaturationRecovery',\n x00189025: 'SpectrallySelectedSuppression',\n x00189026: 'SpectrallySelectedExcitation',\n x00189027: 'SpatialPresaturation',\n x00189028: 'Tagging',\n x00189029: 'OversamplingPhase',\n x00189030: 'TagSpacingFirstDimension',\n x00189032: 'GeometryOfKSpaceTraversal',\n x00189033: 'SegmentedKSpaceTraversal',\n x00189034: 'RectilinearPhaseEncodeReordering',\n x00189035: 'TagThickness',\n x00189036: 'PartialFourierDirection',\n x00189037: 'CardiacSynchronizationTechnique',\n x00189041: 'ReceiveCoilManufacturerName',\n x00189042: 'MRReceiveCoilSequence',\n x00189043: 'ReceiveCoilType',\n x00189044: 'QuadratureReceiveCoil',\n x00189045: 'MultiCoilDefinitionSequence',\n x00189046: 'MultiCoilConfiguration',\n x00189047: 'MultiCoilElementName',\n x00189048: 'MultiCoilElementUsed',\n x00189049: 'MRTransmitCoilSequence',\n x00189050: 'TransmitCoilManufacturerName',\n x00189051: 'TransmitCoilType',\n x00189052: 'SpectralWidth',\n x00189053: 'ChemicalShiftReference',\n x00189054: 'VolumeLocalizationTechnique',\n x00189058: 'MRAcquisitionFrequencyEncodeSteps',\n x00189059: 'Decoupling',\n x00189060: 'DecoupledNucleus',\n x00189061: 'DecouplingFrequency',\n x00189062: 'DecouplingMethod',\n x00189063: 'DecouplingChemicalShiftReference',\n x00189064: 'KSpaceFiltering',\n x00189065: 'TimeDomainFiltering',\n x00189066: 'NumberOfZeroFills',\n x00189067: 'BaselineCorrection',\n x00189069: 'ParallelReductionFactorInPlane',\n x00189070: 'CardiacRRIntervalSpecified',\n x00189073: 'AcquisitionDuration',\n x00189074: 'FrameAcquisitionDateTime',\n x00189075: 'DiffusionDirectionality',\n x00189076: 'DiffusionGradientDirectionSequence',\n x00189077: 'ParallelAcquisition',\n x00189078: 'ParallelAcquisitionTechnique',\n x00189079: 'InversionTimes',\n x00189080: 'MetaboliteMapDescription',\n x00189081: 'PartialFourier',\n x00189082: 'EffectiveEchoTime',\n x00189083: 'MetaboliteMapCodeSequence',\n x00189084: 'ChemicalShiftSequence',\n x00189085: 'CardiacSignalSource',\n x00189087: 'DiffusionBValue',\n x00189089: 'DiffusionGradientOrientation',\n x00189090: 'VelocityEncodingDirection',\n x00189091: 'VelocityEncodingMinimumValue',\n x00189093: 'NumberOfKSpaceTrajectories',\n x00189094: 'CoverageOfKSpace',\n x00189095: 'SpectroscopyAcquisitionPhaseRows',\n x00189096: 'ParallelReductFactorInPlaneRetired',\n x00189098: 'TransmitterFrequency',\n x00189100: 'ResonantNucleus',\n x00189101: 'FrequencyCorrection',\n x00189103: 'MRSpectroscopyFOV-GeometrySequence',\n x00189104: 'SlabThickness',\n x00189105: 'SlabOrientation',\n x00189106: 'MidSlabPosition',\n x00189107: 'MRSpatialSaturationSequence',\n x00189112: 'MRTimingAndRelatedParametersSeq',\n x00189114: 'MREchoSequence',\n x00189115: 'MRModifierSequence',\n x00189117: 'MRDiffusionSequence',\n x00189118: 'CardiacTriggerSequence',\n x00189119: 'MRAveragesSequence',\n x00189125: 'MRFOV-GeometrySequence',\n x00189126: 'VolumeLocalizationSequence',\n x00189127: 'SpectroscopyAcquisitionDataColumns',\n x00189147: 'DiffusionAnisotropyType',\n x00189151: 'FrameReferenceDateTime',\n x00189152: 'MRMetaboliteMapSequence',\n x00189155: 'ParallelReductionFactorOutOfPlane',\n x00189159: 'SpectroscopyOutOfPlanePhaseSteps',\n x00189166: 'BulkMotionStatus',\n x00189168: 'ParallelReductionFactSecondInPlane',\n x00189169: 'CardiacBeatRejectionTechnique',\n x00189170: 'RespiratoryMotionCompTechnique',\n x00189171: 'RespiratorySignalSource',\n x00189172: 'BulkMotionCompensationTechnique',\n x00189173: 'BulkMotionSignalSource',\n x00189174: 'ApplicableSafetyStandardAgency',\n x00189175: 'ApplicableSafetyStandardDescr',\n x00189176: 'OperatingModeSequence',\n x00189177: 'OperatingModeType',\n x00189178: 'OperatingMode',\n x00189179: 'SpecificAbsorptionRateDefinition',\n x00189180: 'GradientOutputType',\n x00189181: 'SpecificAbsorptionRateValue',\n x00189182: 'GradientOutput',\n x00189183: 'FlowCompensationDirection',\n x00189184: 'TaggingDelay',\n x00189185: 'RespiratoryMotionCompTechDescr',\n x00189186: 'RespiratorySignalSourceID',\n x00189195: 'ChemicalShiftsMinIntegrateLimitHz',\n x00189196: 'ChemicalShiftsMaxIntegrateLimitHz',\n x00189197: 'MRVelocityEncodingSequence',\n x00189198: 'FirstOrderPhaseCorrection',\n x00189199: 'WaterReferencedPhaseCorrection',\n x00189200: 'MRSpectroscopyAcquisitionType',\n x00189214: 'RespiratoryCyclePosition',\n x00189217: 'VelocityEncodingMaximumValue',\n x00189218: 'TagSpacingSecondDimension',\n x00189219: 'TagAngleSecondAxis',\n x00189220: 'FrameAcquisitionDuration',\n x00189226: 'MRImageFrameTypeSequence',\n x00189227: 'MRSpectroscopyFrameTypeSequence',\n x00189231: 'MRAcqPhaseEncodingStepsInPlane',\n x00189232: 'MRAcqPhaseEncodingStepsOutOfPlane',\n x00189234: 'SpectroscopyAcqPhaseColumns',\n x00189236: 'CardiacCyclePosition',\n x00189239: 'SpecificAbsorptionRateSequence',\n x00189240: 'RFEchoTrainLength',\n x00189241: 'GradientEchoTrainLength',\n x00189295: 'ChemicalShiftsMinIntegrateLimitPPM',\n x00189296: 'ChemicalShiftsMaxIntegrateLimitPPM',\n x00189301: 'CTAcquisitionTypeSequence',\n x00189302: 'AcquisitionType',\n x00189303: 'TubeAngle',\n x00189304: 'CTAcquisitionDetailsSequence',\n x00189305: 'RevolutionTime',\n x00189306: 'SingleCollimationWidth',\n x00189307: 'TotalCollimationWidth',\n x00189308: 'CTTableDynamicsSequence',\n x00189309: 'TableSpeed',\n x00189310: 'TableFeedPerRotation',\n x00189311: 'SpiralPitchFactor',\n x00189312: 'CTGeometrySequence',\n x00189313: 'DataCollectionCenterPatient',\n x00189314: 'CTReconstructionSequence',\n x00189315: 'ReconstructionAlgorithm',\n x00189316: 'ConvolutionKernelGroup',\n x00189317: 'ReconstructionFieldOfView',\n x00189318: 'ReconstructionTargetCenterPatient',\n x00189319: 'ReconstructionAngle',\n x00189320: 'ImageFilter',\n x00189321: 'CTExposureSequence',\n x00189322: 'ReconstructionPixelSpacing',\n x00189323: 'ExposureModulationType',\n x00189324: 'EstimatedDoseSaving',\n x00189325: 'CTXRayDetailsSequence',\n x00189326: 'CTPositionSequence',\n x00189327: 'TablePosition',\n x00189328: 'ExposureTimeInMilliSec',\n x00189329: 'CTImageFrameTypeSequence',\n x00189330: 'XRayTubeCurrentInMilliAmps',\n x00189332: 'ExposureInMilliAmpSec',\n x00189333: 'ConstantVolumeFlag',\n x00189334: 'FluoroscopyFlag',\n x00189335: 'SourceToDataCollectionCenterDist',\n x00189337: 'ContrastBolusAgentNumber',\n x00189338: 'ContrastBolusIngredientCodeSeq',\n x00189340: 'ContrastAdministrationProfileSeq',\n x00189341: 'ContrastBolusUsageSequence',\n x00189342: 'ContrastBolusAgentAdministered',\n x00189343: 'ContrastBolusAgentDetected',\n x00189344: 'ContrastBolusAgentPhase',\n x00189345: 'CTDIvol',\n x00189346: 'CTDIPhantomTypeCodeSequence',\n x00189351: 'CalciumScoringMassFactorPatient',\n x00189352: 'CalciumScoringMassFactorDevice',\n x00189353: 'EnergyWeightingFactor',\n x00189360: 'CTAdditionalXRaySourceSequence',\n x00189401: 'ProjectionPixelCalibrationSequence',\n x00189402: 'DistanceSourceToIsocenter',\n x00189403: 'DistanceObjectToTableTop',\n x00189404: 'ObjectPixelSpacingInCenterOfBeam',\n x00189405: 'PositionerPositionSequence',\n x00189406: 'TablePositionSequence',\n x00189407: 'CollimatorShapeSequence',\n x00189412: 'XA-XRFFrameCharacteristicsSequence',\n x00189417: 'FrameAcquisitionSequence',\n x00189420: 'XRayReceptorType',\n x00189423: 'AcquisitionProtocolName',\n x00189424: 'AcquisitionProtocolDescription',\n x00189425: 'ContrastBolusIngredientOpaque',\n x00189426: 'DistanceReceptorPlaneToDetHousing',\n x00189427: 'IntensifierActiveShape',\n x00189428: 'IntensifierActiveDimensions',\n x00189429: 'PhysicalDetectorSize',\n x00189430: 'PositionOfIsocenterProjection',\n x00189432: 'FieldOfViewSequence',\n x00189433: 'FieldOfViewDescription',\n x00189434: 'ExposureControlSensingRegionsSeq',\n x00189435: 'ExposureControlSensingRegionShape',\n x00189436: 'ExposureControlSensRegionLeftEdge',\n x00189437: 'ExposureControlSensRegionRightEdge',\n x00189440: 'CenterOfCircExposControlSensRegion',\n x00189441: 'RadiusOfCircExposControlSensRegion',\n x00189447: 'ColumnAngulationPatient',\n x00189449: 'BeamAngle',\n x00189451: 'FrameDetectorParametersSequence',\n x00189452: 'CalculatedAnatomyThickness',\n x00189455: 'CalibrationSequence',\n x00189456: 'ObjectThicknessSequence',\n x00189457: 'PlaneIdentification',\n x00189461: 'FieldOfViewDimensionsInFloat',\n x00189462: 'IsocenterReferenceSystemSequence',\n x00189463: 'PositionerIsocenterPrimaryAngle',\n x00189464: 'PositionerIsocenterSecondaryAngle',\n x00189465: 'PositionerIsocenterDetRotAngle',\n x00189466: 'TableXPositionToIsocenter',\n x00189467: 'TableYPositionToIsocenter',\n x00189468: 'TableZPositionToIsocenter',\n x00189469: 'TableHorizontalRotationAngle',\n x00189470: 'TableHeadTiltAngle',\n x00189471: 'TableCradleTiltAngle',\n x00189472: 'FrameDisplayShutterSequence',\n x00189473: 'AcquiredImageAreaDoseProduct',\n x00189474: 'CArmPositionerTabletopRelationship',\n x00189476: 'XRayGeometrySequence',\n x00189477: 'IrradiationEventIDSequence',\n x00189504: 'XRay3DFrameTypeSequence',\n x00189506: 'ContributingSourcesSequence',\n x00189507: 'XRay3DAcquisitionSequence',\n x00189508: 'PrimaryPositionerScanArc',\n x00189509: 'SecondaryPositionerScanArc',\n x00189510: 'PrimaryPositionerScanStartAngle',\n x00189511: 'SecondaryPositionerScanStartAngle',\n x00189514: 'PrimaryPositionerIncrement',\n x00189515: 'SecondaryPositionerIncrement',\n x00189516: 'StartAcquisitionDateTime',\n x00189517: 'EndAcquisitionDateTime',\n x00189524: 'ApplicationName',\n x00189525: 'ApplicationVersion',\n x00189526: 'ApplicationManufacturer',\n x00189527: 'AlgorithmType',\n x00189528: 'AlgorithmDescription',\n x00189530: 'XRay3DReconstructionSequence',\n x00189531: 'ReconstructionDescription',\n x00189538: 'PerProjectionAcquisitionSequence',\n x00189601: 'DiffusionBMatrixSequence',\n x00189602: 'DiffusionBValueXX',\n x00189603: 'DiffusionBValueXY',\n x00189604: 'DiffusionBValueXZ',\n x00189605: 'DiffusionBValueYY',\n x00189606: 'DiffusionBValueYZ',\n x00189607: 'DiffusionBValueZZ',\n x00189701: 'DecayCorrectionDateTime',\n x00189715: 'StartDensityThreshold',\n x00189722: 'TerminationTimeThreshold',\n x00189725: 'DetectorGeometry',\n x00189727: 'AxialDetectorDimension',\n x00189735: 'PETPositionSequence',\n x00189739: 'NumberOfIterations',\n x00189740: 'NumberOfSubsets',\n x00189751: 'PETFrameTypeSequence',\n x00189756: 'ReconstructionType',\n x00189758: 'DecayCorrected',\n x00189759: 'AttenuationCorrected',\n x00189760: 'ScatterCorrected',\n x00189761: 'DeadTimeCorrected',\n x00189762: 'GantryMotionCorrected',\n x00189763: 'PatientMotionCorrected',\n x00189765: 'RandomsCorrected',\n x00189767: 'SensitivityCalibrated',\n x00189801: 'DepthsOfFocus',\n x00189804: 'ExclusionStartDatetime',\n x00189805: 'ExclusionDuration',\n x00189807: 'ImageDataTypeSequence',\n x00189808: 'DataType',\n x0018980b: 'AliasedDataType',\n x0018a001: 'ContributingEquipmentSequence',\n x0018a002: 'ContributionDateTime',\n x0018a003: 'ContributionDescription',\n // x00191002: 'NumberOfCellsIInDetector',\n // x00191003: 'CellNumberAtTheta',\n // x00191004: 'CellSpacing',\n // x0019100f: 'HorizFrameOfRef',\n // x00191011: 'SeriesContrast',\n // x00191012: 'LastPseq',\n // x00191013: 'StartNumberForBaseline',\n // x00191014: 'EndNumberForBaseline',\n // x00191015: 'StartNumberForEnhancedScans',\n // x00191016: 'EndNumberForEnhancedScans',\n // x00191017: 'SeriesPlane',\n // x00191018: 'FirstScanRas',\n // x00191019: 'FirstScanLocation',\n // x0019101a: 'LastScanRas',\n // x0019101b: 'LastScanLoc',\n // x0019101e: 'DisplayFieldOfView',\n // x00191023: 'TableSpeed',\n // x00191024: 'MidScanTime',\n // x00191025: 'MidScanFlag',\n // x00191026: 'DegreesOfAzimuth',\n // x00191027: 'GantryPeriod',\n // x0019102a: 'XRayOnPosition',\n // x0019102b: 'XRayOffPosition',\n // x0019102c: 'NumberOfTriggers',\n // x0019102e: 'AngleOfFirstView',\n // x0019102f: 'TriggerFrequency',\n // x00191039: 'ScanFOVType',\n // x00191040: 'StatReconFlag',\n // x00191041: 'ComputeType',\n // x00191042: 'SegmentNumber',\n // x00191043: 'TotalSegmentsRequested',\n // x00191044: 'InterscanDelay',\n // x00191047: 'ViewCompressionFactor',\n // x0019104a: 'TotalNoOfRefChannels',\n // x0019104b: 'DataSizeForScanData',\n // x00191052: 'ReconPostProcflag',\n // x00191057: 'CTWaterNumber',\n // x00191058: 'CTBoneNumber',\n // x0019105a: 'AcquisitionDuration',\n // x0019105e: 'NumberOfChannels',\n // x0019105f: 'IncrementBetweenChannels',\n // x00191060: 'StartingView',\n // x00191061: 'NumberOfViews',\n // x00191062: 'IncrementBetweenViews',\n // x0019106a: 'DependantOnNoViewsProcessed',\n // x0019106b: 'FieldOfViewInDetectorCells',\n // x00191070: 'ValueOfBackProjectionButton',\n // x00191071: 'SetIfFatqEstimatesWereUsed',\n // x00191072: 'ZChanAvgOverViews',\n // x00191073: 'AvgOfLeftRefChansOverViews',\n // x00191074: 'MaxLeftChanOverViews',\n // x00191075: 'AvgOfRightRefChansOverViews',\n // x00191076: 'MaxRightChanOverViews',\n // x0019107d: 'SecondEcho',\n // x0019107e: 'NumberOfEchoes',\n // x0019107f: 'TableDelta',\n // x00191081: 'Contiguous',\n // x00191084: 'PeakSAR',\n // x00191085: 'MonitorSAR',\n // x00191087: 'CardiacRepetitionTime',\n // x00191088: 'ImagesPerCardiacCycle',\n // x0019108a: 'ActualReceiveGainAnalog',\n // x0019108b: 'ActualReceiveGainDigital',\n // x0019108d: 'DelayAfterTrigger',\n // x0019108f: 'Swappf',\n // x00191090: 'PauseInterval',\n // x00191091: 'PulseTime',\n // x00191092: 'SliceOffsetOnFreqAxis',\n // x00191093: 'CenterFrequency',\n // x00191094: 'TransmitGain',\n // x00191095: 'AnalogReceiverGain',\n // x00191096: 'DigitalReceiverGain',\n // x00191097: 'BitmapDefiningCVs',\n // x00191098: 'CenterFreqMethod',\n // x0019109b: 'PulseSeqMode',\n // x0019109c: 'PulseSeqName',\n // x0019109d: 'PulseSeqDate',\n // x0019109e: 'InternalPulseSeqName',\n // x0019109f: 'TransmittingCoil',\n // x001910a0: 'SurfaceCoilType',\n // x001910a1: 'ExtremityCoilFlag',\n // x001910a2: 'RawDataRunNumber',\n // x001910a3: 'CalibratedFieldStrength',\n // x001910a4: 'SATFatWaterBone',\n // x001910a5: 'ReceiveBandwidth',\n // x001910a7: 'UserData01',\n // x001910a8: 'UserData02',\n // x001910a9: 'UserData03',\n // x001910aa: 'UserData04',\n // x001910ab: 'UserData05',\n // x001910ac: 'UserData06',\n // x001910ad: 'UserData07',\n // x001910ae: 'UserData08',\n // x001910af: 'UserData09',\n // x001910b0: 'UserData10',\n // x001910b1: 'UserData11',\n // x001910b2: 'UserData12',\n // x001910b3: 'UserData13',\n // x001910b4: 'UserData14',\n // x001910b5: 'UserData15',\n // x001910b6: 'UserData16',\n // x001910b7: 'UserData17',\n // x001910b8: 'UserData18',\n // x001910b9: 'UserData19',\n // x001910ba: 'UserData20',\n // x001910bb: 'UserData21',\n // x001910bc: 'UserData22',\n // x001910bd: 'UserData23',\n // x001910be: 'ProjectionAngle',\n // x001910c0: 'SaturationPlanes',\n // x001910c1: 'SurfaceCoilIntensity',\n // x001910c2: 'SATLocationR',\n // x001910c3: 'SATLocationL',\n // x001910c4: 'SATLocationA',\n // x001910c5: 'SATLocationP',\n // x001910c6: 'SATLocationH',\n // x001910c7: 'SATLocationF',\n // x001910c8: 'SATThicknessR-L',\n // x001910c9: 'SATThicknessA-P',\n // x001910ca: 'SATThicknessH-F',\n // x001910cb: 'PrescribedFlowAxis',\n // x001910cc: 'VelocityEncoding',\n // x001910cd: 'ThicknessDisclaimer',\n // x001910ce: 'PrescanType',\n // x001910cf: 'PrescanStatus',\n // x001910d0: 'RawDataType',\n // x001910d2: 'ProjectionAlgorithm',\n // x001910d3: 'ProjectionAlgorithm',\n // x001910d5: 'FractionalEcho',\n // x001910d6: 'PrepPulse',\n // x001910d7: 'CardiacPhases',\n // x001910d8: 'VariableEchoflag',\n // x001910d9: 'ConcatenatedSAT',\n // x001910da: 'ReferenceChannelUsed',\n // x001910db: 'BackProjectorCoefficient',\n // x001910dc: 'PrimarySpeedCorrectionUsed',\n // x001910dd: 'OverrangeCorrectionUsed',\n // x001910de: 'DynamicZAlphaValue',\n // x001910df: 'UserData',\n // x001910e0: 'UserData',\n // x001910e2: 'VelocityEncodeScale',\n // x001910f2: 'FastPhases',\n // x001910f9: 'TransmissionGain',\n x00200000: 'RelationshipGroupLength',\n x0020000d: 'StudyInstanceUID',\n x0020000e: 'SeriesInstanceUID',\n x00200010: 'StudyID',\n x00200011: 'SeriesNumber',\n x00200012: 'AcquisitionNumber',\n x00200013: 'InstanceNumber',\n x00200014: 'IsotopeNumber',\n x00200015: 'PhaseNumber',\n x00200016: 'IntervalNumber',\n x00200017: 'TimeSlotNumber',\n x00200018: 'AngleNumber',\n x00200019: 'ItemNumber',\n x00200020: 'PatientOrientation',\n x00200022: 'OverlayNumber',\n x00200024: 'CurveNumber',\n x00200026: 'LookupTableNumber',\n x00200030: 'ImagePosition',\n x00200032: 'ImagePositionPatient',\n x00200035: 'ImageOrientation',\n x00200037: 'ImageOrientationPatient',\n x00200050: 'Location',\n x00200052: 'FrameOfReferenceUID',\n x00200060: 'Laterality',\n x00200062: 'ImageLaterality',\n x00200070: 'ImageGeometryType',\n x00200080: 'MaskingImage',\n x00200100: 'TemporalPositionIdentifier',\n x00200105: 'NumberOfTemporalPositions',\n x00200110: 'TemporalResolution',\n x00200200: 'SynchronizationFrameOfReferenceUID',\n x00201000: 'SeriesInStudy',\n x00201001: 'AcquisitionsInSeries',\n x00201002: 'ImagesInAcquisition',\n x00201003: 'ImagesInSeries',\n x00201004: 'AcquisitionsInStudy',\n x00201005: 'ImagesInStudy',\n x00201020: 'Reference',\n x00201040: 'PositionReferenceIndicator',\n x00201041: 'SliceLocation',\n x00201070: 'OtherStudyNumbers',\n x00201200: 'NumberOfPatientRelatedStudies',\n x00201202: 'NumberOfPatientRelatedSeries',\n x00201204: 'NumberOfPatientRelatedInstances',\n x00201206: 'NumberOfStudyRelatedSeries',\n x00201208: 'NumberOfStudyRelatedInstances',\n x00201209: 'NumberOfSeriesRelatedInstances',\n x002031xx: 'SourceImageIDs',\n x00203401: 'ModifyingDeviceID',\n x00203402: 'ModifiedImageID',\n x00203403: 'ModifiedImageDate',\n x00203404: 'ModifyingDeviceManufacturer',\n x00203405: 'ModifiedImageTime',\n x00203406: 'ModifiedImageDescription',\n x00204000: 'ImageComments',\n x00205000: 'OriginalImageIdentification',\n x00205002: 'OriginalImageIdentNomenclature',\n x00209056: 'StackID',\n x00209057: 'InStackPositionNumber',\n x00209071: 'FrameAnatomySequence',\n x00209072: 'FrameLaterality',\n x00209111: 'FrameContentSequence',\n x00209113: 'PlanePositionSequence',\n x00209116: 'PlaneOrientationSequence',\n x00209128: 'TemporalPositionIndex',\n x00209153: 'TriggerDelayTime',\n x00209156: 'FrameAcquisitionNumber',\n x00209157: 'DimensionIndexValues',\n x00209158: 'FrameComments',\n x00209161: 'ConcatenationUID',\n x00209162: 'InConcatenationNumber',\n x00209163: 'InConcatenationTotalNumber',\n x00209164: 'DimensionOrganizationUID',\n x00209165: 'DimensionIndexPointer',\n x00209167: 'FunctionalGroupPointer',\n x00209213: 'DimensionIndexPrivateCreator',\n x00209221: 'DimensionOrganizationSequence',\n x00209222: 'DimensionIndexSequence',\n x00209228: 'ConcatenationFrameOffsetNumber',\n x00209238: 'FunctionalGroupPrivateCreator',\n x00209241: 'NominalPercentageOfCardiacPhase',\n x00209245: 'NominalPercentOfRespiratoryPhase',\n x00209246: 'StartingRespiratoryAmplitude',\n x00209247: 'StartingRespiratoryPhase',\n x00209248: 'EndingRespiratoryAmplitude',\n x00209249: 'EndingRespiratoryPhase',\n x00209250: 'RespiratoryTriggerType',\n x00209251: 'RRIntervalTimeNominal',\n x00209252: 'ActualCardiacTriggerDelayTime',\n x00209253: 'RespiratorySynchronizationSequence',\n x00209254: 'RespiratoryIntervalTime',\n x00209255: 'NominalRespiratoryTriggerDelayTime',\n x00209256: 'RespiratoryTriggerDelayThreshold',\n x00209257: 'ActualRespiratoryTriggerDelayTime',\n x00209301: 'ImagePositionVolume',\n x00209302: 'ImageOrientationVolume',\n x00209308: 'ApexPosition',\n x00209421: 'DimensionDescriptionLabel',\n x00209450: 'PatientOrientationInFrameSequence',\n x00209453: 'FrameLabel',\n x00209518: 'AcquisitionIndex',\n x00209529: 'ContributingSOPInstancesRefSeq',\n x00209536: 'ReconstructionIndex',\n // x00211003: 'SeriesFromWhichPrescribed',\n // x00211005: 'GenesisVersionNow',\n // x00211007: 'SeriesRecordChecksum',\n // x00211018: 'GenesisVersionNow',\n // x00211019: 'AcqreconRecordChecksum',\n // x00211020: 'TableStartLocation',\n // x00211035: 'SeriesFromWhichPrescribed',\n // x00211036: 'ImageFromWhichPrescribed',\n // x00211037: 'ScreenFormat',\n // x0021104a: 'AnatomicalReferenceForScout',\n // x0021104f: 'LocationsInAcquisition',\n // x00211050: 'GraphicallyPrescribed',\n // x00211051: 'RotationFromSourceXRot',\n // x00211052: 'RotationFromSourceYRot',\n // x00211053: 'RotationFromSourceZRot',\n // x00211054: 'ImagePosition',\n // x00211055: 'ImageOrientation',\n // x00211056: 'IntegerSlop',\n // x00211057: 'IntegerSlop',\n // x00211058: 'IntegerSlop',\n // x00211059: 'IntegerSlop',\n // x0021105a: 'IntegerSlop',\n // x0021105b: 'FloatSlop',\n // x0021105c: 'FloatSlop',\n // x0021105d: 'FloatSlop',\n // x0021105e: 'FloatSlop',\n // x0021105f: 'FloatSlop',\n // x00211081: 'AutoWindowLevelAlpha',\n // x00211082: 'AutoWindowLevelBeta',\n // x00211083: 'AutoWindowLevelWindow',\n // x00211084: 'ToWindowLevelLevel',\n // x00211090: 'TubeFocalSpotPosition',\n // x00211091: 'BiopsyPosition',\n // x00211092: 'BiopsyTLocation',\n // x00211093: 'BiopsyRefLocation',\n x00220001: 'LightPathFilterPassThroughWavelen',\n x00220002: 'LightPathFilterPassBand',\n x00220003: 'ImagePathFilterPassThroughWavelen',\n x00220004: 'ImagePathFilterPassBand',\n x00220005: 'PatientEyeMovementCommanded',\n x00220006: 'PatientEyeMovementCommandCodeSeq',\n x00220007: 'SphericalLensPower',\n x00220008: 'CylinderLensPower',\n x00220009: 'CylinderAxis',\n x0022000a: 'EmmetropicMagnification',\n x0022000b: 'IntraOcularPressure',\n x0022000c: 'HorizontalFieldOfView',\n x0022000d: 'PupilDilated',\n x0022000e: 'DegreeOfDilation',\n x00220010: 'StereoBaselineAngle',\n x00220011: 'StereoBaselineDisplacement',\n x00220012: 'StereoHorizontalPixelOffset',\n x00220013: 'StereoVerticalPixelOffset',\n x00220014: 'StereoRotation',\n x00220015: 'AcquisitionDeviceTypeCodeSequence',\n x00220016: 'IlluminationTypeCodeSequence',\n x00220017: 'LightPathFilterTypeStackCodeSeq',\n x00220018: 'ImagePathFilterTypeStackCodeSeq',\n x00220019: 'LensesCodeSequence',\n x0022001a: 'ChannelDescriptionCodeSequence',\n x0022001b: 'RefractiveStateSequence',\n x0022001c: 'MydriaticAgentCodeSequence',\n x0022001d: 'RelativeImagePositionCodeSequence',\n x00220020: 'StereoPairsSequence',\n x00220021: 'LeftImageSequence',\n x00220022: 'RightImageSequence',\n x00220030: 'AxialLengthOfTheEye',\n x00220031: 'OphthalmicFrameLocationSequence',\n x00220032: 'ReferenceCoordinates',\n x00220035: 'DepthSpatialResolution',\n x00220036: 'MaximumDepthDistortion',\n x00220037: 'AlongScanSpatialResolution',\n x00220038: 'MaximumAlongScanDistortion',\n x00220039: 'OphthalmicImageOrientation',\n x00220041: 'DepthOfTransverseImage',\n x00220042: 'MydriaticAgentConcUnitsSeq',\n x00220048: 'AcrossScanSpatialResolution',\n x00220049: 'MaximumAcrossScanDistortion',\n x0022004e: 'MydriaticAgentConcentration',\n x00220055: 'IlluminationWaveLength',\n x00220056: 'IlluminationPower',\n x00220057: 'IlluminationBandwidth',\n x00220058: 'MydriaticAgentSequence',\n // x00231001: 'NumberOfSeriesInStudy',\n // x00231002: 'NumberOfUnarchivedSeries',\n // x00231010: 'ReferenceImageField',\n // x00231050: 'SummaryImage',\n // x00231070: 'StartTimeSecsInFirstAxial',\n // x00231074: 'NoofUpdatesToHeader',\n // x0023107d: 'IndicatesIfTheStudyHasCompleteInfo',\n // x00251006: 'LastPulseSequenceUsed',\n // x00251007: 'ImagesInSeries',\n // x00251010: 'LandmarkCounter',\n // x00251011: 'NumberOfAcquisitions',\n // x00251014: 'IndicatesNoofUpdatesToHeader',\n // x00251017: 'SeriesCompleteFlag',\n // x00251018: 'NumberOfImagesArchived',\n // x00251019: 'LastImageNumberUsed',\n // x0025101a: 'PrimaryReceiverSuiteAndHost',\n // x00271006: 'ImageArchiveFlag',\n // x00271010: 'ScoutType',\n // x0027101c: 'VmaMamp',\n // x0027101d: 'VmaPhase',\n // x0027101e: 'VmaMod',\n // x0027101f: 'VmaClip',\n // x00271020: 'SmartScanOnOffFlag',\n // x00271030: 'ForeignImageRevision',\n // x00271031: 'ImagingMode',\n // x00271032: 'PulseSequence',\n // x00271033: 'ImagingOptions',\n // x00271035: 'PlaneType',\n // x00271036: 'ObliquePlane',\n // x00271040: 'RASLetterOfImageLocation',\n // x00271041: 'ImageLocation',\n // x00271042: 'CenterRCoordOfPlaneImage',\n // x00271043: 'CenterACoordOfPlaneImage',\n // x00271044: 'CenterSCoordOfPlaneImage',\n // x00271045: 'NormalRCoord',\n // x00271046: 'NormalACoord',\n // x00271047: 'NormalSCoord',\n // x00271048: 'RCoordOfTopRightCorner',\n // x00271049: 'ACoordOfTopRightCorner',\n // x0027104a: 'SCoordOfTopRightCorner',\n // x0027104b: 'RCoordOfBottomRightCorner',\n // x0027104c: 'ACoordOfBottomRightCorner',\n // x0027104d: 'SCoordOfBottomRightCorner',\n // x00271050: 'TableStartLocation',\n // x00271051: 'TableEndLocation',\n // x00271052: 'RASLetterForSideOfImage',\n // x00271053: 'RASLetterForAnteriorPosterior',\n // x00271054: 'RASLetterForScoutStartLoc',\n // x00271055: 'RASLetterForScoutEndLoc',\n // x00271060: 'ImageDimensionX',\n // x00271061: 'ImageDimensionY',\n // x00271062: 'NumberOfExcitations',\n x00280000: 'ImagePresentationGroupLength',\n x00280002: 'SamplesPerPixel',\n x00280003: 'SamplesPerPixelUsed',\n x00280004: 'PhotometricInterpretation',\n x00280005: 'ImageDimensions',\n x00280006: 'PlanarConfiguration',\n x00280008: 'NumberOfFrames',\n x00280009: 'FrameIncrementPointer',\n x0028000a: 'FrameDimensionPointer',\n x00280010: 'Rows',\n x00280011: 'Columns',\n x00280012: 'Planes',\n x00280014: 'UltrasoundColorDataPresent',\n x00280030: 'PixelSpacing',\n x00280031: 'ZoomFactor',\n x00280032: 'ZoomCenter',\n x00280034: 'PixelAspectRatio',\n x00280040: 'ImageFormat',\n x00280050: 'ManipulatedImage',\n x00280051: 'CorrectedImage',\n x0028005f: 'CompressionRecognitionCode',\n x00280060: 'CompressionCode',\n x00280061: 'CompressionOriginator',\n x00280062: 'CompressionLabel',\n x00280063: 'CompressionDescription',\n x00280065: 'CompressionSequence',\n x00280066: 'CompressionStepPointers',\n x00280068: 'RepeatInterval',\n x00280069: 'BitsGrouped',\n x00280070: 'PerimeterTable',\n x00280071: 'PerimeterValue',\n x00280080: 'PredictorRows',\n x00280081: 'PredictorColumns',\n x00280082: 'PredictorConstants',\n x00280090: 'BlockedPixels',\n x00280091: 'BlockRows',\n x00280092: 'BlockColumns',\n x00280093: 'RowOverlap',\n x00280094: 'ColumnOverlap',\n x00280100: 'BitsAllocated',\n x00280101: 'BitsStored',\n x00280102: 'HighBit',\n x00280103: 'PixelRepresentation',\n x00280104: 'SmallestValidPixelValue',\n x00280105: 'LargestValidPixelValue',\n x00280106: 'SmallestImagePixelValue',\n x00280107: 'LargestImagePixelValue',\n x00280108: 'SmallestPixelValueInSeries',\n x00280109: 'LargestPixelValueInSeries',\n x00280110: 'SmallestImagePixelValueInPlane',\n x00280111: 'LargestImagePixelValueInPlane',\n x00280120: 'PixelPaddingValue',\n x00280121: 'PixelPaddingRangeLimit',\n x00280200: 'ImageLocation',\n x00280300: 'QualityControlImage',\n x00280301: 'BurnedInAnnotation',\n x00280400: 'TransformLabel',\n x00280401: 'TransformVersionNumber',\n x00280402: 'NumberOfTransformSteps',\n x00280403: 'SequenceOfCompressedData',\n x00280404: 'DetailsOfCoefficients',\n x002804x2: 'CoefficientCoding',\n x002804x3: 'CoefficientCodingPointers',\n x00280700: 'DCTLabel',\n x00280701: 'DataBlockDescription',\n x00280702: 'DataBlock',\n x00280710: 'NormalizationFactorFormat',\n x00280720: 'ZonalMapNumberFormat',\n x00280721: 'ZonalMapLocation',\n x00280722: 'ZonalMapFormat',\n x00280730: 'AdaptiveMapFormat',\n x00280740: 'CodeNumberFormat',\n x002808x0: 'CodeLabel',\n x002808x2: 'NumberOfTables',\n x002808x3: 'CodeTableLocation',\n x002808x4: 'BitsForCodeWord',\n x002808x8: 'ImageDataLocation',\n x00280a02: 'PixelSpacingCalibrationType',\n x00280a04: 'PixelSpacingCalibrationDescription',\n x00281040: 'PixelIntensityRelationship',\n x00281041: 'PixelIntensityRelationshipSign',\n x00281050: 'WindowCenter',\n x00281051: 'WindowWidth',\n x00281052: 'RescaleIntercept',\n x00281053: 'RescaleSlope',\n x00281054: 'RescaleType',\n x00281055: 'WindowCenterAndWidthExplanation',\n x00281056: 'VOI_LUTFunction',\n x00281080: 'GrayScale',\n x00281090: 'RecommendedViewingMode',\n x00281100: 'GrayLookupTableDescriptor',\n x00281101: 'RedPaletteColorTableDescriptor',\n x00281102: 'GreenPaletteColorTableDescriptor',\n x00281103: 'BluePaletteColorTableDescriptor',\n x00281111: 'LargeRedPaletteColorTableDescr',\n x00281112: 'LargeGreenPaletteColorTableDescr',\n x00281113: 'LargeBluePaletteColorTableDescr',\n x00281199: 'PaletteColorTableUID',\n x00281200: 'GrayLookupTableData',\n x00281201: 'RedPaletteColorTableData',\n x00281202: 'GreenPaletteColorTableData',\n x00281203: 'BluePaletteColorTableData',\n x00281211: 'LargeRedPaletteColorTableData',\n x00281212: 'LargeGreenPaletteColorTableData',\n x00281213: 'LargeBluePaletteColorTableData',\n x00281214: 'LargePaletteColorLookupTableUID',\n x00281221: 'SegmentedRedColorTableData',\n x00281222: 'SegmentedGreenColorTableData',\n x00281223: 'SegmentedBlueColorTableData',\n x00281300: 'BreastImplantPresent',\n x00281350: 'PartialView',\n x00281351: 'PartialViewDescription',\n x00281352: 'PartialViewCodeSequence',\n x0028135a: 'SpatialLocationsPreserved',\n x00281402: 'DataPathAssignment',\n x00281404: 'BlendingLUT1Sequence',\n x00281406: 'BlendingWeightConstant',\n x00281408: 'BlendingLookupTableData',\n x0028140c: 'BlendingLUT2Sequence',\n x0028140e: 'DataPathID',\n x0028140f: 'RGBLUTTransferFunction',\n x00281410: 'AlphaLUTTransferFunction',\n x00282000: 'ICCProfile',\n x00282110: 'LossyImageCompression',\n x00282112: 'LossyImageCompressionRatio',\n x00282114: 'LossyImageCompressionMethod',\n x00283000: 'ModalityLUTSequence',\n x00283002: 'LUTDescriptor',\n x00283003: 'LUTExplanation',\n x00283004: 'ModalityLUTType',\n x00283006: 'LUTData',\n x00283010: 'VOILUTSequence',\n x00283110: 'SoftcopyVOILUTSequence',\n x00284000: 'ImagePresentationComments',\n x00285000: 'BiPlaneAcquisitionSequence',\n x00286010: 'RepresentativeFrameNumber',\n x00286020: 'FrameNumbersOfInterest',\n x00286022: 'FrameOfInterestDescription',\n x00286023: 'FrameOfInterestType',\n x00286030: 'MaskPointers',\n x00286040: 'RWavePointer',\n x00286100: 'MaskSubtractionSequence',\n x00286101: 'MaskOperation',\n x00286102: 'ApplicableFrameRange',\n x00286110: 'MaskFrameNumbers',\n x00286112: 'ContrastFrameAveraging',\n x00286114: 'MaskSubPixelShift',\n x00286120: 'TIDOffset',\n x00286190: 'MaskOperationExplanation',\n x00287fe0: 'PixelDataProviderURL',\n x00289001: 'DataPointRows',\n x00289002: 'DataPointColumns',\n x00289003: 'SignalDomainColumns',\n x00289099: 'LargestMonochromePixelValue',\n x00289108: 'DataRepresentation',\n x00289110: 'PixelMeasuresSequence',\n x00289132: 'FrameVOILUTSequence',\n x00289145: 'PixelValueTransformationSequence',\n x00289235: 'SignalDomainRows',\n x00289411: 'DisplayFilterPercentage',\n x00289415: 'FramePixelShiftSequence',\n x00289416: 'SubtractionItemID',\n x00289422: 'PixelIntensityRelationshipLUTSeq',\n x00289443: 'FramePixelDataPropertiesSequence',\n x00289444: 'GeometricalProperties',\n x00289445: 'GeometricMaximumDistortion',\n x00289446: 'ImageProcessingApplied',\n x00289454: 'MaskSelectionMode',\n x00289474: 'LUTFunction',\n x00289478: 'MaskVisibilityPercentage',\n x00289501: 'PixelShiftSequence',\n x00289502: 'RegionPixelShiftSequence',\n x00289503: 'VerticesOfTheRegion',\n x00289506: 'PixelShiftFrameRange',\n x00289507: 'LUTFrameRange',\n x00289520: 'ImageToEquipmentMappingMatrix',\n x00289537: 'EquipmentCoordinateSystemID',\n // x00291004: 'LowerRangeOfPixels1a',\n // x00291005: 'LowerRangeOfPixels1b',\n // x00291006: 'LowerRangeOfPixels1c',\n // x00291007: 'LowerRangeOfPixels1d',\n // x00291008: 'LowerRangeOfPixels1e',\n // x00291009: 'LowerRangeOfPixels1f',\n // x0029100a: 'LowerRangeOfPixels1g',\n // x00291015: 'LowerRangeOfPixels1h',\n // x00291016: 'LowerRangeOfPixels1i',\n // x00291017: 'LowerRangeOfPixels2',\n // x00291018: 'UpperRangeOfPixels2',\n // x0029101a: 'LenOfTotHdrInBytes',\n // x00291026: 'VersionOfTheHdrStruct',\n // x00291034: 'AdvantageCompOverflow',\n // x00291035: 'AdvantageCompUnderflow',\n x00320000: 'StudyGroupLength',\n x0032000a: 'StudyStatusID',\n x0032000c: 'StudyPriorityID',\n x00320012: 'StudyIDIssuer',\n x00320032: 'StudyVerifiedDate',\n x00320033: 'StudyVerifiedTime',\n x00320034: 'StudyReadDate',\n x00320035: 'StudyReadTime',\n x00321000: 'ScheduledStudyStartDate',\n x00321001: 'ScheduledStudyStartTime',\n x00321010: 'ScheduledStudyStopDate',\n x00321011: 'ScheduledStudyStopTime',\n x00321020: 'ScheduledStudyLocation',\n x00321021: 'ScheduledStudyLocationAETitle',\n x00321030: 'ReasonForStudy',\n x00321031: 'RequestingPhysicianIDSequence',\n x00321032: 'RequestingPhysician',\n x00321033: 'RequestingService',\n x00321040: 'StudyArrivalDate',\n x00321041: 'StudyArrivalTime',\n x00321050: 'StudyCompletionDate',\n x00321051: 'StudyCompletionTime',\n x00321055: 'StudyComponentStatusID',\n x00321060: 'RequestedProcedureDescription',\n x00321064: 'RequestedProcedureCodeSequence',\n x00321070: 'RequestedContrastAgent',\n x00324000: 'StudyComments',\n x00380004: 'ReferencedPatientAliasSequence',\n x00380008: 'VisitStatusID',\n x00380010: 'AdmissionID',\n x00380011: 'IssuerOfAdmissionID',\n x00380016: 'RouteOfAdmissions',\n x0038001a: 'ScheduledAdmissionDate',\n x0038001b: 'ScheduledAdmissionTime',\n x0038001c: 'ScheduledDischargeDate',\n x0038001d: 'ScheduledDischargeTime',\n x0038001e: 'ScheduledPatientInstitResidence',\n x00380020: 'AdmittingDate',\n x00380021: 'AdmittingTime',\n x00380030: 'DischargeDate',\n x00380032: 'DischargeTime',\n x00380040: 'DischargeDiagnosisDescription',\n x00380044: 'DischargeDiagnosisCodeSequence',\n x00380050: 'SpecialNeeds',\n x00380060: 'ServiceEpisodeID',\n x00380061: 'IssuerOfServiceEpisodeID',\n x00380062: 'ServiceEpisodeDescription',\n x00380100: 'PertinentDocumentsSequence',\n x00380300: 'CurrentPatientLocation',\n x00380400: 'PatientInstitutionResidence',\n x00380500: 'PatientState',\n x00380502: 'PatientClinicalTrialParticipSeq',\n x00384000: 'VisitComments',\n x003a0004: 'WaveformOriginality',\n x003a0005: 'NumberOfWaveformChannels',\n x003a0010: 'NumberOfWaveformSamples',\n x003a001a: 'SamplingFrequency',\n x003a0020: 'MultiplexGroupLabel',\n x003a0200: 'ChannelDefinitionSequence',\n x003a0202: 'WaveformChannelNumber',\n x003a0203: 'ChannelLabel',\n x003a0205: 'ChannelStatus',\n x003a0208: 'ChannelSourceSequence',\n x003a0209: 'ChannelSourceModifiersSequence',\n x003a020a: 'SourceWaveformSequence',\n x003a020c: 'ChannelDerivationDescription',\n x003a0210: 'ChannelSensitivity',\n x003a0211: 'ChannelSensitivityUnitsSequence',\n x003a0212: 'ChannelSensitivityCorrectionFactor',\n x003a0213: 'ChannelBaseline',\n x003a0214: 'ChannelTimeSkew',\n x003a0215: 'ChannelSampleSkew',\n x003a0218: 'ChannelOffset',\n x003a021a: 'WaveformBitsStored',\n x003a0220: 'FilterLowFrequency',\n x003a0221: 'FilterHighFrequency',\n x003a0222: 'NotchFilterFrequency',\n x003a0223: 'NotchFilterBandwidth',\n x003a0230: 'WaveformDataDisplayScale',\n x003a0231: 'WaveformDisplayBkgCIELabValue',\n x003a0240: 'WaveformPresentationGroupSequence',\n x003a0241: 'PresentationGroupNumber',\n x003a0242: 'ChannelDisplaySequence',\n x003a0244: 'ChannelRecommendDisplayCIELabValue',\n x003a0245: 'ChannelPosition',\n x003a0246: 'DisplayShadingFlag',\n x003a0247: 'FractionalChannelDisplayScale',\n x003a0248: 'AbsoluteChannelDisplayScale',\n x003a0300: 'MultiplexAudioChannelsDescrCodeSeq',\n x003a0301: 'ChannelIdentificationCode',\n x003a0302: 'ChannelMode',\n x00400001: 'ScheduledStationAETitle',\n x00400002: 'ScheduledProcedureStepStartDate',\n x00400003: 'ScheduledProcedureStepStartTime',\n x00400004: 'ScheduledProcedureStepEndDate',\n x00400005: 'ScheduledProcedureStepEndTime',\n x00400006: 'ScheduledPerformingPhysiciansName',\n x00400007: 'ScheduledProcedureStepDescription',\n x00400008: 'ScheduledProtocolCodeSequence',\n x00400009: 'ScheduledProcedureStepID',\n x0040000a: 'StageCodeSequence',\n x0040000b: 'ScheduledPerformingPhysicianIDSeq',\n x00400010: 'ScheduledStationName',\n x00400011: 'ScheduledProcedureStepLocation',\n x00400012: 'PreMedication',\n x00400020: 'ScheduledProcedureStepStatus',\n x00400031: 'LocalNamespaceEntityID',\n x00400032: 'UniversalEntityID',\n x00400033: 'UniversalEntityIDType',\n x00400035: 'IdentifierTypeCode',\n x00400036: 'AssigningFacilitySequence',\n x00400100: 'ScheduledProcedureStepSequence',\n x00400220: 'ReferencedNonImageCompositeSOPSeq',\n x00400241: 'PerformedStationAETitle',\n x00400242: 'PerformedStationName',\n x00400243: 'PerformedLocation',\n x00400244: 'PerformedProcedureStepStartDate',\n x00400245: 'PerformedProcedureStepStartTime',\n x00400250: 'PerformedProcedureStepEndDate',\n x00400251: 'PerformedProcedureStepEndTime',\n x00400252: 'PerformedProcedureStepStatus',\n x00400253: 'PerformedProcedureStepID',\n x00400254: 'PerformedProcedureStepDescription',\n x00400255: 'PerformedProcedureTypeDescription',\n x00400260: 'PerformedProtocolCodeSequence',\n x00400261: 'PerformedProtocolType',\n x00400270: 'ScheduledStepAttributesSequence',\n x00400275: 'RequestAttributesSequence',\n x00400280: 'CommentsOnPerformedProcedureStep',\n x00400281: 'ProcStepDiscontinueReasonCodeSeq',\n x00400293: 'QuantitySequence',\n x00400294: 'Quantity',\n x00400295: 'MeasuringUnitsSequence',\n x00400296: 'BillingItemSequence',\n x00400300: 'TotalTimeOfFluoroscopy',\n x00400301: 'TotalNumberOfExposures',\n x00400302: 'EntranceDose',\n x00400303: 'ExposedArea',\n x00400306: 'DistanceSourceToEntrance',\n x00400307: 'DistanceSourceToSupport',\n x0040030e: 'ExposureDoseSequence',\n x00400310: 'CommentsOnRadiationDose',\n x00400312: 'XRayOutput',\n x00400314: 'HalfValueLayer',\n x00400316: 'OrganDose',\n x00400318: 'OrganExposed',\n x00400320: 'BillingProcedureStepSequence',\n x00400321: 'FilmConsumptionSequence',\n x00400324: 'BillingSuppliesAndDevicesSequence',\n x00400330: 'ReferencedProcedureStepSequence',\n x00400340: 'PerformedSeriesSequence',\n x00400400: 'CommentsOnScheduledProcedureStep',\n x00400440: 'ProtocolContextSequence',\n x00400441: 'ContentItemModifierSequence',\n x0040050a: 'SpecimenAccessionNumber',\n x00400512: 'ContainerIdentifier',\n x0040051a: 'ContainerDescription',\n x00400550: 'SpecimenSequence',\n x00400551: 'SpecimenIdentifier',\n x00400552: 'SpecimenDescriptionSequenceTrial',\n x00400553: 'SpecimenDescriptionTrial',\n x00400554: 'SpecimenUID',\n x00400555: 'AcquisitionContextSequence',\n x00400556: 'AcquisitionContextDescription',\n x0040059a: 'SpecimenTypeCodeSequence',\n x00400600: 'SpecimenShortDescription',\n x004006fa: 'SlideIdentifier',\n x0040071a: 'ImageCenterPointCoordinatesSeq',\n x0040072a: 'XOffsetInSlideCoordinateSystem',\n x0040073a: 'YOffsetInSlideCoordinateSystem',\n x0040074a: 'ZOffsetInSlideCoordinateSystem',\n x004008d8: 'PixelSpacingSequence',\n x004008da: 'CoordinateSystemAxisCodeSequence',\n x004008ea: 'MeasurementUnitsCodeSequence',\n x004009f8: 'VitalStainCodeSequenceTrial',\n x00401001: 'RequestedProcedureID',\n x00401002: 'ReasonForRequestedProcedure',\n x00401003: 'RequestedProcedurePriority',\n x00401004: 'PatientTransportArrangements',\n x00401005: 'RequestedProcedureLocation',\n x00401006: 'PlacerOrderNumber-Procedure',\n x00401007: 'FillerOrderNumber-Procedure',\n x00401008: 'ConfidentialityCode',\n x00401009: 'ReportingPriority',\n x0040100a: 'ReasonForRequestedProcedureCodeSeq',\n x00401010: 'NamesOfIntendedRecipientsOfResults',\n x00401011: 'IntendedRecipientsOfResultsIDSeq',\n x00401101: 'PersonIdentificationCodeSequence',\n x00401102: 'PersonAddress',\n x00401103: 'PersonTelephoneNumbers',\n x00401400: 'RequestedProcedureComments',\n x00402001: 'ReasonForImagingServiceRequest',\n x00402004: 'IssueDateOfImagingServiceRequest',\n x00402005: 'IssueTimeOfImagingServiceRequest',\n x00402006: 'PlacerOrderNumberImagingServiceRequestRetired',\n x00402007: 'FillerOrderNumberImagingServiceRequestRetired',\n x00402008: 'OrderEnteredBy',\n x00402009: 'OrderEntererLocation',\n x00402010: 'OrderCallbackPhoneNumber',\n x00402016: 'PlacerOrderNum-ImagingServiceReq',\n x00402017: 'FillerOrderNum-ImagingServiceReq',\n x00402400: 'ImagingServiceRequestComments',\n x00403001: 'ConfidentialityOnPatientDataDescr',\n x00404001: 'GenPurposeScheduledProcStepStatus',\n x00404002: 'GenPurposePerformedProcStepStatus',\n x00404003: 'GenPurposeSchedProcStepPriority',\n x00404004: 'SchedProcessingApplicationsCodeSeq',\n x00404005: 'SchedProcedureStepStartDateAndTime',\n x00404006: 'MultipleCopiesFlag',\n x00404007: 'PerformedProcessingAppsCodeSeq',\n x00404009: 'HumanPerformerCodeSequence',\n x00404010: 'SchedProcStepModificationDateTime',\n x00404011: 'ExpectedCompletionDateAndTime',\n x00404015: 'ResultingGenPurposePerfProcStepSeq',\n x00404016: 'RefGenPurposeSchedProcStepSeq',\n x00404018: 'ScheduledWorkitemCodeSequence',\n x00404019: 'PerformedWorkitemCodeSequence',\n x00404020: 'InputAvailabilityFlag',\n x00404021: 'InputInformationSequence',\n x00404022: 'RelevantInformationSequence',\n x00404023: 'RefGenPurSchedProcStepTransUID',\n x00404025: 'ScheduledStationNameCodeSequence',\n x00404026: 'ScheduledStationClassCodeSequence',\n x00404027: 'SchedStationGeographicLocCodeSeq',\n x00404028: 'PerformedStationNameCodeSequence',\n x00404029: 'PerformedStationClassCodeSequence',\n x00404030: 'PerformedStationGeogLocCodeSeq',\n x00404031: 'RequestedSubsequentWorkItemCodeSeq',\n x00404032: 'NonDICOMOutputCodeSequence',\n x00404033: 'OutputInformationSequence',\n x00404034: 'ScheduledHumanPerformersSequence',\n x00404035: 'ActualHumanPerformersSequence',\n x00404036: 'HumanPerformersOrganization',\n x00404037: 'HumanPerformerName',\n x00404040: 'RawDataHandling',\n x00408302: 'EntranceDoseInMilliGy',\n x00409094: 'RefImageRealWorldValueMappingSeq',\n x00409096: 'RealWorldValueMappingSequence',\n x00409098: 'PixelValueMappingCodeSequence',\n x00409210: 'LUTLabel',\n x00409211: 'RealWorldValueLastValueMapped',\n x00409212: 'RealWorldValueLUTData',\n x00409216: 'RealWorldValueFirstValueMapped',\n x00409224: 'RealWorldValueIntercept',\n x00409225: 'RealWorldValueSlope',\n x0040a010: 'RelationshipType',\n x0040a027: 'VerifyingOrganization',\n x0040a030: 'VerificationDateTime',\n x0040a032: 'ObservationDateTime',\n x0040a040: 'ValueType',\n x0040a043: 'ConceptNameCodeSequence',\n x0040a050: 'ContinuityOfContent',\n x0040a073: 'VerifyingObserverSequence',\n x0040a075: 'VerifyingObserverName',\n x0040a078: 'AuthorObserverSequence',\n x0040a07a: 'ParticipantSequence',\n x0040a07c: 'CustodialOrganizationSequence',\n x0040a080: 'ParticipationType',\n x0040a082: 'ParticipationDateTime',\n x0040a084: 'ObserverType',\n x0040a088: 'VerifyingObserverIdentCodeSequence',\n x0040a090: 'EquivalentCDADocumentSequence',\n x0040a0b0: 'ReferencedWaveformChannels',\n x0040a120: 'DateTime',\n x0040a121: 'Date',\n x0040a122: 'Time',\n x0040a123: 'PersonName',\n x0040a124: 'UID',\n x0040a130: 'TemporalRangeType',\n x0040a132: 'ReferencedSamplePositions',\n x0040a136: 'ReferencedFrameNumbers',\n x0040a138: 'ReferencedTimeOffsets',\n x0040a13a: 'ReferencedDateTime',\n x0040a160: 'TextValue',\n x0040a168: 'ConceptCodeSequence',\n x0040a170: 'PurposeOfReferenceCodeSequence',\n x0040a180: 'AnnotationGroupNumber',\n x0040a195: 'ModifierCodeSequence',\n x0040a300: 'MeasuredValueSequence',\n x0040a301: 'NumericValueQualifierCodeSequence',\n x0040a30a: 'NumericValue',\n x0040a353: 'AddressTrial',\n x0040a354: 'TelephoneNumberTrial',\n x0040a360: 'PredecessorDocumentsSequence',\n x0040a370: 'ReferencedRequestSequence',\n x0040a372: 'PerformedProcedureCodeSequence',\n x0040a375: 'CurrentRequestedProcEvidenceSeq',\n x0040a385: 'PertinentOtherEvidenceSequence',\n x0040a390: 'HL7StructuredDocumentRefSeq',\n x0040a491: 'CompletionFlag',\n x0040a492: 'CompletionFlagDescription',\n x0040a493: 'VerificationFlag',\n x0040a494: 'ArchiveRequested',\n x0040a496: 'PreliminaryFlag',\n x0040a504: 'ContentTemplateSequence',\n x0040a525: 'IdenticalDocumentsSequence',\n x0040a730: 'ContentSequence',\n x0040b020: 'AnnotationSequence',\n x0040db00: 'TemplateIdentifier',\n x0040db06: 'TemplateVersion',\n x0040db07: 'TemplateLocalVersion',\n x0040db0b: 'TemplateExtensionFlag',\n x0040db0c: 'TemplateExtensionOrganizationUID',\n x0040db0d: 'TemplateExtensionCreatorUID',\n x0040db73: 'ReferencedContentItemIdentifier',\n x0040e001: 'HL7InstanceIdentifier',\n x0040e004: 'HL7DocumentEffectiveTime',\n x0040e006: 'HL7DocumentTypeCodeSequence',\n x0040e010: 'RetrieveURI',\n x0040e011: 'RetrieveLocationUID',\n x00420010: 'DocumentTitle',\n x00420011: 'EncapsulatedDocument',\n x00420012: 'MIMETypeOfEncapsulatedDocument',\n x00420013: 'SourceInstanceSequence',\n x00420014: 'ListOfMIMETypes',\n // x00431001: 'BitmapOfPrescanOptions',\n // x00431002: 'GradientOffsetInX',\n // x00431003: 'GradientOffsetInY',\n // x00431004: 'GradientOffsetInZ',\n // x00431005: 'ImgIsOriginalOrUnoriginal',\n // x00431006: 'NumberOfEPIShots',\n // x00431007: 'ViewsPerSegment',\n // x00431008: 'RespiratoryRateBpm',\n // x00431009: 'RespiratoryTriggerPoint',\n // x0043100a: 'TypeOfReceiverUsed',\n // x0043100b: 'PeakRateOfChangeOfGradientField',\n // x0043100c: 'LimitsInUnitsOfPercent',\n // x0043100d: 'PSDEstimatedLimit',\n // x0043100e: 'PSDEstimatedLimitInTeslaPerSecond',\n // x0043100f: 'Saravghead',\n // x00431010: 'WindowValue',\n // x00431011: 'TotalInputViews',\n // x00431012: 'X-RayChain',\n // x00431013: 'DeconKernelParameters',\n // x00431014: 'CalibrationParameters',\n // x00431015: 'TotalOutputViews',\n // x00431016: 'NumberOfOverranges',\n // x00431017: 'IBHImageScaleFactors',\n // x00431018: 'BBHCoefficients',\n // x00431019: 'NumberOfBBHChainsToBlend',\n // x0043101a: 'StartingChannelNumber',\n // x0043101b: 'PpscanParameters',\n // x0043101c: 'GEImageIntegrity',\n // x0043101d: 'LevelValue',\n // x0043101e: 'DeltaStartTime',\n // x0043101f: 'MaxOverrangesInAView',\n // x00431020: 'AvgOverrangesAllViews',\n // x00431021: 'CorrectedAfterGlowTerms',\n // x00431025: 'ReferenceChannels',\n // x00431026: 'NoViewsRefChansBlocked',\n // x00431027: 'ScanPitchRatio',\n // x00431028: 'UniqueImageIden',\n // x00431029: 'HistogramTables',\n // x0043102a: 'UserDefinedData',\n // x0043102b: 'PrivateScanOptions',\n // x0043102c: 'EffectiveEchoSpacing',\n // x0043102d: 'StringSlopField1',\n // x0043102e: 'StringSlopField2',\n // x0043102f: 'RawDataType',\n // x00431030: 'RawDataType',\n // x00431031: 'RACordOfTargetReconCenter',\n // x00431032: 'RawDataType',\n // x00431033: 'NegScanspacing',\n // x00431034: 'OffsetFrequency',\n // x00431035: 'UserUsageTag',\n // x00431036: 'UserFillMapMSW',\n // x00431037: 'UserFillMapLSW',\n // x00431038: 'User25-48',\n // x00431039: 'SlopInt6-9',\n // x00431040: 'TriggerOnPosition',\n // x00431041: 'DegreeOfRotation',\n // x00431042: 'DASTriggerSource',\n // x00431043: 'DASFpaGain',\n // x00431044: 'DASOutputSource',\n // x00431045: 'DASAdInput',\n // x00431046: 'DASCalMode',\n // x00431047: 'DASCalFrequency',\n // x00431048: 'DASRegXm',\n // x00431049: 'DASAutoZero',\n // x0043104a: 'StartingChannelOfView',\n // x0043104b: 'DASXmPattern',\n // x0043104c: 'TGGCTriggerMode',\n // x0043104d: 'StartScanToXrayOnDelay',\n // x0043104e: 'DurationOfXrayOn',\n // x00431060: 'SlopInt10-17',\n // x00431061: 'ScannerStudyEntityUID',\n // x00431062: 'ScannerStudyID',\n // x0043106f: 'ScannerTableEntry',\n x00440001: 'ProductPackageIdentifier',\n x00440002: 'SubstanceAdministrationApproval',\n x00440003: 'ApprovalStatusFurtherDescription',\n x00440004: 'ApprovalStatusDateTime',\n x00440007: 'ProductTypeCodeSequence',\n x00440008: 'ProductName',\n x00440009: 'ProductDescription',\n x0044000a: 'ProductLotIdentifier',\n x0044000b: 'ProductExpirationDateTime',\n x00440010: 'SubstanceAdministrationDateTime',\n x00440011: 'SubstanceAdministrationNotes',\n x00440012: 'SubstanceAdministrationDeviceID',\n x00440013: 'ProductParameterSequence',\n x00440019: 'SubstanceAdminParameterSeq',\n // x00451001: 'NumberOfMacroRowsInDetector',\n // x00451002: 'MacroWidthAtISOCenter',\n // x00451003: 'DASType',\n // x00451004: 'DASGain',\n // x00451005: 'DASTemperature',\n // x00451006: 'TableDirectionInOrOut',\n // x00451007: 'ZSmoothingFactor',\n // x00451008: 'ViewWeightingMode',\n // x00451009: 'SigmaRowNumberWhichRowsWereUsed',\n // x0045100a: 'MinimumDasValueFoundInTheScanData',\n // x0045100b: 'MaximumOffsetShiftValueUsed',\n // x0045100c: 'NumberOfViewsShifted',\n // x0045100d: 'ZTrackingFlag',\n // x0045100e: 'MeanZError',\n // x0045100f: 'ZTrackingMaximumError',\n // x00451010: 'StartingViewForRow2a',\n // x00451011: 'NumberOfViewsInRow2a',\n // x00451012: 'StartingViewForRow1a',\n // x00451013: 'SigmaMode',\n // x00451014: 'NumberOfViewsInRow1a',\n // x00451015: 'StartingViewForRow2b',\n // x00451016: 'NumberOfViewsInRow2b',\n // x00451017: 'StartingViewForRow1b',\n // x00451018: 'NumberOfViewsInRow1b',\n // x00451019: 'AirFilterCalibrationDate',\n // x0045101a: 'AirFilterCalibrationTime',\n // x0045101b: 'PhantomCalibrationDate',\n // x0045101c: 'PhantomCalibrationTime',\n // x0045101d: 'ZSlopeCalibrationDate',\n // x0045101e: 'ZSlopeCalibrationTime',\n // x0045101f: 'CrosstalkCalibrationDate',\n // x00451020: 'CrosstalkCalibrationTime',\n // x00451021: 'IterboneOptionFlag',\n // x00451022: 'PeristalticFlagOption',\n x00460012: 'LensDescription',\n x00460014: 'RightLensSequence',\n x00460015: 'LeftLensSequence',\n x00460018: 'CylinderSequence',\n x00460028: 'PrismSequence',\n x00460030: 'HorizontalPrismPower',\n x00460032: 'HorizontalPrismBase',\n x00460034: 'VerticalPrismPower',\n x00460036: 'VerticalPrismBase',\n x00460038: 'LensSegmentType',\n x00460040: 'OpticalTransmittance',\n x00460042: 'ChannelWidth',\n x00460044: 'PupilSize',\n x00460046: 'CornealSize',\n x00460060: 'DistancePupillaryDistance',\n x00460062: 'NearPupillaryDistance',\n x00460064: 'OtherPupillaryDistance',\n x00460075: 'RadiusOfCurvature',\n x00460076: 'KeratometricPower',\n x00460077: 'KeratometricAxis',\n x00460092: 'BackgroundColor',\n x00460094: 'Optotype',\n x00460095: 'OptotypePresentation',\n x00460100: 'AddNearSequence',\n x00460101: 'AddIntermediateSequence',\n x00460102: 'AddOtherSequence',\n x00460104: 'AddPower',\n x00460106: 'ViewingDistance',\n x00460125: 'ViewingDistanceType',\n x00460135: 'VisualAcuityModifiers',\n x00460137: 'DecimalVisualAcuity',\n x00460139: 'OptotypeDetailedDefinition',\n x00460146: 'SpherePower',\n x00460147: 'CylinderPower',\n x00500004: 'CalibrationImage',\n x00500010: 'DeviceSequence',\n x00500014: 'DeviceLength',\n x00500015: 'ContainerComponentWidth',\n x00500016: 'DeviceDiameter',\n x00500017: 'DeviceDiameterUnits',\n x00500018: 'DeviceVolume',\n x00500019: 'InterMarkerDistance',\n x0050001b: 'ContainerComponentID',\n x00500020: 'DeviceDescription',\n x00540010: 'EnergyWindowVector',\n x00540011: 'NumberOfEnergyWindows',\n x00540012: 'EnergyWindowInformationSequence',\n x00540013: 'EnergyWindowRangeSequence',\n x00540014: 'EnergyWindowLowerLimit',\n x00540015: 'EnergyWindowUpperLimit',\n x00540016: 'RadiopharmaceuticalInformationSeq',\n x00540017: 'ResidualSyringeCounts',\n x00540018: 'EnergyWindowName',\n x00540020: 'DetectorVector',\n x00540021: 'NumberOfDetectors',\n x00540022: 'DetectorInformationSequence',\n x00540030: 'PhaseVector',\n x00540031: 'NumberOfPhases',\n x00540032: 'PhaseInformationSequence',\n x00540033: 'NumberOfFramesInPhase',\n x00540036: 'PhaseDelay',\n x00540038: 'PauseBetweenFrames',\n x00540039: 'PhaseDescription',\n x00540050: 'RotationVector',\n x00540051: 'NumberOfRotations',\n x00540052: 'RotationInformationSequence',\n x00540053: 'NumberOfFramesInRotation',\n x00540060: 'RRIntervalVector',\n x00540061: 'NumberOfRRIntervals',\n x00540062: 'GatedInformationSequence',\n x00540063: 'DataInformationSequence',\n x00540070: 'TimeSlotVector',\n x00540071: 'NumberOfTimeSlots',\n x00540072: 'TimeSlotInformationSequence',\n x00540073: 'TimeSlotTime',\n x00540080: 'SliceVector',\n x00540081: 'NumberOfSlices',\n x00540090: 'AngularViewVector',\n x00540100: 'TimeSliceVector',\n x00540101: 'NumberOfTimeSlices',\n x00540200: 'StartAngle',\n x00540202: 'TypeOfDetectorMotion',\n x00540210: 'TriggerVector',\n x00540211: 'NumberOfTriggersInPhase',\n x00540220: 'ViewCodeSequence',\n x00540222: 'ViewModifierCodeSequence',\n x00540300: 'RadionuclideCodeSequence',\n x00540302: 'AdministrationRouteCodeSequence',\n x00540304: 'RadiopharmaceuticalCodeSequence',\n x00540306: 'CalibrationDataSequence',\n x00540308: 'EnergyWindowNumber',\n x00540400: 'ImageID',\n x00540410: 'PatientOrientationCodeSequence',\n x00540412: 'PatientOrientationModifierCodeSeq',\n x00540414: 'PatientGantryRelationshipCodeSeq',\n x00540500: 'SliceProgressionDirection',\n x00541000: 'SeriesType',\n x00541001: 'Units',\n x00541002: 'CountsSource',\n x00541004: 'ReprojectionMethod',\n x00541100: 'RandomsCorrectionMethod',\n x00541101: 'AttenuationCorrectionMethod',\n x00541102: 'DecayCorrection',\n x00541103: 'ReconstructionMethod',\n x00541104: 'DetectorLinesOfResponseUsed',\n x00541105: 'ScatterCorrectionMethod',\n x00541200: 'AxialAcceptance',\n x00541201: 'AxialMash',\n x00541202: 'TransverseMash',\n x00541203: 'DetectorElementSize',\n x00541210: 'CoincidenceWindowWidth',\n x00541220: 'SecondaryCountsType',\n x00541300: 'FrameReferenceTime',\n x00541310: 'PrimaryCountsAccumulated',\n x00541311: 'SecondaryCountsAccumulated',\n x00541320: 'SliceSensitivityFactor',\n x00541321: 'DecayFactor',\n x00541322: 'DoseCalibrationFactor',\n x00541323: 'ScatterFractionFactor',\n x00541324: 'DeadTimeFactor',\n x00541330: 'ImageIndex',\n x00541400: 'CountsIncluded',\n x00541401: 'DeadTimeCorrectionFlag',\n x00603000: 'HistogramSequence',\n x00603002: 'HistogramNumberOfBins',\n x00603004: 'HistogramFirstBinValue',\n x00603006: 'HistogramLastBinValue',\n x00603008: 'HistogramBinWidth',\n x00603010: 'HistogramExplanation',\n x00603020: 'HistogramData',\n x00620001: 'SegmentationType',\n x00620002: 'SegmentSequence',\n x00620003: 'SegmentedPropertyCategoryCodeSeq',\n x00620004: 'SegmentNumber',\n x00620005: 'SegmentLabel',\n x00620006: 'SegmentDescription',\n x00620008: 'SegmentAlgorithmType',\n x00620009: 'SegmentAlgorithmName',\n x0062000a: 'SegmentIdentificationSequence',\n x0062000b: 'ReferencedSegmentNumber',\n x0062000c: 'RecommendedDisplayGrayscaleValue',\n x0062000d: 'RecommendedDisplayCIELabValue',\n x0062000e: 'MaximumFractionalValue',\n x0062000f: 'SegmentedPropertyTypeCodeSequence',\n x00620010: 'SegmentationFractionalType',\n x00640002: 'DeformableRegistrationSequence',\n x00640003: 'SourceFrameOfReferenceUID',\n x00640005: 'DeformableRegistrationGridSequence',\n x00640007: 'GridDimensions',\n x00640008: 'GridResolution',\n x00640009: 'VectorGridData',\n x0064000f: 'PreDeformationMatrixRegistSeq',\n x00640010: 'PostDeformationMatrixRegistSeq',\n x00660001: 'NumberOfSurfaces',\n x00660002: 'SurfaceSequence',\n x00660003: 'SurfaceNumber',\n x00660004: 'SurfaceComments',\n x00660009: 'SurfaceProcessing',\n x0066000a: 'SurfaceProcessingRatio',\n x0066000e: 'FiniteVolume',\n x00660010: 'Manifold',\n x00660011: 'SurfacePointsSequence',\n x00660015: 'NumberOfSurfacePoints',\n x00660016: 'PointCoordinatesData',\n x00660017: 'PointPositionAccuracy',\n x00660018: 'MeanPointDistance',\n x00660019: 'MaximumPointDistance',\n x0066001b: 'AxisOfRotation',\n x0066001c: 'CenterOfRotation',\n x0066001e: 'NumberOfVectors',\n x0066001f: 'VectorDimensionality',\n x00660020: 'VectorAccuracy',\n x00660021: 'VectorCoordinateData',\n x00660023: 'TrianglePointIndexList',\n x00660024: 'EdgePointIndexList',\n x00660025: 'VertexPointIndexList',\n x00660026: 'TriangleStripSequence',\n x00660027: 'TriangleFanSequence',\n x00660028: 'LineSequence',\n x00660029: 'PrimitivePointIndexList',\n x0066002a: 'SurfaceCount',\n x0066002f: 'AlgorithmFamilyCodeSequ',\n x00660031: 'AlgorithmVersion',\n x00660032: 'AlgorithmParameters',\n x00660034: 'FacetSequence',\n x00660036: 'AlgorithmName',\n x00700001: 'GraphicAnnotationSequence',\n x00700002: 'GraphicLayer',\n x00700003: 'BoundingBoxAnnotationUnits',\n x00700004: 'AnchorPointAnnotationUnits',\n x00700005: 'GraphicAnnotationUnits',\n x00700006: 'UnformattedTextValue',\n x00700008: 'TextObjectSequence',\n x00700009: 'GraphicObjectSequence',\n x00700010: 'BoundingBoxTopLeftHandCorner',\n x00700011: 'BoundingBoxBottomRightHandCorner',\n x00700012: 'BoundingBoxTextHorizJustification',\n x00700014: 'AnchorPoint',\n x00700015: 'AnchorPointVisibility',\n x00700020: 'GraphicDimensions',\n x00700021: 'NumberOfGraphicPoints',\n x00700022: 'GraphicData',\n x00700023: 'GraphicType',\n x00700024: 'GraphicFilled',\n x00700040: 'ImageRotationRetired',\n x00700041: 'ImageHorizontalFlip',\n x00700042: 'ImageRotation',\n x00700050: 'DisplayedAreaTopLeftTrial',\n x00700051: 'DisplayedAreaBottomRightTrial',\n x00700052: 'DisplayedAreaTopLeft',\n x00700053: 'DisplayedAreaBottomRight',\n x0070005a: 'DisplayedAreaSelectionSequence',\n x00700060: 'GraphicLayerSequence',\n x00700062: 'GraphicLayerOrder',\n x00700066: 'GraphicLayerRecDisplayGraysclValue',\n x00700067: 'GraphicLayerRecDisplayRGBValue',\n x00700068: 'GraphicLayerDescription',\n x00700080: 'ContentLabel',\n x00700081: 'ContentDescription',\n x00700082: 'PresentationCreationDate',\n x00700083: 'PresentationCreationTime',\n x00700084: 'ContentCreatorName',\n x00700086: 'ContentCreatorIDCodeSequence',\n x00700100: 'PresentationSizeMode',\n x00700101: 'PresentationPixelSpacing',\n x00700102: 'PresentationPixelAspectRatio',\n x00700103: 'PresentationPixelMagRatio',\n x00700306: 'ShapeType',\n x00700308: 'RegistrationSequence',\n x00700309: 'MatrixRegistrationSequence',\n x0070030a: 'MatrixSequence',\n x0070030c: 'FrameOfRefTransformationMatrixType',\n x0070030d: 'RegistrationTypeCodeSequence',\n x0070030f: 'FiducialDescription',\n x00700310: 'FiducialIdentifier',\n x00700311: 'FiducialIdentifierCodeSequence',\n x00700312: 'ContourUncertaintyRadius',\n x00700314: 'UsedFiducialsSequence',\n x00700318: 'GraphicCoordinatesDataSequence',\n x0070031a: 'FiducialUID',\n x0070031c: 'FiducialSetSequence',\n x0070031e: 'FiducialSequence',\n x00700401: 'GraphicLayerRecomDisplayCIELabVal',\n x00700402: 'BlendingSequence',\n x00700403: 'RelativeOpacity',\n x00700404: 'ReferencedSpatialRegistrationSeq',\n x00700405: 'BlendingPosition',\n x00720002: 'HangingProtocolName',\n x00720004: 'HangingProtocolDescription',\n x00720006: 'HangingProtocolLevel',\n x00720008: 'HangingProtocolCreator',\n x0072000a: 'HangingProtocolCreationDateTime',\n x0072000c: 'HangingProtocolDefinitionSequence',\n x0072000e: 'HangingProtocolUserIDCodeSequence',\n x00720010: 'HangingProtocolUserGroupName',\n x00720012: 'SourceHangingProtocolSequence',\n x00720014: 'NumberOfPriorsReferenced',\n x00720020: 'ImageSetsSequence',\n x00720022: 'ImageSetSelectorSequence',\n x00720024: 'ImageSetSelectorUsageFlag',\n x00720026: 'SelectorAttribute',\n x00720028: 'SelectorValueNumber',\n x00720030: 'TimeBasedImageSetsSequence',\n x00720032: 'ImageSetNumber',\n x00720034: 'ImageSetSelectorCategory',\n x00720038: 'RelativeTime',\n x0072003a: 'RelativeTimeUnits',\n x0072003c: 'AbstractPriorValue',\n x0072003e: 'AbstractPriorCodeSequence',\n x00720040: 'ImageSetLabel',\n x00720050: 'SelectorAttributeVR',\n x00720052: 'SelectorSequencePointer',\n x00720054: 'SelectorSeqPointerPrivateCreator',\n x00720056: 'SelectorAttributePrivateCreator',\n x00720060: 'SelectorATValue',\n x00720062: 'SelectorCSValue',\n x00720064: 'SelectorISValue',\n x00720066: 'SelectorLOValue',\n x00720068: 'SelectorLTValue',\n x0072006a: 'SelectorPNValue',\n x0072006c: 'SelectorSHValue',\n x0072006e: 'SelectorSTValue',\n x00720070: 'SelectorUTValue',\n x00720072: 'SelectorDSValue',\n x00720074: 'SelectorFDValue',\n x00720076: 'SelectorFLValue',\n x00720078: 'SelectorULValue',\n x0072007a: 'SelectorUSValue',\n x0072007c: 'SelectorSLValue',\n x0072007e: 'SelectorSSValue',\n x00720080: 'SelectorCodeSequenceValue',\n x00720100: 'NumberOfScreens',\n x00720102: 'NominalScreenDefinitionSequence',\n x00720104: 'NumberOfVerticalPixels',\n x00720106: 'NumberOfHorizontalPixels',\n x00720108: 'DisplayEnvironmentSpatialPosition',\n x0072010a: 'ScreenMinimumGrayscaleBitDepth',\n x0072010c: 'ScreenMinimumColorBitDepth',\n x0072010e: 'ApplicationMaximumRepaintTime',\n x00720200: 'DisplaySetsSequence',\n x00720202: 'DisplaySetNumber',\n x00720203: 'DisplaySetLabel',\n x00720204: 'DisplaySetPresentationGroup',\n x00720206: 'DisplaySetPresentationGroupDescr',\n x00720208: 'PartialDataDisplayHandling',\n x00720210: 'SynchronizedScrollingSequence',\n x00720212: 'DisplaySetScrollingGroup',\n x00720214: 'NavigationIndicatorSequence',\n x00720216: 'NavigationDisplaySet',\n x00720218: 'ReferenceDisplaySets',\n x00720300: 'ImageBoxesSequence',\n x00720302: 'ImageBoxNumber',\n x00720304: 'ImageBoxLayoutType',\n x00720306: 'ImageBoxTileHorizontalDimension',\n x00720308: 'ImageBoxTileVerticalDimension',\n x00720310: 'ImageBoxScrollDirection',\n x00720312: 'ImageBoxSmallScrollType',\n x00720314: 'ImageBoxSmallScrollAmount',\n x00720316: 'ImageBoxLargeScrollType',\n x00720318: 'ImageBoxLargeScrollAmount',\n x00720320: 'ImageBoxOverlapPriority',\n x00720330: 'CineRelativeToRealTime',\n x00720400: 'FilterOperationsSequence',\n x00720402: 'FilterByCategory',\n x00720404: 'FilterByAttributePresence',\n x00720406: 'FilterByOperator',\n x00720432: 'SynchronizedImageBoxList',\n x00720434: 'TypeOfSynchronization',\n x00720500: 'BlendingOperationType',\n x00720510: 'ReformattingOperationType',\n x00720512: 'ReformattingThickness',\n x00720514: 'ReformattingInterval',\n x00720516: 'ReformattingOpInitialViewDir',\n x00720520: 'RenderingType3D',\n x00720600: 'SortingOperationsSequence',\n x00720602: 'SortByCategory',\n x00720604: 'SortingDirection',\n x00720700: 'DisplaySetPatientOrientation',\n x00720702: 'VOIType',\n x00720704: 'PseudoColorType',\n x00720706: 'ShowGrayscaleInverted',\n x00720710: 'ShowImageTrueSizeFlag',\n x00720712: 'ShowGraphicAnnotationFlag',\n x00720714: 'ShowPatientDemographicsFlag',\n x00720716: 'ShowAcquisitionTechniquesFlag',\n x00720717: 'DisplaySetHorizontalJustification',\n x00720718: 'DisplaySetVerticalJustification',\n x00741000: 'UnifiedProcedureStepState',\n x00741002: 'UPSProgressInformationSequence',\n x00741004: 'UnifiedProcedureStepProgress',\n x00741006: 'UnifiedProcedureStepProgressDescr',\n x00741008: 'UnifiedProcedureStepComURISeq',\n x0074100a: 'ContactURI',\n x0074100c: 'ContactDisplayName',\n x00741020: 'BeamTaskSequence',\n x00741022: 'BeamTaskType',\n x00741024: 'BeamOrderIndex',\n x00741030: 'DeliveryVerificationImageSequence',\n x00741032: 'VerificationImageTiming',\n x00741034: 'DoubleExposureFlag',\n x00741036: 'DoubleExposureOrdering',\n x00741038: 'DoubleExposureMeterset',\n x0074103a: 'DoubleExposureFieldDelta',\n x00741040: 'RelatedReferenceRTImageSequence',\n x00741042: 'GeneralMachineVerificationSequence',\n x00741044: 'ConventionalMachineVerificationSeq',\n x00741046: 'IonMachineVerificationSequence',\n x00741048: 'FailedAttributesSequence',\n x0074104a: 'OverriddenAttributesSequence',\n x0074104c: 'ConventionalControlPointVerifySeq',\n x0074104e: 'IonControlPointVerificationSeq',\n x00741050: 'AttributeOccurrenceSequence',\n x00741052: 'AttributeOccurrencePointer',\n x00741054: 'AttributeItemSelector',\n x00741056: 'AttributeOccurrencePrivateCreator',\n x00741200: 'ScheduledProcedureStepPriority',\n x00741202: 'StudyListLabel',\n x00741204: 'ProcedureStepLabel',\n x00741210: 'ScheduledProcessingParametersSeq',\n x00741212: 'PerformedProcessingParametersSeq',\n x00741216: 'UPSPerformedProcedureSequence',\n x00741220: 'RelatedProcedureStepSequence',\n x00741222: 'ProcedureStepRelationshipType',\n x00741230: 'DeletionLock',\n x00741234: 'ReceivingAE',\n x00741236: 'RequestingAE',\n x00741238: 'ReasonForCancellation',\n x00741242: 'SCPStatus',\n x00741244: 'SubscriptionListStatus',\n x00741246: 'UPSListStatus',\n x00880130: 'StorageMediaFileSetID',\n x00880140: 'StorageMediaFileSetUID',\n x00880200: 'IconImageSequence',\n x00880904: 'TopicTitle',\n x00880906: 'TopicSubject',\n x00880910: 'TopicAuthor',\n x00880912: 'TopicKeywords',\n x01000410: 'SOPInstanceStatus',\n x01000420: 'SOPAuthorizationDateAndTime',\n x01000424: 'SOPAuthorizationComment',\n x01000426: 'AuthorizationEquipmentCertNumber',\n x04000005: 'MACIDNumber',\n x04000010: 'MACCalculationTransferSyntaxUID',\n x04000015: 'MACAlgorithm',\n x04000020: 'DataElementsSigned',\n x04000100: 'DigitalSignatureUID',\n x04000105: 'DigitalSignatureDateTime',\n x04000110: 'CertificateType',\n x04000115: 'CertificateOfSigner',\n x04000120: 'Signature',\n x04000305: 'CertifiedTimestampType',\n x04000310: 'CertifiedTimestamp',\n x04000401: 'DigitalSignaturePurposeCodeSeq',\n x04000402: 'ReferencedDigitalSignatureSeq',\n x04000403: 'ReferencedSOPInstanceMACSeq',\n x04000404: 'MAC',\n x04000500: 'EncryptedAttributesSequence',\n x04000510: 'EncryptedContentTransferSyntaxUID',\n x04000520: 'EncryptedContent',\n x04000550: 'ModifiedAttributesSequence',\n x04000561: 'OriginalAttributesSequence',\n x04000562: 'AttributeModificationDateTime',\n x04000563: 'ModifyingSystem',\n x04000564: 'SourceOfPreviousValues',\n x04000565: 'ReasonForTheAttributeModification',\n x1000xxx0: 'EscapeTriplet',\n x1000xxx1: 'RunLengthTriplet',\n x1000xxx2: 'HuffmanTableSize',\n x1000xxx3: 'HuffmanTableTriplet',\n x1000xxx4: 'ShiftTableSize',\n x1000xxx5: 'ShiftTableTriplet',\n x1010xxxx: 'ZonalMap',\n x20000010: 'NumberOfCopies',\n x2000001e: 'PrinterConfigurationSequence',\n x20000020: 'PrintPriority',\n x20000030: 'MediumType',\n x20000040: 'FilmDestination',\n x20000050: 'FilmSessionLabel',\n x20000060: 'MemoryAllocation',\n x20000061: 'MaximumMemoryAllocation',\n x20000062: 'ColorImagePrintingFlag',\n x20000063: 'CollationFlag',\n x20000065: 'AnnotationFlag',\n x20000067: 'ImageOverlayFlag',\n x20000069: 'PresentationLUTFlag',\n x2000006a: 'ImageBoxPresentationLUTFlag',\n x200000a0: 'MemoryBitDepth',\n x200000a1: 'PrintingBitDepth',\n x200000a2: 'MediaInstalledSequence',\n x200000a4: 'OtherMediaAvailableSequence',\n x200000a8: 'SupportedImageDisplayFormatSeq',\n x20000500: 'ReferencedFilmBoxSequence',\n x20000510: 'ReferencedStoredPrintSequence',\n x20100010: 'ImageDisplayFormat',\n x20100030: 'AnnotationDisplayFormatID',\n x20100040: 'FilmOrientation',\n x20100050: 'FilmSizeID',\n x20100052: 'PrinterResolutionID',\n x20100054: 'DefaultPrinterResolutionID',\n x20100060: 'MagnificationType',\n x20100080: 'SmoothingType',\n x201000a6: 'DefaultMagnificationType',\n x201000a7: 'OtherMagnificationTypesAvailable',\n x201000a8: 'DefaultSmoothingType',\n x201000a9: 'OtherSmoothingTypesAvailable',\n x20100100: 'BorderDensity',\n x20100110: 'EmptyImageDensity',\n x20100120: 'MinDensity',\n x20100130: 'MaxDensity',\n x20100140: 'Trim',\n x20100150: 'ConfigurationInformation',\n x20100152: 'ConfigurationInformationDescr',\n x20100154: 'MaximumCollatedFilms',\n x2010015e: 'Illumination',\n x20100160: 'ReflectedAmbientLight',\n x20100376: 'PrinterPixelSpacing',\n x20100500: 'ReferencedFilmSessionSequence',\n x20100510: 'ReferencedImageBoxSequence',\n x20100520: 'ReferencedBasicAnnotationBoxSeq',\n x20200010: 'ImageBoxPosition',\n x20200020: 'Polarity',\n x20200030: 'RequestedImageSize',\n x20200040: 'RequestedDecimate-CropBehavior',\n x20200050: 'RequestedResolutionID',\n x202000a0: 'RequestedImageSizeFlag',\n x202000a2: 'DecimateCropResult',\n x20200110: 'BasicGrayscaleImageSequence',\n x20200111: 'BasicColorImageSequence',\n x20200130: 'ReferencedImageOverlayBoxSequence',\n x20200140: 'ReferencedVOILUTBoxSequence',\n x20300010: 'AnnotationPosition',\n x20300020: 'TextString',\n x20400010: 'ReferencedOverlayPlaneSequence',\n x20400011: 'ReferencedOverlayPlaneGroups',\n x20400020: 'OverlayPixelDataSequence',\n x20400060: 'OverlayMagnificationType',\n x20400070: 'OverlaySmoothingType',\n x20400072: 'OverlayOrImageMagnification',\n x20400074: 'MagnifyToNumberOfColumns',\n x20400080: 'OverlayForegroundDensity',\n x20400082: 'OverlayBackgroundDensity',\n x20400090: 'OverlayMode',\n x20400100: 'ThresholdDensity',\n x20400500: 'ReferencedImageBoxSequenceRetired',\n x20500010: 'PresentationLUTSequence',\n x20500020: 'PresentationLUTShape',\n x20500500: 'ReferencedPresentationLUTSequence',\n x21000010: 'PrintJobID',\n x21000020: 'ExecutionStatus',\n x21000030: 'ExecutionStatusInfo',\n x21000040: 'CreationDate',\n x21000050: 'CreationTime',\n x21000070: 'Originator',\n x21000140: 'DestinationAE',\n x21000160: 'OwnerID',\n x21000170: 'NumberOfFilms',\n x21000500: 'ReferencedPrintJobSequencePullStoredPrint',\n x21100010: 'PrinterStatus',\n x21100020: 'PrinterStatusInfo',\n x21100030: 'PrinterName',\n x21100099: 'PrintQueueID',\n x21200010: 'QueueStatus',\n x21200050: 'PrintJobDescriptionSequence',\n x21200070: 'ReferencedPrintJobSequence',\n x21300010: 'PrintManagementCapabilitiesSeq',\n x21300015: 'PrinterCharacteristicsSequence',\n x21300030: 'FilmBoxContentSequence',\n x21300040: 'ImageBoxContentSequence',\n x21300050: 'AnnotationContentSequence',\n x21300060: 'ImageOverlayBoxContentSequence',\n x21300080: 'PresentationLUTContentSequence',\n x213000a0: 'ProposedStudySequence',\n x213000c0: 'OriginalImageSequence',\n x22000001: 'LabelFromInfoExtractedFromInstance',\n x22000002: 'LabelText',\n x22000003: 'LabelStyleSelection',\n x22000004: 'MediaDisposition',\n x22000005: 'BarcodeValue',\n x22000006: 'BarcodeSymbology',\n x22000007: 'AllowMediaSplitting',\n x22000008: 'IncludeNonDICOMObjects',\n x22000009: 'IncludeDisplayApplication',\n x2200000a: 'SaveCompInstancesAfterMediaCreate',\n x2200000b: 'TotalNumberMediaPiecesCreated',\n x2200000c: 'RequestedMediaApplicationProfile',\n x2200000d: 'ReferencedStorageMediaSequence',\n x2200000e: 'FailureAttributes',\n x2200000f: 'AllowLossyCompression',\n x22000020: 'RequestPriority',\n x30020002: 'RTImageLabel',\n x30020003: 'RTImageName',\n x30020004: 'RTImageDescription',\n x3002000a: 'ReportedValuesOrigin',\n x3002000c: 'RTImagePlane',\n x3002000d: 'XRayImageReceptorTranslation',\n x3002000e: 'XRayImageReceptorAngle',\n x30020010: 'RTImageOrientation',\n x30020011: 'ImagePlanePixelSpacing',\n x30020012: 'RTImagePosition',\n x30020020: 'RadiationMachineName',\n x30020022: 'RadiationMachineSAD',\n x30020024: 'RadiationMachineSSD',\n x30020026: 'RTImageSID',\n x30020028: 'SourceToReferenceObjectDistance',\n x30020029: 'FractionNumber',\n x30020030: 'ExposureSequence',\n x30020032: 'MetersetExposure',\n x30020034: 'DiaphragmPosition',\n x30020040: 'FluenceMapSequence',\n x30020041: 'FluenceDataSource',\n x30020042: 'FluenceDataScale',\n x30020051: 'FluenceMode',\n x30020052: 'FluenceModeID',\n x30040001: 'DVHType',\n x30040002: 'DoseUnits',\n x30040004: 'DoseType',\n x30040006: 'DoseComment',\n x30040008: 'NormalizationPoint',\n x3004000a: 'DoseSummationType',\n x3004000c: 'GridFrameOffsetVector',\n x3004000e: 'DoseGridScaling',\n x30040010: 'RTDoseROISequence',\n x30040012: 'DoseValue',\n x30040014: 'TissueHeterogeneityCorrection',\n x30040040: 'DVHNormalizationPoint',\n x30040042: 'DVHNormalizationDoseValue',\n x30040050: 'DVHSequence',\n x30040052: 'DVHDoseScaling',\n x30040054: 'DVHVolumeUnits',\n x30040056: 'DVHNumberOfBins',\n x30040058: 'DVHData',\n x30040060: 'DVHReferencedROISequence',\n x30040062: 'DVHROIContributionType',\n x30040070: 'DVHMinimumDose',\n x30040072: 'DVHMaximumDose',\n x30040074: 'DVHMeanDose',\n x30060002: 'StructureSetLabel',\n x30060004: 'StructureSetName',\n x30060006: 'StructureSetDescription',\n x30060008: 'StructureSetDate',\n x30060009: 'StructureSetTime',\n x30060010: 'ReferencedFrameOfReferenceSequence',\n x30060012: 'RTReferencedStudySequence',\n x30060014: 'RTReferencedSeriesSequence',\n x30060016: 'ContourImageSequence',\n x30060020: 'StructureSetROISequence',\n x30060022: 'ROINumber',\n x30060024: 'ReferencedFrameOfReferenceUID',\n x30060026: 'ROIName',\n x30060028: 'ROIDescription',\n x3006002a: 'ROIDisplayColor',\n x3006002c: 'ROIVolume',\n x30060030: 'RTRelatedROISequence',\n x30060033: 'RTROIRelationship',\n x30060036: 'ROIGenerationAlgorithm',\n x30060038: 'ROIGenerationDescription',\n x30060039: 'ROIContourSequence',\n x30060040: 'ContourSequence',\n x30060042: 'ContourGeometricType',\n x30060044: 'ContourSlabThickness',\n x30060045: 'ContourOffsetVector',\n x30060046: 'NumberOfContourPoints',\n x30060048: 'ContourNumber',\n x30060049: 'AttachedContours',\n x30060050: 'ContourData',\n x30060080: 'RTROIObservationsSequence',\n x30060082: 'ObservationNumber',\n x30060084: 'ReferencedROINumber',\n x30060085: 'ROIObservationLabel',\n x30060086: 'RTROIIdentificationCodeSequence',\n x30060088: 'ROIObservationDescription',\n x300600a0: 'RelatedRTROIObservationsSequence',\n x300600a4: 'RTROIInterpretedType',\n x300600a6: 'ROIInterpreter',\n x300600b0: 'ROIPhysicalPropertiesSequence',\n x300600b2: 'ROIPhysicalProperty',\n x300600b4: 'ROIPhysicalPropertyValue',\n x300600b6: 'ROIElementalCompositionSequence',\n x300600b7: 'ROIElementalCompAtomicNumber',\n x300600b8: 'ROIElementalCompAtomicMassFraction',\n x300600c0: 'FrameOfReferenceRelationshipSeq',\n x300600c2: 'RelatedFrameOfReferenceUID',\n x300600c4: 'FrameOfReferenceTransformType',\n x300600c6: 'FrameOfReferenceTransformMatrix',\n x300600c8: 'FrameOfReferenceTransformComment',\n x30080010: 'MeasuredDoseReferenceSequence',\n x30080012: 'MeasuredDoseDescription',\n x30080014: 'MeasuredDoseType',\n x30080016: 'MeasuredDoseValue',\n x30080020: 'TreatmentSessionBeamSequence',\n x30080021: 'TreatmentSessionIonBeamSequence',\n x30080022: 'CurrentFractionNumber',\n x30080024: 'TreatmentControlPointDate',\n x30080025: 'TreatmentControlPointTime',\n x3008002a: 'TreatmentTerminationStatus',\n x3008002b: 'TreatmentTerminationCode',\n x3008002c: 'TreatmentVerificationStatus',\n x30080030: 'ReferencedTreatmentRecordSequence',\n x30080032: 'SpecifiedPrimaryMeterset',\n x30080033: 'SpecifiedSecondaryMeterset',\n x30080036: 'DeliveredPrimaryMeterset',\n x30080037: 'DeliveredSecondaryMeterset',\n x3008003a: 'SpecifiedTreatmentTime',\n x3008003b: 'DeliveredTreatmentTime',\n x30080040: 'ControlPointDeliverySequence',\n x30080041: 'IonControlPointDeliverySequence',\n x30080042: 'SpecifiedMeterset',\n x30080044: 'DeliveredMeterset',\n x30080045: 'MetersetRateSet',\n x30080046: 'MetersetRateDelivered',\n x30080047: 'ScanSpotMetersetsDelivered',\n x30080048: 'DoseRateDelivered',\n x30080050: 'TreatmentSummaryCalcDoseRefSeq',\n x30080052: 'CumulativeDoseToDoseReference',\n x30080054: 'FirstTreatmentDate',\n x30080056: 'MostRecentTreatmentDate',\n x3008005a: 'NumberOfFractionsDelivered',\n x30080060: 'OverrideSequence',\n x30080061: 'ParameterSequencePointer',\n x30080062: 'OverrideParameterPointer',\n x30080063: 'ParameterItemIndex',\n x30080064: 'MeasuredDoseReferenceNumber',\n x30080065: 'ParameterPointer',\n x30080066: 'OverrideReason',\n x30080068: 'CorrectedParameterSequence',\n x3008006a: 'CorrectionValue',\n x30080070: 'CalculatedDoseReferenceSequence',\n x30080072: 'CalculatedDoseReferenceNumber',\n x30080074: 'CalculatedDoseReferenceDescription',\n x30080076: 'CalculatedDoseReferenceDoseValue',\n x30080078: 'StartMeterset',\n x3008007a: 'EndMeterset',\n x30080080: 'ReferencedMeasuredDoseReferenceSeq',\n x30080082: 'ReferencedMeasuredDoseReferenceNum',\n x30080090: 'ReferencedCalculatedDoseRefSeq',\n x30080092: 'ReferencedCalculatedDoseRefNumber',\n x300800a0: 'BeamLimitingDeviceLeafPairsSeq',\n x300800b0: 'RecordedWedgeSequence',\n x300800c0: 'RecordedCompensatorSequence',\n x300800d0: 'RecordedBlockSequence',\n x300800e0: 'TreatmentSummaryMeasuredDoseRefSeq',\n x300800f0: 'RecordedSnoutSequence',\n x300800f2: 'RecordedRangeShifterSequence',\n x300800f4: 'RecordedLateralSpreadingDeviceSeq',\n x300800f6: 'RecordedRangeModulatorSequence',\n x30080100: 'RecordedSourceSequence',\n x30080105: 'SourceSerialNumber',\n x30080110: 'TreatmentSessionAppSetupSeq',\n x30080116: 'ApplicationSetupCheck',\n x30080120: 'RecordedBrachyAccessoryDeviceSeq',\n x30080122: 'ReferencedBrachyAccessoryDeviceNum',\n x30080130: 'RecordedChannelSequence',\n x30080132: 'SpecifiedChannelTotalTime',\n x30080134: 'DeliveredChannelTotalTime',\n x30080136: 'SpecifiedNumberOfPulses',\n x30080138: 'DeliveredNumberOfPulses',\n x3008013a: 'SpecifiedPulseRepetitionInterval',\n x3008013c: 'DeliveredPulseRepetitionInterval',\n x30080140: 'RecordedSourceApplicatorSequence',\n x30080142: 'ReferencedSourceApplicatorNumber',\n x30080150: 'RecordedChannelShieldSequence',\n x30080152: 'ReferencedChannelShieldNumber',\n x30080160: 'BrachyControlPointDeliveredSeq',\n x30080162: 'SafePositionExitDate',\n x30080164: 'SafePositionExitTime',\n x30080166: 'SafePositionReturnDate',\n x30080168: 'SafePositionReturnTime',\n x30080200: 'CurrentTreatmentStatus',\n x30080202: 'TreatmentStatusComment',\n x30080220: 'FractionGroupSummarySequence',\n x30080223: 'ReferencedFractionNumber',\n x30080224: 'FractionGroupType',\n x30080230: 'BeamStopperPosition',\n x30080240: 'FractionStatusSummarySequence',\n x30080250: 'TreatmentDate',\n x30080251: 'TreatmentTime',\n x300a0002: 'RTPlanLabel',\n x300a0003: 'RTPlanName',\n x300a0004: 'RTPlanDescription',\n x300a0006: 'RTPlanDate',\n x300a0007: 'RTPlanTime',\n x300a0009: 'TreatmentProtocols',\n x300a000a: 'PlanIntent',\n x300a000b: 'TreatmentSites',\n x300a000c: 'RTPlanGeometry',\n x300a000e: 'PrescriptionDescription',\n x300a0010: 'DoseReferenceSequence',\n x300a0012: 'DoseReferenceNumber',\n x300a0013: 'DoseReferenceUID',\n x300a0014: 'DoseReferenceStructureType',\n x300a0015: 'NominalBeamEnergyUnit',\n x300a0016: 'DoseReferenceDescription',\n x300a0018: 'DoseReferencePointCoordinates',\n x300a001a: 'NominalPriorDose',\n x300a0020: 'DoseReferenceType',\n x300a0021: 'ConstraintWeight',\n x300a0022: 'DeliveryWarningDose',\n x300a0023: 'DeliveryMaximumDose',\n x300a0025: 'TargetMinimumDose',\n x300a0026: 'TargetPrescriptionDose',\n x300a0027: 'TargetMaximumDose',\n x300a0028: 'TargetUnderdoseVolumeFraction',\n x300a002a: 'OrganAtRiskFullVolumeDose',\n x300a002b: 'OrganAtRiskLimitDose',\n x300a002c: 'OrganAtRiskMaximumDose',\n x300a002d: 'OrganAtRiskOverdoseVolumeFraction',\n x300a0040: 'ToleranceTableSequence',\n x300a0042: 'ToleranceTableNumber',\n x300a0043: 'ToleranceTableLabel',\n x300a0044: 'GantryAngleTolerance',\n x300a0046: 'BeamLimitingDeviceAngleTolerance',\n x300a0048: 'BeamLimitingDeviceToleranceSeq',\n x300a004a: 'BeamLimitingDevicePositionTol',\n x300a004b: 'SnoutPositionTolerance',\n x300a004c: 'PatientSupportAngleTolerance',\n x300a004e: 'TableTopEccentricAngleTolerance',\n x300a004f: 'TableTopPitchAngleTolerance',\n x300a0050: 'TableTopRollAngleTolerance',\n x300a0051: 'TableTopVerticalPositionTolerance',\n x300a0052: 'TableTopLongitudinalPositionTol',\n x300a0053: 'TableTopLateralPositionTolerance',\n x300a0055: 'RTPlanRelationship',\n x300a0070: 'FractionGroupSequence',\n x300a0071: 'FractionGroupNumber',\n x300a0072: 'FractionGroupDescription',\n x300a0078: 'NumberOfFractionsPlanned',\n x300a0079: 'NumberFractionPatternDigitsPerDay',\n x300a007a: 'RepeatFractionCycleLength',\n x300a007b: 'FractionPattern',\n x300a0080: 'NumberOfBeams',\n x300a0082: 'BeamDoseSpecificationPoint',\n x300a0084: 'BeamDose',\n x300a0086: 'BeamMeterset',\n x300a0088: 'BeamDosePointDepth',\n x300a0089: 'BeamDosePointEquivalentDepth',\n x300a008a: 'BeamDosePointSSD',\n x300a00a0: 'NumberOfBrachyApplicationSetups',\n x300a00a2: 'BrachyAppSetupDoseSpecPoint',\n x300a00a4: 'BrachyApplicationSetupDose',\n x300a00b0: 'BeamSequence',\n x300a00b2: 'TreatmentMachineName',\n x300a00b3: 'PrimaryDosimeterUnit',\n x300a00b4: 'SourceAxisDistance',\n x300a00b6: 'BeamLimitingDeviceSequence',\n x300a00b8: 'RTBeamLimitingDeviceType',\n x300a00ba: 'SourceToBeamLimitingDeviceDistance',\n x300a00bb: 'IsocenterToBeamLimitingDeviceDist',\n x300a00bc: 'NumberOfLeafJawPairs',\n x300a00be: 'LeafPositionBoundaries',\n x300a00c0: 'BeamNumber',\n x300a00c2: 'BeamName',\n x300a00c3: 'BeamDescription',\n x300a00c4: 'BeamType',\n x300a00c6: 'RadiationType',\n x300a00c7: 'HighDoseTechniqueType',\n x300a00c8: 'ReferenceImageNumber',\n x300a00ca: 'PlannedVerificationImageSequence',\n x300a00cc: 'ImagingDeviceSpecificAcqParams',\n x300a00ce: 'TreatmentDeliveryType',\n x300a00d0: 'NumberOfWedges',\n x300a00d1: 'WedgeSequence',\n x300a00d2: 'WedgeNumber',\n x300a00d3: 'WedgeType',\n x300a00d4: 'WedgeID',\n x300a00d5: 'WedgeAngle',\n x300a00d6: 'WedgeFactor',\n x300a00d7: 'TotalWedgeTrayWaterEquivThickness',\n x300a00d8: 'WedgeOrientation',\n x300a00d9: 'IsocenterToWedgeTrayDistance',\n x300a00da: 'SourceToWedgeTrayDistance',\n x300a00db: 'WedgeThinEdgePosition',\n x300a00dc: 'BolusID',\n x300a00dd: 'BolusDescription',\n x300a00e0: 'NumberOfCompensators',\n x300a00e1: 'MaterialID',\n x300a00e2: 'TotalCompensatorTrayFactor',\n x300a00e3: 'CompensatorSequence',\n x300a00e4: 'CompensatorNumber',\n x300a00e5: 'CompensatorID',\n x300a00e6: 'SourceToCompensatorTrayDistance',\n x300a00e7: 'CompensatorRows',\n x300a00e8: 'CompensatorColumns',\n x300a00e9: 'CompensatorPixelSpacing',\n x300a00ea: 'CompensatorPosition',\n x300a00eb: 'CompensatorTransmissionData',\n x300a00ec: 'CompensatorThicknessData',\n x300a00ed: 'NumberOfBoli',\n x300a00ee: 'CompensatorType',\n x300a00f0: 'NumberOfBlocks',\n x300a00f2: 'TotalBlockTrayFactor',\n x300a00f3: 'TotalBlockTrayWaterEquivThickness',\n x300a00f4: 'BlockSequence',\n x300a00f5: 'BlockTrayID',\n x300a00f6: 'SourceToBlockTrayDistance',\n x300a00f7: 'IsocenterToBlockTrayDistance',\n x300a00f8: 'BlockType',\n x300a00f9: 'AccessoryCode',\n x300a00fa: 'BlockDivergence',\n x300a00fb: 'BlockMountingPosition',\n x300a00fc: 'BlockNumber',\n x300a00fe: 'BlockName',\n x300a0100: 'BlockThickness',\n x300a0102: 'BlockTransmission',\n x300a0104: 'BlockNumberOfPoints',\n x300a0106: 'BlockData',\n x300a0107: 'ApplicatorSequence',\n x300a0108: 'ApplicatorID',\n x300a0109: 'ApplicatorType',\n x300a010a: 'ApplicatorDescription',\n x300a010c: 'CumulativeDoseReferenceCoefficient',\n x300a010e: 'FinalCumulativeMetersetWeight',\n x300a0110: 'NumberOfControlPoints',\n x300a0111: 'ControlPointSequence',\n x300a0112: 'ControlPointIndex',\n x300a0114: 'NominalBeamEnergy',\n x300a0115: 'DoseRateSet',\n x300a0116: 'WedgePositionSequence',\n x300a0118: 'WedgePosition',\n x300a011a: 'BeamLimitingDevicePositionSequence',\n x300a011c: 'LeafJawPositions',\n x300a011e: 'GantryAngle',\n x300a011f: 'GantryRotationDirection',\n x300a0120: 'BeamLimitingDeviceAngle',\n x300a0121: 'BeamLimitingDeviceRotateDirection',\n x300a0122: 'PatientSupportAngle',\n x300a0123: 'PatientSupportRotationDirection',\n x300a0124: 'TableTopEccentricAxisDistance',\n x300a0125: 'TableTopEccentricAngle',\n x300a0126: 'TableTopEccentricRotateDirection',\n x300a0128: 'TableTopVerticalPosition',\n x300a0129: 'TableTopLongitudinalPosition',\n x300a012a: 'TableTopLateralPosition',\n x300a012c: 'IsocenterPosition',\n x300a012e: 'SurfaceEntryPoint',\n x300a0130: 'SourceToSurfaceDistance',\n x300a0134: 'CumulativeMetersetWeight',\n x300a0140: 'TableTopPitchAngle',\n x300a0142: 'TableTopPitchRotationDirection',\n x300a0144: 'TableTopRollAngle',\n x300a0146: 'TableTopRollRotationDirection',\n x300a0148: 'HeadFixationAngle',\n x300a014a: 'GantryPitchAngle',\n x300a014c: 'GantryPitchRotationDirection',\n x300a014e: 'GantryPitchAngleTolerance',\n x300a0180: 'PatientSetupSequence',\n x300a0182: 'PatientSetupNumber',\n x300a0183: 'PatientSetupLabel',\n x300a0184: 'PatientAdditionalPosition',\n x300a0190: 'FixationDeviceSequence',\n x300a0192: 'FixationDeviceType',\n x300a0194: 'FixationDeviceLabel',\n x300a0196: 'FixationDeviceDescription',\n x300a0198: 'FixationDevicePosition',\n x300a0199: 'FixationDevicePitchAngle',\n x300a019a: 'FixationDeviceRollAngle',\n x300a01a0: 'ShieldingDeviceSequence',\n x300a01a2: 'ShieldingDeviceType',\n x300a01a4: 'ShieldingDeviceLabel',\n x300a01a6: 'ShieldingDeviceDescription',\n x300a01a8: 'ShieldingDevicePosition',\n x300a01b0: 'SetupTechnique',\n x300a01b2: 'SetupTechniqueDescription',\n x300a01b4: 'SetupDeviceSequence',\n x300a01b6: 'SetupDeviceType',\n x300a01b8: 'SetupDeviceLabel',\n x300a01ba: 'SetupDeviceDescription',\n x300a01bc: 'SetupDeviceParameter',\n x300a01d0: 'SetupReferenceDescription',\n x300a01d2: 'TableTopVerticalSetupDisplacement',\n x300a01d4: 'TableTopLongitudinalSetupDisplace',\n x300a01d6: 'TableTopLateralSetupDisplacement',\n x300a0200: 'BrachyTreatmentTechnique',\n x300a0202: 'BrachyTreatmentType',\n x300a0206: 'TreatmentMachineSequence',\n x300a0210: 'SourceSequence',\n x300a0212: 'SourceNumber',\n x300a0214: 'SourceType',\n x300a0216: 'SourceManufacturer',\n x300a0218: 'ActiveSourceDiameter',\n x300a021a: 'ActiveSourceLength',\n x300a0222: 'SourceEncapsulationNomThickness',\n x300a0224: 'SourceEncapsulationNomTransmission',\n x300a0226: 'SourceIsotopeName',\n x300a0228: 'SourceIsotopeHalfLife',\n x300a0229: 'SourceStrengthUnits',\n x300a022a: 'ReferenceAirKermaRate',\n x300a022b: 'SourceStrength',\n x300a022c: 'SourceStrengthReferenceDate',\n x300a022e: 'SourceStrengthReferenceTime',\n x300a0230: 'ApplicationSetupSequence',\n x300a0232: 'ApplicationSetupType',\n x300a0234: 'ApplicationSetupNumber',\n x300a0236: 'ApplicationSetupName',\n x300a0238: 'ApplicationSetupManufacturer',\n x300a0240: 'TemplateNumber',\n x300a0242: 'TemplateType',\n x300a0244: 'TemplateName',\n x300a0250: 'TotalReferenceAirKerma',\n x300a0260: 'BrachyAccessoryDeviceSequence',\n x300a0262: 'BrachyAccessoryDeviceNumber',\n x300a0263: 'BrachyAccessoryDeviceID',\n x300a0264: 'BrachyAccessoryDeviceType',\n x300a0266: 'BrachyAccessoryDeviceName',\n x300a026a: 'BrachyAccessoryDeviceNomThickness',\n x300a026c: 'BrachyAccessoryDevNomTransmission',\n x300a0280: 'ChannelSequence',\n x300a0282: 'ChannelNumber',\n x300a0284: 'ChannelLength',\n x300a0286: 'ChannelTotalTime',\n x300a0288: 'SourceMovementType',\n x300a028a: 'NumberOfPulses',\n x300a028c: 'PulseRepetitionInterval',\n x300a0290: 'SourceApplicatorNumber',\n x300a0291: 'SourceApplicatorID',\n x300a0292: 'SourceApplicatorType',\n x300a0294: 'SourceApplicatorName',\n x300a0296: 'SourceApplicatorLength',\n x300a0298: 'SourceApplicatorManufacturer',\n x300a029c: 'SourceApplicatorWallNomThickness',\n x300a029e: 'SourceApplicatorWallNomTrans',\n x300a02a0: 'SourceApplicatorStepSize',\n x300a02a2: 'TransferTubeNumber',\n x300a02a4: 'TransferTubeLength',\n x300a02b0: 'ChannelShieldSequence',\n x300a02b2: 'ChannelShieldNumber',\n x300a02b3: 'ChannelShieldID',\n x300a02b4: 'ChannelShieldName',\n x300a02b8: 'ChannelShieldNominalThickness',\n x300a02ba: 'ChannelShieldNominalTransmission',\n x300a02c8: 'FinalCumulativeTimeWeight',\n x300a02d0: 'BrachyControlPointSequence',\n x300a02d2: 'ControlPointRelativePosition',\n x300a02d4: 'ControlPoint3DPosition',\n x300a02d6: 'CumulativeTimeWeight',\n x300a02e0: 'CompensatorDivergence',\n x300a02e1: 'CompensatorMountingPosition',\n x300a02e2: 'SourceToCompensatorDistance',\n x300a02e3: 'TotalCompTrayWaterEquivThickness',\n x300a02e4: 'IsocenterToCompensatorTrayDistance',\n x300a02e5: 'CompensatorColumnOffset',\n x300a02e6: 'IsocenterToCompensatorDistances',\n x300a02e7: 'CompensatorRelStoppingPowerRatio',\n x300a02e8: 'CompensatorMillingToolDiameter',\n x300a02ea: 'IonRangeCompensatorSequence',\n x300a02eb: 'CompensatorDescription',\n x300a0302: 'RadiationMassNumber',\n x300a0304: 'RadiationAtomicNumber',\n x300a0306: 'RadiationChargeState',\n x300a0308: 'ScanMode',\n x300a030a: 'VirtualSourceAxisDistances',\n x300a030c: 'SnoutSequence',\n x300a030d: 'SnoutPosition',\n x300a030f: 'SnoutID',\n x300a0312: 'NumberOfRangeShifters',\n x300a0314: 'RangeShifterSequence',\n x300a0316: 'RangeShifterNumber',\n x300a0318: 'RangeShifterID',\n x300a0320: 'RangeShifterType',\n x300a0322: 'RangeShifterDescription',\n x300a0330: 'NumberOfLateralSpreadingDevices',\n x300a0332: 'LateralSpreadingDeviceSequence',\n x300a0334: 'LateralSpreadingDeviceNumber',\n x300a0336: 'LateralSpreadingDeviceID',\n x300a0338: 'LateralSpreadingDeviceType',\n x300a033a: 'LateralSpreadingDeviceDescription',\n x300a033c: 'LateralSpreadingDevWaterEquivThick',\n x300a0340: 'NumberOfRangeModulators',\n x300a0342: 'RangeModulatorSequence',\n x300a0344: 'RangeModulatorNumber',\n x300a0346: 'RangeModulatorID',\n x300a0348: 'RangeModulatorType',\n x300a034a: 'RangeModulatorDescription',\n x300a034c: 'BeamCurrentModulationID',\n x300a0350: 'PatientSupportType',\n x300a0352: 'PatientSupportID',\n x300a0354: 'PatientSupportAccessoryCode',\n x300a0356: 'FixationLightAzimuthalAngle',\n x300a0358: 'FixationLightPolarAngle',\n x300a035a: 'MetersetRate',\n x300a0360: 'RangeShifterSettingsSequence',\n x300a0362: 'RangeShifterSetting',\n x300a0364: 'IsocenterToRangeShifterDistance',\n x300a0366: 'RangeShifterWaterEquivThickness',\n x300a0370: 'LateralSpreadingDeviceSettingsSeq',\n x300a0372: 'LateralSpreadingDeviceSetting',\n x300a0374: 'IsocenterToLateralSpreadingDevDist',\n x300a0380: 'RangeModulatorSettingsSequence',\n x300a0382: 'RangeModulatorGatingStartValue',\n x300a0384: 'RangeModulatorGatingStopValue',\n x300a038a: 'IsocenterToRangeModulatorDistance',\n x300a0390: 'ScanSpotTuneID',\n x300a0392: 'NumberOfScanSpotPositions',\n x300a0394: 'ScanSpotPositionMap',\n x300a0396: 'ScanSpotMetersetWeights',\n x300a0398: 'ScanningSpotSize',\n x300a039a: 'NumberOfPaintings',\n x300a03a0: 'IonToleranceTableSequence',\n x300a03a2: 'IonBeamSequence',\n x300a03a4: 'IonBeamLimitingDeviceSequence',\n x300a03a6: 'IonBlockSequence',\n x300a03a8: 'IonControlPointSequence',\n x300a03aa: 'IonWedgeSequence',\n x300a03ac: 'IonWedgePositionSequence',\n x300a0401: 'ReferencedSetupImageSequence',\n x300a0402: 'SetupImageComment',\n x300a0410: 'MotionSynchronizationSequence',\n x300a0412: 'ControlPointOrientation',\n x300a0420: 'GeneralAccessorySequence',\n x300a0421: 'GeneralAccessoryID',\n x300a0422: 'GeneralAccessoryDescription',\n x300a0423: 'GeneralAccessoryType',\n x300a0424: 'GeneralAccessoryNumber',\n x300c0002: 'ReferencedRTPlanSequence',\n x300c0004: 'ReferencedBeamSequence',\n x300c0006: 'ReferencedBeamNumber',\n x300c0007: 'ReferencedReferenceImageNumber',\n x300c0008: 'StartCumulativeMetersetWeight',\n x300c0009: 'EndCumulativeMetersetWeight',\n x300c000a: 'ReferencedBrachyAppSetupSeq',\n x300c000c: 'ReferencedBrachyAppSetupNumber',\n x300c000e: 'ReferencedSourceNumber',\n x300c0020: 'ReferencedFractionGroupSequence',\n x300c0022: 'ReferencedFractionGroupNumber',\n x300c0040: 'ReferencedVerificationImageSeq',\n x300c0042: 'ReferencedReferenceImageSequence',\n x300c0050: 'ReferencedDoseReferenceSequence',\n x300c0051: 'ReferencedDoseReferenceNumber',\n x300c0055: 'BrachyReferencedDoseReferenceSeq',\n x300c0060: 'ReferencedStructureSetSequence',\n x300c006a: 'ReferencedPatientSetupNumber',\n x300c0080: 'ReferencedDoseSequence',\n x300c00a0: 'ReferencedToleranceTableNumber',\n x300c00b0: 'ReferencedBolusSequence',\n x300c00c0: 'ReferencedWedgeNumber',\n x300c00d0: 'ReferencedCompensatorNumber',\n x300c00e0: 'ReferencedBlockNumber',\n x300c00f0: 'ReferencedControlPointIndex',\n x300c00f2: 'ReferencedControlPointSequence',\n x300c00f4: 'ReferencedStartControlPointIndex',\n x300c00f6: 'ReferencedStopControlPointIndex',\n x300c0100: 'ReferencedRangeShifterNumber',\n x300c0102: 'ReferencedLateralSpreadingDevNum',\n x300c0104: 'ReferencedRangeModulatorNumber',\n x300e0002: 'ApprovalStatus',\n x300e0004: 'ReviewDate',\n x300e0005: 'ReviewTime',\n x300e0008: 'ReviewerName',\n x40000000: 'TextGroupLength',\n x40000010: 'Arbitrary',\n x40004000: 'TextComments',\n x40080040: 'ResultsID',\n x40080042: 'ResultsIDIssuer',\n x40080050: 'ReferencedInterpretationSequence',\n x40080100: 'InterpretationRecordedDate',\n x40080101: 'InterpretationRecordedTime',\n x40080102: 'InterpretationRecorder',\n x40080103: 'ReferenceToRecordedSound',\n x40080108: 'InterpretationTranscriptionDate',\n x40080109: 'InterpretationTranscriptionTime',\n x4008010a: 'InterpretationTranscriber',\n x4008010b: 'InterpretationText',\n x4008010c: 'InterpretationAuthor',\n x40080111: 'InterpretationApproverSequence',\n x40080112: 'InterpretationApprovalDate',\n x40080113: 'InterpretationApprovalTime',\n x40080114: 'PhysicianApprovingInterpretation',\n x40080115: 'InterpretationDiagnosisDescription',\n x40080117: 'InterpretationDiagnosisCodeSeq',\n x40080118: 'ResultsDistributionListSequence',\n x40080119: 'DistributionName',\n x4008011a: 'DistributionAddress',\n x40080200: 'InterpretationID',\n x40080202: 'InterpretationIDIssuer',\n x40080210: 'InterpretationTypeID',\n x40080212: 'InterpretationStatusID',\n x40080300: 'Impressions',\n x40084000: 'ResultsComments',\n x4ffe0001: 'MACParametersSequence',\n x50xx0005: 'CurveDimensions',\n x50xx0010: 'NumberOfPoints',\n x50xx0020: 'TypeOfData',\n x50xx0022: 'CurveDescription',\n x50xx0030: 'AxisUnits',\n x50xx0040: 'AxisLabels',\n x50xx0103: 'DataValueRepresentation',\n x50xx0104: 'MinimumCoordinateValue',\n x50xx0105: 'MaximumCoordinateValue',\n x50xx0106: 'CurveRange',\n x50xx0110: 'CurveDataDescriptor',\n x50xx0112: 'CoordinateStartValue',\n x50xx0114: 'CoordinateStepValue',\n x50xx1001: 'CurveActivationLayer',\n x50xx2000: 'AudioType',\n x50xx2002: 'AudioSampleFormat',\n x50xx2004: 'NumberOfChannels',\n x50xx2006: 'NumberOfSamples',\n x50xx2008: 'SampleRate',\n x50xx200a: 'TotalTime',\n x50xx200c: 'AudioSampleData',\n x50xx200e: 'AudioComments',\n x50xx2500: 'CurveLabel',\n x50xx2600: 'CurveReferencedOverlaySequence',\n x50xx2610: 'ReferencedOverlayGroup',\n x50xx3000: 'CurveData',\n x52009229: 'SharedFunctionalGroupsSequence',\n x52009230: 'PerFrameFunctionalGroupsSequence',\n x54000100: 'WaveformSequence',\n x54000110: 'ChannelMinimumValue',\n x54000112: 'ChannelMaximumValue',\n x54001004: 'WaveformBitsAllocated',\n x54001006: 'WaveformSampleInterpretation',\n x5400100a: 'WaveformPaddingValue',\n x54001010: 'WaveformData',\n x56000010: 'FirstOrderPhaseCorrectionAngle',\n x56000020: 'SpectroscopyData',\n x60000000: 'OverlayGroupLength',\n x60xx0010: 'OverlayRows',\n x60xx0011: 'OverlayColumns',\n x60xx0012: 'OverlayPlanes',\n x60xx0015: 'NumberOfFramesInOverlay',\n x60xx0022: 'OverlayDescription',\n x60xx0040: 'OverlayType',\n x60xx0045: 'OverlaySubtype',\n x60xx0050: 'OverlayOrigin',\n x60xx0051: 'ImageFrameOrigin',\n x60xx0052: 'OverlayPlaneOrigin',\n x60xx0060: 'OverlayCompressionCode',\n x60xx0061: 'OverlayCompressionOriginator',\n x60xx0062: 'OverlayCompressionLabel',\n x60xx0063: 'OverlayCompressionDescription',\n x60xx0066: 'OverlayCompressionStepPointers',\n x60xx0068: 'OverlayRepeatInterval',\n x60xx0069: 'OverlayBitsGrouped',\n x60xx0100: 'OverlayBitsAllocated',\n x60xx0102: 'OverlayBitPosition',\n x60xx0110: 'OverlayFormat',\n x60xx0200: 'OverlayLocation',\n x60xx0800: 'OverlayCodeLabel',\n x60xx0802: 'OverlayNumberOfTables',\n x60xx0803: 'OverlayCodeTableLocation',\n x60xx0804: 'OverlayBitsForCodeWord',\n x60xx1001: 'OverlayActivationLayer',\n x60xx1100: 'OverlayDescriptorGray',\n x60xx1101: 'OverlayDescriptorRed',\n x60xx1102: 'OverlayDescriptorGreen',\n x60xx1103: 'OverlayDescriptorBlue',\n x60xx1200: 'OverlaysGray',\n x60xx1201: 'OverlaysRed',\n x60xx1202: 'OverlaysGreen',\n x60xx1203: 'OverlaysBlue',\n x60xx1301: 'ROIArea',\n x60xx1302: 'ROIMean',\n x60xx1303: 'ROIStandardDeviation',\n x60xx1500: 'OverlayLabel',\n x60xx3000: 'OverlayData',\n x60xx4000: 'OverlayComments',\n x7fxx0000: 'PixelDataGroupLength',\n x7fxx0010: 'PixelData',\n x7fxx0011: 'VariableNextDataGroup',\n x7fxx0020: 'VariableCoefficientsSDVN',\n x7fxx0030: 'VariableCoefficientsSDHN',\n x7fxx0040: 'VariableCoefficientsSDDN',\n xfffafffa: 'DigitalSignaturesSequence',\n xfffcfffc: 'DataSetTrailingPadding',\n xfffee000: 'StartOfItem',\n xfffee00d: 'EndOfItems',\n xfffee0dd: 'EndOfSequence'\n};\nDICOMTagDescriptions.init(initialTagDescriptionMap); // Discard original map...\n\ninitialTagDescriptionMap = null;\n\n/**\n * A small set of utilities to help parsing DICOM element values.\n * In the future the functionality provided by this library might\n * be incorporated into dicomParser library.\n */\n\nvar parsingUtils = {\n /**\n * Check if supplied argument is a valid instance of the dicomParser.DataSet class.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @returns {Boolean} Returns true if data is a valid instance of the dicomParser.DataSet class.\n */\n isValidDataSet: function isValidDataSet(data) {\n var dicomParser = external.dicomParser;\n return data instanceof dicomParser.DataSet;\n },\n\n /**\n * Parses an element tag according to the 'AT' VR definition.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {String} A string representation of a data element tag or null if the field is not present or data is not long enough.\n */\n attributeTag: function attributeTag(data, tag) {\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length === 4) {\n var parser = data.byteArrayParser.readUint16,\n bytes = data.byteArray,\n offset = element.dataOffset;\n return 'x' + ('00000000' + (parser(bytes, offset) * 256 * 256 + parser(bytes, offset + 2)).toString(16)).substr(-8);\n }\n }\n\n return null;\n },\n\n /**\n * Parses the string representation of a multi-valued element into an array of strings. If the parser\n * parameter is passed and is a function, it will be applied to each element of the resulting array.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @param parser {Function} An optional parser function that can be applied to each element of the array.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n multiValue: function multiValue(data, tag, parser) {\n var dicomParser = external.dicomParser;\n\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length > 0) {\n var string = dicomParser.readFixedString(data.byteArray, element.dataOffset, element.length);\n\n if (typeof string === 'string' && string.length > 0) {\n if (typeof parser !== 'function') {\n parser = null;\n }\n\n return string.split('\\\\').map(function (value) {\n value = value.trim();\n return parser !== null ? parser(value) : value;\n });\n }\n }\n }\n\n return null;\n },\n\n /**\n * Parses a string to an array of floats for a multi-valued element.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n floatArray: function floatArray(data, tag) {\n return this.multiValue(data, tag, parseFloat);\n }\n};\n\n/**\n * Returns the specified element as a dicom attribute group/element.\n *\n * @param element - The group/element of the element (e.g. '00280009')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getAttribute(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return convertToInt(element.Value);\n}\n\nfunction convertToInt(input) {\n function padFour(input) {\n var l = input.length;\n if (l == 0) return '0000';\n if (l == 1) return '000' + input;\n if (l == 2) return '00' + input;\n if (l == 3) return '0' + input;\n return input;\n }\n\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n for (var j = 0; j < input[i].length; j++) {\n output += padFour(input[i].charCodeAt(j).toString(16));\n }\n }\n\n return parseInt(output, 16);\n}\n\nvar btoa = function btoa(val) {\n return new Buffer(val).toString('base64');\n};\n\n// These should be overridden by the implementation\nvar user = {\n userLoggedIn: function userLoggedIn() {\n return false;\n },\n getUserId: function getUserId() {\n return null;\n },\n getName: function getName() {\n return null;\n },\n getAccessToken: function getAccessToken() {\n return null;\n },\n login: function login() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n logout: function logout() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n getData: function getData(key) {\n return null;\n },\n setData: function setData(key, value) {\n return null;\n }\n};\n\n/**\n * Returns the Authorization header as part of an Object.\n *\n * @returns {Object}\n */\n\nfunction getAuthorizationHeader(server) {\n var headers = {}; // Check for OHIF.user since this can also be run on the server\n\n var accessToken = user && user.getAccessToken && user.getAccessToken();\n\n if (server && server.requestOptions && server.requestOptions.auth) {\n // HTTP Basic Auth (user:password)\n headers.Authorization = \"Basic \".concat(btoa(server.requestOptions.auth));\n } else if (accessToken) {\n headers.Authorization = \"Bearer \".concat(accessToken);\n }\n\n return headers;\n}\n\nfunction getModalities(modality, modalitiesInStudy) {\n var modalities = {};\n\n if (modality) {\n modalities = modality;\n }\n\n if (modalitiesInStudy) {\n // Find vr in modalities\n if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {\n for (var i = 0; i < modalitiesInStudy.Value.length; i++) {\n var value = modalitiesInStudy.Value[i];\n\n if (modalities.Value.indexOf(value) === -1) {\n modalities.Value.push(value);\n }\n }\n } else {\n modalities = modalitiesInStudy;\n }\n }\n\n return modalities;\n}\n\n/**\n * Returns the Alphabetic version of a PN\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element is not found\n * @returns {*}\n */\nfunction getName(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Return the Alphabetic component group\n\n\n if (element.Value[0].Alphabetic) {\n return element.Value[0].Alphabetic;\n } // Orthanc does not return PN properly so this is a temporary workaround\n\n\n return element.Value[0];\n}\n\n/**\n * Returns the first string value as a Javascript Number\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element does not exist\n * @returns {*}\n */\nfunction getNumber(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return parseFloat(element.Value[0]);\n}\n\n/**\n * Returns the specified element as a string. Multi-valued elements will be separated by a backslash\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getString(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Join the array together separated by backslash\n // NOTE: Orthanc does not correctly split values into an array so the join is a no-op\n\n\n return element.Value.join('\\\\');\n}\n\nvar DICOMWeb = {\n getAttribute: getAttribute,\n getAuthorizationHeader: getAuthorizationHeader,\n getModalities: getModalities,\n getName: getName,\n getNumber: getNumber,\n getString: getString\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar dicomwebClient = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n factory(exports);\n}(commonjsGlobal, (function (exports) {\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Converts a Uint8Array to a String.\n * @param {Uint8Array} array that should be converted\n * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0)\n * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array)\n * @returns {String}\n */\n function uint8ArrayToString(arr, offset, limit) {\n offset = offset || 0;\n limit = limit || arr.length - offset;\n var str = '';\n\n for (var i = offset; i < offset + limit; i++) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n }\n /**\n * Converts a String to a Uint8Array.\n * @param {String} str string that should be converted\n * @returns {Uint8Array}\n */\n\n\n function stringToUint8Array(str) {\n var arr = new Uint8Array(str.length);\n\n for (var i = 0, j = str.length; i < j; i++) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n }\n /**\n * Identifies the boundary in a multipart/related message header.\n * @param {String} header message header\n * @returns {String} boundary\n */\n\n\n function identifyBoundary(header) {\n var parts = header.split('\\r\\n');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].substr(0, 2) === '--') {\n return parts[i];\n }\n }\n }\n /**\n * Checks whether a given token is contained by a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be present\n * @param {String} offset offset in message content from where search should start\n * @returns {Boolean} whether message contains token at offset\n */\n\n\n function containsToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (message + token.length > message.length) {\n return false;\n }\n\n var index = offset;\n\n for (var i = 0; i < token.length; i++) {\n if (token[i] !== message[index++]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Finds a given token in a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be found\n * @param {String} offset message body offset from where search should start\n * @returns {Boolean} whether message has a part at given offset or not\n */\n\n\n function findToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var messageLength = message.length;\n\n for (var i = offset; i < messageLength; i++) {\n // If the first value of the message matches\n // the first value of the token, check if\n // this is the full token.\n if (message[i] === token[0]) {\n if (containsToken(message, token, i)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n /**\n * @typedef {Object} MultipartEncodedData\n * @property {ArrayBuffer} data The encoded Multipart Data\n * @property {String} boundary The boundary used to divide pieces of the encoded data\n */\n\n /**\n * Encode one or more DICOM datasets into a single body so it can be\n * sent using the Multipart Content-Type.\n *\n * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers.\n * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated.\n * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it.\n */\n\n\n function multipartEncode(datasets) {\n var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid();\n var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'application/dicom';\n var contentTypeString = \"Content-Type: \".concat(contentType);\n var header = \"\\r\\n--\".concat(boundary, \"\\r\\n\").concat(contentTypeString, \"\\r\\n\\r\\n\");\n var footer = \"\\r\\n--\".concat(boundary, \"--\");\n var headerArray = stringToUint8Array(header);\n var footerArray = stringToUint8Array(footer);\n var headerLength = headerArray.length;\n var footerLength = footerArray.length;\n var length = 0; // Calculate the total length for the final array\n\n var contentArrays = datasets.map(function (datasetBuffer) {\n var contentArray = new Uint8Array(datasetBuffer);\n var contentLength = contentArray.length;\n length += headerLength + contentLength + footerLength;\n return contentArray;\n }); // Allocate the array\n\n var multipartArray = new Uint8Array(length); // Set the initial header\n\n multipartArray.set(headerArray, 0); // Write each dataset into the multipart array\n\n var position = 0;\n contentArrays.forEach(function (contentArray) {\n var contentLength = contentArray.length;\n multipartArray.set(headerArray, position);\n multipartArray.set(contentArray, position + headerLength);\n position += headerLength + contentArray.length;\n });\n multipartArray.set(footerArray, position);\n return {\n data: multipartArray.buffer,\n boundary: boundary\n };\n }\n /**\n * Decode a Multipart encoded ArrayBuffer and return the components as an Array.\n *\n * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message\n * @returns {Array} The content\n */\n\n function multipartDecode(response) {\n var message = new Uint8Array(response); // First look for the multipart mime header\n\n var separator = stringToUint8Array('\\r\\n\\r\\n');\n var headerIndex = findToken(message, separator);\n\n if (headerIndex === -1) {\n throw new Error('Response message has no multipart mime header');\n }\n\n var header = uint8ArrayToString(message, 0, headerIndex);\n var boundaryString = identifyBoundary(header);\n\n if (!boundaryString) {\n throw new Error('Header of response message does not specify boundary');\n }\n\n var boundary = stringToUint8Array(boundaryString);\n var boundaryLength = boundary.length;\n var components = [];\n var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries\n\n var boundaryIndex;\n\n while (boundaryIndex !== -1) {\n // Search for the next boundary in the message, starting\n // from the current offset position\n boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here.\n\n if (boundaryIndex === -1) {\n break;\n } // Extract data from response message, excluding \"\\r\\n\"\n\n\n var spacingLength = 2;\n var length = boundaryIndex - offset - spacingLength;\n var data = response.slice(offset, offset + length); // Add the data to the array of results\n\n components.push(data); // Move the offset to the end of the current section,\n // plus the identified boundary\n\n offset += length + spacingLength + boundaryLength;\n }\n\n return components;\n }\n /**\n * Create a random GUID\n *\n * @return {string}\n */\n\n\n function guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n function isEmptyObject(obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n }\n\n var getFirstResult = function getFirstResult(result) {\n return result[0];\n };\n\n var MIMETYPES = {\n DICOM: 'application/dicom',\n DICOM_JSON: 'application/dicom+json',\n OCTET_STREAM: 'application/octet-stream',\n JPEG: 'image/jpeg',\n PNG: 'image/png'\n };\n /**\n * Class for interacting with DICOMweb RESTful services.\n */\n\n var DICOMwebClient =\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {Object} options (choices: \"url\", \"username\", \"password\", \"headers\")\n */\n function DICOMwebClient(options) {\n _classCallCheck(this, DICOMwebClient);\n\n this.baseURL = options.url;\n\n if (!this.baseURL) {\n console.error('no DICOMweb base url provided - calls will fail');\n }\n\n if ('username' in options) {\n this.username = options.username;\n\n if (!('password' in options)) {\n console.error('no password provided to authenticate with DICOMweb service');\n }\n\n this.password = options.password;\n }\n\n if ('qidoURLPrefix' in options) {\n console.log(\"use URL prefix for QIDO-RS: \".concat(options.qidoURLPrefix));\n this.qidoURL = this.baseURL + '/' + options.qidoURLPrefix;\n } else {\n this.qidoURL = this.baseURL;\n }\n\n if ('wadoURLPrefix' in options) {\n console.log(\"use URL prefix for WADO-RS: \".concat(options.wadoURLPrefix));\n this.wadoURL = this.baseURL + '/' + options.wadoURLPrefix;\n } else {\n this.wadoURL = this.baseURL;\n }\n\n if ('stowURLPrefix' in options) {\n console.log(\"use URL prefix for STOW-RS: \".concat(options.stowURLPrefix));\n this.stowURL = this.baseURL + '/' + options.stowURLPrefix;\n } else {\n this.stowURL = this.baseURL;\n }\n\n this.headers = options.headers || {};\n }\n\n _createClass(DICOMwebClient, [{\n key: \"_httpRequest\",\n value: function _httpRequest(url, method, headers) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(method, url, true);\n\n if ('responseType' in options) {\n request.responseType = options.responseType;\n }\n\n if (_typeof(headers) === 'object') {\n Object.keys(headers).forEach(function (key) {\n request.setRequestHeader(key, headers[key]);\n });\n } // now add custom headers from the user\n // (e.g. access tokens)\n\n\n var userHeaders = _this.headers;\n Object.keys(userHeaders).forEach(function (key) {\n request.setRequestHeader(key, userHeaders[key]);\n }); // Event triggered when upload starts\n\n request.onloadstart = function (event) {//console.log('upload started: ', url)\n }; // Event triggered when upload ends\n\n\n request.onloadend = function (event) {//console.log('upload finished')\n }; // Handle response message\n\n\n request.onreadystatechange = function (event) {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.response);\n } else if (request.status === 202) {\n console.warn('some resources already existed: ', request);\n resolve(request.response);\n } else if (request.status === 204) {\n console.warn('empty response for request: ', request);\n resolve([]);\n } else {\n console.error('request failed: ', request);\n var error = new Error('request failed');\n error.request = request;\n error.response = request.response;\n error.status = request.status;\n console.error(error);\n console.error(error.response);\n reject(error);\n }\n }\n }; // Event triggered while download progresses\n\n\n if ('progressCallback' in options) {\n if (typeof options.progressCallback === 'function') {\n request.onprogress = options.progressCallback;\n }\n } // request.onprogress = function (event) {\n // const loaded = progress.loaded;\n // let total;\n // let percentComplete;\n // if (progress.lengthComputable) {\n // total = progress.total;\n // percentComplete = Math.round((loaded / total) * 100);\n // j\n // // console.log('download progress: ', percentComplete, ' %');\n // return(percentComplete);\n // };\n\n\n if ('data' in options) {\n request.send(options.data);\n } else {\n request.send();\n }\n });\n }\n }, {\n key: \"_httpGet\",\n value: function _httpGet(url, headers, responseType, progressCallback) {\n return this._httpRequest(url, 'get', headers, {\n responseType: responseType,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpGetApplicationJson\",\n value: function _httpGetApplicationJson(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var progressCallback = arguments.length > 2 ? arguments[2] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': MIMETYPES.DICOM_JSON\n };\n var responseType = 'json';\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpGetByMimeType\",\n value: function _httpGetByMimeType(url, mimeType, params) {\n var responseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'arraybuffer';\n var progressCallback = arguments.length > 4 ? arguments[4] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': \"multipart/related; type=\\\"\".concat(mimeType, \"\\\"\")\n };\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpPost\",\n value: function _httpPost(url, headers, data, progressCallback) {\n return this._httpRequest(url, 'post', headers, {\n data: data,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpPostApplicationJson\",\n value: function _httpPostApplicationJson(url, data, progressCallback) {\n var headers = {\n 'Content-Type': MIMETYPES.DICOM_JSON\n };\n return this._httpPost(url, headers, data, progressCallback);\n }\n /**\n * Searches for DICOM studies.\n * @param {Object} options options object\n * @return {Array} study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2)\n */\n\n }, {\n key: \"searchForStudies\",\n value: function searchForStudies() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.log('search for studies');\n var url = this.qidoURL + '/studies';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM study.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the study\n */\n\n }, {\n key: \"retrieveStudyMetadata\",\n value: function retrieveStudyMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of study metadata');\n }\n\n console.log(\"retrieve metadata of study \".concat(options.studyInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM series.\n * @param {Object} options options object\n * @returns {Array} series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a)\n */\n\n }, {\n key: \"searchForSeries\",\n value: function searchForSeries() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n console.log(\"search series of study \".concat(options.studyInstanceUID));\n url += '/studies/' + options.studyInstanceUID;\n }\n\n url += '/series';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM series.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the series\n */\n\n }, {\n key: \"retrieveSeriesMetadata\",\n value: function retrieveSeriesMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of series metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of series metadata');\n }\n\n console.log(\"retrieve metadata of series \".concat(options.seriesInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM instances.\n * @param {Object} options options object\n * @returns {Array} instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b)\n */\n\n }, {\n key: \"searchForInstances\",\n value: function searchForInstances() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n url += '/studies/' + options.studyInstanceUID;\n\n if ('seriesInstanceUID' in options) {\n console.log(\"search for instances of series \".concat(options.seriesInstanceUID));\n url += '/series/' + options.seriesInstanceUID;\n } else {\n console.log(\"search for instances of study \".concat(options.studyInstanceUID));\n }\n } else {\n console.log('search for instances');\n }\n\n url += '/instances';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /** Returns a WADO-URI URL for an instance\n * @param {Object} options options object\n * @returns {String} WADO-URI URL\n */\n\n }, {\n key: \"buildInstanceWadoURIUrl\",\n value: function buildInstanceWadoURIUrl(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required.');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required.');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required.');\n }\n\n var contentType = options.contentType || MIMETYPES.DICOM;\n var transferSyntax = options.transferSyntax || '*';\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(options.studyInstanceUID));\n params.push(\"seriesUID=\".concat(options.seriesInstanceUID));\n params.push(\"objectUID=\".concat(options.sopInstanceUID));\n params.push(\"contentType=\".concat(contentType));\n params.push(\"transferSyntax=\".concat(transferSyntax));\n var paramString = params.join('&');\n return \"\".concat(this.wadoURL, \"?\").concat(paramString);\n }\n /**\n * Retrieves metadata for a DICOM instance.\n *\n * @param {Object} options object\n * @returns {Object} metadata elements in DICOM JSON format\n */\n\n }, {\n key: \"retrieveInstanceMetadata\",\n value: function retrieveInstanceMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance metadata');\n }\n\n console.log(\"retrieve metadata of instance \".concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFrames\",\n value: function retrieveInstanceFrames(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of instance frames');\n }\n\n console.log(\"retrieve frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString();\n var mimeType = options.mimeType ? \"\".concat(options.mimeType) : MIMETYPES.OCTET_STREAM;\n return this._httpGetByMimeType(url, mimeType).then(multipartDecode);\n }\n /**\n * Retrieves rendered frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFramesRendered\",\n value: function retrieveInstanceFramesRendered(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of rendered instance frames');\n }\n\n console.log(\"retrieve rendered frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString() + '/rendered';\n var headers = {}; // The choice of an acceptable media type depends on a variety of things:\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/chapter_6.html#table_6.1.1-3\n\n if ('mimeType' in options) {\n headers['Accept'] = options.mimeType;\n }\n\n var responseType = 'arraybuffer';\n return this._httpGet(url, headers, responseType);\n }\n /**\n * Retrieves a DICOM instance.\n * @param {Object} options options object\n * @returns {Arraybuffer} DICOM Part 10 file as Arraybuffer\n */\n\n }, {\n key: \"retrieveInstance\",\n value: function retrieveInstance(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Retrieves a set of DICOM instance for a series.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveSeries\",\n value: function retrieveSeries(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves a set of DICOM instance for a study.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveStudy\",\n value: function retrieveStudy(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves and parses BulkData from a BulkDataURI location.\n * Decodes the multipart encoded data and returns the resulting data\n * as an ArrayBuffer.\n *\n * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html\n *\n * @param {Object} options options object\n * @return {Promise}\n */\n\n }, {\n key: \"retrieveBulkData\",\n value: function retrieveBulkData(options) {\n if (!('BulkDataURI' in options)) {\n throw new Error('BulkDataURI is required.');\n }\n\n return this._httpGetByMimeType(options.BulkDataURI, MIMETYPES.OCTET_STREAM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Stores DICOM instances.\n *\n * @param {Object} options options object\n */\n\n }, {\n key: \"storeInstances\",\n value: function storeInstances(options) {\n if (!('datasets' in options)) {\n throw new Error('datasets are required for storing');\n }\n\n var url = \"\".concat(this.stowURL, \"/studies\");\n\n if ('studyInstanceUID' in options) {\n url += \"/\".concat(options.studyInstanceUID);\n }\n\n var _multipartEncode = multipartEncode(options.datasets),\n data = _multipartEncode.data,\n boundary = _multipartEncode.boundary;\n\n var headers = {\n 'Content-Type': \"multipart/related; type=application/dicom; boundary=\".concat(boundary)\n };\n return this._httpPost(url, headers, data, options.progressCallback);\n }\n }], [{\n key: \"_parseQueryParameters\",\n value: function _parseQueryParameters() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var queryString = '?';\n Object.keys(params).forEach(function (key, index) {\n if (index !== 0) {\n queryString += '&';\n }\n\n queryString += key + '=' + encodeURIComponent(params[key]);\n });\n return queryString;\n }\n }]);\n\n return DICOMwebClient;\n }();\n\n function findSubstring(str, before, after) {\n var beforeIndex = str.lastIndexOf(before) + before.length;\n\n if (beforeIndex < before.length) {\n return null;\n }\n\n if (after !== undefined) {\n var afterIndex = str.lastIndexOf(after);\n\n if (afterIndex < 0) {\n return null;\n } else {\n return str.substring(beforeIndex, afterIndex);\n }\n }\n\n return str.substring(beforeIndex);\n }\n\n function getStudyInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"studies/\", \"/series\");\n\n if (!uid) {\n uid = findSubstring(uri, \"studies/\");\n }\n\n if (!uid) {\n console.debug('Study Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSeriesInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"series/\", \"/instances\");\n\n if (!uid) {\n uid = findSubstring(uri, \"series/\");\n }\n\n if (!uid) {\n console.debug('Series Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSOPInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"/instances/\", \"/frames\");\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\", \"/metadata\");\n }\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\");\n }\n\n if (!uid) {\n console.debug('SOP Instance UID could not be dertermined from URI\"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getFrameNumbersFromUri(uri) {\n var numbers = findSubstring(uri, \"/frames/\", \"/rendered\");\n\n if (!numbers) {\n numbers = findSubstring(uri, \"/frames/\");\n }\n\n if (numbers === undefined) {\n console.debug('Frames Numbers could not be dertermined from URI\"' + uri + '\"');\n }\n\n return numbers.split(',');\n }\n\n var version = '0.3.2';\n\n var api = {\n DICOMwebClient: DICOMwebClient\n };\n var utils = {\n getStudyInstanceUIDFromUri: getStudyInstanceUIDFromUri,\n getSeriesInstanceUIDFromUri: getSeriesInstanceUIDFromUri,\n getSOPInstanceUIDFromUri: getSOPInstanceUIDFromUri,\n getFrameNumbersFromUri: getFrameNumbersFromUri\n };\n\n exports.api = api;\n exports.utils = utils;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n});\n\nvar DICOMwebClient = unwrapExports(dicomwebClient);\n\n/**\n * Parses data returned from a QIDO search and transforms it into\n * an array of series that are present in the study\n *\n * @param server The DICOM server\n * @param studyInstanceUid\n * @param resultData\n * @returns {Array} Series List\n */\n\nfunction resultDataToStudyMetadata(server, studyInstanceUid, resultData) {\n var seriesMap = {};\n var seriesList = [];\n resultData.forEach(function (instance) {\n // Use seriesMap to cache series data\n // If the series instance UID has already been used to\n // process series data, continue using that series\n var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n var series = seriesMap[seriesInstanceUid]; // If no series data exists in the seriesMap cache variable,\n // process any available series data\n\n if (!series) {\n series = {\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getString(instance['00200011']),\n instances: []\n }; // Save this data in the seriesMap cache variable\n\n seriesMap[seriesInstanceUid] = series;\n seriesList.push(series);\n } // The uri for the dicomweb\n // NOTE: DCM4CHEE seems to return the data zipped\n // NOTE: Orthanc returns the data with multi-part mime which cornerstoneWADOImageLoader doesn't\n // know how to parse yet\n //var uri = DICOMWeb.getString(instance['00081190']);\n //uri = uri.replace('wado-rs', 'dicom-web');\n // manually create a WADO-URI from the UIDs\n // NOTE: Haven't been able to get Orthanc's WADO-URI to work yet - maybe its not configured?\n\n\n var sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n var uri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom'; // Add this instance to the current series\n\n series.instances.push({\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n sopInstanceUid: sopInstanceUid,\n uri: uri,\n instanceNumber: DICOMWeb.getString(instance['00200013'])\n });\n });\n return seriesList;\n}\n/**\n * Retrieve a set of instances using a QIDO call\n * @param server\n * @param studyInstanceUid\n * @throws ECONNREFUSED\n * @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}\n */\n\n\nfunction Instances(server, studyInstanceUid) {\n // TODO: Are we using this function anywhere?? Can we remove it?\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);\n var options = {\n studyInstanceUID: studyInstanceUid\n };\n return dicomWeb.searchForInstances(options).then(function (result) {\n return {\n wadoUriRoot: server.wadoUriRoot,\n studyInstanceUid: studyInstanceUid,\n seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)\n };\n });\n}\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$1(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString(new Date(filter.studyDateFrom));\n var dateTo = dateToString(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$1(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies);\n}\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar WADOProxy = {\n convertURL: function convertURL(url, server) {\n // TODO: Remove all WADOProxy stuff from this file\n return url;\n }\n};\n\nfunction parseFloatArray(obj) {\n var result = [];\n\n if (!obj) {\n return result;\n }\n\n var objs = obj.split('\\\\');\n\n for (var i = 0; i < objs.length; i++) {\n result.push(parseFloat(objs[i]));\n }\n\n return result;\n}\n/**\n * Simple cache schema for retrieved color palettes.\n */\n\n\nvar paletteColorCache = {\n count: 0,\n maxAge: 24 * 60 * 60 * 1000,\n // 24h cache?\n entries: {},\n isValidUID: function isValidUID(paletteUID) {\n return typeof paletteUID === 'string' && paletteUID.length > 0;\n },\n get: function get(paletteUID) {\n var entry = null;\n\n if (this.entries.hasOwnProperty(paletteUID)) {\n entry = this.entries[paletteUID]; // check how the entry is...\n\n if (Date.now() - entry.time > this.maxAge) {\n // entry is too old... remove entry.\n delete this.entries[paletteUID];\n this.count--;\n entry = null;\n }\n }\n\n return entry;\n },\n add: function add(entry) {\n if (this.isValidUID(entry.uid)) {\n var paletteUID = entry.uid;\n\n if (this.entries.hasOwnProperty(paletteUID) !== true) {\n this.count++; // increment cache entry count...\n }\n\n entry.time = Date.now();\n this.entries[paletteUID] = entry; // @TODO: Add logic to get rid of old entries and reduce memory usage...\n }\n }\n};\n/** Returns a WADO url for an instance\n *\n * @param studyInstanceUid\n * @param seriesInstanceUid\n * @param sopInstanceUid\n * @returns {string}\n */\n\nfunction buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(studyInstanceUid));\n params.push(\"seriesUID=\".concat(seriesInstanceUid));\n params.push(\"objectUID=\".concat(sopInstanceUid));\n params.push('contentType=application/dicom');\n params.push('transferSyntax=*');\n var paramString = params.join('&');\n return \"\".concat(server.wadoUriRoot, \"?\").concat(paramString);\n}\n\nfunction buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n return \"\".concat(server.wadoRoot, \"/studies/\").concat(studyInstanceUid, \"/series/\").concat(seriesInstanceUid, \"/instances/\").concat(sopInstanceUid);\n}\n\nfunction buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {\n var baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n frame = frame != null || 1;\n return \"\".concat(baseWadoRsUri, \"/frames/\").concat(frame);\n}\n/**\n * Parses the SourceImageSequence, if it exists, in order\n * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID\n * is used to refer to this image in any accompanying DICOM-SR documents.\n *\n * @param instance\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getSourceImageInstanceUid(instance) {\n // TODO= Parse the whole Source Image Sequence\n // This is a really poor workaround for now.\n // Later we should probably parse the whole sequence.\n var SourceImageSequence = instance['00082112'];\n\n if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) {\n return SourceImageSequence.Value[0]['00081155'].Value[0];\n }\n}\n\nfunction getPaletteColor(server, instance, tag, lutDescriptor) {\n var numLutEntries = lutDescriptor[0];\n var bits = lutDescriptor[2];\n var uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server); // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning\n // incorrect bulk data URIs\n\n if (server.wadoRoot.indexOf('https') === 0 && !uri.includes('https')) {\n uri = uri.replace('http', 'https');\n }\n\n var config = {\n url: server.wadoRoot,\n //BulkDataURI is absolute, so this isn't used\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var options = {\n BulkDataURI: uri\n };\n\n var readUInt16 = function readUInt16(byteArray, position) {\n return byteArray[position] + byteArray[position + 1] * 256;\n };\n\n var arrayBufferToPaletteColorLUT = function arrayBufferToPaletteColorLUT(arraybuffer) {\n var byteArray = new Uint8Array(arraybuffer);\n var lut = [];\n\n for (var i = 0; i < numLutEntries; i++) {\n if (bits === 16) {\n lut[i] = readUInt16(byteArray, i * 2);\n } else {\n lut[i] = byteArray[i];\n }\n }\n\n return lut;\n };\n\n return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT);\n}\n/**\n * Fetch palette colors for instances with \"PALETTE COLOR\" photometricInterpretation.\n *\n * @param server {Object} Current server;\n * @param instance {Object} The retrieved instance metadata;\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getPaletteColors(_x, _x2, _x3) {\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction _getPaletteColors() {\n _getPaletteColors = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(server, instance, lutDescriptor) {\n var paletteUID;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n paletteUID = DICOMWeb.getString(instance['00281199']);\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (paletteColorCache.isValidUID(paletteUID)) {\n var _entry = paletteColorCache.get(paletteUID);\n\n if (_entry) {\n return resolve(_entry);\n }\n } // no entry in cache... Fetch remote data.\n\n\n var r = getPaletteColor(server, instance, '00281201', lutDescriptor);\n var g = getPaletteColor(server, instance, '00281202', lutDescriptor);\n var b = getPaletteColor(server, instance, '00281203', lutDescriptor);\n var promises = [r, g, b];\n Promise.all(promises).then(function (args) {\n entry = {\n red: args[0],\n green: args[1],\n blue: args[2]\n }; // when paletteUID is present, the entry can be cached...\n\n entry.uid = paletteUID;\n paletteColorCache.add(entry);\n resolve(entry);\n });\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction getFrameIncrementPointer(element) {\n var frameIncrementPointerNames = {\n '00181065': 'frameTimeVector',\n '00181063': 'frameTime'\n };\n\n if (!element || !element.Value || !element.Value.length) {\n return;\n }\n\n var value = element.Value[0];\n return frameIncrementPointerNames[value];\n}\n\nfunction getRadiopharmaceuticalInfo(instance) {\n var modality = DICOMWeb.getString(instance['00080060']);\n\n if (modality !== 'PT') {\n return;\n }\n\n var radiopharmaceuticalInfo = instance['00540016'];\n\n if (radiopharmaceuticalInfo === undefined || !radiopharmaceuticalInfo.Value || !radiopharmaceuticalInfo.Value.length) {\n return;\n }\n\n var firstPetRadiopharmaceuticalInfo = radiopharmaceuticalInfo.Value[0];\n return {\n radiopharmaceuticalStartTime: DICOMWeb.getString(firstPetRadiopharmaceuticalInfo['00181072']),\n radionuclideTotalDose: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181074']),\n radionuclideHalfLife: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181075'])\n };\n}\n/**\n * Parses result data from a WADO search into Study MetaData\n * Returns an object populated with study metadata, including the\n * series list.\n *\n * @param server\n * @param studyInstanceUid\n * @param resultData\n * @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}\n */\n\n\nfunction resultDataToStudyMetadata$1(_x4, _x5, _x6) {\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n/**\n * Retrieve Study MetaData from a DICOM server using a WADO call\n *\n * @param server\n * @param studyInstanceUid\n * @returns {Promise}\n */\n\n\nfunction _resultDataToStudyMetadata() {\n _resultDataToStudyMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee3(server, studyInstanceUid, resultData) {\n var _studyData;\n\n var anInstance, studyData, seriesMap;\n return regenerator.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (resultData.length) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 2:\n anInstance = resultData[0];\n\n if (anInstance) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 5:\n studyData = (_studyData = {\n seriesList: [],\n studyInstanceUid: studyInstanceUid,\n wadoUriRoot: server.wadoUriRoot,\n patientName: DICOMWeb.getName(anInstance['00100010']),\n patientId: DICOMWeb.getString(anInstance['00100020']),\n patientAge: DICOMWeb.getNumber(anInstance['00101010']),\n patientSize: DICOMWeb.getNumber(anInstance['00101020']),\n patientWeight: DICOMWeb.getNumber(anInstance['00101030']),\n accessionNumber: DICOMWeb.getString(anInstance['00080050']),\n studyDate: DICOMWeb.getString(anInstance['00080020']),\n modalities: DICOMWeb.getString(anInstance['00080061']),\n studyDescription: DICOMWeb.getString(anInstance['00081030']),\n imageCount: DICOMWeb.getString(anInstance['00201208'])\n }, _defineProperty(_studyData, \"studyInstanceUid\", DICOMWeb.getString(anInstance['0020000D'])), _defineProperty(_studyData, \"institutionName\", DICOMWeb.getString(anInstance['00080080'])), _studyData);\n seriesMap = {};\n _context3.next = 9;\n return Promise.all(resultData.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2(instance) {\n var seriesInstanceUid, series, sopInstanceUid, wadouri, baseWadoRsUri, wadorsuri, instanceSummary, redPaletteColorLookupTableDescriptor, greenPaletteColorLookupTableDescriptor, bluePaletteColorLookupTableDescriptor, palettes;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n series = seriesMap[seriesInstanceUid];\n\n if (!series) {\n series = {\n seriesDescription: DICOMWeb.getString(instance['0008103E']),\n modality: DICOMWeb.getString(instance['00080060']),\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getNumber(instance['00200011']),\n seriesDate: DICOMWeb.getString(instance['00080021']),\n seriesTime: DICOMWeb.getString(instance['00080031']),\n instances: []\n };\n seriesMap[seriesInstanceUid] = series;\n studyData.seriesList.push(series);\n }\n\n sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n instanceSummary = {\n imageType: DICOMWeb.getString(instance['00080008']),\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n modality: DICOMWeb.getString(instance['00080060']),\n sopInstanceUid: sopInstanceUid,\n instanceNumber: DICOMWeb.getNumber(instance['00200013']),\n imagePositionPatient: DICOMWeb.getString(instance['00200032']),\n imageOrientationPatient: DICOMWeb.getString(instance['00200037']),\n frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),\n sliceLocation: DICOMWeb.getNumber(instance['00201041']),\n samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),\n photometricInterpretation: DICOMWeb.getString(instance['00280004']),\n planarConfiguration: DICOMWeb.getNumber(instance['00280006']),\n rows: DICOMWeb.getNumber(instance['00280010']),\n columns: DICOMWeb.getNumber(instance['00280011']),\n pixelSpacing: DICOMWeb.getString(instance['00280030']),\n pixelAspectRatio: DICOMWeb.getString(instance['00280034']),\n bitsAllocated: DICOMWeb.getNumber(instance['00280100']),\n bitsStored: DICOMWeb.getNumber(instance['00280101']),\n highBit: DICOMWeb.getNumber(instance['00280102']),\n pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),\n smallestPixelValue: DICOMWeb.getNumber(instance['00280106']),\n largestPixelValue: DICOMWeb.getNumber(instance['00280107']),\n windowCenter: DICOMWeb.getString(instance['00281050']),\n windowWidth: DICOMWeb.getString(instance['00281051']),\n rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),\n rescaleSlope: DICOMWeb.getNumber(instance['00281053']),\n rescaleType: DICOMWeb.getNumber(instance['00281054']),\n sourceImageInstanceUid: getSourceImageInstanceUid(instance),\n laterality: DICOMWeb.getString(instance['00200062']),\n viewPosition: DICOMWeb.getString(instance['00185101']),\n acquisitionDateTime: DICOMWeb.getString(instance['0008002A']),\n numberOfFrames: DICOMWeb.getNumber(instance['00280008']),\n frameIncrementPointer: getFrameIncrementPointer(instance['00280009']),\n frameTime: DICOMWeb.getNumber(instance['00181063']),\n frameTimeVector: parseFloatArray(DICOMWeb.getString(instance['00181065'])),\n sliceThickness: DICOMWeb.getNumber(instance['00180050']),\n lossyImageCompression: DICOMWeb.getString(instance['00282110']),\n derivationDescription: DICOMWeb.getString(instance['00282111']),\n lossyImageCompressionRatio: DICOMWeb.getString(instance['00282112']),\n lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),\n echoNumber: DICOMWeb.getString(instance['00180086']),\n contrastBolusAgent: DICOMWeb.getString(instance['00180010']),\n radiopharmaceuticalInfo: getRadiopharmaceuticalInfo(instance),\n baseWadoRsUri: baseWadoRsUri,\n wadouri: WADOProxy.convertURL(wadouri, server),\n wadorsuri: WADOProxy.convertURL(wadorsuri, server),\n imageRendering: server.imageRendering,\n thumbnailRendering: server.thumbnailRendering\n }; // Get additional information if the instance uses \"PALETTE COLOR\" photometric interpretation\n\n if (!(instanceSummary.photometricInterpretation === 'PALETTE COLOR')) {\n _context2.next = 16;\n break;\n }\n\n redPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281101']));\n greenPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281102']));\n bluePaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281103']));\n _context2.next = 14;\n return getPaletteColors(server, instance, redPaletteColorLookupTableDescriptor);\n\n case 14:\n palettes = _context2.sent;\n\n if (palettes) {\n if (palettes.uid) {\n instanceSummary.paletteColorLookupTableUID = palettes.uid;\n }\n\n instanceSummary.redPaletteColorLookupTableData = palettes.red;\n instanceSummary.greenPaletteColorLookupTableData = palettes.green;\n instanceSummary.bluePaletteColorLookupTableData = palettes.blue;\n instanceSummary.redPaletteColorLookupTableDescriptor = redPaletteColorLookupTableDescriptor;\n instanceSummary.greenPaletteColorLookupTableDescriptor = greenPaletteColorLookupTableDescriptor;\n instanceSummary.bluePaletteColorLookupTableDescriptor = bluePaletteColorLookupTableDescriptor;\n }\n\n case 16:\n series.instances.push(instanceSummary);\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x9) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n return _context3.abrupt(\"return\", studyData);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n\nfunction RetrieveMetadata(_x7, _x8) {\n return _RetrieveMetadata.apply(this, arguments);\n}\n\nfunction _RetrieveMetadata() {\n _RetrieveMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee4(server, studyInstanceUid) {\n var config, dicomWeb, options;\n return regenerator.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n config = {\n url: server.wadoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n options = {\n studyInstanceUID: studyInstanceUid\n };\n return _context4.abrupt(\"return\", dicomWeb.retrieveStudyMetadata(options).then(function (result) {\n return resultDataToStudyMetadata$1(server, studyInstanceUid, result);\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n return _RetrieveMetadata.apply(this, arguments);\n}\n\n// DICOMWeb instance, study, and metadata retrieval\nvar WADO = {\n RetrieveMetadata: RetrieveMetadata\n};\nvar QIDO = {\n Studies: Studies,\n Instances: Instances\n};\n\nvar log$1 = {\n error: console.error,\n warn: console.warn,\n info: console.log,\n debug: console.debug,\n time: console.time,\n timeEnd: console.timeEnd\n};\n\n// promises and prevent unnecessary subsequent calls to the server\n\nvar StudyMetaDataPromises = new Map();\n/**\n * Delete the cached study metadata retrieval promise to ensure that the browser will\n * re-retrieve the study metadata when it is next requested\n *\n * @param {String} studyInstanceUid The UID of the Study to be removed from cache\n *\n */\n\nfunction deleteStudyMetadataPromise(studyInstanceUid) {\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n StudyMetaDataPromises.delete(studyInstanceUid);\n }\n}\n/**\n * Retrieves study metadata using a server call\n *\n * @param {String} studyInstanceUid The UID of the Study to be retrieved\n * @returns {Promise} that will be resolved with the metadata or rejected with the error\n */\n\nfunction retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids) {\n // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all\n // and further requests for that metadata will always fail. On failure, we probably need to remove the\n // corresponding promise from the \"StudyMetaDataPromises\" map...\n // If the StudyMetaDataPromises cache already has a pending or resolved promise related to the\n // given studyInstanceUid, then that promise is returned\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n return StudyMetaDataPromises.get(studyInstanceUid);\n }\n\n var seriesKeys = Array.isArray(seriesInstanceUids) ? '|' + seriesInstanceUids.join('|') : '';\n var timingKey = \"retrieveStudyMetadata[\".concat(studyInstanceUid).concat(seriesKeys, \"]\");\n log$1.time(timingKey); // Create a promise to handle the data retrieval\n\n var promise = new Promise(function (resolve, reject) {\n // If no study metadata is in the cache variable, we need to retrieve it from\n // the server with a call.\n if (server.type === 'dicomWeb' && server.requestOptions.requestFromBrowser === true) {\n RetrieveMetadata(server, studyInstanceUid).then(function (data) {\n resolve(data);\n }, reject);\n }\n }); // Store the promise in cache\n\n StudyMetaDataPromises.set(studyInstanceUid, promise);\n return promise;\n}\n\n/**\n * Constants\n */\nvar STRING$1 = 'string';\nvar NUMBER$1 = 'number';\nvar FUNCTION = 'function';\nvar OBJECT = 'object';\n/**\n * Class Definition\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor and Instance Methods\n */\n function Metadata(data, uid) {\n _classCallCheck(this, Metadata);\n\n // Define the main \"_data\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n Object.defineProperty(this, '_data', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: data\n }); // Define the main \"_uid\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_uid', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: uid\n }); // Define \"_custom\" properties as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_custom', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n });\n }\n\n _createClass(Metadata, [{\n key: \"getData\",\n value: function getData() {\n return this._data;\n }\n }, {\n key: \"getDataProperty\",\n value: function getDataProperty(propertyName) {\n var propertyValue;\n var _data = this._data;\n\n if (_data instanceof Object || _typeof(_data) === OBJECT && _data !== null) {\n propertyValue = _data[propertyName];\n }\n\n return propertyValue;\n }\n /**\n * Get unique object ID\n */\n\n }, {\n key: \"getObjectID\",\n value: function getObjectID() {\n return this._uid;\n }\n /**\n * Set custom attribute value\n * @param {String} attribute Custom attribute name\n * @param {Any} value Custom attribute value\n */\n\n }, {\n key: \"setCustomAttribute\",\n value: function setCustomAttribute(attribute, value) {\n this._custom[attribute] = value;\n }\n /**\n * Get custom attribute value\n * @param {String} attribute Custom attribute name\n * @return {Any} Custom attribute value\n */\n\n }, {\n key: \"getCustomAttribute\",\n value: function getCustomAttribute(attribute) {\n return this._custom[attribute];\n }\n /**\n * Check if a custom attribute exists\n * @param {String} attribute Custom attribute name\n * @return {Boolean} True if custom attribute exists or false if not\n */\n\n }, {\n key: \"customAttributeExists\",\n value: function customAttributeExists(attribute) {\n return attribute in this._custom;\n }\n /**\n * Set custom attributes in batch mode.\n * @param {Object} attributeMap An object whose own properties will be used as custom attributes.\n */\n\n }, {\n key: \"setCustomAttributes\",\n value: function setCustomAttributes(attributeMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _custom = this._custom;\n\n for (var attribute in attributeMap) {\n if (_hasOwn.call(attributeMap, attribute)) {\n _custom[attribute] = attributeMap[attribute];\n }\n }\n }\n /**\n * Static Methods\n */\n\n }], [{\n key: \"isValidUID\",\n value: function isValidUID(uid) {\n return _typeof(uid) === STRING$1 && uid.length > 0;\n }\n }, {\n key: \"isValidIndex\",\n value: function isValidIndex(index) {\n return _typeof(index) === NUMBER$1 && index >= 0 && (index | 0) === index;\n }\n }, {\n key: \"isValidCallback\",\n value: function isValidCallback(callback) {\n return _typeof(callback) === FUNCTION;\n }\n }]);\n\n return Metadata;\n}();\n\n// @TODO: improve this object\n\n/**\n * Objects to be used to throw errors\n */\nvar OHIFError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(OHIFError, _Error);\n\n function OHIFError(message) {\n var _this;\n\n _classCallCheck(this, OHIFError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFError).call(this));\n _this.message = message;\n _this.stack = new Error().stack;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return OHIFError;\n}(_wrapNativeSuper(Error));\n\n/**\n * ATTENTION! This class should never depend on StudyMetadata or SeriesMetadata classes as this could\n * possibly cause circular dependency issues.\n */\n\nvar UNDEFINED = 'undefined';\nvar STRING$2 = 'string';\nvar STUDY_INSTANCE_UID = 'x0020000d';\nvar SERIES_INSTANCE_UID = 'x0020000e';\nvar InstanceMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(InstanceMetadata, _Metadata);\n\n function InstanceMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, InstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InstanceMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _sopInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _imageId: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(InstanceMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.sopInstanceUID\n * Same as this.getSOPInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * sopInstanceCollection.findBy({\n * sopInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'sopInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSOPInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the StudyInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this.getTagValue(STUDY_INSTANCE_UID, null);\n }\n /**\n * Returns the SeriesInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this.getTagValue(SERIES_INSTANCE_UID, null);\n }\n /**\n * Returns the SOPInstanceUID of the current instance.\n */\n\n }, {\n key: \"getSOPInstanceUID\",\n value: function getSOPInstanceUID() {\n return this._sopInstanceUID;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getStringValue\",\n value: function getStringValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n\n if (_typeof(value) !== STRING$2 && _typeof(value) !== UNDEFINED) {\n value = value.toString();\n }\n\n return InstanceMetadata.getIndexedValue(value, index, defaultValue);\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getFloatValue\",\n value: function getFloatValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseFloat(value) : value;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getIntValue\",\n value: function getIntValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseInt(value) : value;\n }\n /**\n * @deprecated Please use getTagValue instead.\n */\n\n }, {\n key: \"getRawValue\",\n value: function getRawValue(tagOrProperty, defaultValue) {\n return this.getTagValue(tagOrProperty, defaultValue);\n }\n /**\n * This function should be overriden by specialized classes in order to allow client libraries or viewers to take advantage of the Study Metadata API.\n */\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('InstanceMetadata::getTagValue is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Compares the current instance with another one.\n * @param {InstanceMetadata} instance An instance of the InstanceMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same instance.\n */\n\n }, {\n key: \"equals\",\n value: function equals(instance) {\n var self = this;\n return instance === self || instance instanceof InstanceMetadata && instance.getSOPInstanceUID() === self.getSOPInstanceUID();\n }\n /**\n * Check if the tagOrProperty exists\n * @param {String} tagOrProperty tag or property be checked\n * @return {Boolean} True if the tag or property exists or false if doesn't\n */\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::tagExists is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Get custom image id of a sop instance\n * @return {Any} sop instance image id\n */\n\n }, {\n key: \"getImageId\",\n value: function getImageId(frame) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::getImageId is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Static Methods\n */\n\n /**\n * Get an value based that can be index based. This function is called by all getters. See above functions.\n * - If value is a String and has indexes:\n * - If undefined index: returns an array of the split values.\n * - If defined index:\n * - If invalid: returns defaultValue\n * - If valid: returns the indexed value\n * - If value is not a String, returns default value.\n */\n\n }], [{\n key: \"getIndexedValue\",\n value: function getIndexedValue(value, index, defaultValue) {\n var result = defaultValue;\n\n if (_typeof(value) === STRING$2) {\n var hasIndexValues = value.indexOf('\\\\') !== -1;\n result = value;\n\n if (hasIndexValues) {\n var splitValues = value.split('\\\\');\n\n if (Metadata.isValidIndex(index)) {\n var indexedValue = splitValues[index];\n result = _typeof(indexedValue) !== STRING$2 ? defaultValue : indexedValue;\n } else {\n result = splitValues;\n }\n }\n }\n\n return result;\n }\n }]);\n\n return InstanceMetadata;\n}(Metadata);\n\nvar SeriesMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(SeriesMetadata, _Metadata);\n\n function SeriesMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, SeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SeriesMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _seriesInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _instances: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(SeriesMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.seriesInstanceUID\n * Same as this.getSeriesInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * seriesCollection.findBy({\n * seriesInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSeriesInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the SeriesInstanceUID of the current series.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n /**\n * Append an instance to the current series.\n * @param {InstanceMetadata} instance The instance to be added to the current series.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addInstance\",\n value: function addInstance(instance) {\n var result = false;\n\n if (instance instanceof InstanceMetadata && this.getInstanceByUID(instance.getSOPInstanceUID()) === void 0) {\n this._instances.push(instance);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Get the first instance of the current series retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var found = this.getInstanceByIndex(0);\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n\n return instance;\n }\n /**\n * Find an instance by index.\n * @param {number} index An integer representing a list index.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByIndex\",\n value: function getInstanceByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._instances[index];\n }\n\n return found;\n }\n /**\n * Find an instance by SOPInstanceUID.\n * @param {string} uid An UID string.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByUID\",\n value: function getInstanceByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._instances.find(function (instance) {\n return instance.getSOPInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of instances within the current series.\n * @returns {number} The number of instances in the current series.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._instances.length;\n }\n /**\n * Invokes the supplied callback for each instance in the current series passing\n * two arguments: instance (an InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance in the series.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachInstance\",\n value: function forEachInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._instances.forEach(function (instance, index) {\n callback.call(null, instance, index);\n });\n }\n }\n /**\n * Find the index of an instance inside the series.\n * @param {InstanceMetadata} instance An instance of the SeriesMetadata class.\n * @returns {number} The index of the instance inside the series or -1 if not found.\n */\n\n }, {\n key: \"indexOfInstance\",\n value: function indexOfInstance(instance) {\n return this._instances.indexOf(instance);\n }\n /**\n * Search the associated instances using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._instances.find(function (instance, index) {\n return callback.call(null, instance, index);\n });\n }\n }\n /**\n * Compares the current series with another one.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same series.\n */\n\n }, {\n key: \"equals\",\n value: function equals(series) {\n var self = this;\n return series === self || series instanceof SeriesMetadata && series.getSeriesInstanceUID() === self.getSeriesInstanceUID();\n }\n }]);\n\n return SeriesMetadata;\n}(Metadata);\n\n/**\n * Create a random GUID\n *\n * @return {string}\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nvar OBJECT$1 = 'object';\n/**\n * This class defines an ImageSet object which will be used across the viewer. This object represents\n * a list of images that are associated by any arbitrary criteria being thus content agnostic. Besides the\n * main attributes (images and uid) it allows additional attributes to be appended to it (currently\n * indiscriminately, but this should be changed).\n */\n\nvar ImageSet =\n/*#__PURE__*/\nfunction () {\n function ImageSet(images) {\n _classCallCheck(this, ImageSet);\n\n if (Array.isArray(images) !== true) {\n throw new OHIFError('ImageSet expects an array of images');\n } // @property \"images\"\n\n\n Object.defineProperty(this, 'images', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: images\n }); // @property \"uid\"\n\n Object.defineProperty(this, 'uid', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: guid() // Unique ID of the instance\n\n });\n }\n\n _createClass(ImageSet, [{\n key: \"getUID\",\n value: function getUID() {\n return this.uid;\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this[attribute] = value;\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this[attribute];\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n if (_typeof(attributes) === OBJECT$1 && attributes !== null) {\n var imageSet = this,\n hasOwn = Object.prototype.hasOwnProperty;\n\n for (var attribute in attributes) {\n if (hasOwn.call(attributes, attribute)) {\n imageSet[attribute] = attributes[attribute];\n }\n }\n }\n }\n }, {\n key: \"getImage\",\n value: function getImage(index) {\n return this.images[index];\n }\n }, {\n key: \"sortBy\",\n value: function sortBy(sortingCallback) {\n return this.images.sort(sortingCallback);\n }\n }]);\n\n return ImageSet;\n}();\n\nvar StudyMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(StudyMetadata, _Metadata);\n\n function StudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, StudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _studyInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _displaySets: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstSeries: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(StudyMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.studyInstanceUID\n * Same as this.getStudyInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * studyCollection.findBy({\n * studyInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'studyInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getStudyInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Getter for displaySets\n * @return {Array} Array of display set object\n */\n\n }, {\n key: \"getDisplaySets\",\n value: function getDisplaySets() {\n return this._displaySets.slice();\n }\n /**\n * Set display sets\n * @param {Array} displaySets Array of display sets (ImageSet[])\n */\n\n }, {\n key: \"setDisplaySets\",\n value: function setDisplaySets(displaySets) {\n var _this2 = this;\n\n displaySets.forEach(function (displaySet) {\n return _this2.addDisplaySet(displaySet);\n });\n }\n /**\n * Add a single display set to the list\n * @param {Object} displaySet Display set object\n * @returns {boolean} True on success, false on failure.\n */\n\n }, {\n key: \"addDisplaySet\",\n value: function addDisplaySet(displaySet) {\n if (displaySet instanceof ImageSet) {\n this._displaySets.push(displaySet);\n\n return true;\n }\n\n return false;\n }\n /**\n * Invokes the supplied callback for each display set in the current study passing\n * two arguments: display set (a ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachDisplaySet\",\n value: function forEachDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._displaySets.forEach(function (displaySet, index) {\n callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Search the associated display sets using the supplied callback as criteria. The callback is passed\n * two arguments: display set (an ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"findDisplaySet\",\n value: function findDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._displaySets.find(function (displaySet, index) {\n return callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Retrieve the number of display sets within the current study.\n * @returns {number} The number of display sets in the current study.\n */\n\n }, {\n key: \"getDisplaySetCount\",\n value: function getDisplaySetCount() {\n return this._displaySets.length;\n }\n /**\n * Returns the StudyInstanceUID of the current study.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this._studyInstanceUID;\n }\n /**\n * Getter for series\n * @return {Array} Array of SeriesMetadata object\n */\n\n }, {\n key: \"getSeries\",\n value: function getSeries() {\n return this._series.slice();\n }\n /**\n * Append a series to the current study.\n * @param {SeriesMetadata} series The series to be added to the current study.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addSeries\",\n value: function addSeries(series) {\n var result = false;\n\n if (series instanceof SeriesMetadata && this.getSeriesByUID(series.getSeriesInstanceUID()) === void 0) {\n this._series.push(series);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Find a series by index.\n * @param {number} index An integer representing a list index.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByIndex\",\n value: function getSeriesByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._series[index];\n }\n\n return found;\n }\n /**\n * Find a series by SeriesInstanceUID.\n * @param {string} uid An UID string.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByUID\",\n value: function getSeriesByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._series.find(function (series) {\n return series.getSeriesInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of series within the current study.\n * @returns {number} The number of series in the current study.\n */\n\n }, {\n key: \"getSeriesCount\",\n value: function getSeriesCount() {\n return this._series.length;\n }\n /**\n * Retrieve the number of instances within the current study.\n * @returns {number} The number of instances in the current study.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._series.reduce(function (sum, series) {\n return sum + series.getInstanceCount();\n }, 0);\n }\n /**\n * Invokes the supplied callback for each series in the current study passing\n * two arguments: series (a SeriesMetadata instance) and index (the integer\n * index of the series within the current study)\n * @param {function} callback The callback function which will be invoked for each series instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachSeries\",\n value: function forEachSeries(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._series.forEach(function (series, index) {\n callback.call(null, series, index);\n });\n }\n }\n /**\n * Find the index of a series inside the study.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {number} The index of the series inside the study or -1 if not found.\n */\n\n }, {\n key: \"indexOfSeries\",\n value: function indexOfSeries(series) {\n return this._series.indexOf(series);\n }\n /**\n * It sorts the series based on display sets order. Each series must be an instance\n * of SeriesMetadata and each display sets must be an instance of ImageSet.\n * Useful example of usage:\n * Study data provided by backend does not sort series at all and client-side\n * needs series sorted by the same criteria used for sorting display sets.\n */\n\n }, {\n key: \"sortSeriesByDisplaySets\",\n value: function sortSeriesByDisplaySets() {\n var _this3 = this;\n\n // Object for mapping display sets' index by seriesInstanceUid\n var displaySetsMapping = {}; // Loop through each display set to create the mapping\n\n this.forEachDisplaySet(function (displaySet, index) {\n if (!(displaySet instanceof ImageSet)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets display set at index \".concat(index, \" is not an instance of ImageSet\"));\n } // In case of multiframe studies, just get the first index occurence\n\n\n if (displaySetsMapping[displaySet.seriesInstanceUid] === void 0) {\n displaySetsMapping[displaySet.seriesInstanceUid] = index;\n }\n }); // Clone of actual series\n\n var actualSeries = this.getSeries();\n actualSeries.forEach(function (series, index) {\n if (!(series instanceof SeriesMetadata)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets series at index \".concat(index, \" is not an instance of SeriesMetadata\"));\n } // Get the new series index\n\n\n var seriesIndex = displaySetsMapping[series.getSeriesInstanceUID()]; // Update the series object with the new series position\n\n _this3._series[seriesIndex] = series;\n });\n }\n /**\n * Compares the current study instance with another one.\n * @param {StudyMetadata} study An instance of the StudyMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same study.\n */\n\n }, {\n key: \"equals\",\n value: function equals(study) {\n var self = this;\n return study === self || study instanceof StudyMetadata && study.getStudyInstanceUID() === self.getStudyInstanceUID();\n }\n /**\n * Get the first series of the current study retaining a consistent result across multiple calls.\n * @return {SeriesMetadata} An instance of the SeriesMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstSeries\",\n value: function getFirstSeries() {\n var series = this._firstSeries;\n\n if (!(series instanceof SeriesMetadata)) {\n series = null;\n var found = this.getSeriesByIndex(0);\n\n if (found instanceof SeriesMetadata) {\n this._firstSeries = found;\n series = found;\n }\n }\n\n return series;\n }\n /**\n * Get the first instance of the current study retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var firstSeries = this.getFirstSeries();\n\n if (firstSeries instanceof SeriesMetadata) {\n var found = firstSeries.getFirstInstance();\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n }\n\n return instance;\n }\n /**\n * Search the associated series to find an specific instance using the supplied callback as criteria.\n * The callback is passed two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance instance.\n * @returns {Object} Result object containing series (SeriesMetadata) and instance (InstanceMetadata)\n * objects or an empty object if not found.\n */\n\n }, {\n key: \"findSeriesAndInstanceByInstance\",\n value: function findSeriesAndInstanceByInstance(callback) {\n var result;\n\n if (Metadata.isValidCallback(callback)) {\n var instance;\n\n var series = this._series.find(function (series) {\n instance = series.findInstance(callback);\n return instance instanceof InstanceMetadata;\n }); // No series found\n\n\n if (series instanceof SeriesMetadata) {\n result = {\n series: series,\n instance: instance\n };\n }\n }\n\n return result || {};\n }\n /**\n * Find series by instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {SeriesMetadata|undefined} If a series is found based on callback criteria it\n * returns a SeriesMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findSeriesByInstance\",\n value: function findSeriesByInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.series;\n }\n /**\n * Find an instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.instance;\n }\n }]);\n\n return StudyMetadata;\n}(Metadata);\n\nvar WadoRsMetaDataBuilder =\n/*#__PURE__*/\nfunction () {\n function WadoRsMetaDataBuilder() {\n _classCallCheck(this, WadoRsMetaDataBuilder);\n\n this.tags = {};\n }\n\n _createClass(WadoRsMetaDataBuilder, [{\n key: \"addTag\",\n value: function addTag(tag, value, multi) {\n this.tags[tag] = {\n tag: tag,\n value: value,\n multi: multi\n };\n return this;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var _this = this;\n\n var json = {};\n var keys = Object.keys(this.tags);\n keys.forEach(function (key) {\n if (!_this.tags.hasOwnProperty(key)) {\n return;\n }\n\n var tag = _this.tags[key];\n var multi = !!tag.multi;\n var value = tag.value;\n\n if (value == null || value.length === 1 && value[0] == null) {\n return;\n }\n\n if (typeof value === 'string' && multi) {\n value = value.split('\\\\');\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n json[key] = {\n Value: value\n };\n });\n return json;\n }\n }]);\n\n return WadoRsMetaDataBuilder;\n}();\n\nfunction getWADORSImageUrl(instance, frame) {\n var wadorsuri = instance.wadorsuri;\n\n if (!wadorsuri) {\n return;\n } // We need to sum 1 because WADO-RS frame number is 1-based\n\n\n frame = (frame || 0) + 1; // Replaces /frame/1 by /frame/{frame}\n\n wadorsuri = wadorsuri.replace(/(%2Fframes%2F)(\\d+)/, \"$1\".concat(frame));\n return wadorsuri;\n}\n/**\n * Obtain an imageId for Cornerstone based on the WADO-RS scheme\n *\n * @param {object} instanceMetada metadata object (InstanceMetadata)\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getWADORSImageId(instance, frame) {\n var uri = getWADORSImageUrl(instance, frame);\n\n if (!uri) {\n return;\n }\n\n return \"wadors:\".concat(uri);\n}\n\nfunction getRadiopharmaceuticalInfoMetaData(instance) {\n var radiopharmaceuticalInfo = instance.radiopharmaceuticalInfo;\n\n if (instance.modality !== 'PT' || !radiopharmaceuticalInfo) {\n return;\n }\n\n return new WadoRsMetaDataBuilder().addTag('00181072', radiopharmaceuticalInfo.radiopharmaceuticalStartTime).addTag('00181074', radiopharmaceuticalInfo.radionuclideTotalDose).addTag('00181075', radiopharmaceuticalInfo.radionuclideHalfLife).toJSON();\n}\n\nvar getWadoRsInstanceMetaData = function getWadoRsInstanceMetaData(study, series, instance) {\n return new WadoRsMetaDataBuilder().addTag('00080016', instance.sopClassUid).addTag('00080018', instance.sopInstanceUid).addTag('00080021', series.seriesDate).addTag('00080031', series.seriesTime).addTag('00080060', instance.modality).addTag('00101010', study.patientAge).addTag('00101020', study.patientSize).addTag('00101030', study.patientWeight).addTag('00180050', instance.sliceThickness).addTag('0020000e', series.seriesInstanceUid).addTag('00200011', series.seriesNumber).addTag('0020000d', study.studyInstanceUid).addTag('00200013', instance.instanceNumber).addTag('00200032', instance.imagePositionPatient, true).addTag('00200037', instance.imageOrientationPatient, true).addTag('00200052', instance.frameOfReferenceUID).addTag('00201041', instance.sliceLocation).addTag('00280002', instance.samplesPerPixel).addTag('00280004', instance.photometricInterpretation).addTag('00280006', instance.planarConfiguration).addTag('00280010', instance.rows).addTag('00280011', instance.columns).addTag('00280030', instance.pixelSpacing, true).addTag('00280034', instance.pixelAspectRatio, true).addTag('00280100', instance.bitsAllocated).addTag('00280101', instance.bitsStored).addTag('00280102', instance.highBit).addTag('00280103', instance.pixelRepresentation).addTag('00280106', instance.smallestPixelValue).addTag('00280107', instance.largestPixelValue).addTag('00281050', instance.windowCenter, true).addTag('00281051', instance.windowWidth, true).addTag('00281052', instance.rescaleIntercept).addTag('00281053', instance.rescaleSlope).addTag('00281054', instance.rescaleType).addTag('00281101', instance.redPaletteColorLookupTableDescriptor).addTag('00281102', instance.greenPaletteColorLookupTableDescriptor).addTag('00281103', instance.bluePaletteColorLookupTableDescriptor).addTag('00281201', instance.redPaletteColorLookupTableData).addTag('00281202', instance.greenPaletteColorLookupTableData).addTag('00281203', instance.bluePaletteColorLookupTableData).addTag('00540016', getRadiopharmaceuticalInfoMetaData(instance)).toJSON();\n};\n\nfunction updateMetaDataManager(study) {\n study.seriesList.forEach(function (series) {\n series.instances.forEach(function (instance) {\n // Cache just images that are going to be loaded via WADO-RS\n if (instance.imageRendering !== 'wadors' && instance.thumbnailRendering !== 'wadors') {\n return;\n }\n\n var metaData = getWadoRsInstanceMetaData(study, series, instance);\n var numberOfFrames = instance.numberOfFrames || 1; // We can share the same metaData with all frames because it doesn't have\n // any frame specific data, such as frameNumber, pixelData, offset, etc.\n // WADO-RS frame number is 1-based\n\n for (var frameNumber = 0; frameNumber < numberOfFrames; frameNumber++) {\n var imageId = getWADORSImageId(instance, frameNumber); // TODO Drop dependency on this\n\n external.cornerstoneWADOImageLoader.wadors.metaDataManager.add(imageId, metaData);\n }\n });\n });\n}\n\n/**\n * Retrieves metaData for multiple studies at once.\n *\n * This function calls retrieveStudyMetadata several times, asynchronously,\n * and waits for all of the results to be returned.\n *\n * @param studyInstanceUids The UIDs of the Studies to be retrieved\n * @return Promise\n */\n\nfunction retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids) {\n // Create an empty array to store the Promises for each metaData retrieval call\n var promises = []; // Loop through the array of studyInstanceUids\n\n studyInstanceUids.forEach(function (studyInstanceUid) {\n // Send the call and resolve or reject the related promise based on its outcome\n var promise = retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids); // Add the current promise to the array of promises\n\n promises.push(promise);\n }); // When all of the promises are complete, this callback runs\n\n var promise = Promise.all(promises); // Warn the error on console if some retrieval failed\n\n promise.catch(function (error) {\n return log$1.warn(error);\n });\n return promise;\n}\n\n/**\n * Overridable namespace to allow getting study boxes data externally.\n *\n * The function must handle the first parameter as a studyInformation object containing at least the\n * studyInstanceUid attribute.\n *\n * Shall return a promise that will be resolved with an object containing those attributes:\n * - studyInstanceUid {String}: copy of studyInformation.studyInstanceUid\n * - modalities {String}: 2 uppercase letters for each modality split by any non-alphabetical char(s)\n * - studyDate {String}: date formatted as YYYYMMDD\n * - studyDescription {String}: study description string\n */\n// TODO: What is this for?\nvar getStudyBoxData = false;\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString$1(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$2(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString$1(new Date(filter.studyDateFrom));\n var dateTo = dateToString$1(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies$1(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies$1(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$2(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies$1);\n}\n\nvar studySearchPromises = new Map();\n/**\n * Search for studies information by the given filter\n *\n * @param {Object} filter Filter that will be used on search\n * @returns {Promise} resolved with an array of studies information or rejected with an error\n */\n\nfunction searchStudies(server, filter) {\n var promiseKey = JSON.stringify(filter);\n\n if (studySearchPromises.has(promiseKey)) {\n return studySearchPromises.get(promiseKey);\n } else {\n var promise = Studies$1(server, filter);\n studySearchPromises.set(promiseKey, promise);\n return promise;\n }\n}\n\nvar studies = {\n services: {\n QIDO: QIDO,\n WADO: WADO\n },\n loadingDict: {},\n retrieveStudyMetadata: retrieveStudyMetadata,\n deleteStudyMetadataPromise: deleteStudyMetadataPromise,\n retrieveStudiesMetadata: retrieveStudiesMetadata,\n getStudyBoxData: getStudyBoxData,\n searchStudies: searchStudies\n};\n\nfunction isFunction(subject) {\n return typeof subject === 'function';\n}\n\nvar CommandsManager =\n/*#__PURE__*/\nfunction () {\n function CommandsManager() {\n _classCallCheck(this, CommandsManager);\n\n this.contexts = {}; // Enable reactivity by storing the last executed command\n //this.last = new ReactiveVar('');\n }\n\n _createClass(CommandsManager, [{\n key: \"getContext\",\n value: function getContext(contextName) {\n var context = this.contexts[contextName];\n\n if (!context) {\n return log$1.warn(\"No context found with name \\\"\".concat(contextName, \"\\\"\"));\n }\n\n return context;\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n var contextName = OHIF.context.get();\n\n if (!contextName) {\n return log$1.warn('There is no selected context');\n }\n\n return this.getContext(contextName);\n }\n }, {\n key: \"createContext\",\n value: function createContext(contextName) {\n if (!contextName) return;\n\n if (this.contexts[contextName]) {\n return this.clear(contextName);\n }\n\n this.contexts[contextName] = {};\n }\n }, {\n key: \"set\",\n value: function set(contextName, definitions) {\n var extend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (_typeof(definitions) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n\n if (!extend) {\n this.clear(contextName);\n }\n\n Object.keys(definitions).forEach(function (command) {\n return context[command] = definitions[command];\n });\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, definition) {\n if (_typeof(definition) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n context[command] = definition;\n }\n }, {\n key: \"setDisabledFunction\",\n value: function setDisabledFunction(contextName, command, func) {\n if (!command || typeof func !== 'function') return;\n var context = this.getContext(contextName);\n if (!context) return;\n var definition = context[command];\n\n if (!definition) {\n return log$1.warn(\"Trying to set a disabled function to a command \\\"\".concat(command, \"\\\" that was not yet defined\"));\n }\n\n definition.disabled = func;\n }\n }, {\n key: \"clear\",\n value: function clear(contextName) {\n if (!contextName) return;\n this.contexts[contextName] = {};\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition(command) {\n var context = this.getCurrentContext();\n if (!context) return;\n return context[command];\n }\n }, {\n key: \"isDisabled\",\n value: function isDisabled(command) {\n var definition = this.getDefinition(command);\n if (!definition) return false;\n var disabled = definition.disabled;\n if (isFunction(disabled) && disabled()) return true;\n if (!isFunction(disabled) && disabled) return true;\n return false;\n }\n }, {\n key: \"run\",\n value: function run(command) {\n var definition = this.getDefinition(command);\n\n if (!definition) {\n return log$1.warn(\"Command \\\"\".concat(command, \"\\\" not found in current context\"));\n }\n\n var action = definition.action,\n params = definition.params;\n if (this.isDisabled(command)) return;\n\n if (typeof action !== 'function') {\n return log$1.warn(\"No action was defined for command \\\"\".concat(command, \"\\\"\"));\n } else {\n var result = action(params);\n /*if (this.last.get() === command) {\n this.last.dep.changed();\n } else {\n this.last.set(command);\n }*/\n\n return result;\n }\n }\n }]);\n\n return CommandsManager;\n}();\n\nvar commands = new CommandsManager(); // Export relevant objects\n\nvar HotkeysContext =\n/*#__PURE__*/\nfunction () {\n function HotkeysContext(name, definitions, enabled) {\n _classCallCheck(this, HotkeysContext);\n\n this.name = name;\n this.definitions = Object.assign({}, definitions);\n this.enabled = enabled;\n }\n\n _createClass(HotkeysContext, [{\n key: \"extend\",\n value: function extend() {\n var _this = this;\n\n var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_typeof(definitions) !== 'object') return;\n this.definitions = Object.assign({}, definitions);\n Object.keys(definitions).forEach(function (command) {\n var hotkey = definitions[command];\n\n _this.unregister(command);\n\n if (hotkey) {\n _this.register(command, hotkey);\n }\n\n _this.definitions[command] = hotkey;\n });\n }\n }, {\n key: \"register\",\n value: function register(command, hotkey) {\n var _this2 = this;\n\n if (!hotkey) {\n return;\n }\n\n if (!command) {\n return log$1.warn(\"No command was defined for hotkey \\\"\".concat(hotkey, \"\\\"\"));\n }\n\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n var bind = function bind(hotkey) {\n return $(document).bind(bindingKey, hotkey, function (event) {\n if (!_this2.enabled.get()) return;\n OHIF.commands.run(command);\n event.preventDefault();\n });\n };\n\n if (hotkey instanceof Array) {\n hotkey.forEach(function (hotkey) {\n return bind(hotkey);\n });\n } else {\n bind(hotkey);\n }\n }\n }, {\n key: \"unregister\",\n value: function unregister(command) {\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n if (this.definitions[command]) {\n $(document).unbind(bindingKey);\n delete this.definitions[command];\n }\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n var _this3 = this;\n\n Object.keys(this.definitions).forEach(function (command) {\n var hotkey = _this3.definitions[command];\n\n _this3.register(command, hotkey);\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n $(document).unbind(\"keydown.hotkey.\".concat(this.name));\n }\n }]);\n\n return HotkeysContext;\n}();\n\nvar HotkeysManager =\n/*#__PURE__*/\nfunction () {\n function HotkeysManager() {\n _classCallCheck(this, HotkeysManager);\n\n this.contexts = {};\n this.defaults = {};\n this.currentContextName = null;\n this.enabled = true;\n this.retrieveFunction = null;\n this.storeFunction = null;\n }\n\n _createClass(HotkeysManager, [{\n key: \"setRetrieveFunction\",\n value: function setRetrieveFunction(retrieveFunction) {\n this.retrieveFunction = retrieveFunction;\n }\n }, {\n key: \"setStoreFunction\",\n value: function setStoreFunction(storeFunction) {\n this.storeFunction = storeFunction;\n }\n }, {\n key: \"store\",\n value: function store(contextName, definitions) {\n var _this = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this.storeFunction) {\n _this.storeFunction.call(_this, storageKey, definitions).then(resolve).catch(reject); //} else if (OHIF.user.userLoggedIn()) {\n // OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);\n\n } else {\n var definitionsJSON = JSON.stringify(definitions);\n localStorage.setItem(storageKey, definitionsJSON);\n resolve();\n }\n });\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(contextName) {\n var _this2 = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this2.retrieveFunction) {\n _this2.retrieveFunction(contextName).then(resolve).catch(reject);\n } else if (OHIF.user.userLoggedIn()) {\n try {\n resolve(OHIF.user.getData(storageKey));\n } catch (error) {\n reject(error);\n }\n } else {\n var definitionsJSON = localStorage.getItem(storageKey) || '';\n var definitions = JSON.parse(definitionsJSON) || undefined;\n resolve(definitions);\n }\n });\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled.set(false);\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.enabled.set(true);\n }\n }, {\n key: \"getContext\",\n value: function getContext(contextName) {\n return this.contexts[contextName];\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n return this.getContext(this.currentContextName);\n }\n }, {\n key: \"load\",\n value: function load(contextName) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var context = _this3.getContext(contextName);\n\n if (!context) return reject();\n\n _this3.retrieve(contextName).then(function (defs) {\n var definitions = defs || _this3.defaults[contextName];\n\n if (!definitions) {\n _this3.changeObserver.changed();\n\n return reject();\n }\n\n context.destroy();\n context.definitions = definitions;\n context.initialize();\n\n _this3.changeObserver.changed();\n\n resolve(definitions);\n }).catch(reject);\n });\n }\n }, {\n key: \"set\",\n value: function set(contextName, contextDefinitions) {\n var isDefaultDefinitions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var enabled = this.enabled;\n var context = new HotkeysContext(contextName, contextDefinitions, enabled);\n var currentContext = this.getCurrentContext();\n\n if (currentContext && currentContext.name === contextName) {\n currentContext.destroy();\n context.initialize();\n }\n\n this.contexts[contextName] = context;\n\n if (isDefaultDefinitions) {\n this.defaults[contextName] = contextDefinitions;\n }\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, hotkey) {\n if (!command || !hotkey) return;\n var context = this.getContext(contextName);\n\n if (!context) {\n this.set(contextName, {});\n }\n\n context.register(command, hotkey);\n }\n }, {\n key: \"unsetContext\",\n value: function unsetContext(contextName) {\n if (contextName === this.currentContextName) {\n this.getCurrentContext().destroy();\n }\n\n delete this.contexts[contextName];\n delete this.defaults[contextName];\n }\n }, {\n key: \"resetDefaults\",\n value: function resetDefaults(contextName) {\n var context = this.getContext(contextName);\n var definitions = this.defaults[contextName];\n if (!context || !definitions) return;\n context.extend(definitions);\n return this.store(contextName, definitions);\n }\n }, {\n key: \"switchToContext\",\n value: function switchToContext(contextName) {\n var currentContext = this.getCurrentContext();\n\n if (currentContext) {\n currentContext.destroy();\n }\n\n var newContext = this.contexts[contextName];\n if (!newContext) return;\n this.currentContextName = contextName;\n newContext.initialize();\n this.load(contextName).catch(function () {});\n }\n }]);\n\n return HotkeysManager;\n}();\n\n//import 'jquery.hotkeys';\n// Create hotkeys namespace using a HotkeysManager class instance\n\nvar hotkeys = new HotkeysManager(); // Export relevant objects\n\nvar FUNCTION$1 = 'function';\nvar STRING$3 = 'string';\nvar WILDCARD = '*'; // \"*\" is a special name which means \"all children\".\n\nvar SEPARATOR = '.';\n/**\n * Main Namespace Component Class\n */\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n function Node() {\n _classCallCheck(this, Node);\n\n this.value = 0;\n this.children = {};\n this.handlers = {};\n }\n\n _createClass(Node, [{\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return _typeof(path) === STRING$3 ? path.split(SEPARATOR) : null;\n }\n }, {\n key: \"getNodeUpToIndex\",\n value: function getNodeUpToIndex(path, index) {\n var node = this;\n\n for (var i = 0; i < index; ++i) {\n var item = path[i];\n\n if (node.children.hasOwnProperty(item)) {\n node = node.children[item];\n } else {\n node = null;\n break;\n }\n }\n\n return node;\n }\n }, {\n key: \"append\",\n value: function append(name, value) {\n var children = this.children;\n var node = null;\n\n if (children.hasOwnProperty(name)) {\n node = children[name];\n } else if (_typeof(name) === STRING$3 && name !== WILDCARD) {\n node = new Node();\n children[name] = node;\n }\n\n if (node !== null) {\n node.value += value > 0 ? parseInt(value) : 0;\n }\n\n return node;\n }\n }, {\n key: \"probe\",\n value: function probe(recursively) {\n var value = this.value; // Calculate entire tree value recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"clear\",\n value: function clear(recursively) {\n this.value = 0; // Clear entire tree recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n }\n }\n }, {\n key: \"appendPath\",\n value: function appendPath(path, value) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this;\n\n for (var i = 0; i < last; ++i) {\n node = node.append(path[i], 0);\n\n if (node === null) {\n return false;\n }\n }\n\n return node.append(path[last], value) !== null;\n }\n\n return false;\n }\n }, {\n key: \"clearPath\",\n value: function clearPath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n node.children[item].clear(recursively);\n return true;\n }\n } else {\n var children = node.children;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"probePath\",\n value: function probePath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n return node.children[item].probe(recursively);\n }\n } else {\n var children = node.children;\n var value = 0;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n\n return value;\n }\n }\n }\n\n return 0;\n }\n }, {\n key: \"attachHandler\",\n value: function attachHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n var list = handlers.hasOwnProperty(type) ? handlers[type] : handlers[type] = [];\n var length = list.length;\n var notFound = true;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n notFound = false;\n break;\n }\n }\n\n if (notFound) {\n list[length] = handler;\n result = true;\n }\n }\n\n return result;\n }\n }, {\n key: \"removeHandler\",\n value: function removeHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n list.splice(i, 1);\n result = true;\n break;\n }\n }\n }\n }\n\n return result;\n }\n }, {\n key: \"trigger\",\n value: function trigger(type, nonRecursively) {\n if (_typeof(type) === STRING$3) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n list[i].call(null);\n }\n }\n\n if (nonRecursively !== true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].trigger(type);\n }\n }\n }\n }\n }\n }, {\n key: \"attachHandlerForPath\",\n value: function attachHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.attachHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"removeHandlerForPath\",\n value: function removeHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.removeHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"triggerHandlersForPath\",\n value: function triggerHandlersForPath(path, type, nonRecursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n node.trigger(type, nonRecursively);\n }\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * Root Namespace Node and API\n */\n\n\nvar rootNode = new Node();\n\nfunction handleError(error) {\n var title = error.title,\n message = error.message;\n\n if (!title) {\n if (error instanceof Error) {\n title = error.name;\n }\n }\n\n if (!message) {\n if (error instanceof Error) {\n message = error.message;\n }\n }\n\n var data = Object.assign({\n title: title,\n message: message,\n class: 'themed',\n hideConfirm: true,\n cancelLabel: 'Dismiss',\n cancelClass: 'btn-secondary'\n }, error || {});\n log$1.error(error); // TODO: Find a better way to handle errors instead of displaying a dialog for all of them.\n // OHIF.ui.showDialog('dialogForm', data);\n}\n\n/**\n * Check if the pressed key combination will result in a character input\n * Got from https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n *\n * @returns {Boolean} Whether the pressed key combination will input a character or not\n */\nfunction isCharacterKeyPress(event) {\n if (typeof event.which === 'undefined') {\n // This is IE, which only fires keypress events for printable keys\n return true;\n } else if (typeof event.which === 'number' && event.which > 0) {\n // In other browsers except old versions of WebKit, event.which is\n // only greater than zero if the keypress is a printable key.\n // We need to filter out backspace and ctrl/alt/meta key combinations\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8;\n }\n\n return false;\n}\n\n/**\n * Get the offset for the given element\n *\n * @param {Object} element DOM element which will have the offser calculated\n * @returns {Object} Object containing the top and left offset\n */\nfunction getOffset(element) {\n var top = 0;\n var left = 0;\n\n if (element.offsetParent) {\n do {\n left += element.offsetLeft;\n top += element.offsetTop;\n } while (element = element.offsetParent);\n }\n\n return {\n left: left,\n top: top\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar ui = {\n getScrollbarSize: getScrollbarSize,\n getOffset: getOffset,\n isCharacterKeyPress: isCharacterKeyPress,\n handleError: handleError\n};\n\n//import Dropdown from './ui/dropdown/class.js';\n\n/*\n * Defines the base OHIF header object\n */\n//const dropdown = new OHIF.ui.Dropdown();\nvar header = {};\n\nvar ObjectPath =\n/*#__PURE__*/\nfunction () {\n function ObjectPath() {\n _classCallCheck(this, ObjectPath);\n }\n\n _createClass(ObjectPath, null, [{\n key: \"set\",\n\n /**\n * Set an object property based on \"path\" (namespace) supplied creating\n * ... intermediary objects if they do not exist.\n * @param object {Object} An object where the properties specified on path should be set.\n * @param path {String} A string representing the property to be set, e.g. \"user.study.series.timepoint\".\n * @param value {Any} The value of the property that will be set.\n * @return {Boolean} Returns \"true\" on success, \"false\" if any intermediate component of the supplied path\n * ... is not a valid Object, in which case the property cannot be set. No excpetions are thrown.\n */\n value: function set(object, path, value) {\n var components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0,\n result = false;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n\n if (field in currentObject) {\n if (!ObjectPath.isValidObject(currentObject[field])) {\n break;\n }\n } else {\n currentObject[field] = {};\n }\n\n currentObject = currentObject[field];\n i++;\n }\n\n if (i === last) {\n currentObject[components[last]] = value;\n result = true;\n }\n }\n\n return result;\n }\n /**\n * Get an object property based on \"path\" (namespace) supplied traversing the object\n * ... tree as necessary.\n * @param object {Object} An object where the properties specified might exist.\n * @param path {String} A string representing the property to be searched for, e.g. \"user.study.series.timepoint\".\n * @return {Any} The value of the property if found. By default, returns the special type \"undefined\".\n */\n\n }, {\n key: \"get\",\n value: function get(object, path) {\n var found,\n // undefined by default\n components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n var isValid = ObjectPath.isValidObject(currentObject[field]);\n\n if (field in currentObject && isValid) {\n currentObject = currentObject[field];\n i++;\n } else {\n break;\n }\n }\n\n if (i === last && components[last] in currentObject) {\n found = currentObject[components[last]];\n }\n }\n\n return found;\n }\n /**\n * Check if the supplied argument is a real JavaScript Object instance.\n * @param object {Any} The subject to be tested.\n * @return {Boolean} Returns \"true\" if the object is a real Object instance and \"false\" otherwise.\n */\n\n }, {\n key: \"isValidObject\",\n value: function isValidObject(object) {\n return _typeof(object) === 'object' && object !== null && object instanceof Object;\n }\n }, {\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return typeof path === 'string' ? path.split('.') : null;\n }\n }]);\n\n return ObjectPath;\n}();\n\nfunction absoluteUrl(path) {\n var absolutePath = '/'; // TODO: Find another way to get root url\n\n var absoluteUrl = window.location.origin;\n var absoluteUrlParts = absoluteUrl.split('/');\n\n if (absoluteUrlParts.length > 4) {\n var rootUrlPrefixIndex = absoluteUrl.indexOf(absoluteUrlParts[3]);\n absolutePath += absoluteUrl.substring(rootUrlPrefixIndex) + path;\n } else {\n absolutePath += path;\n }\n\n return absolutePath.replace(/\\/\\/+/g, '/');\n}\n\n// TODO: figure out where else to put this function\nfunction addServers(servers, store) {\n Object.keys(servers).forEach(function (serverType) {\n var endpoints = servers[serverType];\n endpoints.forEach(function (endpoint) {\n var server = Object.assign({}, endpoint);\n server.type = serverType;\n store.dispatch({\n type: 'ADD_SERVER',\n server: server\n });\n });\n });\n}\n\n// Return the array sorting function for its object's properties\nfunction sortBy() {\n var fields = [].slice.call(arguments),\n n_fields = fields.length;\n return function (A, B) {\n var a, b, field, key, reverse, result, i;\n\n for (i = 0; i < n_fields; i++) {\n result = 0;\n field = fields[i];\n key = typeof field === 'string' ? field : field.name;\n a = A[key];\n b = B[key];\n\n if (typeof field.primer !== 'undefined') {\n a = field.primer(a);\n b = field.primer(b);\n }\n\n reverse = field.reverse ? -1 : 1;\n\n if (a < b) {\n result = reverse * -1;\n }\n\n if (a > b) {\n result = reverse * 1;\n }\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n };\n}\n\n/* jshint -W060 */\nfunction writeScript(fileName, callback) {\n var script = document.createElement('script');\n script.src = absoluteUrl(fileName);\n\n script.onload = function () {\n if (typeof callback === 'function') {\n callback(script);\n }\n };\n\n document.body.appendChild(script);\n}\n\nfunction updateQueryStringParameter(uri, key, value) {\n var regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n\n if (uri.match(regex)) {\n return uri.replace(regex, '$1' + key + '=' + value + '$2');\n } else {\n return uri + separator + key + '=' + value;\n }\n}\n/**\n * Obtain an imageId for Cornerstone from an image instance\n *\n * @param instance\n * @param frame\n * @param thumbnail\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getImageId(instance, frame) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!instance) {\n return;\n }\n\n if (typeof instance.getImageId === 'function') {\n return instance.getImageId();\n }\n\n if (instance.url) {\n if (frame !== undefined) {\n instance.url = updateQueryStringParameter(instance.url, 'frame', frame);\n }\n\n return instance.url;\n }\n\n var renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';\n\n if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {\n var imageId = 'dicomweb:' + instance.wadouri;\n\n if (frame !== undefined) {\n imageId += '&frame=' + frame;\n }\n\n return imageId;\n } else {\n return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame\n }\n}\n\nvar stackMap = {};\nvar configuration = {};\nvar stackManagerMetaDataProvider;\nvar stackUpdatedCallbacks = [];\n/**\n * Loop through the current series and add metadata to the\n * Cornerstone meta data provider. This will be used to fill information\n * into the viewport overlays, and to calculate reference lines and orientation markers\n * @param {Object} stackMap stackMap object\n * @param {Object} study Study object\n * @param {Object} displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n\nfunction createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, metadataProvider) {\n var numImages = displaySet.images.length;\n var imageIds = [];\n var imageId;\n displaySet.images.forEach(function (instance, imageIndex) {\n var image = instance.getData();\n var metaData = {\n instance: image,\n // in this context, instance will be the data of the InstanceMetadata object...\n series: displaySet,\n // TODO: Check this\n study: study,\n numImages: numImages,\n imageIndex: imageIndex + 1\n };\n var numberOfFrames = image.numberOfFrames;\n\n if (numberOfFrames > 1) {\n OHIF.log.info('Multiframe image detected');\n\n for (var i = 0; i < numberOfFrames; i++) {\n metaData.frameNumber = i;\n imageId = getImageId(image, i);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n } else {\n metaData.frameNumber = 1;\n imageId = getImageId(image);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n });\n var stack = {\n studyInstanceUid: study.studyInstanceUid,\n displaySetInstanceUid: displaySet.displaySetInstanceUid,\n imageIds: imageIds,\n frameRate: displaySet.frameRate,\n isClip: displaySet.isClip\n };\n stackMap[displaySet.displaySetInstanceUid] = stack;\n return stack;\n}\n\nconfiguration = {\n createAndAddStack: createAndAddStack\n};\n/**\n * This object contains all the functions needed for interacting with the stack manager.\n * Generally, findStack is the only function used. If you want to know when new stacks\n * come in, you can register a callback with addStackUpdatedCallback.\n */\n\nvar StackManager = {\n setMetadataProvider: function setMetadataProvider(provider) {\n stackManagerMetaDataProvider = provider;\n },\n\n /**\n * Removes all current stacks\n */\n clearStacks: function clearStacks() {\n stackMap = {};\n },\n\n /**\n * Create a stack from an image set, as well as add in the metadata on a per image bases.\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n makeAndAddStack: function makeAndAddStack(study, displaySet) {\n if (!stackManagerMetaDataProvider) {\n throw new Error('Please call StackManager.setMetadataProvider(provider) first.');\n }\n\n return configuration.createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, stackManagerMetaDataProvider);\n },\n\n /**\n * Find a stack from the currently created stacks.\n * @param displaySetInstanceUid The UID of the stack to find.\n * @returns {*} undefined if not found, otherwise the stack object is returned.\n */\n findStack: function findStack(displaySetInstanceUid) {\n return stackMap[displaySetInstanceUid];\n },\n\n /**\n * Find a stack or reate one if it has not been created yet\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n findOrCreateStack: function findOrCreateStack(study, displaySet) {\n var stack = this.findStack(displaySet.displaySetInstanceUid);\n\n if (!stack || !stack.imageIds) {\n stack = this.makeAndAddStack(study, displaySet);\n }\n\n return stack;\n },\n\n /**\n * Gets the underlying map of displaySetInstanceUid to stack object.\n * WARNING: Do not change this object. It directly affects the manager.\n * @returns {{}} map of displaySetInstanceUid -> stack.\n */\n getAllStacks: function getAllStacks() {\n return stackMap;\n },\n\n /**\n * Adds in a callback to be called on a stack being added / updated.\n * @param callback must accept at minimum one argument,\n * which is the stack that was added / updated.\n */\n addStackUpdatedCallback: function addStackUpdatedCallback(callback) {\n if (typeof callback !== 'function') {\n throw new OHIFError('callback must be provided as a function');\n }\n\n stackUpdatedCallbacks.push(callback);\n },\n\n /**\n * Return configuration\n */\n getConfiguration: function getConfiguration() {\n return configuration;\n },\n\n /**\n * Set configuration, in order to provide compatibility\n * with other systems by overriding this functions\n * @param {Object} config object with functions to be overrided\n *\n * For now, only makeAndAddStack can be overrided\n */\n setConfiguration: function setConfiguration(config) {\n configuration = config;\n }\n};\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar sopClassDictionary = {\n ComputedRadiographyImageStorage: '1.2.840.10008.5.1.4.1.1.1',\n DigitalXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.1',\n DigitalXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.1.1',\n DigitalMammographyXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.2',\n DigitalMammographyXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.2.1',\n DigitalIntraOralXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.3',\n DigitalIntraOralXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.3.1',\n CTImageStorage: '1.2.840.10008.5.1.4.1.1.2',\n EnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.1',\n LegacyConvertedEnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.2',\n UltrasoundMultiframeImageStorage: '1.2.840.10008.5.1.4.1.1.3.1',\n MRImageStorage: '1.2.840.10008.5.1.4.1.1.4',\n EnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.1',\n MRSpectroscopyStorage: '1.2.840.10008.5.1.4.1.1.4.2',\n EnhancedMRColorImageStorage: '1.2.840.10008.5.1.4.1.1.4.3',\n LegacyConvertedEnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.4',\n UltrasoundImageStorage: '1.2.840.10008.5.1.4.1.1.6.1',\n EnhancedUSVolumeStorage: '1.2.840.10008.5.1.4.1.1.6.2',\n SecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7',\n MultiframeSingleBitSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.1',\n MultiframeGrayscaleByteSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.2',\n MultiframeGrayscaleWordSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.3',\n MultiframeTrueColorSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.4',\n Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1',\n GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2',\n AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3',\n HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1',\n CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.3.1',\n BasicVoiceAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.1',\n GeneralAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.2',\n ArterialPulseWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.5.1',\n RespiratoryWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.6.1',\n GrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.1',\n ColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.2',\n PseudoColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.3',\n BlendingSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.4',\n XAXRFGrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.5',\n XRayAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.12.1',\n EnhancedXAImageStorage: '1.2.840.10008.5.1.4.1.1.12.1.1',\n XRayRadiofluoroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.12.2',\n EnhancedXRFImageStorage: '1.2.840.10008.5.1.4.1.1.12.2.1',\n XRay3DAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.1',\n XRay3DCraniofacialImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.2',\n BreastTomosynthesisImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.3',\n BreastProjectionXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.13.1.4',\n BreastProjectionXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.13.1.5',\n IntravascularOpticalCoherenceTomographyImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.14.1',\n IntravascularOpticalCoherenceTomographyImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.14.2',\n NuclearMedicineImageStorage: '1.2.840.10008.5.1.4.1.1.20',\n RawDataStorage: '1.2.840.10008.5.1.4.1.1.66',\n SpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.1',\n SpatialFiducialsStorage: '1.2.840.10008.5.1.4.1.1.66.2',\n DeformableSpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.3',\n SegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.4',\n SurfaceSegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.5',\n RealWorldValueMappingStorage: '1.2.840.10008.5.1.4.1.1.67',\n SurfaceScanMeshStorage: '1.2.840.10008.5.1.4.1.1.68.1',\n SurfaceScanPointCloudStorage: '1.2.840.10008.5.1.4.1.1.68.2',\n VLEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1',\n VideoEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1.1',\n VLMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2',\n VideoMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2.1',\n VLSlideCoordinatesMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.3',\n VLPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4',\n VideoPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4.1',\n OphthalmicPhotography8BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.1',\n OphthalmicPhotography16BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.2',\n StereometricRelationshipStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.3',\n OphthalmicTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.4',\n VLWholeSlideMicroscopyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.6',\n LensometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.1',\n AutorefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.2',\n KeratometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.3',\n SubjectiveRefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.4',\n VisualAcuityMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.5',\n SpectaclePrescriptionReportStorage: '1.2.840.10008.5.1.4.1.1.78.6',\n OphthalmicAxialMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.7',\n IntraocularLensCalculationsStorage: '1.2.840.10008.5.1.4.1.1.78.8',\n MacularGridThicknessandVolumeReport: '1.2.840.10008.5.1.4.1.1.79.1',\n OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.80.1',\n OphthalmicThicknessMapStorage: '1.2.840.10008.5.1.4.1.1.81.1',\n CornealTopographyMapStorage: '1.2.840.10008.5.1.4.1.1.82.1',\n BasicTextSR: '1.2.840.10008.5.1.4.1.1.88.11',\n EnhancedSR: '1.2.840.10008.5.1.4.1.1.88.22',\n ComprehensiveSR: '1.2.840.10008.5.1.4.1.1.88.33',\n Comprehensive3DSR: '1.2.840.10008.5.1.4.1.1.88.34',\n ProcedureLog: '1.2.840.10008.5.1.4.1.1.88.40',\n MammographyCADSR: '1.2.840.10008.5.1.4.1.1.88.50',\n KeyObjectSelection: '1.2.840.10008.5.1.4.1.1.88.59',\n ChestCADSR: '1.2.840.10008.5.1.4.1.1.88.65',\n XRayRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.67',\n RadiopharmaceuticalRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.68',\n ColonCADSR: '1.2.840.10008.5.1.4.1.1.88.69',\n ImplantationPlanSRDocumentStorage: '1.2.840.10008.5.1.4.1.1.88.70',\n EncapsulatedPDFStorage: '1.2.840.10008.5.1.4.1.1.104.1',\n EncapsulatedCDAStorage: '1.2.840.10008.5.1.4.1.1.104.2',\n PositronEmissionTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.128',\n EnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.130',\n LegacyConvertedEnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.128.1',\n BasicStructuredDisplayStorage: '1.2.840.10008.5.1.4.1.1.131',\n RTImageStorage: '1.2.840.10008.5.1.4.1.1.481.1',\n RTDoseStorage: '1.2.840.10008.5.1.4.1.1.481.2',\n RTStructureSetStorage: '1.2.840.10008.5.1.4.1.1.481.3',\n RTBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.4',\n RTPlanStorage: '1.2.840.10008.5.1.4.1.1.481.5',\n RTBrachyTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.6',\n RTTreatmentSummaryRecordStorage: '1.2.840.10008.5.1.4.1.1.481.7',\n RTIonPlanStorage: '1.2.840.10008.5.1.4.1.1.481.8',\n RTIonBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.9',\n RTBeamsDeliveryInstructionStorage: '1.2.840.10008.5.1.4.34.7',\n GenericImplantTemplateStorage: '1.2.840.10008.5.1.4.43.1',\n ImplantAssemblyTemplateStorage: '1.2.840.10008.5.1.4.44.1',\n ImplantTemplateGroupStorage: '1.2.840.10008.5.1.4.45.1'\n};\n\n/**\n * Checks whether dicom files with specified SOP Class UID have image data\n * @param {string} sopClassUid - SOP Class UID to be checked\n * @returns {boolean} - true if it has image data\n */\n\nfunction isImage(sopClassUid) {\n if (sopClassUid === sopClassDictionary.ComputedRadiographyImageStorage || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.CTImageStorage || sopClassUid === sopClassDictionary.EnhancedCTImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedCTImageStorage || sopClassUid === sopClassDictionary.UltrasoundMultiframeImageStorage || sopClassUid === sopClassDictionary.MRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRColorImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedMRImageStorage || sopClassUid === sopClassDictionary.UltrasoundImageStorage || sopClassUid === sopClassDictionary.SecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.XRayAngiographicImageStorage || sopClassUid === sopClassDictionary.EnhancedXAImageStorage || sopClassUid === sopClassDictionary.XRayRadiofluoroscopicImageStorage || sopClassUid === sopClassDictionary.EnhancedXRFImageStorage || sopClassUid === sopClassDictionary.XRay3DAngiographicImageStorage || sopClassUid === sopClassDictionary.XRay3DCraniofacialImageStorage || sopClassUid === sopClassDictionary.BreastTomosynthesisImageStorage || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing || sopClassUid === sopClassDictionary.NuclearMedicineImageStorage || sopClassUid === sopClassDictionary.VLEndoscopicImageStorage || sopClassUid === sopClassDictionary.VideoEndoscopicImageStorage || sopClassUid === sopClassDictionary.VLMicroscopicImageStorage || sopClassUid === sopClassDictionary.VideoMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLPhotographicImageStorage || sopClassUid === sopClassDictionary.VideoPhotographicImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography8BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography16BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicTomographyImageStorage || sopClassUid === sopClassDictionary.VLWholeSlideMicroscopyImageStorage || sopClassUid === sopClassDictionary.PositronEmissionTomographyImageStorage || sopClassUid === sopClassDictionary.EnhancedPETImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedPETImageStorage || sopClassUid === sopClassDictionary.RTImageStorage) {\n return true;\n }\n\n return false;\n}\n\nvar isMultiFrame = function isMultiFrame(instance) {\n // NumberOfFrames (0028,0008)\n return instance.getRawValue('x00280008') > 1;\n};\n\nvar makeDisplaySet = function makeDisplaySet(series, instances) {\n var instance = instances[0];\n var imageSet = new ImageSet(instances);\n var seriesData = series.getData(); // set appropriate attributes to image set...\n\n imageSet.setAttributes({\n displaySetInstanceUid: imageSet.uid,\n // create a local alias for the imageSet UID\n seriesDate: seriesData.seriesDate,\n seriesTime: seriesData.seriesTime,\n seriesInstanceUid: series.getSeriesInstanceUID(),\n seriesNumber: instance.getRawValue('x00200011'),\n seriesDescription: instance.getRawValue('x0008103e'),\n numImageFrames: instances.length,\n frameRate: instance.getRawValue('x00181063'),\n modality: instance.getRawValue('x00080060'),\n isMultiFrame: isMultiFrame(instance)\n }); // Sort the images in this series if needed\n\n {\n imageSet.sortBy(function (a, b) {\n // Sort by InstanceNumber (0020,0013)\n return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0);\n });\n } // Include the first image instance number (after sorted)\n\n\n imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));\n return imageSet;\n};\n\nvar isSingleImageModality = function isSingleImageModality(modality) {\n return modality === 'CR' || modality === 'MG' || modality === 'DX';\n};\n/**\n * Creates a set of series to be placed in the Study Metadata\n * The series that appear in the Study Metadata must represent\n * imaging modalities.\n *\n * Furthermore, for drag/drop functionality,\n * it is easiest if the stack objects also contain information about\n * which study they are linked to.\n *\n * @param study The study instance metadata to be used\n * @returns {Array} An array of series to be placed in the Study Metadata\n */\n\n\nfunction createStacks(study) {\n // Define an empty array of display sets\n var displaySets = [];\n\n if (!study || !study.getSeriesCount()) {\n return displaySets;\n } // Loop through the series (SeriesMetadata)\n\n\n study.forEachSeries(function (series) {\n // If the series has no instances, skip it\n if (!series.getInstanceCount()) {\n return;\n } // Search through the instances (InstanceMetadata object) of this series\n // Split Multi-frame instances and Single-image modalities\n // into their own specific display sets. Place the rest of each\n // series into another display set.\n\n\n var stackableInstances = [];\n series.forEachInstance(function (instance) {\n // All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)\n if (!isImage(instance.getRawValue('x00080016')) && !instance.getRawValue('x00280010')) {\n return;\n }\n\n var displaySet;\n\n if (isMultiFrame(instance)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n isClip: true,\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid for drag/drop purposes\n numImageFrames: instance.getRawValue('x00280008'),\n // Override the default value of instances.length\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else if (isSingleImageModality(instance.modality)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else {\n stackableInstances.push(instance);\n }\n });\n\n if (stackableInstances.length) {\n var displaySet = makeDisplaySet(series, stackableInstances);\n displaySet.setAttribute('studyInstanceUid', study.getStudyInstanceUID());\n displaySets.push(displaySet);\n }\n });\n return displaySets;\n}\n\nvar OHIFInstanceMetadata =\n/*#__PURE__*/\nfunction (_InstanceMetadata) {\n _inherits(OHIFInstanceMetadata, _InstanceMetadata);\n\n /**\n * @param {Object} Instance object.\n */\n function OHIFInstanceMetadata(data, series, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFInstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFInstanceMetadata).call(this, data, uid));\n\n _this.init(series, study);\n\n return _this;\n }\n\n _createClass(OHIFInstanceMetadata, [{\n key: \"init\",\n value: function init(series, study) {\n var instance = this.getData(); // Initialize Private Properties\n\n Object.defineProperties(this, {\n _sopInstanceUID: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance.sopInstanceUid\n },\n _study: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series\n },\n _instance: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance\n },\n _cache: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n }\n });\n } // Override\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue, bypassCache) {\n // check if this property has been cached...\n if (tagOrProperty in this._cache && bypassCache !== true) {\n return this._cache[tagOrProperty];\n }\n\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty); // Search property value in the whole study metadata chain...\n\n var rawValue;\n\n if (propertyName in this._instance) {\n rawValue = this._instance[propertyName];\n } else if (propertyName in this._series) {\n rawValue = this._series[propertyName];\n } else if (propertyName in this._study) {\n rawValue = this._study[propertyName];\n }\n\n if (rawValue !== void 0) {\n // if rawValue value is not undefined, cache result...\n this._cache[tagOrProperty] = rawValue;\n return rawValue;\n }\n\n return defaultValue;\n } // Override\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty);\n return propertyName in this._instance || propertyName in this._series || propertyName in this._study;\n } // Override\n\n }, {\n key: \"getImageId\",\n value: function getImageId$$1(frame, thumbnail) {\n // If _imageID is not cached, create it\n if (this._imageId === null) {\n this._imageId = getImageId(this.getData(), frame, thumbnail);\n }\n\n return this._imageId;\n }\n /**\n * Static methods\n */\n // @TODO: The current mapping of standard DICOM property names to local property names is not optimal.\n // The inconsistency in property naming makes this function increasingly complex.\n // A possible solution to improve this would be adapt retriveMetadata names to use DICOM standard names as in dicomTagDescriptions.js\n\n }], [{\n key: \"getPropertyName\",\n value: function getPropertyName(tagOrProperty) {\n var propertyName;\n var tagInfo = DICOMTagDescriptions.find(tagOrProperty);\n\n if (tagInfo !== void 0) {\n // This function tries to translate standard DICOM property names into local naming convention.\n propertyName = tagInfo.keyword.replace(/^SOP/, 'sop').replace(/UID$/, 'Uid').replace(/ID$/, 'Id');\n propertyName = propertyName.charAt(0).toLowerCase() + propertyName.substr(1);\n }\n\n return propertyName;\n }\n }]);\n\n return OHIFInstanceMetadata;\n}(InstanceMetadata);\n\nvar OHIFSeriesMetadata =\n/*#__PURE__*/\nfunction (_SeriesMetadata) {\n _inherits(OHIFSeriesMetadata, _SeriesMetadata);\n\n /**\n * @param {Object} Series object.\n */\n function OHIFSeriesMetadata(data, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFSeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFSeriesMetadata).call(this, data, uid));\n\n _this.init(study);\n\n return _this;\n }\n\n _createClass(OHIFSeriesMetadata, [{\n key: \"init\",\n value: function init(study) {\n var _this2 = this;\n\n var series = this.getData(); // define \"_seriesInstanceUID\" protected property...\n\n Object.defineProperty(this, '_seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series.seriesInstanceUid\n }); // populate internal list of instances...\n\n series.instances.forEach(function (instance) {\n _this2.addInstance(new OHIFInstanceMetadata(instance, series, study));\n });\n }\n }]);\n\n return OHIFSeriesMetadata;\n}(SeriesMetadata);\n\nvar OHIFStudyMetadata =\n/*#__PURE__*/\nfunction (_StudyMetadata) {\n _inherits(OHIFStudyMetadata, _StudyMetadata);\n\n /**\n * @param {Object} Study object.\n */\n function OHIFStudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, OHIFStudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFStudyMetadata).call(this, data, uid));\n\n _this.init();\n\n return _this;\n }\n\n _createClass(OHIFStudyMetadata, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var study = this.getData(); // define \"_studyInstanceUID\" protected property\n\n Object.defineProperty(this, '_studyInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study.studyInstanceUid\n }); // populate internal list of series\n\n study.seriesList.forEach(function (series) {\n _this2.addSeries(new OHIFSeriesMetadata(series, study));\n });\n }\n }]);\n\n return OHIFStudyMetadata;\n}(StudyMetadata);\n\nvar getDisplaySets = function getDisplaySets(studyMetadata, seriesNumber, iteratorFunction) {\n var iteratorFn = typeof iteratorFunction !== 'function' ? createStacks : iteratorFunction;\n return iteratorFn(studyMetadata, seriesNumber);\n};\n\nvar sortingManager = {\n getDisplaySets: getDisplaySets\n};\n\nfunction createDisplaySets(studies) {\n // Define the OHIF.viewer.data global object\n // TODO: Save all data that is currently in OHIF.viewer in redux instead\n //OHIF.viewer.data = OHIF.viewer.data || {};\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n //OHIF.viewer.data.studyInstanceUids = [];\n var updatedStudies = studies.map(function (study) {\n var studyMetadata = new OHIFStudyMetadata(study, study.studyInstanceUid);\n var displaySets = study.displaySets;\n\n if (!study.displaySets) {\n displaySets = sortingManager.getDisplaySets(studyMetadata);\n study.displaySets = displaySets;\n }\n\n studyMetadata.setDisplaySets(displaySets); //OHIF.viewer.Studies.insert(study);\n //OHIF.viewer.StudyMetadataList.insert(studyMetadata);\n //OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);\n // Updates WADO-RS metaDataManager\n\n updateMetaDataManager(study);\n return study;\n });\n return updatedStudies;\n}\n\nvar utils = {\n guid: guid,\n ObjectPath: ObjectPath,\n absoluteUrl: absoluteUrl,\n addServers: addServers,\n sortBy: sortBy,\n writeScript: writeScript,\n StackManager: StackManager,\n createStacks: createStacks,\n createDisplaySets: createDisplaySets\n};\n\nvar metadata = {\n Metadata: Metadata,\n WadoRsMetaDataBuilder: WadoRsMetaDataBuilder,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n OHIFStudyMetadata: OHIFStudyMetadata,\n OHIFSeriesMetadata: OHIFSeriesMetadata,\n OHIFInstanceMetadata: OHIFInstanceMetadata\n};\n\nvar FUNCTION$2 = 'function';\n\nvar MetadataProvider =\n/*#__PURE__*/\nfunction () {\n function MetadataProvider() {\n _classCallCheck(this, MetadataProvider);\n\n // Define the main \"metadataLookup\" private property as an immutable property.\n Object.defineProperty(this, 'metadataLookup', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: new Map()\n }); // Local reference to provider function bound to current instance.\n\n Object.defineProperty(this, '_provider', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n }\n /**\n * Cornerstone Metadata provider to store image meta data\n * Data from instances, series, and studies are associated with\n * imageIds to facilitate usage of this information by Cornerstone's Tools\n *\n * e.g. the imagePlane metadata object contains instance information about\n * row/column pixel spacing, patient position, and patient orientation. It\n * is used in CornerstoneTools to position reference lines and orientation markers.\n *\n * @param {String} imageId The Cornerstone ImageId\n * @param {Object} data An object containing instance, series, and study metadata\n */\n\n\n _createClass(MetadataProvider, [{\n key: \"addMetadata\",\n value: function addMetadata(imageId, data) {\n var instanceMetadata = data.instance;\n var seriesMetadata = data.series;\n var studyMetadata = data.study;\n var numImages = data.numImages;\n var metadata = {};\n metadata.frameNumber = data.frameNumber;\n metadata.study = {\n accessionNumber: studyMetadata.accessionNumber,\n patientId: studyMetadata.patientId,\n studyInstanceUid: studyMetadata.studyInstanceUid,\n studyDate: studyMetadata.studyDate,\n studyTime: studyMetadata.studyTime,\n studyDescription: studyMetadata.studyDescription,\n institutionName: studyMetadata.institutionName,\n patientHistory: studyMetadata.patientHistory\n };\n metadata.series = {\n seriesDescription: seriesMetadata.seriesDescription,\n seriesNumber: seriesMetadata.seriesNumber,\n seriesDate: seriesMetadata.seriesDate,\n seriesTime: seriesMetadata.seriesTime,\n modality: seriesMetadata.modality,\n seriesInstanceUid: seriesMetadata.seriesInstanceUid,\n numImages: numImages\n };\n metadata.instance = instanceMetadata;\n metadata.patient = {\n name: studyMetadata.patientName,\n id: studyMetadata.patientId,\n birthDate: studyMetadata.patientBirthDate,\n sex: studyMetadata.patientSex,\n age: studyMetadata.patientAge\n }; // If there is sufficient information, populate\n // the imagePlane object for easier use in the Viewer\n\n metadata.imagePlane = this.getImagePlane(instanceMetadata); // Add the metadata to the imageId lookup object\n\n this.metadataLookup.set(imageId, metadata);\n }\n /**\n * Return the metadata for the given imageId\n * @param {String} imageId The Cornerstone ImageId\n * @returns image metadata\n */\n\n }, {\n key: \"getMetadata\",\n value: function getMetadata(imageId) {\n return this.metadataLookup.get(imageId);\n }\n /**\n * Adds a set of metadata to the Cornerstone metadata provider given a specific\n * imageId, type, and dataset\n *\n * @param imageId\n * @param type (e.g. series, instance, tagDisplay)\n * @param data\n */\n\n }, {\n key: \"addSpecificMetadata\",\n value: function addSpecificMetadata(imageId, type, data) {\n var metadata = {};\n metadata[type] = data;\n var oldMetadata = this.metadataLookup.get(imageId);\n this.metadataLookup.set(imageId, Object.assign(oldMetadata, metadata));\n }\n }, {\n key: \"getFromImage\",\n value: function getFromImage(image, type, tag, attrName, defaultValue) {\n var value;\n\n if (image.data) {\n value = this.getFromDataSet(image.data, type, tag);\n } else {\n value = image.instance[attrName];\n }\n\n return value === null ? defaultValue : value;\n }\n }, {\n key: \"getFromDataSet\",\n value: function getFromDataSet(dataSet, type, tag) {\n if (!dataSet) {\n return;\n }\n\n var fn = dataSet[type];\n\n if (!fn) {\n return;\n }\n\n return fn.call(dataSet, tag);\n }\n }, {\n key: \"getFrameIncrementPointer\",\n value: function getFrameIncrementPointer(image) {\n var dataSet = image.data;\n var frameInstancePointer = '';\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n var frameInstancePointerNames = {\n x00181063: 'frameTime',\n x00181065: 'frameTimeVector'\n }; // (0028,0009) = Frame Increment Pointer\n\n var frameInstancePointerTag = parsingUtils.attributeTag(dataSet, 'x00280009');\n frameInstancePointer = frameInstancePointerNames[frameInstancePointerTag];\n } else {\n frameInstancePointer = image.instance.frameIncrementPointer;\n }\n\n return frameInstancePointer || '';\n }\n }, {\n key: \"getFrameTimeVector\",\n value: function getFrameTimeVector(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n return parsingUtils.floatArray(dataSet, 'x00181065');\n }\n\n return image.instance.frameTimeVector;\n }\n }, {\n key: \"getFrameTime\",\n value: function getFrameTime(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time (0018,1063) field or is not defined (for addtional flexibility).\n // Yet another value is possible for this field (5200,9230 for Multi-frame Functional Groups)\n // but that case is currently not supported.\n return dataSet.floatString('x00181063', -1);\n }\n\n return image.instance.frameTime;\n }\n /**\n * Updates the related metadata for missing fields given a specified image\n *\n * @param image\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(image) {\n var imageMetadata = this.metadataLookup.get(image.imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n imageMetadata.patient.age = imageMetadata.patient.age || this.getFromDataSet(image.data, 'string', 'x00101010');\n imageMetadata.instance.rows = imageMetadata.instance.rows || image.rows;\n imageMetadata.instance.columns = imageMetadata.instance.columns || image.columns;\n imageMetadata.instance.sopClassUid = imageMetadata.instance.sopClassUid || this.getFromDataSet(image.data, 'string', 'x00080016');\n imageMetadata.instance.sopInstanceUid = imageMetadata.instance.sopInstanceUid || this.getFromDataSet(image.data, 'string', 'x00080018');\n imageMetadata.instance.pixelSpacing = imageMetadata.instance.pixelSpacing || this.getFromDataSet(image.data, 'string', 'x00280030');\n imageMetadata.instance.frameOfReferenceUID = imageMetadata.instance.frameOfReferenceUID || this.getFromDataSet(image.data, 'string', 'x00200052');\n imageMetadata.instance.imageOrientationPatient = imageMetadata.instance.imageOrientationPatient || this.getFromDataSet(image.data, 'string', 'x00200037');\n imageMetadata.instance.imagePositionPatient = imageMetadata.instance.imagePositionPatient || this.getFromDataSet(image.data, 'string', 'x00200032');\n imageMetadata.instance.sliceThickness = imageMetadata.instance.sliceThickness || this.getFromDataSet(image.data, 'string', 'x00180050');\n imageMetadata.instance.sliceLocation = imageMetadata.instance.sliceLocation || this.getFromDataSet(image.data, 'string', 'x00201041');\n imageMetadata.instance.tablePosition = imageMetadata.instance.tablePosition || this.getFromDataSet(image.data, 'string', 'x00189327');\n imageMetadata.instance.spacingBetweenSlices = imageMetadata.instance.spacingBetweenSlices || this.getFromDataSet(image.data, 'string', 'x00180088');\n imageMetadata.instance.lossyImageCompression = imageMetadata.instance.lossyImageCompression || this.getFromDataSet(image.data, 'string', 'x00282110');\n imageMetadata.instance.lossyImageCompressionRatio = imageMetadata.instance.lossyImageCompressionRatio || this.getFromDataSet(image.data, 'string', 'x00282112');\n imageMetadata.instance.frameIncrementPointer = imageMetadata.instance.frameIncrementPointer || this.getFromDataSet(image.data, 'string', 'x00280009');\n imageMetadata.instance.frameTime = imageMetadata.instance.frameTime || this.getFromDataSet(image.data, 'string', 'x00181063');\n imageMetadata.instance.frameTimeVector = imageMetadata.instance.frameTimeVector || this.getFromDataSet(image.data, 'string', 'x00181065');\n\n if ((image.data || image.instance) && !imageMetadata.instance.multiframeMetadata) {\n imageMetadata.instance.multiframeMetadata = this.getMultiframeModuleMetadata(image);\n }\n\n imageMetadata.imagePlane = imageMetadata.imagePlane || this.getImagePlane(imageMetadata.instance);\n }\n /**\n * Constructs and returns the imagePlane given the metadata instance\n *\n * @param metadataInstance The metadata instance (InstanceMetadata class) containing information to construct imagePlane\n * @returns imagePlane The constructed imagePlane to be used in viewer easily\n */\n\n }, {\n key: \"getImagePlane\",\n value: function getImagePlane(instance) {\n if (!instance.rows || !instance.columns || !instance.pixelSpacing || !instance.frameOfReferenceUID || !instance.imageOrientationPatient || !instance.imagePositionPatient) {\n return;\n }\n\n var imageOrientation = instance.imageOrientationPatient.split('\\\\');\n var imagePosition = instance.imagePositionPatient.split('\\\\');\n var columnPixelSpacing = 1.0;\n var rowPixelSpacing = 1.0;\n\n if (instance.pixelSpacing) {\n var split = instance.pixelSpacing.split('\\\\');\n rowPixelSpacing = parseFloat(split[0]);\n columnPixelSpacing = parseFloat(split[1]);\n }\n\n var cornerstoneMath = external.cornerstoneMath;\n return {\n frameOfReferenceUID: instance.frameOfReferenceUID,\n rows: instance.rows,\n columns: instance.columns,\n rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),\n columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),\n imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),\n rowPixelSpacing: rowPixelSpacing,\n columnPixelSpacing: columnPixelSpacing\n };\n }\n /**\n * This function extracts miltiframe information from a dicomParser.DataSet object.\n *\n * @param dataSet {Object} An instance of dicomParser.DataSet object where multiframe information can be found.\n * @return {Object} An object containing multiframe image metadata (frameIncrementPointer, frameTime, frameTimeVector, etc).\n */\n\n }, {\n key: \"getMultiframeModuleMetadata\",\n value: function getMultiframeModuleMetadata(image) {\n var imageInfo = {\n isMultiframeImage: false,\n frameIncrementPointer: null,\n numberOfFrames: 0,\n frameTime: 0,\n frameTimeVector: null,\n averageFrameRate: 0 // backwards compatibility only... it might be useless in the future\n\n };\n var frameTime;\n var numberOfFrames = this.getFromImage(image, 'intString', 'x00280008', 'numberOfFrames', -1);\n\n if (numberOfFrames > 0) {\n // set multi-frame image indicator\n imageInfo.isMultiframeImage = true;\n imageInfo.numberOfFrames = numberOfFrames; // (0028,0009) = Frame Increment Pointer\n\n var frameIncrementPointer = this.getFrameIncrementPointer(image);\n\n if (frameIncrementPointer === 'frameTimeVector') {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n var frameTimeVector = this.getFrameTimeVector(image);\n\n if (frameTimeVector instanceof Array && frameTimeVector.length > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTimeVector = frameTimeVector;\n frameTime = frameTimeVector.reduce(function (a, b) {\n return a + b;\n }) / frameTimeVector.length;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n } else if (frameIncrementPointer === 'frameTime' || frameIncrementPointer === '') {\n frameTime = this.getFrameTime(image);\n\n if (frameTime > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTime = frameTime;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n }\n }\n\n return imageInfo;\n }\n /**\n * Get a bound reference to the provider function.\n */\n\n }, {\n key: \"getProvider\",\n value: function getProvider() {\n var provider = this._provider;\n\n if (_typeof(this._provider) !== FUNCTION$2) {\n provider = this.provider.bind(this);\n this._provider = provider;\n }\n\n return provider;\n }\n /**\n * Looks up metadata for Cornerstone Tools given a specified type and imageId\n * A type may be, e.g. 'study', or 'patient', or 'imagePlane'. These types\n * are keys in the stored metadata objects.\n *\n * @param type\n * @param imageId\n * @returns {Object} Relevant metadata of the specified type\n */\n\n }, {\n key: \"provider\",\n value: function provider(type, imageId) {\n // TODO: Cornerstone Tools use 'imagePlaneModule', but OHIF use 'imagePlane'. It must be consistent.\n if (type === 'imagePlaneModule') {\n type = 'imagePlane';\n }\n\n var imageMetadata = this.metadataLookup.get(imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n if (imageMetadata.hasOwnProperty(type)) {\n return imageMetadata[type];\n }\n }\n }]);\n\n return MetadataProvider;\n}();\n\nvar cornerstone$1 = {\n MetadataProvider: MetadataProvider,\n getBoundingBox: getBoundingBox,\n pixelToPage: pixelToPage,\n repositionTextBox: repositionTextBox\n};\n\nvar StudyPrefetcher =\n/*#__PURE__*/\nfunction () {\n function StudyPrefetcher(studies) {\n var _this = this;\n\n _classCallCheck(this, StudyPrefetcher);\n\n _defineProperty(this, \"cacheFullHandler\", function () {\n log$1.warn('Cache full');\n\n _this.stopPrefetching();\n });\n\n this.studies = studies || [];\n this.prefetchDisplaySetsTimeout = 300;\n this.lastActiveViewportElement = null;\n external.cornerstone.events.addEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n\n _createClass(StudyPrefetcher, [{\n key: \"destroy\",\n value: function destroy() {\n this.stopPrefetching();\n external.cornerstone.events.removeEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n }, {\n key: \"setStudies\",\n value: function setStudies(studies) {\n this.stopPrefetching();\n this.studies = studies;\n }\n }, {\n key: \"prefetch\",\n value: function prefetch() {\n if (!this.studies || !this.studies.length) {\n return;\n }\n\n this.stopPrefetching();\n this.prefetchDisplaySets();\n }\n }, {\n key: \"stopPrefetching\",\n value: function stopPrefetching() {\n external.cornerstoneTools.requestPoolManager.clearRequestStack('prefetch');\n }\n }, {\n key: \"prefetchDisplaySetsAsync\",\n value: function prefetchDisplaySetsAsync(timeout) {\n var _this2 = this;\n\n timeout = timeout || this.prefetchDisplaySetsTimeout;\n clearTimeout(this.prefetchDisplaySetsHandler);\n this.prefetchDisplaySetsHandler = setTimeout(function () {\n _this2.prefetchDisplaySets();\n }, timeout);\n }\n }, {\n key: \"prefetchDisplaySets\",\n value: function prefetchDisplaySets() {\n // TODO: Allow passing in config\n var config = {\n order: 'closest',\n displaySetCount: 1\n };\n var displaySetsToPrefetch = this.getDisplaySetsToPrefetch(config);\n var imageIds = this.getImageIdsFromDisplaySets(displaySetsToPrefetch);\n this.prefetchImageIds(imageIds);\n }\n }, {\n key: \"prefetchImageIds\",\n value: function prefetchImageIds(imageIds) {\n var nonCachedImageIds = this.filterCachedImageIds(imageIds);\n var requestPoolManager = external.cornerstoneTools.requestPoolManager;\n var requestType = 'prefetch';\n var preventCache = false;\n\n var noop = function noop() {};\n\n nonCachedImageIds.forEach(function (imageId) {\n requestPoolManager.addRequest({}, imageId, requestType, preventCache, noop, noop);\n });\n requestPoolManager.startGrabbing();\n }\n }, {\n key: \"getStudy\",\n value: function getStudy(image) {\n var studyMetadata = external.cornerstone.metaData.get('study', image.imageId);\n return OHIF.viewer.Studies.find(function (study) {\n return study.studyInstanceUid === studyMetadata.studyInstanceUid;\n });\n }\n }, {\n key: \"getSeries\",\n value: function getSeries(study, image) {\n var seriesMetadata = external.cornerstone.metaData.get('series', image.imageId);\n var studyMetadata = OHIF.viewerbase.getStudyMetadata(study);\n return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);\n }\n }, {\n key: \"getInstance\",\n value: function getInstance(series, image) {\n var instanceMetadata = external.cornerstone.metaData.get('instance', image.imageId);\n return series.getInstanceByUID(instanceMetadata.sopInstanceUid);\n }\n }, {\n key: \"getActiveDisplaySet\",\n value: function getActiveDisplaySet(displaySets, instance) {\n return displaySets.find(function (displaySet) {\n return displaySet.images.some(function (displaySetImage) {\n return displaySetImage.sopInstanceUid === instance.sopInstanceUid;\n });\n });\n }\n }, {\n key: \"getDisplaySetsToPrefetch\",\n value: function getDisplaySetsToPrefetch(config) {\n var image = this.getActiveViewportImage();\n\n if (!image || !config || !config.displaySetCount) {\n return [];\n }\n /*const study = this.getStudy(image);\n const series = this.getSeries(study, image);\n const instance = this.getInstance(series, image);*/\n\n\n var displaySets = study.displaySets;\n var activeDisplaySet = null; //this.getActiveDisplaySet(displaySets, instance);\n\n var prefetchMethodMap = {\n topdown: 'getFirstDisplaySets',\n downward: 'getNextDisplaySets',\n closest: 'getClosestDisplaySets'\n };\n var prefetchOrder = config.order;\n var methodName = prefetchMethodMap[prefetchOrder];\n var getDisplaySets = this[methodName];\n\n if (!getDisplaySets) {\n if (prefetchOrder) {\n log$1.warn(\"Invalid prefetch order configuration (\".concat(prefetchOrder, \")\"));\n }\n\n return [];\n }\n\n return getDisplaySets.call(this, displaySets, activeDisplaySet, config.displaySetCount);\n }\n }, {\n key: \"getFirstDisplaySets\",\n value: function getFirstDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var length = displaySets.length;\n var selectedDisplaySets = [];\n\n for (var i = 0; i < length && displaySetCount; i++) {\n var displaySet = displaySets[i];\n\n if (displaySet !== activeDisplaySet) {\n selectedDisplaySets.push(displaySet);\n displaySetCount--;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getNextDisplaySets\",\n value: function getNextDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var begin = activeDisplaySetIndex + 1;\n var end = Math.min(begin + displaySetCount, displaySets.length);\n return displaySets.slice(begin, end);\n }\n }, {\n key: \"getClosestDisplaySets\",\n value: function getClosestDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var length = displaySets.length;\n var selectedDisplaySets = [];\n var left = activeDisplaySetIndex - 1;\n var right = activeDisplaySetIndex + 1;\n\n while ((left >= 0 || right < length) && displaySetCount) {\n if (left >= 0) {\n selectedDisplaySets.push(displaySets[left]);\n displaySetCount--;\n left--;\n }\n\n if (right < length && displaySetCount) {\n selectedDisplaySets.push(displaySets[right]);\n displaySetCount--;\n right++;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getImageIdsFromDisplaySets\",\n value: function getImageIdsFromDisplaySets(displaySets) {\n var _this3 = this;\n\n var imageIds = [];\n displaySets.forEach(function (displaySet) {\n imageIds = imageIds.concat(_this3.getImageIdsFromDisplaySet(displaySet));\n });\n return imageIds;\n }\n }, {\n key: \"getImageIdsFromDisplaySet\",\n value: function getImageIdsFromDisplaySet(displaySet) {\n var imageIds = []; // TODO: This duplicates work done by the stack manager\n\n displaySet.images.forEach(function (image) {\n var numFrames = image.numFrames;\n\n if (numFrames > 1) {\n for (var i = 0; i < numFrames; i++) {\n var imageId = getImageId(image, i);\n imageIds.push(imageId);\n }\n } else {\n var _imageId = getImageId(image);\n\n imageIds.push(_imageId);\n }\n });\n return imageIds;\n }\n }, {\n key: \"filterCachedImageIds\",\n value: function filterCachedImageIds(imageIds) {\n var _this4 = this;\n\n return imageIds.filter(function (imageId) {\n return !_this4.isImageCached(imageId);\n });\n }\n }, {\n key: \"isImageCached\",\n value: function isImageCached(imageId) {\n var image = external.cornerstone.imageCache.imageCache[imageId];\n return image && image.sizeInBytes;\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!StudyPrefetcher.instance) {\n StudyPrefetcher.instance = new StudyPrefetcher([]);\n }\n\n return StudyPrefetcher.instance;\n }\n }]);\n\n return StudyPrefetcher;\n}();\n\nvar setToolActive = function setToolActive(tool) {\n return {\n type: 'SET_TOOL_ACTIVE',\n tool: tool\n };\n};\nvar setViewportActive = function setViewportActive(viewportIndex) {\n return {\n type: 'SET_VIEWPORT_ACTIVE',\n viewportIndex: viewportIndex\n };\n};\nvar setLayout = function setLayout(layout) {\n return {\n type: 'SET_LAYOUT',\n layout: layout\n };\n};\nvar setStudyLoadingProgress = function setStudyLoadingProgress(progressId, progressData) {\n return {\n type: 'SET_STUDY_LOADING_PROGRESS',\n progressId: progressId,\n progressData: progressData\n };\n};\nvar clearStudyLoadingProgress = function clearStudyLoadingProgress(progressId) {\n return {\n type: 'CLEAR_STUDY_LOADING_PROGRESS',\n progressId: progressId\n };\n};\nvar setViewportSpecificData = function setViewportSpecificData(viewportIndex, data) {\n return {\n type: 'SET_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex,\n data: data\n };\n};\nvar clearViewportSpecificData = function clearViewportSpecificData(viewportIndex) {\n return {\n type: 'CLEAR_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex\n };\n};\nvar addPlugin = function addPlugin(plugin) {\n return {\n type: \"ADD_PLUGIN\",\n plugin: plugin\n };\n};\nvar setAvailableButtons = function setAvailableButtons(buttons) {\n return {\n type: 'SET_AVAILABLE_BUTTONS',\n buttons: buttons\n };\n};\nvar actions = {\n setToolActive: setToolActive,\n setViewportActive: setViewportActive,\n setLayout: setLayout,\n setStudyLoadingProgress: setStudyLoadingProgress,\n clearStudyLoadingProgress: clearStudyLoadingProgress,\n setViewportSpecificData: setViewportSpecificData,\n clearViewportSpecificData: clearViewportSpecificData,\n addPlugin: addPlugin,\n setAvailableButtons: setAvailableButtons\n};\n\nvar BaseLoadingListener =\n/*#__PURE__*/\nfunction () {\n function BaseLoadingListener(stack) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BaseLoadingListener);\n\n this.id = BaseLoadingListener.getNewId();\n this.stack = stack;\n this.startListening();\n this.statsItemsLimit = options.statsItemsLimit || 2;\n this.stats = {\n items: [],\n total: 0,\n elapsedTime: 0,\n speed: 0\n };\n this._setProgressData = options._setProgressData;\n this._clearProgressById = options._clearProgressById; // Register the start point to make it possible to calculate\n // bytes/s or frames/s when the first byte or frame is received\n\n this._addStatsData(0); // Update the progress before starting the download\n // to make it possible to update the UI\n\n\n this._updateProgress();\n }\n\n _createClass(BaseLoadingListener, [{\n key: \"_addStatsData\",\n value: function _addStatsData(value) {\n var date = new Date();\n var stats = this.stats;\n var items = stats.items;\n var newItem = {\n value: value,\n date: date\n };\n items.push(newItem);\n stats.total += newItem.value; // Remove items until it gets below the limit\n\n while (items.length > this.statsItemsLimit) {\n var item = items.shift();\n stats.total -= item.value;\n } // Update the elapsedTime (seconds) based on first and last\n // elements and recalculate the speed (bytes/s or frames/s)\n\n\n if (items.length > 1) {\n var oldestItem = items[0];\n stats.elapsedTime = (newItem.date.getTime() - oldestItem.date.getTime()) / 1000;\n stats.speed = (stats.total - oldestItem.value) / stats.elapsedTime;\n }\n }\n }, {\n key: \"_getProgressId\",\n value: function _getProgressId() {\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n return 'StackProgress:' + displaySetInstanceUid;\n }\n }, {\n key: \"_clearProgress\",\n value: function _clearProgress() {\n var progressId = this._getProgressId();\n\n this._clearProgressById(progressId);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n throw new Error('`startListening` must be implemented by child classes');\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n throw new Error('`stopListening` must be implemented by child classes');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stopListening();\n\n this._clearProgress();\n }\n }], [{\n key: \"getNewId\",\n value: function getNewId() {\n var timeSlice = new Date().getTime().toString().slice(-8);\n var randomNumber = parseInt(Math.random() * 1000000000);\n return timeSlice.toString() + randomNumber.toString();\n }\n }]);\n\n return BaseLoadingListener;\n}();\n\nvar DICOMFileLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener) {\n _inherits(DICOMFileLoadingListener, _BaseLoadingListener);\n\n function DICOMFileLoadingListener(stack, options) {\n var _this;\n\n _classCallCheck(this, DICOMFileLoadingListener);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DICOMFileLoadingListener).call(this, stack, options));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"_imageLoadProgressEventHandler\", function (e) {\n var eventData = e.detail;\n\n var dataSetUrl = _this._convertImageIdToDataSetUrl(eventData.imageId);\n\n var bytesDiff = eventData.loaded - _this._lastLoaded;\n\n if (!_this._dataSetUrl === dataSetUrl) {\n return;\n } // Add the bytes downloaded to the stats\n\n\n _this._addStatsData(bytesDiff); // Update the download progress\n\n\n _this._updateProgress(eventData); // Cache the last eventData.loaded value\n\n\n _this._lastLoaded = eventData.loaded;\n });\n\n _this._dataSetUrl = _this._getDataSetUrl(stack);\n _this._lastLoaded = 0; // Check how many instances has already been download (cached)\n\n _this._checkCachedData();\n\n return _this;\n }\n\n _createClass(DICOMFileLoadingListener, [{\n key: \"_checkCachedData\",\n value: function _checkCachedData() {\n var dataSet = external.cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(this._dataSetUrl);\n\n if (dataSet) {\n var dataSetLength = dataSet.byteArray.length;\n\n this._updateProgress({\n percentComplete: 100,\n loaded: dataSetLength,\n total: dataSetLength\n });\n }\n }\n }, {\n key: \"_getImageLoadProgressEventName\",\n value: function _getImageLoadProgressEventName() {\n // TODO: Add this event as a constant in Cornerstone\n return 'cornerstoneimageloadprogress.' + this.id;\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n this.imageLoadProgressEventHandler = this._imageLoadProgressEventHandle.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress(eventData) {\n var progressId = this._getProgressId();\n\n eventData = eventData || {};\n var progressData = {\n multiFrame: false,\n percentComplete: eventData.percentComplete,\n bytesLoaded: eventData.loaded,\n bytesTotal: eventData.total,\n bytesPerSecond: this.stats.speed\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_convertImageIdToDataSetUrl\",\n value: function _convertImageIdToDataSetUrl(imageId) {\n // Remove the prefix (\"dicomweb:\" or \"wadouri:\"\")\n imageId = imageId.replace(/^(dicomweb:|wadouri:)/i, ''); // Remove \"frame=999&\" from the imageId\n\n imageId = imageId.replace(/frame=\\d+&?/i, ''); // Remove the last \"&\" like in \"http://...?foo=1&bar=2&\"\n\n imageId = imageId.replace(/&$/, '');\n return imageId;\n }\n }, {\n key: \"_getDataSetUrl\",\n value: function _getDataSetUrl(stack) {\n var imageId = stack.imageIds[0];\n return this._convertImageIdToDataSetUrl(imageId);\n }\n }]);\n\n return DICOMFileLoadingListener;\n}(BaseLoadingListener);\n\nvar StackLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener2) {\n _inherits(StackLoadingListener, _BaseLoadingListener2);\n\n function StackLoadingListener(stack) {\n var _this2;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StackLoadingListener);\n\n options.statsItemsLimit = 20;\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(StackLoadingListener).call(this, stack, options));\n _this2.imageDataMap = _this2._convertImageIdsArrayToMap(stack.imageIds);\n _this2.framesStatus = _this2._createArray(stack.imageIds.length, false);\n _this2.loadedCount = 0; // Check how many instances has already been download (cached)\n\n _this2._checkCachedData();\n\n return _this2;\n }\n\n _createClass(StackLoadingListener, [{\n key: \"_convertImageIdsArrayToMap\",\n value: function _convertImageIdsArrayToMap(imageIds) {\n var imageIdsMap = new Map();\n\n for (var i = 0; i < imageIds.length; i++) {\n imageIdsMap.set(imageIds[i], {\n index: i,\n loaded: false\n });\n }\n\n return imageIdsMap;\n }\n }, {\n key: \"_createArray\",\n value: function _createArray(length, defaultValue) {\n // `new Array(length)` is an anti-pattern in javascript because its\n // funny API. Otherwise I would go for `new Array(length).fill(false)`\n var array = [];\n\n for (var i = 0; i < length; i++) {\n array[i] = defaultValue;\n }\n\n return array;\n }\n }, {\n key: \"_checkCachedData\",\n value: function _checkCachedData() {// const imageIds = this.stack.imageIds;\n // TODO: No way to check status of Promise.\n\n /*for(let i = 0; i < imageIds.length; i++) {\n const imageId = imageIds[i];\n const imagePromise = cornerstone.imageCache.getImageLoadObject(imageId).promise;\n if (imagePromise && (imagePromise.state() === 'resolved')) {\n this._updateFrameStatus(imageId, true);\n }\n }*/\n }\n }, {\n key: \"_getImageLoadedEventName\",\n value: function _getImageLoadedEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_LOADED, \".\").concat(this.id);\n }\n }, {\n key: \"_getImageCachePromiseRemoveEventName\",\n value: function _getImageCachePromiseRemoveEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, \".\").concat(this.id);\n }\n }, {\n key: \"_imageLoadedEventHandler\",\n value: function _imageLoadedEventHandler(e) {\n this._updateFrameStatus(e.detail.image.imageId, true);\n }\n }, {\n key: \"_imageCachePromiseRemovedEventHandler\",\n value: function _imageCachePromiseRemovedEventHandler(e) {\n this._updateFrameStatus(e.detail.imageId, false);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n this.imageLoadedEventHandler = this._imageLoadedEventHandler.bind(this);\n this.imageCachePromiseRemovedEventHandler = this._imageCachePromiseRemovedEventHandler.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.addEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.removeEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"_updateFrameStatus\",\n value: function _updateFrameStatus(imageId, loaded) {\n var imageData = this.imageDataMap.get(imageId);\n\n if (!imageData || imageData.loaded === loaded) {\n return;\n } // Add one more frame to the stats\n\n\n if (loaded) {\n this._addStatsData(1);\n }\n\n imageData.loaded = loaded;\n this.framesStatus[imageData.index] = loaded;\n this.loadedCount += loaded ? 1 : -1;\n\n this._updateProgress();\n }\n }, {\n key: \"_setProgressData\",\n value: function _setProgressData(progressId, progressData) {\n // TODO: This method (and _clearProgressById) need to access\n // the Redux store and should therefore be provided from the\n // application. I've added a workaround to pass this in through\n // the 'options' variable on instantiation, but this is really ugly.\n // We could consider making the StudyLoadingListener a higher-order\n // component which would set this stuff itself.\n throw new Error(\"The _setProgressData function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_clearProgressById\",\n value: function _clearProgressById(progressId) {\n throw new Error(\"The _clearProgressById function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var loadedFramesCount = this.loadedCount;\n var loadingFramesCount = totalFramesCount - loadedFramesCount;\n var percentComplete = Math.round(loadedFramesCount / totalFramesCount * 100);\n\n var progressId = this._getProgressId();\n\n var progressData = {\n multiFrame: true,\n totalFramesCount: totalFramesCount,\n loadedFramesCount: loadedFramesCount,\n loadingFramesCount: loadingFramesCount,\n percentComplete: percentComplete,\n framesPerSecond: this.stats.speed,\n framesStatus: this.framesStatus\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_logProgress\",\n value: function _logProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n var progressBar = '[';\n\n for (var i = 0; i < totalFramesCount; i++) {\n var ch = this.framesStatus[i] ? '|' : '.';\n progressBar += \"\".concat(ch);\n }\n\n progressBar += ']';\n log.info(\"\".concat(displaySetInstanceUid, \": \").concat(progressBar));\n }\n }]);\n\n return StackLoadingListener;\n}(BaseLoadingListener);\n\nvar StudyLoadingListener =\n/*#__PURE__*/\nfunction () {\n function StudyLoadingListener(options) {\n _classCallCheck(this, StudyLoadingListener);\n\n this.listeners = {};\n this.options = options;\n }\n\n _createClass(StudyLoadingListener, [{\n key: \"addStack\",\n value: function addStack(stack, stackMetaData) {\n var displaySetInstanceUid = stack.displaySetInstanceUid;\n\n if (!this.listeners[displaySetInstanceUid]) {\n var listener = this._createListener(stack, stackMetaData);\n\n if (listener) {\n this.listeners[displaySetInstanceUid] = listener;\n }\n }\n }\n }, {\n key: \"addStudy\",\n value: function addStudy(study) {\n var _this3 = this;\n\n study.displaySets.forEach(function (displaySet) {\n var stack = StackManager.findOrCreateStack(study, displaySet);\n\n _this3.addStack(stack, {\n isMultiFrame: displaySet.isMultiFrame\n });\n });\n }\n }, {\n key: \"addStudies\",\n value: function addStudies(studies) {\n var _this4 = this;\n\n if (!studies || !studies.length) {\n return;\n }\n\n studies.forEach(function (study) {\n return _this4.addStudy(study);\n });\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var displaySetInstanceUids = Object.keys(this.listeners);\n var length = displaySetInstanceUids.length;\n\n for (var i = 0; i < length; i++) {\n var displaySetInstanceUid = displaySetInstanceUids[i];\n var displaySet = this.listeners[displaySetInstanceUid];\n displaySet.destroy();\n }\n\n this.listeners = {};\n }\n }, {\n key: \"_createListener\",\n value: function _createListener(stack, stackMetaData) {\n var schema = this._getSchema(stack); // A StackLoadingListener can be created if it's wadors or not a multiframe\n // wadouri instance (single file) that means \"N\" files will have to be\n // downloaded where \"N\" is the number of frames. DICOMFileLoadingListener\n // is created only if it's a single DICOM file and there's no way to know\n // how many frames has already been loaded (bytes/s instead of frames/s).\n\n\n if (schema === 'wadors' || !stackMetaData.isMultiFrame) {\n return new StackLoadingListener(stack, this.options);\n } else {\n return new DICOMFileLoadingListener(stack, this.options);\n }\n }\n }, {\n key: \"_getSchema\",\n value: function _getSchema(stack) {\n var imageId = stack.imageIds[0];\n var colonIndex = imageId.indexOf(':');\n return imageId.substring(0, colonIndex);\n } // Singleton\n\n }], [{\n key: \"getInstance\",\n value: function getInstance(options) {\n if (!StudyLoadingListener._instance) {\n StudyLoadingListener._instance = new StudyLoadingListener(options);\n }\n\n return StudyLoadingListener._instance;\n }\n }]);\n\n return StudyLoadingListener;\n}();\n\n/**\n * Constants\n */\nvar PROPERTY_SEPARATOR = '.';\nvar ORDER_ASC = 'asc';\nvar ORDER_DESC = 'desc';\nvar MIN_COUNT = 0x00000000;\nvar MAX_COUNT = 0x7fffffff;\n/**\n * Class Definition\n */\n\nvar TypeSafeCollection =\n/*#__PURE__*/\nfunction () {\n function TypeSafeCollection() {\n _classCallCheck(this, TypeSafeCollection);\n\n this._operationCount = MIN_COUNT;\n this._elementList = [];\n this._handlers = Object.create(null);\n }\n /**\n * Private Methods\n */\n\n\n _createClass(TypeSafeCollection, [{\n key: \"_invalidate\",\n value: function _invalidate() {\n var count = this._operationCount;\n this._operationCount = count < MAX_COUNT ? count + 1 : MIN_COUNT;\n }\n }, {\n key: \"_elements\",\n value: function _elements(silent) {\n silent === true || this._operationCount;\n return this._elementList;\n }\n }, {\n key: \"_elementWithPayload\",\n value: function _elementWithPayload(payload, silent) {\n return this._elements(silent).find(function (item) {\n return item.payload === payload;\n });\n }\n }, {\n key: \"_elementWithId\",\n value: function _elementWithId(id, silent) {\n return this._elements(silent).find(function (item) {\n return item.id === id;\n });\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(event, data) {\n var handlers = this._handlers;\n\n if (event in handlers) {\n handlers = handlers[event];\n\n if (!(handlers instanceof Array)) {\n return;\n }\n\n for (var i = 0, limit = handlers.length; i < limit; ++i) {\n var handler = handlers[i];\n\n if (_isFunction(handler)) {\n handler.call(null, data);\n }\n }\n }\n }\n /**\n * Public Methods\n */\n\n }, {\n key: \"onInsert\",\n value: function onInsert(callback) {\n if (_isFunction(callback)) {\n var handlers = this._handlers.insert;\n\n if (!(handlers instanceof Array)) {\n handlers = [];\n this._handlers.insert = handlers;\n }\n\n handlers.push(callback);\n }\n }\n /**\n * Update the payload associated with the given ID to be the new supplied payload.\n * @param {string} id The ID of the entry that will be updated.\n * @param {any} payload The element that will replace the previous payload.\n * @returns {boolean} Returns true if the given ID is present in the collection, false otherwise.\n */\n\n }, {\n key: \"updateById\",\n value: function updateById(id, payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n if (found.id === id) {\n // set result to true since the ids match...\n result = true;\n\n this._invalidate();\n }\n } else {\n found = this._elementWithId(id, true);\n\n if (found) {\n found.payload = payload;\n result = true;\n\n this._invalidate();\n }\n }\n\n return result;\n }\n /**\n * Signal that the given element has been changed by notifying reactive data-source observers.\n * This method is basically a means to invalidate the inernal reactive data-source.\n * @param {any} payload The element that has been altered.\n * @returns {boolean} Returns true if the element is present in the collection, false otherwise.\n */\n\n }, {\n key: \"update\",\n value: function update(payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n result = true;\n\n this._invalidate();\n }\n\n return result;\n }\n /**\n * Insert an element in the collection. On success, the element ID (a unique string) is returned. On failure, returns null.\n * A failure scenario only happens when the given payload is already present in the collection. Note that NO exceptions are thrown!\n * @param {any} payload The element to be stored.\n * @returns {string} The ID of the inserted element or null if the element already exists...\n */\n\n }, {\n key: \"insert\",\n value: function insert(payload) {\n var id = null,\n found = this._elementWithPayload(payload, true);\n\n if (!found) {\n id = OHIF.utils.guid();\n\n this._elements(true).push({\n id: id,\n payload: payload\n });\n\n this._invalidate();\n\n this._trigger('insert', {\n id: id,\n data: payload\n });\n }\n\n return id;\n }\n /**\n * Remove all elements from the collection.\n * @returns {void} No meaningful value is returned.\n */\n\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var all = this._elements(true),\n length = all.length;\n\n for (var i = length - 1; i >= 0; i--) {\n var item = all[i];\n delete item.id;\n delete item.payload;\n all[i] = null;\n }\n\n all.splice(0, length);\n\n this._invalidate();\n }\n /**\n * Remove elements from the collection that match the criteria given in the property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} A list with all removed elements.\n */\n\n }, {\n key: \"remove\",\n value: function remove(propertyMap) {\n var found = this.findAllEntriesBy(propertyMap),\n foundCount = found.length,\n removed = [];\n\n if (foundCount > 0) {\n var all = this._elements(true);\n\n for (var i = foundCount - 1; i >= 0; i--) {\n var item = found[i];\n all.splice(item[2], 1);\n removed.push(item[0]);\n }\n\n this._invalidate();\n }\n\n return removed;\n }\n /**\n * Provides the ID of the given element inside the collection.\n * @param {any} payload The element being searched for.\n * @returns {string} The ID of the given element or undefined if the element is not present.\n */\n\n }, {\n key: \"getElementId\",\n value: function getElementId(payload) {\n var found = this._elementWithPayload(payload);\n\n return found && found.id;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"findById\",\n value: function findById(id) {\n var found = this._elementWithId(id);\n\n return found && found.payload;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfElement\",\n value: function indexOfElement(payload) {\n return this._elements().indexOf(this._elementWithPayload(payload, true));\n }\n /**\n * Provides the position of the element associated with the given ID in the internal list returning -1 if the element is not present.\n * @param {string} id The index of the element.\n * @returns {number} The position of the element associated with the given ID in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfId\",\n value: function indexOfId(id) {\n return this._elements().indexOf(this._elementWithId(id, true));\n }\n /**\n * Provides a list-like approach to the collection returning an element by index.\n * @param {number} index The index of the element.\n * @returns {any} If out of bounds, undefined is returned. Otherwise the element in the given position is returned.\n */\n\n }, {\n key: \"getElementByIndex\",\n value: function getElementByIndex(index) {\n var found = this._elements()[index >= 0 ? index : -1];\n\n return found && found.payload;\n }\n /**\n * Find an element by a criteria defined by the given callback function.\n * Attention!!! The reactive source will not be notified if no valid callback is supplied...\n * @param {function} callback A callback function which will define the search criteria. The callback\n * function will be passed the collection element, its ID and its index in this very order. The callback\n * shall return true when its criterea has been fulfilled.\n * @returns {any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"find\",\n value: function find(callback) {\n var _this = this;\n\n var found;\n\n if (_isFunction(callback)) {\n found = this._elements().find(function (item, index) {\n return callback.call(_this, item.payload, item.id, index);\n });\n }\n\n return found && found.payload;\n }\n /**\n * Find the first element that strictly matches the specified property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"findBy\",\n value: function findBy(propertyMap, options) {\n var found;\n\n if (_isObject(options)) {\n // if the \"options\" argument is provided and is a valid object,\n // it must be applied to the dataset before search...\n var all = this.all(options);\n\n if (all.length > 0) {\n if (_isObject(propertyMap)) {\n found = all.find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item);\n });\n } else {\n found = all[0]; // simply extract the first element...\n }\n }\n } else if (_isObject(propertyMap)) {\n found = this._elements().find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item.payload);\n });\n\n if (found) {\n found = found.payload;\n }\n }\n\n return found;\n }\n /**\n * Find all elements that strictly match the specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} An array of entries of all elements that match the given criteria. Each set in\n * in the array has the following format: [ elementData, elementId, elementIndex ].\n */\n\n }, {\n key: \"findAllEntriesBy\",\n value: function findAllEntriesBy(propertyMap) {\n var found = [];\n\n if (_isObject(propertyMap)) {\n this._elements().forEach(function (item, index) {\n if (_compareToPropertyMapStrict(propertyMap, item.payload)) {\n // Match! Add it to the found list...\n found.push([item.payload, item.id, index]);\n }\n });\n }\n\n return found;\n }\n /**\n * Find all elements that match a specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements that match the given criteria and sorted in the specified sorting order.\n */\n\n }, {\n key: \"findAllBy\",\n value: function findAllBy(propertyMap, options) {\n var found = this.findAllEntriesBy(propertyMap).map(function (item) {\n return item[0];\n }); // Only payload is relevant...\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(found, options.sort);\n }\n }\n\n return found;\n }\n /**\n * Executes the supplied callback function for each element of the collection.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {function} callback The callback function to be executed. The callback is passed the element,\n * its ID and its index in this very order.\n * @returns {void} Nothing is returned.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this2 = this;\n\n if (_isFunction(callback)) {\n this._elements().forEach(function (item, index) {\n callback.call(_this2, item.payload, item.id, index);\n });\n }\n }\n /**\n * Count the number of elements currently in the collection.\n * @returns {number} The current number of elements in the collection.\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this._elements().length;\n }\n /**\n * Returns a list with all elements of the collection optionally sorted by a sorting specifier criteria.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements stored in the collection.\n */\n\n }, {\n key: \"all\",\n value: function all(options) {\n var list = this._elements().map(function (item) {\n return item.payload;\n });\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(list, options.sort);\n }\n }\n\n return list;\n }\n }]);\n\n return TypeSafeCollection;\n}();\n/**\n * Utility Functions\n */\n\n/**\n * Test if supplied argument is a valid object for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\nfunction _isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n}\n/**\n * Test if supplied argument is a valid string for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isString(subject) {\n return typeof subject === 'string';\n}\n/**\n * Test if supplied argument is a valid function for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isFunction(subject) {\n return typeof subject === 'function';\n}\n/**\n * Shortcut for Object's prototype \"hasOwnProperty\" method.\n */\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Retrieve an object's property value by name. Composite property names (e.g., 'address.country.name') are accepted.\n * @param {Object} targetObject The object we want read the property from...\n * @param {String} propertyName The property to be read (e.g., 'address.street.name' or 'address.street.number'\n * to read object.address.street.name or object.address.street.number, respectively);\n * @returns {Any} Returns whatever the property holds or undefined if the property cannot be read or reached.\n */\n\nfunction _getPropertyValue(targetObject, propertyName) {\n var propertyValue; // undefined (the default return value)\n\n if (_isObject(targetObject) && _isString(propertyName)) {\n var fragments = propertyName.split(PROPERTY_SEPARATOR);\n var fragmentCount = fragments.length;\n\n if (fragmentCount > 0) {\n var firstFragment = fragments[0];\n var remainingFragments = fragmentCount > 1 ? fragments.slice(1).join(PROPERTY_SEPARATOR) : null;\n propertyValue = targetObject[firstFragment];\n\n if (remainingFragments !== null) {\n propertyValue = _getPropertyValue(propertyValue, remainingFragments);\n }\n }\n }\n\n return propertyValue;\n}\n/**\n * Compare a property map with a target object using strict comparison.\n * @param {Object} propertyMap The property map whose properties will be used for comparison. Composite\n * property names (e.g., 'address.country.name') will be tested against the \"resolved\" properties from the target object.\n * @param {Object} targetObject The target object whose properties will be tested.\n * @returns {boolean} Returns true if the properties match, false otherwise.\n */\n\n\nfunction _compareToPropertyMapStrict(propertyMap, targetObject) {\n var result = false; // \"for in\" loops do not thown exceptions for invalid data types...\n\n for (var propertyName in propertyMap) {\n if (_hasOwnProperty.call(propertyMap, propertyName)) {\n if (propertyMap[propertyName] !== _getPropertyValue(targetObject, propertyName)) {\n result = false;\n break;\n } else if (result !== true) {\n result = true;\n }\n }\n }\n\n return result;\n}\n/**\n * Checks if a sorting specifier is valid.\n * A valid sorting specifier consists of an array of arrays being each subarray a pair\n * in the format [\"property name\", \"sorting order\"].\n * The following exemple can be used to sort studies by \"date\"\" and use \"time\" to break ties in descending order.\n * [ [ 'study.date', 'desc' ], [ 'study.time', 'desc' ] ]\n * @param {Array} specifiers The sorting specifier to be tested.\n * @returns {boolean} Returns true if the specifiers are valid, false otherwise.\n */\n\n\nfunction _isValidSortingSpecifier(specifiers) {\n var result = true;\n\n if (specifiers instanceof Array && specifiers.length > 0) {\n for (var i = specifiers.length - 1; i >= 0; i--) {\n var item = specifiers[i];\n\n if (item instanceof Array) {\n var property = item[0];\n var order = item[1];\n\n if (_isString(property) && (order === ORDER_ASC || order === ORDER_DESC)) {\n continue;\n }\n }\n\n result = false;\n break;\n }\n }\n\n return result;\n}\n/**\n * Sorts an array based on sorting specifier options.\n * @param {Array} list The that needs to be sorted.\n * @param {Array} specifiers An array of specifiers. Please read isValidSortingSpecifier method definition for further details.\n * @returns {void} No value is returned. The array is sorted in place.\n */\n\n\nfunction _sortListBy(list, specifiers) {\n if (list instanceof Array && _isValidSortingSpecifier(specifiers)) {\n var specifierCount = specifiers.length;\n list.sort(function _sortListByCallback(a, b) {\n // callback name for stack traces...\n var index = 0;\n\n while (index < specifierCount) {\n var specifier = specifiers[index];\n var property = specifier[0];\n var order = specifier[1] === ORDER_DESC ? -1 : 1;\n\n var aValue = _getPropertyValue(a, property);\n\n var bValue = _getPropertyValue(b, property); // @TODO: should we check for the types being compared, like:\n // ~~ if (typeof aValue !== typeof bValue) continue;\n // Not sure because dates, for example, can be correctly compared to numbers...\n\n\n if (aValue < bValue) {\n return order * -1;\n }\n\n if (aValue > bValue) {\n return order * 1;\n }\n\n if (++index >= specifierCount) {\n return 0;\n }\n }\n });\n } else {\n throw new Error('Invalid Arguments');\n }\n}\n\n/**\n * Abstract class to fetch study metadata.\n */\n\nvar StudyMetadataSource =\n/*#__PURE__*/\nfunction () {\n function StudyMetadataSource() {\n _classCallCheck(this, StudyMetadataSource);\n }\n\n _createClass(StudyMetadataSource, [{\n key: \"getByInstanceUID\",\n\n /**\n * Get study metadata for a study with given study InstanceUID.\n * @param {String} studyInstanceUID Study InstanceUID.\n */\n value: function getByInstanceUID(studyInstanceUID) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::getByInstanceUID is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n /**\n * Load study info and study metadata for a given study into the viewer.\n * @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.\n */\n\n }, {\n key: \"loadStudy\",\n value: function loadStudy(study) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::loadStudy is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n }]);\n\n return StudyMetadataSource;\n}();\n\nvar classes = {\n MetadataProvider: MetadataProvider,\n CommandsManager: CommandsManager,\n HotkeysContext: HotkeysContext,\n HotkeysManager: HotkeysManager,\n ImageSet: ImageSet,\n StudyPrefetcher: StudyPrefetcher,\n StudyLoadingListener: StudyLoadingListener,\n StackLoadingListener: StackLoadingListener,\n DICOMFileLoadingListener: DICOMFileLoadingListener,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n //StudySummary,\n TypeSafeCollection: TypeSafeCollection,\n OHIFError: OHIFError,\n StudyMetadataSource: StudyMetadataSource\n};\n\nvar defaultButtons = [{\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: '/icons.svg#icon-tools-pan',\n active: false\n}, {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: '/icons.svg#icon-tools-zoom',\n active: false\n}, {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: '/icons.svg#icon-tools-measure-target',\n active: false\n}, {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: '/icons.svg#icon-tools-stack-scroll',\n active: false\n}, {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: '/icons.svg#icon-tools-reset',\n active: false\n}, {\n command: 'Wwwc',\n type: 'tool',\n text: 'Manual',\n svgUrl: '/icons.svg#icon-tools-levels',\n active: true\n}, {\n command: 'setWLPresetSoftTissue',\n type: 'command',\n text: 'Soft Tissue',\n svgUrl: '/icons.svg#icon-wl-soft-tissue',\n active: false\n}, {\n command: 'setWLPresetLung',\n type: 'command',\n text: 'Lung',\n svgUrl: '/icons.svg#icon-wl-lung',\n active: false\n}, {\n command: 'setWLPresetLiver',\n type: 'command',\n text: 'Liver',\n svgUrl: '/icons.svg#icon-wl-liver',\n active: false\n}, {\n command: 'setWLPresetBrain',\n type: 'command',\n text: 'Brain',\n svgUrl: '/icons.svg#icon-wl-brain',\n active: false\n}];\n\nvar tools = function tools() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n buttons: defaultButtons\n };\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'SET_TOOL_ACTIVE':\n var item = state.buttons.find(function (button) {\n return button.command === action.tool;\n });\n var buttons = [];\n\n if (item.type === 'tool') {\n buttons = state.buttons.map(function (button) {\n if (button.command === action.tool) {\n button.active = true;\n } else if (button.type === 'tool') {\n button.active = false;\n }\n\n return button;\n });\n }\n\n return {\n buttons: buttons\n };\n\n case 'SET_AVAILABLE_BUTTONS':\n return {\n buttons: action.buttons\n };\n\n default:\n return state;\n }\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_merge = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n});\n\nvar defaultState = {\n activeViewportIndex: 0,\n layout: {\n viewports: [{\n height: '100%',\n width: '100%'\n }]\n },\n viewportSpecificData: {}\n};\n\nvar viewports = function viewports() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var viewportSpecificData;\n\n switch (action.type) {\n case 'SET_VIEWPORT_ACTIVE':\n return Object.assign({}, state, {\n activeViewportIndex: action.viewportIndex\n });\n\n case 'SET_LAYOUT':\n return Object.assign({}, state, {\n layout: action.layout\n });\n\n case 'SET_VIEWPORT_SPECIFIC_DATA':\n var currentData = lodash_clonedeep(state.viewportSpecificData[action.viewportIndex]) || {};\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = lodash_merge({}, currentData, action.data);\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n case 'CLEAR_VIEWPORT_SPECIFIC_DATA':\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = {};\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$1 = {\n servers: []\n};\n\nvar servers = function servers() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$1;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_SERVER':\n var _servers = state.servers;\n\n var alreadyExists = _servers.find(function (server) {\n return server.id === action.server.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n _servers.push(action.server);\n\n if (_servers.length === 1) {\n _servers[0].active = true;\n }\n\n return Object.assign({}, state, {\n servers: _servers\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$2 = {\n progress: {},\n lastUpdated: null\n};\n\nvar loading = function loading() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$2;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var progress;\n var lastUpdated;\n\n switch (action.type) {\n case 'SET_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n progress[action.progressId] = action.progressData; // This is a workaround so we can easily identify changes\n // to the progress object without doing deep comparison.\n\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n case 'CLEAR_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n delete progress[action.progressId];\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n default:\n return state;\n }\n};\n\nvar PLUGIN_TYPES = {\n VIEWPORT: 'viewport'\n};\nvar plugins = {\n PLUGIN_TYPES: PLUGIN_TYPES,\n availablePlugins: []\n};\n\nvar defaultState$3 = {\n availablePlugins: []\n};\n\nvar plugins$1 = function plugins$$1() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$3;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_PLUGIN':\n var availablePlugins = state.availablePlugins;\n var alreadyExists = availablePlugins.find(function (plugin) {\n return plugin.id === action.plugin.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n availablePlugins.push({\n id: action.plugin.id,\n type: action.plugin.type\n }); // Not sure where else to put this. We shouldn't store functions in Redux, so I'll do this instead\n\n plugins.availablePlugins.push(action.plugin);\n return Object.assign({}, state, {\n availablePlugins: availablePlugins\n });\n\n default:\n return state;\n }\n};\n\nvar reducers = {\n tools: tools,\n viewports: viewports,\n servers: servers,\n loading: loading,\n plugins: plugins$1\n};\n\nvar redux = {\n reducers: reducers,\n actions: actions\n};\n\n// TODO: This is duplicated in TypeSafeCollection\nfunction isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n} // TODO: This is duplicated in TypeSafeCollection\n\n\nfunction isString(subject) {\n return typeof subject === 'string';\n} // Search for some string inside any object or array\n\n\nfunction search(object, query) {\n var property = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var result = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // Create the search pattern\n var pattern = new RegExp(query.trim(), 'i');\n Object.keys(object).forEach(function (key) {\n var item = object[key]; // Stop here if item is empty\n\n if (!item) {\n return;\n } // Get the value to be compared\n\n\n var value = isString(property) ? item[property] : item; // Check if the value match the pattern\n\n if (isString(value) && pattern.test(value)) {\n // Add the current item to the result\n result.push(item);\n }\n\n if (isObject(item)) {\n // Search recursively the item if the current item is an object\n search(item, query, property, result);\n }\n }); // Return the found items\n\n return result;\n} // Encode any string into a safe format for HTML id attribute\n\n\nfunction encodeId(input) {\n var string = input && input.toString ? input.toString() : input; // Return an underscore if the given string is empty or if it's not a string\n\n if (string === '' || typeof string !== 'string') {\n return '_';\n } // Create a converter to replace non accepted chars\n\n\n var converter = function converter(match) {\n return '_' + match[0].charCodeAt(0).toString(16) + '_';\n }; // Encode the given string and return it\n\n\n return string.replace(/[^a-zA-Z0-9-]/g, converter);\n}\n\nvar string = {\n search: search,\n encodeId: encodeId\n};\n\n// Transforms a shallow object with keys separated by \".\" into a nested object\nfunction getNestedObject(shallowObject) {\n var nestedObject = {};\n\n for (var key in shallowObject) {\n if (!shallowObject.hasOwnProperty(key)) continue;\n var value = shallowObject[key];\n var propertyArray = key.split('.');\n var currentObject = nestedObject;\n\n while (propertyArray.length) {\n var currentProperty = propertyArray.shift();\n\n if (!propertyArray.length) {\n currentObject[currentProperty] = value;\n } else {\n if (!currentObject[currentProperty]) {\n currentObject[currentProperty] = {};\n }\n\n currentObject = currentObject[currentProperty];\n }\n }\n }\n\n return nestedObject;\n}\n\nfunction getShallowObject(nestedObject) {\n var shallowObject = {};\n\n var putValues = function putValues(baseKey, nestedObject, resultObject) {\n for (var key in nestedObject) {\n if (!nestedObject.hasOwnProperty(key)) continue;\n var currentKey = baseKey ? \"\".concat(baseKey, \".\").concat(key) : key;\n var currentValue = nestedObject[key];\n\n if (_typeof(currentValue) === 'object') {\n if (currentValue instanceof Array) {\n currentKey += '[]';\n }\n\n putValues(currentKey, currentValue, resultObject);\n } else {\n resultObject[currentKey] = currentValue;\n }\n }\n };\n\n putValues('', nestedObject, shallowObject);\n return shallowObject;\n}\nvar object = {\n getNestedObject: getNestedObject,\n getShallowObject: getShallowObject\n};\n\nvar validate = createCommonjsModule(function (module, exports) {\n/*!\n * validate.js 0.12.0\n *\n * (c) 2013-2017 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n ;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 12,\n patch: 0,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n v.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", {attr: attribute}));\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false;\n\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n }\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(commonjsGlobal,\n exports,\n module,\n null);\n});\n\nvalidate.validators.equals = function (value, options, key, attributes) {\n if (options && value !== options.value) {\n return key + 'must equal ' + options.value;\n }\n};\n\nvalidate.validators.doesNotEqual = function (value, options, key) {\n if (options && value === options.value) {\n return key + 'cannot equal ' + options.value;\n }\n};\n\nvalidate.validators.contains = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) === -1) {\n return key + 'must contain ' + options.value;\n }\n};\n\nvalidate.validators.doesNotContain = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) !== -1) {\n return key + 'cannot contain ' + options.value;\n }\n};\n\nvalidate.validators.startsWith = function (value, options, key) {\n if (options && value.startsWith && !value.startsWith(options.value)) {\n return key + 'must start with ' + options.value;\n }\n};\n\nvalidate.validators.endsWith = function (value, options, key) {\n if (options && value.endsWith && !value.endsWith(options.value)) {\n return key + 'must end with ' + options.value;\n }\n};\n\n/**\n * Import Constants\n */\n\nvar StudySummary = metadata.StudySummary,\n InstanceMetadata$1 = metadata.InstanceMetadata;\n/**\n * Match a Metadata instance against rules using Validate.js for validation.\n * @param {StudySummary|InstanceMetadata} metadataInstance Metadata instance object\n * @param {Array} rules Array of MatchingRules instances (StudyMatchingRule|SeriesMatchingRule|ImageMatchingRule) for the match\n * @return {Object} Matching Object with score and details (which rule passed or failed)\n */\n\nvar match = function match(metadataInstance, rules) {\n // Make sure the supplied data is valid.\n if (!(metadataInstance instanceof StudySummary || metadataInstance instanceof InstanceMetadata$1)) {\n throw new OHIFError('HPMatcher::match metadataInstance must be an instance of StudySummary or InstanceMetadata');\n }\n\n var options = {\n format: 'grouped'\n };\n var details = {\n passed: [],\n failed: []\n };\n var requiredFailed = false;\n var score = 0;\n rules.forEach(function (rule) {\n var attribute = rule.attribute;\n var customAttributeExists = metadataInstance.customAttributeExists(attribute); // If the metadataInstance we are testing (e.g. study, series, or instance MetadataInstance) do\n // not contain the attribute specified in the rule, check whether or not they have been\n // defined in the CustomAttributeRetrievalCallbacks Object.\n\n if (!customAttributeExists && HP.CustomAttributeRetrievalCallbacks.hasOwnProperty(attribute)) {\n var customAttribute = HP.CustomAttributeRetrievalCallbacks[attribute];\n metadataInstance.setCustomAttribute(attribute, customAttribute.callback(metadataInstance));\n customAttributeExists = true;\n } // Format the constraint as required by Validate.js\n\n\n var testConstraint = _defineProperty({}, attribute, rule.constraint); // Create a single attribute object to be validated, since metadataInstance is an\n // instance of Metadata (StudyMetadata, SeriesMetadata or InstanceMetadata)\n\n\n var attributeValue = customAttributeExists ? metadataInstance.getCustomAttribute(attribute) : metadataInstance.getTagValue(attribute);\n\n var attributeMap = _defineProperty({}, attribute, attributeValue); // Use Validate.js to evaluate the constraints on the specified metadataInstance\n\n\n var errorMessages;\n\n try {\n errorMessages = validate(attributeMap, testConstraint, [options]);\n } catch (e) {\n errorMessages = ['Something went wrong during validation.', e];\n }\n\n if (!errorMessages) {\n // If no errorMessages were returned, then validation passed.\n // Add the rule's weight to the total score\n score += parseInt(rule.weight, 10); // Log that this rule passed in the matching details object\n\n details.passed.push({\n rule: rule\n });\n } else {\n // If errorMessages were present, then validation failed\n // If the rule that failed validation was Required, then\n // mark that a required Rule has failed\n if (rule.required) {\n requiredFailed = true;\n } // Log that this rule failed in the matching details object\n // and include any error messages\n\n\n details.failed.push({\n rule: rule,\n errorMessages: errorMessages\n });\n }\n }); // If a required Rule has failed Validation, set the matching score to zero\n\n if (requiredFailed) {\n score = 0;\n }\n\n return {\n score: score,\n details: details,\n requiredFailed: requiredFailed\n };\n};\n\nvar HPMatcher = {\n match: match\n};\n\n// Sorts an array by score\nvar sortByScore = function sortByScore(arr) {\n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n};\n\n/**\n * Import Constants\n */\n\nvar StudyMetadata$1 = metadata.StudyMetadata,\n InstanceMetadata$2 = metadata.InstanceMetadata,\n StudySummary$1 = metadata.StudySummary;\n\n\nvar ABSTRACT_PRIOR_VALUE = 'abstractPriorValue';\n/*Meteor.startup(() => {\n HP.addCustomViewportSetting('wlPreset', 'Window/Level Preset', Object.create(null), (element, optionValue) => {\n if (_.findWhere(OHIF.viewer.wlPresets, { id: optionValue })) {\n OHIF.viewerbase.wlPresets.applyWLPreset(optionValue, element);\n }\n });\n});*/\n// TODO:\n// Should have ProtocolStore as an input to constructor\n// Something to update current HP and current stage 'globally'\n//\n//\n// Should allow user to provide:\n// functions for adding /\n\nvar ProtocolEngine =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n * @param {Array} studies Array of study metadata\n * @param {Map} priorStudies Map of prior studies\n * @param {Object} studyMetadataSource Instance of StudyMetadataSource (ohif-viewerbase) Object to get study metadata\n */\n function ProtocolEngine(studies, priorStudies, studyMetadataSource) {\n _classCallCheck(this, ProtocolEngine);\n\n _defineProperty(this, \"matchedProtocols\", new Set());\n\n _defineProperty(this, \"matchedProtocolScores\", new Map());\n\n // -----------\n // Type Validations\n if (!(studyMetadataSource instanceof StudyMetadataSource)) {\n throw new OHIFError('ProtocolEngine::constructor studyMetadataSource is not an instance of StudyMetadataSource');\n }\n\n if (!(studies instanceof Array) && !studies.every(function (study) {\n return study instanceof StudyMetadata$1;\n })) {\n throw new OHIFError(\"ProtocolEngine::constructor studies is not an array or it's items are not instances of StudyMetadata\");\n } // --------------\n // Initialization\n\n\n this.studies = studies;\n this.priorStudies = priorStudies instanceof Map ? priorStudies : new Map();\n this.studyMetadataSource = studyMetadataSource; // Put protocol engine in a known state\n\n this.reset(); // Create an array for new stage ids to be stored\n // while editing a stage\n\n this.newStageIds = [];\n }\n /**\n * Resets the ProtocolEngine to the best match\n */\n\n\n _createClass(ProtocolEngine, [{\n key: \"reset\",\n value: function reset() {\n var protocol = this.getBestProtocolMatch();\n this.setHangingProtocol(protocol);\n }\n /**\n * Retrieves the current Stage from the current Protocol and stage index\n *\n * @returns {*} The Stage model for the currently displayed Stage\n */\n\n }, {\n key: \"getCurrentStageModel\",\n value: function getCurrentStageModel() {\n return this.protocol.stages[this.stage];\n }\n /**\n * Finds the best protocols from Protocol Store, matching each protocol matching rules\n * with the given study. The best protocol are orded by score and returned in an array\n * @param {Object} study StudyMetadata instance object\n * @return {Array} Array of match objects or an empty array if no match was found\n * Each match object has the score of the matching and the matched\n * protocol\n */\n\n }, {\n key: \"findMatchByStudy\",\n value: function findMatchByStudy(study) {\n log$1.trace('ProtocolEngine::findMatchByStudy');\n var matched = [];\n var studyInstance = study.getFirstInstance(); // Set custom attribute for study metadata\n\n var numberOfAvailablePriors = this.getNumberOfAvailablePriors(study.getObjectID());\n HP.ProtocolStore.getProtocol().forEach(function (protocol) {\n // Clone the protocol's protocolMatchingRules array\n // We clone it so that we don't accidentally add the\n // numberOfPriorsReferenced rule to the Protocol itself.\n var rules = protocol.protocolMatchingRules.slice();\n\n if (!rules) {\n return;\n } // Check if the study has the minimun number of priors used by the protocol.\n\n\n var numberOfPriorsReferenced = protocol.getNumberOfPriorsReferenced();\n\n if (numberOfPriorsReferenced > numberOfAvailablePriors) {\n return;\n } // Run the matcher and get matching details\n\n\n var matchedDetails = HPMatcher.match(studyInstance, rules);\n var score = matchedDetails.score; // The protocol matched some rule, add it to the matched list\n\n if (score > 0) {\n matched.push({\n score: score,\n protocol: protocol\n });\n }\n }); // If no matches were found, select the default protocol\n\n if (!matched.length) {\n var defaultProtocol = HP.ProtocolStore.getProtocol('defaultProtocol');\n return [{\n score: 1,\n protocol: defaultProtocol\n }];\n } // Sort the matched list by score\n\n\n sortByScore(matched);\n log$1.trace('ProtocolEngine::findMatchByStudy matched', matched);\n return matched;\n }\n }, {\n key: \"_clearMatchedProtocols\",\n value: function _clearMatchedProtocols() {\n this.matchedProtocols.clear();\n this.matchedProtocolScores.clear();\n }\n /**\n * Populates the MatchedProtocols Collection by running the matching procedure\n */\n\n }, {\n key: \"updateProtocolMatches\",\n value: function updateProtocolMatches() {\n var _this = this;\n\n log$1.trace('ProtocolEngine::updateProtocolMatches'); // Clear all data currently in matchedProtocols\n\n this._clearMatchedProtocols(); // For each study, find the matching protocols\n\n\n this.studies.forEach(function (study) {\n var matched = _this.findMatchByStudy(study); // For each matched protocol, check if it is already in MatchedProtocols\n\n\n matched.forEach(function (matchedDetail) {\n var protocol = matchedDetail.protocol;\n\n if (!protocol) {\n return;\n } // If it is not already in the MatchedProtocols Collection, insert it with its score\n\n\n if (!_this.matchedProtocols.has(protocol)) {\n log$1.trace('ProtocolEngine::updateProtocolMatches inserting protocol match', matchedDetail);\n\n _this.matchedProtocols.add(protocol);\n\n _this.matchedProtocolScores[protocol.id] = matchedDetail.score;\n }\n });\n });\n }\n }, {\n key: \"_getHighestScoringProtocol\",\n value: function _getHighestScoringProtocol() {\n var highestScoringProtocolId = ProtocolEngine._largestKeyByValue(this.matchedProtocolScores);\n\n return this.matchedProtocols[highestScoringProtocolId];\n }\n /**\n * Return the best matched Protocol to the current study or set of studies\n * @returns {*}\n */\n\n }, {\n key: \"getBestProtocolMatch\",\n value: function getBestProtocolMatch() {\n // Run the matching to populate matchedProtocols Set and Map\n this.updateProtocolMatches(); // Retrieve the highest scoring Protocol\n\n var bestMatch = this._getHighestScoringProtocol();\n\n log$1.trace('ProtocolEngine::getBestProtocolMatch bestMatch', bestMatch);\n return bestMatch;\n }\n /**\n * Get the number of prior studies supplied in the priorStudies map property.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {number} The number of available prior studies with the same PatientID\n */\n\n }, {\n key: \"getNumberOfAvailablePriors\",\n value: function getNumberOfAvailablePriors(studyObjectID) {\n return this.getAvailableStudyPriors(studyObjectID).length;\n }\n /**\n * Get the array of prior studies from a specific study.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {Array} The array of available priors or an empty array\n */\n\n }, {\n key: \"getAvailableStudyPriors\",\n value: function getAvailableStudyPriors(studyObjectID) {\n var priors = this.priorStudies.get(studyObjectID);\n return priors instanceof Array ? priors : [];\n } // Match images given a list of Studies and a Viewport's image matching reqs\n\n }, {\n key: \"matchImages\",\n value: function matchImages(viewport, viewportIndex) {\n var _this2 = this;\n\n log$1.trace('ProtocolEngine::matchImages');\n var studyMatchingRules = viewport.studyMatchingRules,\n seriesMatchingRules = viewport.seriesMatchingRules,\n instanceMatchingRules = viewport.imageMatchingRules;\n var matchingScores = [];\n var currentStudy = this.studies[0]; // @TODO: Should this be: this.studies[this.currentStudy] ???\n\n var firstInstance = currentStudy.getFirstInstance();\n var highestStudyMatchingScore = 0;\n var highestSeriesMatchingScore = 0; // Set custom attribute for study metadata and it's first instance\n\n currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n } // Only used if study matching rules has abstract prior values defined...\n\n\n var priorStudies;\n studyMatchingRules.forEach(function (rule) {\n if (rule.attribute === ABSTRACT_PRIOR_VALUE) {\n var validatorType = Object.keys(rule.constraint)[0];\n var validator = Object.keys(rule.constraint[validatorType])[0];\n var abstractPriorValue = rule.constraint[validatorType][validator];\n abstractPriorValue = parseInt(abstractPriorValue, 10); // TODO: Restrict or clarify validators for abstractPriorValue?\n // No need to call it more than once...\n\n if (!priorStudies) {\n priorStudies = _this2.getAvailableStudyPriors(currentStudy.getObjectID());\n } // TODO: Revisit this later: What about two studies with the same\n // study date?\n\n\n var priorStudy;\n\n if (abstractPriorValue === -1) {\n priorStudy = priorStudies[priorStudies.length - 1];\n } else {\n var studyIndex = Math.max(abstractPriorValue - 1, 0);\n priorStudy = priorStudies[studyIndex];\n } // Invalid data\n\n\n if (!(priorStudy instanceof StudyMetadata$1) && !(priorStudy instanceof StudySummary$1)) {\n return;\n }\n\n var priorStudyObjectID = priorStudy.getObjectID(); // Check if study metadata is already in studies list\n\n if (_this2.studies.find(function (study) {\n return study.getObjectID() === priorStudyObjectID;\n })) {\n return;\n } // Get study metadata if necessary and load study in the viewer (each viewer should provide it's own load study method)\n\n\n _this2.studyMetadataSource.loadStudy(priorStudy).then(function (studyMetadata) {\n // Set the custom attribute abstractPriorValue for the study metadata\n studyMetadata.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue); // Also add custom attribute\n\n var firstInstance = studyMetadata.getFirstInstance();\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue);\n } // Insert the new study metadata\n\n\n _this2.studies.push(studyMetadata); // Update the viewport to refresh layout manager with new study\n\n\n _this2.updateViewports(viewportIndex);\n }, function (error) {\n log$1.warn(error);\n throw new OHIFError(\"ProtocolEngine::matchImages could not get study metadata for the Study with the following ObjectID: \".concat(priorStudyObjectID));\n });\n } // TODO: Add relative Date / time\n\n });\n this.studies.forEach(function (study) {\n var studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {\n return;\n }\n\n highestStudyMatchingScore = studyMatchDetails.score;\n study.forEachSeries(function (series) {\n var seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {\n return;\n }\n\n highestSeriesMatchingScore = seriesMatchDetails.score;\n series.forEachInstance(function (instance, index) {\n // This tests to make sure there is actually image data in this instance\n // TODO: Change this when we add PDF and MPEG support\n // See https://ohiforg.atlassian.net/browse/LT-227\n // sopClassUid = x00080016\n // rows = x00280010\n if (!isImage(instance.getTagValue('x00080016')) && !instance.getTagValue('x00280010')) {\n return;\n }\n\n var instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (instanceMatchDetails.requiredFailed === true) {\n return;\n }\n\n var matchDetails = {\n passed: [],\n failed: []\n };\n matchDetails.passed = matchDetails.passed.concat(instanceMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(seriesMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(studyMatchDetails.details.passed);\n matchDetails.failed = matchDetails.failed.concat(instanceMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed);\n var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score;\n var currentSOPInstanceUID = instance.getSOPInstanceUID();\n var imageDetails = {\n studyInstanceUid: study.getStudyInstanceUID(),\n seriesInstanceUid: series.getSeriesInstanceUID(),\n sopInstanceUid: currentSOPInstanceUID,\n currentImageIdIndex: index,\n matchingScore: totalMatchScore,\n matchDetails: matchDetails,\n sortingInfo: {\n score: totalMatchScore,\n study: instance.getTagValue('x00080020') + instance.getTagValue('x00080030'),\n // StudyDate = x00080020 StudyTime = x00080030\n series: parseInt(instance.getTagValue('x00200011')),\n // TODO: change for seriesDateTime SeriesNumber = x00200011\n instance: parseInt(instance.getTagValue('x00200013')) // TODO: change for acquisitionTime InstanceNumber = x00200013\n\n }\n }; // Find the displaySet\n\n var displaySet = study.findDisplaySet(function (displaySet) {\n return displaySet.images.find(function (image) {\n return image.getSOPInstanceUID() === currentSOPInstanceUID;\n });\n }); // If the instance was found, set the displaySet ID\n\n if (displaySet) {\n imageDetails.displaySetInstanceUid = displaySet.getUID();\n imageDetails.imageId = instance.getImageId();\n }\n\n matchingScores.push(imageDetails);\n });\n });\n }); // Sort the matchingScores\n\n var sortingFunction = sortBy({\n name: 'score',\n reverse: true\n }, {\n name: 'study',\n reverse: true\n }, {\n name: 'instance'\n }, {\n name: 'series'\n });\n matchingScores.sort(function (a, b) {\n return sortingFunction(a.sortingInfo, b.sortingInfo);\n });\n var bestMatch = matchingScores[0];\n log$1.trace('ProtocolEngine::matchImages bestMatch', bestMatch);\n return {\n bestMatch: bestMatch,\n matchingScores: matchingScores\n };\n }\n /**\n * Rerenders viewports that are part of the current ProtocolEngine's LayoutManager\n * using the matching rules internal to each viewport.\n *\n * If this function is provided the index of a viewport, only the specified viewport\n * is rerendered.\n *\n * @param viewportIndex\n */\n\n }, {\n key: \"updateViewports\",\n value: function updateViewports(viewportIndex) {\n var _this3 = this;\n\n log$1.trace(\"ProtocolEngine::updateViewports viewportIndex: \".concat(viewportIndex)); // Make sure we have an active protocol with a non-empty array of display sets\n\n if (!this.getNumProtocolStages()) {\n return;\n } // Retrieve the current stage\n\n\n var stageModel = this.getCurrentStageModel(); // If the current stage does not fulfill the requirements to be displayed,\n // stop here.\n\n if (!stageModel || !stageModel.viewportStructure || !stageModel.viewports || !stageModel.viewports.length) {\n return;\n } // Retrieve the layoutTemplate associated with the current display set's viewport structure\n // If no such template name exists, stop here.\n\n\n var layoutTemplateName = stageModel.viewportStructure.getLayoutTemplateName();\n\n if (!layoutTemplateName) {\n return;\n } // Retrieve the properties associated with the current display set's viewport structure template\n // If no such layout properties exist, stop here.\n\n\n var layoutProps = stageModel.viewportStructure.properties;\n\n if (!layoutProps) {\n return;\n } // Create an empty array to store the output viewportData\n\n\n var viewportData = []; // Empty the matchDetails associated with the ProtocolEngine.\n // This will be used to store the pass/fail details and score\n // for each of the viewport matching procedures\n\n this.matchDetails = []; // Loop through each viewport\n\n stageModel.viewports.forEach(function (viewport, viewportIndex) {\n var details = _this3.matchImages(viewport, viewportIndex);\n\n _this3.matchDetails[viewportIndex] = details; // Convert any YES/NO values into true/false for Cornerstone\n\n var cornerstoneViewportParams = {}; // Cache viewportSettings keys\n\n var viewportSettingsKeys = Object.keys(viewport.viewportSettings);\n viewportSettingsKeys.forEach(function (key) {\n var value = viewport.viewportSettings[key];\n\n if (value === 'YES') {\n value = true;\n } else if (value === 'NO') {\n value = false;\n }\n\n cornerstoneViewportParams[key] = value;\n }); // imageViewerViewports occasionally needs relevant layout data in order to set\n // the element style of the viewport in question\n\n var currentViewportData = _objectSpread({\n viewportIndex: viewportIndex,\n viewport: cornerstoneViewportParams\n }, layoutProps);\n\n var customSettings = [];\n viewportSettingsKeys.forEach(function (id) {\n var setting = HP.CustomViewportSettings[id];\n\n if (!setting) {\n return;\n }\n\n customSettings.push({\n id: id,\n value: viewport.viewportSettings[id]\n });\n });\n\n currentViewportData.renderedCallback = function (element) {\n //console.log('renderedCallback for ' + element.id);\n customSettings.forEach(function (customSetting) {\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback Applying custom setting: \".concat(customSetting.id));\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback with value: \".concat(customSetting.value));\n var setting = HP.CustomViewportSettings[customSetting.id];\n setting.callback(element, customSetting.value);\n });\n };\n\n var currentMatch = details.bestMatch;\n var currentPosition = 1;\n var scoresLength = details.matchingScores.length;\n\n while (currentPosition < scoresLength && viewportData.find(function (a) {\n return a.imageId === currentMatch.imageId;\n })) {\n currentMatch = details.matchingScores[currentPosition];\n currentPosition++;\n }\n\n if (currentMatch && currentMatch.imageId) {\n currentViewportData.studyInstanceUid = currentMatch.studyInstanceUid;\n currentViewportData.seriesInstanceUid = currentMatch.seriesInstanceUid;\n currentViewportData.sopInstanceUid = currentMatch.sopInstanceUid;\n currentViewportData.currentImageIdIndex = currentMatch.currentImageIdIndex;\n currentViewportData.displaySetInstanceUid = currentMatch.displaySetInstanceUid;\n currentViewportData.imageId = currentMatch.imageId;\n } // @TODO Why should we throw an exception when a best match is not found? This was aborting the whole process.\n // if (!currentViewportData.displaySetInstanceUid) {\n // throw new OHIFError('ProtocolEngine::updateViewports No matching display set found?');\n // }\n\n\n viewportData.push(currentViewportData);\n });\n this.LayoutManager.layoutTemplateName = layoutTemplateName;\n this.LayoutManager.layoutProps = layoutProps;\n this.LayoutManager.viewportData = viewportData;\n\n if (viewportIndex !== undefined && viewportData[viewportIndex]) {\n this.LayoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, viewportData[viewportIndex]);\n } else {\n this.LayoutManager.updateViewports();\n }\n }\n /**\n * Sets the current Hanging Protocol to the specified Protocol\n * An optional argument can also be used to prevent the updating of the Viewports\n *\n * @param newProtocol\n * @param updateViewports\n */\n\n }, {\n key: \"setHangingProtocol\",\n value: function setHangingProtocol(newProtocol) {\n var updateViewports = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log$1.trace('ProtocolEngine::setHangingProtocol newProtocol', newProtocol);\n log$1.trace(\"ProtocolEngine::setHangingProtocol updateViewports = \".concat(updateViewports)); // Reset the array of newStageIds\n\n this.newStageIds = [];\n\n if (HP.Protocol.prototype.isPrototypeOf(newProtocol)) {\n this.protocol = newProtocol;\n } else {\n this.protocol = new HP.Protocol();\n this.protocol.fromObject(newProtocol);\n }\n\n this.stage = 0; // Update viewports by default\n\n if (updateViewports) {\n this.updateViewports();\n } //Session.set('HangingProtocolName', this.protocol.name);\n //Session.set('HangingProtocolStage', this.stage);\n\n }\n /**\n * Check if the next stage is available\n * @return {Boolean} True if next stage is available or false otherwise\n */\n\n }, {\n key: \"isNextStageAvailable\",\n value: function isNextStageAvailable() {\n var numberOfStages = this.getNumProtocolStages();\n return this.stage + 1 < numberOfStages;\n }\n /**\n * Check if the previous stage is available\n * @return {Boolean} True if previous stage is available or false otherwise\n */\n\n }, {\n key: \"isPreviousStageAvailable\",\n value: function isPreviousStageAvailable() {\n return this.stage - 1 >= 0;\n }\n /**\n * Changes the current stage to a new stage index in the display set sequence.\n * It checks if the next stage exists.\n *\n * @param {Integer} stageAction An integer value specifying wheater next (1) or previous (-1) stage\n * @return {Boolean} True if new stage has set or false, otherwise\n */\n\n }, {\n key: \"setCurrentProtocolStage\",\n value: function setCurrentProtocolStage(stageAction) {\n // Check if previous or next stage is available\n if (stageAction === -1 && !this.isPreviousStageAvailable()) {\n return false;\n } else if (stageAction === 1 && !this.isNextStageAvailable()) {\n return false;\n } // Sets the new stage\n\n\n this.stage += stageAction; // Log the new stage\n\n log$1.trace(\"ProtocolEngine::setCurrentProtocolStage stage = \".concat(this.stage)); // Set stage Session variable for reactivity\n //Session.set('HangingProtocolStage', this.stage);\n // Since stage has changed, we need to update the viewports\n // and redo matchings\n\n this.updateViewports(); // Everything went well\n\n return true;\n }\n /**\n * Retrieves the number of Stages in the current Protocol or\n * undefined if no protocol or stages are set\n */\n\n }, {\n key: \"getNumProtocolStages\",\n value: function getNumProtocolStages() {\n if (!this.protocol || !this.protocol.stages || !this.protocol.stages.length) {\n return;\n }\n\n return this.protocol.stages.length;\n }\n /**\n * Switches to the next protocol stage in the display set sequence\n */\n\n }, {\n key: \"nextProtocolStage\",\n value: function nextProtocolStage() {\n log$1.trace('ProtocolEngine::nextProtocolStage');\n\n if (!this.setCurrentProtocolStage(1)) {\n log$1.trace('ProtocolEngine::nextProtocolStage failed');\n }\n }\n /**\n * Switches to the previous protocol stage in the display set sequence\n */\n\n }, {\n key: \"previousProtocolStage\",\n value: function previousProtocolStage() {\n log$1.trace('ProtocolEngine::previousProtocolStage');\n\n if (!this.setCurrentProtocolStage(-1)) {\n log$1.trace('ProtocolEngine::previousProtocolStage failed');\n }\n }\n }]);\n\n return ProtocolEngine;\n}();\n\nvar viewer = {};\nvar OHIF$1 = {\n viewer: viewer,\n utils: utils,\n studies: studies,\n redux: redux,\n classes: classes,\n metadata: metadata,\n hotkeys: hotkeys,\n header: header,\n cornerstone: cornerstone$1,\n string: string,\n ui: ui,\n user: user,\n object: object,\n commands: commands,\n log: log$1,\n external: external,\n DICOMWeb: DICOMWeb,\n plugins: plugins\n};\n\nexport default OHIF$1;\nexport { viewer, utils, studies, redux, classes, metadata, hotkeys, header, cornerstone$1 as cornerstone, string, ui, user, object, commands, log$1 as log, DICOMWeb, plugins, OHIF$1 as OHIF };\n//# sourceMappingURL=index.es.js.map\n","/*! dicom-parser - 1.8.2 - 2018-12-05 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return Z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(e).length;default:if(n)return Z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:f>223?3:f>191?2:1;if(i+h<=r)switch(h){case 1:f<128&&(u=f);break;case 2:128==(192&(a=e[i+1]))&&(l=(31&f)<<6|63&a)>127&&(u=l);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(l=(15&f)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&f)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return D(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return S(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},l.prototype.compare=function(e,t,r,n,i){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),f=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return y(this,e,t,r);case\"utf8\":case\"utf-8\":return b(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,a){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function B(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function U(e,t,r,n,a){return a||B(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||B(e,0,r,8),i.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return U(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return U(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function j(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var l=i(s.prototype),f=0;f1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=l}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+f[r].offset+8,f[r].length);for(var c=l(f,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;y.WritableState=_;var f=r(6);f.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,f=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(f||0===f)?f:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?l(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(2),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,l=!0;r;)i[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;i.allBuffers=l,b(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:f.length,f,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)})}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}f.inherits(y,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=g.destroy,y.prototype._undestroy=g.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,l,f;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(f=r.slice()).length,l=0;l0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var l=n[r],f=o(i,l);if(void 0===f)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,f);return(0,a.default)(e,t,f,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function f(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var l=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var f,v=\"\",S=!1,k=[\"{\",\"}\"];(c(r)&&(S=!0,k=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return b(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||S&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),f=S?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(f,v,k)):k[0]+v+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(l.value)<0?(s=g(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function y(e){return void 0===e}function b(e){return v(e)&&\"[object RegExp]\"===S(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===S(e)}function E(e){return v(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;f--)if(u[f]!==h[f])return!1;for(f=u.length-1;f>=0;f--)if(l=u[f],!y(e[l],t[l],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function b(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),l=!e&&i&&!r;if((s&&o&&v(i,r)||l)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){y(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){y(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){y(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){y(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function f(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=b;var a,o=r(38);b.ReadableState=y;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=r(34),f=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(b,l);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(2),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,o)):(i||(a=function(e,t){var r;n=t,f.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===f.prototype||(t=function(e){return f.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){c(\"emit readable\"),e.emit(\"readable\"),O(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=f.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function R(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?R(this):S(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&R(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&R(this)),null!==n&&this.emit(\"data\",n),n},b.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var l=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:b;function f(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",f),r.removeListener(\"end\",u),r.removeListener(\"end\",b),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(l):r.once(\"end\",l),e.on(\"unpipe\",f);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,O(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),b(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",y),b()}function y(){c(\"onfinish\"),e.removeListener(\"close\",_),b()}function b(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",y),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var l=new i.default(r.byteArrayParser,r.byteArray,t);return l.warnings=r.warnings,l.position=r.position,l}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=f(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,l,f,u,h,d){var c,p,g,m,_,y,b,v,w,E=d.bits,x=0,S=0,k=0,A=0,P=0,T=0,D=0,O=0,I=0,R=0,L=null,F=0,B=new n.Buf16(16),U=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)B[x]=0;for(S=0;S=1&&0===B[A];A--);if(P>A&&(P=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(k=1;k0&&(0===e||1!==A))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+B[x];for(S=0;S852||2===e&&I>592)return 1;for(;;){b=x-D,h[S]y?(v=M[N+h[S]],w=L[F+h[S]]):(v=96,w=0),c=1<>D)+(p-=c)]=b<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(R&=c-1,R+=c):R=0,S++,0==--B[x]){if(x===A)break;x=t[r+h[S]]}if(x>P&&(R&m)!==g){for(0===D&&(D=P),_+=k,O=1<<(T=x-D);T+D852||2===e&&I>592)return 1;f[g=R&m]=P<<24|T<<16|_-u|0}}return 0!==R&&(f[_+R]=x-D<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,l,f,u,h,d,c,p,g,m,_,y,b,v,w,E,x,S,k,A;r=e.state,n=e.next_in,k=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),l=r.dmax,f=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=b>>>24,p-=v,0===(v=b>>>16&255))A[a++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=g[(65535&b)+(c&(1<>>=v,p-=v),p<15&&(c+=k[n++]<>>=v=b>>>24,p-=v,!(16&(v=b>>>16&255))){if(0==(64&v)){b=m[(65535&b)+(c&(1<l){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=d,0===h){if(x+=f-v,v2;)A[a++]=S[x++],A[a++]=S[x++],A[a++]=S[x++],w-=3;w&&(A[a++]=S[x++],w>1&&(A[a++]=S[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var le,fe,ue=!0;function he(e){if(ue){var t;for(le=new n.Buf32(512),fe=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(f,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,fe,0,e.work,{bits:5}),ue=!1}e.lencode=le,e.lenbits=9,e.distcode=fe,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,le=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(le-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=S;case S:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,le=0,r.mode=k;case k:for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=A;case A:if(1024&r.flags){for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=T;case T:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&le,le-=7&le,r.mode=V;break}for(;le<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=B;break;case 1:if(he(r),r.mode=j,t===c){se>>>=2,le-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,le-=2;break;case B:for(se>>>=7&le,le-=7≤le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,le=0,r.mode=U,t===c)break e;case U:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;le<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,le-=5,r.ndist=1+(31&se),se>>>=5,le-=5,r.ncode=4+(15&se),se>>>=4,le-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>=3,le-=3}for(;r.have<19;)r.lens[Te[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Se={bits:r.lenbits},xe=s(l,r.lens,0,19,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=Z;case Z:for(;r.have>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,le-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;le>>=me,le-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,le-=2}else if(17===ye){for(ke=me+3;le>>=me)),se>>>=3,le-=3}else{for(ke=me+7;le>>=me)),se>>>=7,le-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,Se={bits:r.lenbits},xe=s(f,r.lens,0,r.nlen,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,Se={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Se),r.distbits=Se.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=j,t===c)break e;case j:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=le,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,le=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,r.length=ye,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=ye,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;le<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var f=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,y=15,b=16,v=7,w=256,E=16,x=17,S=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(p+2));l(D);var O=new Array(2*g);l(O);var I=new Array(512);l(I);var R=new Array(256);l(R);var L=new Array(d);l(L);var F,B,U,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function z(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Z(e){return e<256?I[e]:I[256+(e>>>7)]}function j(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>b-r?(e.bi_buf|=t<>b-e.bi_valid,e.bi_valid+=r-b):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(y+1),o=0;for(n=1;n<=y;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?j(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)J(e,a,r);i=l;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],J(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,J(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,l=t.dyn_tree,f=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=y;a++)e.bl_count[a]=0;for(l[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=l[2*l[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),l[2*n+1]=a,n>f||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=l[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>f||(l[2*i+1]!==a&&(e.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),n--)}}(e,t),W(a,f,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,l=7,f=4;for(0===o&&(l=138,f=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*T[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),l=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=l&&(l=f)):l=f=r+5,r+4<=l&&-1!==t?te(e,t,r,n):e.strategy===i||f===l?(C(e,(u<<1)+(n?1:0),3),K(e,D,O)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(R[r]+c+1)]++,e.dyn_dtree[2*Z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,D),function(e){16===e.bi_valid?(j(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),l=r(49),f=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,y=-5,b=-1,v=1,w=2,E=3,x=4,S=0,k=2,A=8,P=9,T=15,D=8,O=286,I=30,R=19,L=2*O+1,F=15,B=3,U=258,M=U+B+1,N=32,z=42,Z=69,j=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,J=4,K=3;function X(e,t){return e.msg=l[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,f=e.window,u=e.w_mask,h=e.prev,d=e.strstart+U,c=f[a+o-1],p=f[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(f[(r=t)+o]===p&&f[r+o-1]===c&&f[r]===f[a]&&f[++r]===f[a+1]){a+=2,r++;do{}while(f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=f[a+o-1],p=f[a+o]}}}while((t=h[t&u])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,l,f,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(f=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=f.avail_in)>d&&(c=d),r=0===c?0:(f.avail_in-=c,i.arraySet(u,f.input,f.next_in,c,h),1===f.state.wrap?f.adler=o(f.adler,u,c,h):2===f.state.wrap&&(f.adler=s(f.adler,u,c,h)),f.next_in+=c,f.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=B)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<=B)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-B,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*R+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*O+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*O+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=n,l.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===f)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new le(4,4,8,4,oe),new le(4,5,16,8,oe),new le(4,6,32,32,oe),new le(4,4,16,16,se),new le(8,16,32,32,se),new le(8,16,128,128,se),new le(8,32,128,256,se),new le(32,128,258,1024,se),new le(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,T,D,S)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=fe,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?y:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===z)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,K),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===Z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,y);if(i.status===W&&0!==e.avail_in)return X(e,y);if(0!==e.avail_in||0!==i.lookahead||t!==f&&i.status!==W){var b=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===f)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=U){if(ae(e),e.lookahead<=U&&t===f)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+U;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(r=a._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(b!==V&&b!==J||(i.status=W),b===H||b===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(b===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==z&&t!==Z&&t!==j&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,l,f,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==z||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),l=e.avail_in,f=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=B;){n=r.strstart,a=r.lookahead-(B-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,l,f,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=f,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,l){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,l=1,f={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function f(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",l),r.removeListener(\"error\",f),e.removeListener(\"error\",f),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",f),e.on(\"error\",f),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,l=r(1).kMaxLength,f=\"Cannot create final Buffer. It would be larger than 0x\"+l.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=l?o=new RangeError(f):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function y(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){T(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var l=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(l=e.level);var f=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(f=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,f,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=f,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function T(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function D(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=b,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=S,t.Unzip=k,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new k(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new b(t),e,r)},t.deflateSync=function(e,t){return y(new b(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return y(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.unzipSync=function(e,t){return y(new k(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.inflateRawSync=function(e,t){return y(new S(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){T(this,t),e.nextTick(D,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(g[0],g[1]));if(this._hadError)throw d;if(p>=l)throw T(this),new RangeError(f);var m=n.concat(c,p);return T(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(l,f){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-f;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===f||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===f){if(o+=i-l,i=l,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=y,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=y},o.inherits(b,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(S,P),o.inherits(k,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(l){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(l),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,l){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,l);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,f.default)(t,l,t.length-l),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+l);return t.copy(g,0,0,l),p.copy(g,l),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(l),_=pako.inflateRaw(m),y=(0,n.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new a.default(s.default,y,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,l);return new a.default(s.default,t,l)}(c,l.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,l.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),l=c(r(36)),f=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.2\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-f;else{if(a===l)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=f}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,l,f=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*l-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,f-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-f(e)},t.toByteArray=function(e){var t,r,n,o,s,l=e.length;o=f(e),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(25),i=f(r(77)),a=f(r(76)),o=f(r(43)),s=f(r(75)),l=f(r(74));function f(e){return e&&e.__esModule?e:{default:e}}t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=i.default,t.parseDA=a.default,t.explicitElementToString=o.default,t.explicitDataSetToJS=s.default,t.createJPEGBasicOffsetTable=l.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readTag=t.readSequenceItem=t.readSequenceItemsImplicit=t.readSequenceItemsExplicit=t.readPart10Header=t.readEncapsulatedPixelDataFromFragments=t.readEncapsulatedPixelData=t.readEncapsulatedImageFrame=t.readDicomElementImplicit=t.readDicomElementExplicit=t.parseDicom=t.littleEndianByteArrayParser=t.findItemDelimitationItemAndSetElementLength=t.findEndOfEncapsulatedElement=t.findAndSetUNElementLength=t.DataSet=t.sharedCopy=t.ByteStream=t.bigEndianByteArrayParser=t.version=t.alloc=t.readFixedString=t.parseDicomDataSetImplicit=t.parseDicomDataSetExplicit=t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(78),i=r(16),a=r(14),o=P(r(22)),s=P(r(71)),l=P(r(37)),f=P(r(12)),u=P(r(11)),h=P(r(7)),d=P(r(41)),c=P(r(42)),p=P(r(24)),g=P(r(21)),m=P(r(70)),_=P(r(15)),y=P(r(23)),b=P(r(26)),v=P(r(44)),w=P(r(17)),E=P(r(36)),x=P(r(40)),S=P(r(39)),k=P(r(13)),A=P(r(4));function P(e){return e&&e.__esModule?e:{default:e}}var T={isStringVr:n.isStringVr,isPrivateTag:n.isPrivateTag,parsePN:n.parsePN,parseTM:n.parseTM,parseDA:n.parseDA,explicitElementToString:n.explicitElementToString,explicitDataSetToJS:n.explicitDataSetToJS,createJPEGBasicOffsetTable:n.createJPEGBasicOffsetTable,parseDicomDataSetExplicit:i.parseDicomDataSetExplicit,parseDicomDataSetImplicit:i.parseDicomDataSetImplicit,readFixedString:a.readFixedString,alloc:o.default,version:s.default,bigEndianByteArrayParser:l.default,ByteStream:f.default,sharedCopy:u.default,DataSet:h.default,findAndSetUNElementLength:d.default,findEndOfEncapsulatedElement:c.default,findItemDelimitationItemAndSetElementLength:p.default,littleEndianByteArrayParser:g.default,parseDicom:m.default,readDicomElementExplicit:_.default,readDicomElementImplicit:y.default,readEncapsulatedImageFrame:b.default,readEncapsulatedPixelData:v.default,readEncapsulatedPixelDataFromFragments:w.default,readPart10Header:E.default,readSequenceItemsExplicit:x.default,readSequenceItemsImplicit:S.default,readSequenceItem:k.default,readTag:A.default};t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=n.parseTM,t.parseDA=n.parseDA,t.explicitElementToString=n.explicitElementToString,t.explicitDataSetToJS=n.explicitDataSetToJS,t.createJPEGBasicOffsetTable=n.createJPEGBasicOffsetTable,t.parseDicomDataSetExplicit=i.parseDicomDataSetExplicit,t.parseDicomDataSetImplicit=i.parseDicomDataSetImplicit,t.readFixedString=a.readFixedString,t.alloc=o.default,t.version=s.default,t.bigEndianByteArrayParser=l.default,t.ByteStream=f.default,t.sharedCopy=u.default,t.DataSet=h.default,t.findAndSetUNElementLength=d.default,t.findEndOfEncapsulatedElement=c.default,t.findItemDelimitationItemAndSetElementLength=p.default,t.littleEndianByteArrayParser=g.default,t.parseDicom=m.default,t.readDicomElementExplicit=_.default,t.readDicomElementImplicit=y.default,t.readEncapsulatedImageFrame=b.default,t.readEncapsulatedPixelData=v.default,t.readEncapsulatedPixelDataFromFragments=w.default,t.readPart10Header=E.default,t.readSequenceItemsExplicit=x.default,t.readSequenceItemsImplicit=S.default,t.readSequenceItem=k.default,t.readTag=A.default,t.default=T}])});\n//# sourceMappingURL=dicomParser.min.js.map","/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstone-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstone-core\"] = factory();\n\telse\n\t\troot[\"cornerstone\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \tfunction hotDisposeChunk(chunkId) {\n/******/ \t\tdelete installedChunks[chunkId];\n/******/ \t}\n/******/ \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n/******/ \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n/******/ \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n/******/ \t\thotAddUpdateChunk(chunkId, moreModules);\n/******/ \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n/******/ \t} ;\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadUpdateChunk(chunkId) {\n/******/ \t\tvar head = document.getElementsByTagName(\"head\")[0];\n/******/ \t\tvar script = document.createElement(\"script\");\n/******/ \t\tscript.charset = \"utf-8\";\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n/******/ \t\t;\n/******/ \t\thead.appendChild(script);\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadManifest(requestTimeout) {\n/******/ \t\trequestTimeout = requestTimeout || 10000;\n/******/ \t\treturn new Promise(function(resolve, reject) {\n/******/ \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n/******/ \t\t\t\treturn reject(new Error(\"No browser support\"));\n/******/ \t\t\t}\n/******/ \t\t\ttry {\n/******/ \t\t\t\tvar request = new XMLHttpRequest();\n/******/ \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n/******/ \t\t\t\trequest.open(\"GET\", requestPath, true);\n/******/ \t\t\t\trequest.timeout = requestTimeout;\n/******/ \t\t\t\trequest.send(null);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\treturn reject(err);\n/******/ \t\t\t}\n/******/ \t\t\trequest.onreadystatechange = function() {\n/******/ \t\t\t\tif (request.readyState !== 4) return;\n/******/ \t\t\t\tif (request.status === 0) {\n/******/ \t\t\t\t\t// timeout\n/******/ \t\t\t\t\treject(\n/******/ \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n/******/ \t\t\t\t\t);\n/******/ \t\t\t\t} else if (request.status === 404) {\n/******/ \t\t\t\t\t// no update available\n/******/ \t\t\t\t\tresolve();\n/******/ \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n/******/ \t\t\t\t\t// other failure\n/******/ \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\t// success\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n/******/ \t\t\t\t\t} catch (e) {\n/******/ \t\t\t\t\t\treject(e);\n/******/ \t\t\t\t\t\treturn;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tresolve(update);\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \tvar hotApplyOnUpdate = true;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentHash = \"72ed982d5a0046aad5fa\";\n/******/ \tvar hotRequestTimeout = 10000;\n/******/ \tvar hotCurrentModuleData = {};\n/******/ \tvar hotCurrentChildModule;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParents = [];\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParentsTemp = [];\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateRequire(moduleId) {\n/******/ \t\tvar me = installedModules[moduleId];\n/******/ \t\tif (!me) return __webpack_require__;\n/******/ \t\tvar fn = function(request) {\n/******/ \t\t\tif (me.hot.active) {\n/******/ \t\t\t\tif (installedModules[request]) {\n/******/ \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n/******/ \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\t\t\thotCurrentChildModule = request;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (me.children.indexOf(request) === -1) {\n/******/ \t\t\t\t\tme.children.push(request);\n/******/ \t\t\t\t}\n/******/ \t\t\t} else {\n/******/ \t\t\t\tconsole.warn(\n/******/ \t\t\t\t\t\"[HMR] unexpected require(\" +\n/******/ \t\t\t\t\t\trequest +\n/******/ \t\t\t\t\t\t\") from disposed module \" +\n/******/ \t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t);\n/******/ \t\t\t\thotCurrentParents = [];\n/******/ \t\t\t}\n/******/ \t\t\treturn __webpack_require__(request);\n/******/ \t\t};\n/******/ \t\tvar ObjectFactory = function ObjectFactory(name) {\n/******/ \t\t\treturn {\n/******/ \t\t\t\tconfigurable: true,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: function() {\n/******/ \t\t\t\t\treturn __webpack_require__[name];\n/******/ \t\t\t\t},\n/******/ \t\t\t\tset: function(value) {\n/******/ \t\t\t\t\t__webpack_require__[name] = value;\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t};\n/******/ \t\tfor (var name in __webpack_require__) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n/******/ \t\t\t\tname !== \"e\" &&\n/******/ \t\t\t\tname !== \"t\"\n/******/ \t\t\t) {\n/******/ \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tfn.e = function(chunkId) {\n/******/ \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n/******/ \t\t\thotChunksLoading++;\n/******/ \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n/******/ \t\t\t\tfinishChunkLoading();\n/******/ \t\t\t\tthrow err;\n/******/ \t\t\t});\n/******/\n/******/ \t\t\tfunction finishChunkLoading() {\n/******/ \t\t\t\thotChunksLoading--;\n/******/ \t\t\t\tif (hotStatus === \"prepare\") {\n/******/ \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n/******/ \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n/******/ \t\t\t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\tfn.t = function(value, mode) {\n/******/ \t\t\tif (mode & 1) value = fn(value);\n/******/ \t\t\treturn __webpack_require__.t(value, mode & ~1);\n/******/ \t\t};\n/******/ \t\treturn fn;\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateModule(moduleId) {\n/******/ \t\tvar hot = {\n/******/ \t\t\t// private stuff\n/******/ \t\t\t_acceptedDependencies: {},\n/******/ \t\t\t_declinedDependencies: {},\n/******/ \t\t\t_selfAccepted: false,\n/******/ \t\t\t_selfDeclined: false,\n/******/ \t\t\t_disposeHandlers: [],\n/******/ \t\t\t_main: hotCurrentChildModule !== moduleId,\n/******/\n/******/ \t\t\t// Module API\n/******/ \t\t\tactive: true,\n/******/ \t\t\taccept: function(dep, callback) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n/******/ \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n/******/ \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n/******/ \t\t\t},\n/******/ \t\t\tdecline: function(dep) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n/******/ \t\t\t\telse hot._declinedDependencies[dep] = true;\n/******/ \t\t\t},\n/******/ \t\t\tdispose: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\taddDisposeHandler: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\tremoveDisposeHandler: function(callback) {\n/******/ \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n/******/ \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t// Management API\n/******/ \t\t\tcheck: hotCheck,\n/******/ \t\t\tapply: hotApply,\n/******/ \t\t\tstatus: function(l) {\n/******/ \t\t\t\tif (!l) return hotStatus;\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\taddStatusHandler: function(l) {\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\tremoveStatusHandler: function(l) {\n/******/ \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n/******/ \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t//inherit from previous dispose call\n/******/ \t\t\tdata: hotCurrentModuleData[moduleId]\n/******/ \t\t};\n/******/ \t\thotCurrentChildModule = undefined;\n/******/ \t\treturn hot;\n/******/ \t}\n/******/\n/******/ \tvar hotStatusHandlers = [];\n/******/ \tvar hotStatus = \"idle\";\n/******/\n/******/ \tfunction hotSetStatus(newStatus) {\n/******/ \t\thotStatus = newStatus;\n/******/ \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n/******/ \t\t\thotStatusHandlers[i].call(null, newStatus);\n/******/ \t}\n/******/\n/******/ \t// while downloading\n/******/ \tvar hotWaitingFiles = 0;\n/******/ \tvar hotChunksLoading = 0;\n/******/ \tvar hotWaitingFilesMap = {};\n/******/ \tvar hotRequestedFilesMap = {};\n/******/ \tvar hotAvailableFilesMap = {};\n/******/ \tvar hotDeferred;\n/******/\n/******/ \t// The update info\n/******/ \tvar hotUpdate, hotUpdateNewHash;\n/******/\n/******/ \tfunction toModuleId(id) {\n/******/ \t\tvar isNumber = +id + \"\" === id;\n/******/ \t\treturn isNumber ? +id : id;\n/******/ \t}\n/******/\n/******/ \tfunction hotCheck(apply) {\n/******/ \t\tif (hotStatus !== \"idle\") {\n/******/ \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n/******/ \t\t}\n/******/ \t\thotApplyOnUpdate = apply;\n/******/ \t\thotSetStatus(\"check\");\n/******/ \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n/******/ \t\t\tif (!update) {\n/******/ \t\t\t\thotSetStatus(\"idle\");\n/******/ \t\t\t\treturn null;\n/******/ \t\t\t}\n/******/ \t\t\thotRequestedFilesMap = {};\n/******/ \t\t\thotWaitingFilesMap = {};\n/******/ \t\t\thotAvailableFilesMap = update.c;\n/******/ \t\t\thotUpdateNewHash = update.h;\n/******/\n/******/ \t\t\thotSetStatus(\"prepare\");\n/******/ \t\t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\t\thotDeferred = {\n/******/ \t\t\t\t\tresolve: resolve,\n/******/ \t\t\t\t\treject: reject\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\thotUpdate = {};\n/******/ \t\t\tvar chunkId = \"cornerstone\";\n/******/ \t\t\t// eslint-disable-next-line no-lone-blocks\n/******/ \t\t\t{\n/******/ \t\t\t\t/*globals chunkId */\n/******/ \t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t\tif (\n/******/ \t\t\t\thotStatus === \"prepare\" &&\n/******/ \t\t\t\thotChunksLoading === 0 &&\n/******/ \t\t\t\thotWaitingFiles === 0\n/******/ \t\t\t) {\n/******/ \t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t}\n/******/ \t\t\treturn promise;\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n/******/ \t\t\treturn;\n/******/ \t\thotRequestedFilesMap[chunkId] = false;\n/******/ \t\tfor (var moduleId in moreModules) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n/******/ \t\t\thotUpdateDownloaded();\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotEnsureUpdateChunk(chunkId) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId]) {\n/******/ \t\t\thotWaitingFilesMap[chunkId] = true;\n/******/ \t\t} else {\n/******/ \t\t\thotRequestedFilesMap[chunkId] = true;\n/******/ \t\t\thotWaitingFiles++;\n/******/ \t\t\thotDownloadUpdateChunk(chunkId);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotUpdateDownloaded() {\n/******/ \t\thotSetStatus(\"ready\");\n/******/ \t\tvar deferred = hotDeferred;\n/******/ \t\thotDeferred = null;\n/******/ \t\tif (!deferred) return;\n/******/ \t\tif (hotApplyOnUpdate) {\n/******/ \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n/******/ \t\t\t// avoid triggering uncaught exception warning in Chrome.\n/******/ \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n/******/ \t\t\tPromise.resolve()\n/******/ \t\t\t\t.then(function() {\n/******/ \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n/******/ \t\t\t\t})\n/******/ \t\t\t\t.then(\n/******/ \t\t\t\t\tfunction(result) {\n/******/ \t\t\t\t\t\tdeferred.resolve(result);\n/******/ \t\t\t\t\t},\n/******/ \t\t\t\t\tfunction(err) {\n/******/ \t\t\t\t\t\tdeferred.reject(err);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t);\n/******/ \t\t} else {\n/******/ \t\t\tvar outdatedModules = [];\n/******/ \t\t\tfor (var id in hotUpdate) {\n/******/ \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\t\toutdatedModules.push(toModuleId(id));\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tdeferred.resolve(outdatedModules);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotApply(options) {\n/******/ \t\tif (hotStatus !== \"ready\")\n/******/ \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n/******/ \t\toptions = options || {};\n/******/\n/******/ \t\tvar cb;\n/******/ \t\tvar i;\n/******/ \t\tvar j;\n/******/ \t\tvar module;\n/******/ \t\tvar moduleId;\n/******/\n/******/ \t\tfunction getAffectedStuff(updateModuleId) {\n/******/ \t\t\tvar outdatedModules = [updateModuleId];\n/******/ \t\t\tvar outdatedDependencies = {};\n/******/\n/******/ \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n/******/ \t\t\t\treturn {\n/******/ \t\t\t\t\tchain: [id],\n/******/ \t\t\t\t\tid: id\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\twhile (queue.length > 0) {\n/******/ \t\t\t\tvar queueItem = queue.pop();\n/******/ \t\t\t\tvar moduleId = queueItem.id;\n/******/ \t\t\t\tvar chain = queueItem.chain;\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n/******/ \t\t\t\tif (module.hot._selfDeclined) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"self-declined\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (module.hot._main) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"unaccepted\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n/******/ \t\t\t\t\tvar parentId = module.parents[i];\n/******/ \t\t\t\t\tvar parent = installedModules[parentId];\n/******/ \t\t\t\t\tif (!parent) continue;\n/******/ \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\treturn {\n/******/ \t\t\t\t\t\t\ttype: \"declined\",\n/******/ \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\tparentId: parentId\n/******/ \t\t\t\t\t\t};\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n/******/ \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n/******/ \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n/******/ \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n/******/ \t\t\t\t\t\tcontinue;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tdelete outdatedDependencies[parentId];\n/******/ \t\t\t\t\toutdatedModules.push(parentId);\n/******/ \t\t\t\t\tqueue.push({\n/******/ \t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\tid: parentId\n/******/ \t\t\t\t\t});\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/\n/******/ \t\t\treturn {\n/******/ \t\t\t\ttype: \"accepted\",\n/******/ \t\t\t\tmoduleId: updateModuleId,\n/******/ \t\t\t\toutdatedModules: outdatedModules,\n/******/ \t\t\t\toutdatedDependencies: outdatedDependencies\n/******/ \t\t\t};\n/******/ \t\t}\n/******/\n/******/ \t\tfunction addAllToSet(a, b) {\n/******/ \t\t\tfor (var i = 0; i < b.length; i++) {\n/******/ \t\t\t\tvar item = b[i];\n/******/ \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// at begin all updates modules are outdated\n/******/ \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n/******/ \t\tvar outdatedDependencies = {};\n/******/ \t\tvar outdatedModules = [];\n/******/ \t\tvar appliedUpdate = {};\n/******/\n/******/ \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n/******/ \t\t\tconsole.warn(\n/******/ \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n/******/ \t\t\t);\n/******/ \t\t};\n/******/\n/******/ \t\tfor (var id in hotUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\tmoduleId = toModuleId(id);\n/******/ \t\t\t\t/** @type {TODO} */\n/******/ \t\t\t\tvar result;\n/******/ \t\t\t\tif (hotUpdate[id]) {\n/******/ \t\t\t\t\tresult = getAffectedStuff(moduleId);\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tresult = {\n/******/ \t\t\t\t\t\ttype: \"disposed\",\n/******/ \t\t\t\t\t\tmoduleId: id\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\t/** @type {Error|false} */\n/******/ \t\t\t\tvar abortError = false;\n/******/ \t\t\t\tvar doApply = false;\n/******/ \t\t\t\tvar doDispose = false;\n/******/ \t\t\t\tvar chainInfo = \"\";\n/******/ \t\t\t\tif (result.chain) {\n/******/ \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n/******/ \t\t\t\t}\n/******/ \t\t\t\tswitch (result.type) {\n/******/ \t\t\t\t\tcase \"self-declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\t\" in \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.parentId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"unaccepted\":\n/******/ \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"accepted\":\n/******/ \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n/******/ \t\t\t\t\t\tdoApply = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"disposed\":\n/******/ \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n/******/ \t\t\t\t\t\tdoDispose = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tdefault:\n/******/ \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (abortError) {\n/******/ \t\t\t\t\thotSetStatus(\"abort\");\n/******/ \t\t\t\t\treturn Promise.reject(abortError);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (doApply) {\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n/******/ \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n/******/ \t\t\t\t\t\tif (\n/******/ \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n/******/ \t\t\t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t\t\t\t)\n/******/ \t\t\t\t\t\t) {\n/******/ \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n/******/ \t\t\t\t\t\t\taddAllToSet(\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Store self accepted outdated modules to require them later by the module system\n/******/ \t\tvar outdatedSelfAcceptedModules = [];\n/******/ \t\tfor (i = 0; i < outdatedModules.length; i++) {\n/******/ \t\t\tmoduleId = outdatedModules[i];\n/******/ \t\t\tif (\n/******/ \t\t\t\tinstalledModules[moduleId] &&\n/******/ \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n/******/ \t\t\t)\n/******/ \t\t\t\toutdatedSelfAcceptedModules.push({\n/******/ \t\t\t\t\tmodule: moduleId,\n/******/ \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n/******/ \t\t\t\t});\n/******/ \t\t}\n/******/\n/******/ \t\t// Now in \"dispose\" phase\n/******/ \t\thotSetStatus(\"dispose\");\n/******/ \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n/******/ \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n/******/ \t\t\t\thotDisposeChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t});\n/******/\n/******/ \t\tvar idx;\n/******/ \t\tvar queue = outdatedModules.slice();\n/******/ \t\twhile (queue.length > 0) {\n/******/ \t\t\tmoduleId = queue.pop();\n/******/ \t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\tif (!module) continue;\n/******/\n/******/ \t\t\tvar data = {};\n/******/\n/******/ \t\t\t// Call dispose handlers\n/******/ \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n/******/ \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n/******/ \t\t\t\tcb = disposeHandlers[j];\n/******/ \t\t\t\tcb(data);\n/******/ \t\t\t}\n/******/ \t\t\thotCurrentModuleData[moduleId] = data;\n/******/\n/******/ \t\t\t// disable module (this disables requires from this module)\n/******/ \t\t\tmodule.hot.active = false;\n/******/\n/******/ \t\t\t// remove module from cache\n/******/ \t\t\tdelete installedModules[moduleId];\n/******/\n/******/ \t\t\t// when disposing there is no need to call dispose handler\n/******/ \t\t\tdelete outdatedDependencies[moduleId];\n/******/\n/******/ \t\t\t// remove \"parents\" references from all children\n/******/ \t\t\tfor (j = 0; j < module.children.length; j++) {\n/******/ \t\t\t\tvar child = installedModules[module.children[j]];\n/******/ \t\t\t\tif (!child) continue;\n/******/ \t\t\t\tidx = child.parents.indexOf(moduleId);\n/******/ \t\t\t\tif (idx >= 0) {\n/******/ \t\t\t\t\tchild.parents.splice(idx, 1);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// remove outdated dependency from module children\n/******/ \t\tvar dependency;\n/******/ \t\tvar moduleOutdatedDependencies;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n/******/ \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n/******/ \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Not in \"apply\" phase\n/******/ \t\thotSetStatus(\"apply\");\n/******/\n/******/ \t\thotCurrentHash = hotUpdateNewHash;\n/******/\n/******/ \t\t// insert new code\n/******/ \t\tfor (moduleId in appliedUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// call accept handlers\n/******/ \t\tvar error = null;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tvar callbacks = [];\n/******/ \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n/******/ \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n/******/ \t\t\t\t\t\tif (cb) {\n/******/ \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n/******/ \t\t\t\t\t\t\tcallbacks.push(cb);\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n/******/ \t\t\t\t\t\tcb = callbacks[i];\n/******/ \t\t\t\t\t\ttry {\n/******/ \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n/******/ \t\t\t\t\t\t} catch (err) {\n/******/ \t\t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n/******/ \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n/******/ \t\t\t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t\t}\n/******/ \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\t\tif (!error) error = err;\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/******/\n/******/ \t\t// Load self accepted modules\n/******/ \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n/******/ \t\t\tvar item = outdatedSelfAcceptedModules[i];\n/******/ \t\t\tmoduleId = item.module;\n/******/ \t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\ttry {\n/******/ \t\t\t\t__webpack_require__(moduleId);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\tif (typeof item.errorHandler === \"function\") {\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\titem.errorHandler(err);\n/******/ \t\t\t\t\t} catch (err2) {\n/******/ \t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n/******/ \t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\terror: err2,\n/******/ \t\t\t\t\t\t\t\toriginalError: err\n/******/ \t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\tif (!error) error = err2;\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t});\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// handle errors in accept handlers and self accepted module load\n/******/ \t\tif (error) {\n/******/ \t\t\thotSetStatus(\"fail\");\n/******/ \t\t\treturn Promise.reject(error);\n/******/ \t\t}\n/******/\n/******/ \t\thotSetStatus(\"idle\");\n/******/ \t\treturn new Promise(function(resolve) {\n/******/ \t\t\tresolve(outdatedModules);\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {},\n/******/ \t\t\thot: hotCreateModule(moduleId),\n/******/ \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n/******/ \t\t\tchildren: []\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// __webpack_hash__\n/******/ \t__webpack_require__.h = function() { return hotCurrentHash; };\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn hotCreateRequire(\"./index.js\")(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./canvasToPixel.js\":\n/*!**************************!*\\\n !*** ./canvasToPixel.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the canvas coordinate system to the pixel coordinate system\n * system. This can be used to reset tools' image coordinates after modifications\n * have been made in canvas space (e.g. moving a tool by a few cm, independent of\n * image resolution).\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {{x: Number, y: Number}} pt The input point in the canvas coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./colors/colormap.js\":\n/*!****************************!*\\\n !*** ./colors/colormap.js ***!\n \\****************************/\n/*! exports provided: getColormapsList, getColormap */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormapsList\", function() { return getColormapsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormap\", function() { return getColormap; });\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\nvar COLOR_TRANSPARENT = [0, 0, 0, 0]; // Colormaps\n//\n// Hot Iron, PET, Hot Metal Blue and PET 20 Step are color palettes\n// Defined by the DICOM standard\n// http://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html\n//\n// All Linear Segmented Colormaps were copied from matplotlib\n// https://github.com/stefanv/matplotlib/blob/master/lib/matplotlib/_cm.py\n\nvar colormapsData = {\n hotIron: {\n name: 'Hot Iron',\n numOfColors: 256,\n colors: [[0, 0, 0, 255], [2, 0, 0, 255], [4, 0, 0, 255], [6, 0, 0, 255], [8, 0, 0, 255], [10, 0, 0, 255], [12, 0, 0, 255], [14, 0, 0, 255], [16, 0, 0, 255], [18, 0, 0, 255], [20, 0, 0, 255], [22, 0, 0, 255], [24, 0, 0, 255], [26, 0, 0, 255], [28, 0, 0, 255], [30, 0, 0, 255], [32, 0, 0, 255], [34, 0, 0, 255], [36, 0, 0, 255], [38, 0, 0, 255], [40, 0, 0, 255], [42, 0, 0, 255], [44, 0, 0, 255], [46, 0, 0, 255], [48, 0, 0, 255], [50, 0, 0, 255], [52, 0, 0, 255], [54, 0, 0, 255], [56, 0, 0, 255], [58, 0, 0, 255], [60, 0, 0, 255], [62, 0, 0, 255], [64, 0, 0, 255], [66, 0, 0, 255], [68, 0, 0, 255], [70, 0, 0, 255], [72, 0, 0, 255], [74, 0, 0, 255], [76, 0, 0, 255], [78, 0, 0, 255], [80, 0, 0, 255], [82, 0, 0, 255], [84, 0, 0, 255], [86, 0, 0, 255], [88, 0, 0, 255], [90, 0, 0, 255], [92, 0, 0, 255], [94, 0, 0, 255], [96, 0, 0, 255], [98, 0, 0, 255], [100, 0, 0, 255], [102, 0, 0, 255], [104, 0, 0, 255], [106, 0, 0, 255], [108, 0, 0, 255], [110, 0, 0, 255], [112, 0, 0, 255], [114, 0, 0, 255], [116, 0, 0, 255], [118, 0, 0, 255], [120, 0, 0, 255], [122, 0, 0, 255], [124, 0, 0, 255], [126, 0, 0, 255], [128, 0, 0, 255], [130, 0, 0, 255], [132, 0, 0, 255], [134, 0, 0, 255], [136, 0, 0, 255], [138, 0, 0, 255], [140, 0, 0, 255], [142, 0, 0, 255], [144, 0, 0, 255], [146, 0, 0, 255], [148, 0, 0, 255], [150, 0, 0, 255], [152, 0, 0, 255], [154, 0, 0, 255], [156, 0, 0, 255], [158, 0, 0, 255], [160, 0, 0, 255], [162, 0, 0, 255], [164, 0, 0, 255], [166, 0, 0, 255], [168, 0, 0, 255], [170, 0, 0, 255], [172, 0, 0, 255], [174, 0, 0, 255], [176, 0, 0, 255], [178, 0, 0, 255], [180, 0, 0, 255], [182, 0, 0, 255], [184, 0, 0, 255], [186, 0, 0, 255], [188, 0, 0, 255], [190, 0, 0, 255], [192, 0, 0, 255], [194, 0, 0, 255], [196, 0, 0, 255], [198, 0, 0, 255], [200, 0, 0, 255], [202, 0, 0, 255], [204, 0, 0, 255], [206, 0, 0, 255], [208, 0, 0, 255], [210, 0, 0, 255], [212, 0, 0, 255], [214, 0, 0, 255], [216, 0, 0, 255], [218, 0, 0, 255], [220, 0, 0, 255], [222, 0, 0, 255], [224, 0, 0, 255], [226, 0, 0, 255], [228, 0, 0, 255], [230, 0, 0, 255], [232, 0, 0, 255], [234, 0, 0, 255], [236, 0, 0, 255], [238, 0, 0, 255], [240, 0, 0, 255], [242, 0, 0, 255], [244, 0, 0, 255], [246, 0, 0, 255], [248, 0, 0, 255], [250, 0, 0, 255], [252, 0, 0, 255], [254, 0, 0, 255], [255, 0, 0, 255], [255, 2, 0, 255], [255, 4, 0, 255], [255, 6, 0, 255], [255, 8, 0, 255], [255, 10, 0, 255], [255, 12, 0, 255], [255, 14, 0, 255], [255, 16, 0, 255], [255, 18, 0, 255], [255, 20, 0, 255], [255, 22, 0, 255], [255, 24, 0, 255], [255, 26, 0, 255], [255, 28, 0, 255], [255, 30, 0, 255], [255, 32, 0, 255], [255, 34, 0, 255], [255, 36, 0, 255], [255, 38, 0, 255], [255, 40, 0, 255], [255, 42, 0, 255], [255, 44, 0, 255], [255, 46, 0, 255], [255, 48, 0, 255], [255, 50, 0, 255], [255, 52, 0, 255], [255, 54, 0, 255], [255, 56, 0, 255], [255, 58, 0, 255], [255, 60, 0, 255], [255, 62, 0, 255], [255, 64, 0, 255], [255, 66, 0, 255], [255, 68, 0, 255], [255, 70, 0, 255], [255, 72, 0, 255], [255, 74, 0, 255], [255, 76, 0, 255], [255, 78, 0, 255], [255, 80, 0, 255], [255, 82, 0, 255], [255, 84, 0, 255], [255, 86, 0, 255], [255, 88, 0, 255], [255, 90, 0, 255], [255, 92, 0, 255], [255, 94, 0, 255], [255, 96, 0, 255], [255, 98, 0, 255], [255, 100, 0, 255], [255, 102, 0, 255], [255, 104, 0, 255], [255, 106, 0, 255], [255, 108, 0, 255], [255, 110, 0, 255], [255, 112, 0, 255], [255, 114, 0, 255], [255, 116, 0, 255], [255, 118, 0, 255], [255, 120, 0, 255], [255, 122, 0, 255], [255, 124, 0, 255], [255, 126, 0, 255], [255, 128, 4, 255], [255, 130, 8, 255], [255, 132, 12, 255], [255, 134, 16, 255], [255, 136, 20, 255], [255, 138, 24, 255], [255, 140, 28, 255], [255, 142, 32, 255], [255, 144, 36, 255], [255, 146, 40, 255], [255, 148, 44, 255], [255, 150, 48, 255], [255, 152, 52, 255], [255, 154, 56, 255], [255, 156, 60, 255], [255, 158, 64, 255], [255, 160, 68, 255], [255, 162, 72, 255], [255, 164, 76, 255], [255, 166, 80, 255], [255, 168, 84, 255], [255, 170, 88, 255], [255, 172, 92, 255], [255, 174, 96, 255], [255, 176, 100, 255], [255, 178, 104, 255], [255, 180, 108, 255], [255, 182, 112, 255], [255, 184, 116, 255], [255, 186, 120, 255], [255, 188, 124, 255], [255, 190, 128, 255], [255, 192, 132, 255], [255, 194, 136, 255], [255, 196, 140, 255], [255, 198, 144, 255], [255, 200, 148, 255], [255, 202, 152, 255], [255, 204, 156, 255], [255, 206, 160, 255], [255, 208, 164, 255], [255, 210, 168, 255], [255, 212, 172, 255], [255, 214, 176, 255], [255, 216, 180, 255], [255, 218, 184, 255], [255, 220, 188, 255], [255, 222, 192, 255], [255, 224, 196, 255], [255, 226, 200, 255], [255, 228, 204, 255], [255, 230, 208, 255], [255, 232, 212, 255], [255, 234, 216, 255], [255, 236, 220, 255], [255, 238, 224, 255], [255, 240, 228, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 240, 255], [255, 248, 244, 255], [255, 250, 248, 255], [255, 252, 252, 255], [255, 255, 255, 255]]\n },\n pet: {\n name: 'PET',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 2, 1, 255], [0, 4, 3, 255], [0, 6, 5, 255], [0, 8, 7, 255], [0, 10, 9, 255], [0, 12, 11, 255], [0, 14, 13, 255], [0, 16, 15, 255], [0, 18, 17, 255], [0, 20, 19, 255], [0, 22, 21, 255], [0, 24, 23, 255], [0, 26, 25, 255], [0, 28, 27, 255], [0, 30, 29, 255], [0, 32, 31, 255], [0, 34, 33, 255], [0, 36, 35, 255], [0, 38, 37, 255], [0, 40, 39, 255], [0, 42, 41, 255], [0, 44, 43, 255], [0, 46, 45, 255], [0, 48, 47, 255], [0, 50, 49, 255], [0, 52, 51, 255], [0, 54, 53, 255], [0, 56, 55, 255], [0, 58, 57, 255], [0, 60, 59, 255], [0, 62, 61, 255], [0, 65, 63, 255], [0, 67, 65, 255], [0, 69, 67, 255], [0, 71, 69, 255], [0, 73, 71, 255], [0, 75, 73, 255], [0, 77, 75, 255], [0, 79, 77, 255], [0, 81, 79, 255], [0, 83, 81, 255], [0, 85, 83, 255], [0, 87, 85, 255], [0, 89, 87, 255], [0, 91, 89, 255], [0, 93, 91, 255], [0, 95, 93, 255], [0, 97, 95, 255], [0, 99, 97, 255], [0, 101, 99, 255], [0, 103, 101, 255], [0, 105, 103, 255], [0, 107, 105, 255], [0, 109, 107, 255], [0, 111, 109, 255], [0, 113, 111, 255], [0, 115, 113, 255], [0, 117, 115, 255], [0, 119, 117, 255], [0, 121, 119, 255], [0, 123, 121, 255], [0, 125, 123, 255], [0, 128, 125, 255], [1, 126, 127, 255], [3, 124, 129, 255], [5, 122, 131, 255], [7, 120, 133, 255], [9, 118, 135, 255], [11, 116, 137, 255], [13, 114, 139, 255], [15, 112, 141, 255], [17, 110, 143, 255], [19, 108, 145, 255], [21, 106, 147, 255], [23, 104, 149, 255], [25, 102, 151, 255], [27, 100, 153, 255], [29, 98, 155, 255], [31, 96, 157, 255], [33, 94, 159, 255], [35, 92, 161, 255], [37, 90, 163, 255], [39, 88, 165, 255], [41, 86, 167, 255], [43, 84, 169, 255], [45, 82, 171, 255], [47, 80, 173, 255], [49, 78, 175, 255], [51, 76, 177, 255], [53, 74, 179, 255], [55, 72, 181, 255], [57, 70, 183, 255], [59, 68, 185, 255], [61, 66, 187, 255], [63, 64, 189, 255], [65, 63, 191, 255], [67, 61, 193, 255], [69, 59, 195, 255], [71, 57, 197, 255], [73, 55, 199, 255], [75, 53, 201, 255], [77, 51, 203, 255], [79, 49, 205, 255], [81, 47, 207, 255], [83, 45, 209, 255], [85, 43, 211, 255], [86, 41, 213, 255], [88, 39, 215, 255], [90, 37, 217, 255], [92, 35, 219, 255], [94, 33, 221, 255], [96, 31, 223, 255], [98, 29, 225, 255], [100, 27, 227, 255], [102, 25, 229, 255], [104, 23, 231, 255], [106, 21, 233, 255], [108, 19, 235, 255], [110, 17, 237, 255], [112, 15, 239, 255], [114, 13, 241, 255], [116, 11, 243, 255], [118, 9, 245, 255], [120, 7, 247, 255], [122, 5, 249, 255], [124, 3, 251, 255], [126, 1, 253, 255], [128, 0, 255, 255], [130, 2, 252, 255], [132, 4, 248, 255], [134, 6, 244, 255], [136, 8, 240, 255], [138, 10, 236, 255], [140, 12, 232, 255], [142, 14, 228, 255], [144, 16, 224, 255], [146, 18, 220, 255], [148, 20, 216, 255], [150, 22, 212, 255], [152, 24, 208, 255], [154, 26, 204, 255], [156, 28, 200, 255], [158, 30, 196, 255], [160, 32, 192, 255], [162, 34, 188, 255], [164, 36, 184, 255], [166, 38, 180, 255], [168, 40, 176, 255], [170, 42, 172, 255], [171, 44, 168, 255], [173, 46, 164, 255], [175, 48, 160, 255], [177, 50, 156, 255], [179, 52, 152, 255], [181, 54, 148, 255], [183, 56, 144, 255], [185, 58, 140, 255], [187, 60, 136, 255], [189, 62, 132, 255], [191, 64, 128, 255], [193, 66, 124, 255], [195, 68, 120, 255], [197, 70, 116, 255], [199, 72, 112, 255], [201, 74, 108, 255], [203, 76, 104, 255], [205, 78, 100, 255], [207, 80, 96, 255], [209, 82, 92, 255], [211, 84, 88, 255], [213, 86, 84, 255], [215, 88, 80, 255], [217, 90, 76, 255], [219, 92, 72, 255], [221, 94, 68, 255], [223, 96, 64, 255], [225, 98, 60, 255], [227, 100, 56, 255], [229, 102, 52, 255], [231, 104, 48, 255], [233, 106, 44, 255], [235, 108, 40, 255], [237, 110, 36, 255], [239, 112, 32, 255], [241, 114, 28, 255], [243, 116, 24, 255], [245, 118, 20, 255], [247, 120, 16, 255], [249, 122, 12, 255], [251, 124, 8, 255], [253, 126, 4, 255], [255, 128, 0, 255], [255, 130, 4, 255], [255, 132, 8, 255], [255, 134, 12, 255], [255, 136, 16, 255], [255, 138, 20, 255], [255, 140, 24, 255], [255, 142, 28, 255], [255, 144, 32, 255], [255, 146, 36, 255], [255, 148, 40, 255], [255, 150, 44, 255], [255, 152, 48, 255], [255, 154, 52, 255], [255, 156, 56, 255], [255, 158, 60, 255], [255, 160, 64, 255], [255, 162, 68, 255], [255, 164, 72, 255], [255, 166, 76, 255], [255, 168, 80, 255], [255, 170, 85, 255], [255, 172, 89, 255], [255, 174, 93, 255], [255, 176, 97, 255], [255, 178, 101, 255], [255, 180, 105, 255], [255, 182, 109, 255], [255, 184, 113, 255], [255, 186, 117, 255], [255, 188, 121, 255], [255, 190, 125, 255], [255, 192, 129, 255], [255, 194, 133, 255], [255, 196, 137, 255], [255, 198, 141, 255], [255, 200, 145, 255], [255, 202, 149, 255], [255, 204, 153, 255], [255, 206, 157, 255], [255, 208, 161, 255], [255, 210, 165, 255], [255, 212, 170, 255], [255, 214, 174, 255], [255, 216, 178, 255], [255, 218, 182, 255], [255, 220, 186, 255], [255, 222, 190, 255], [255, 224, 194, 255], [255, 226, 198, 255], [255, 228, 202, 255], [255, 230, 206, 255], [255, 232, 210, 255], [255, 234, 214, 255], [255, 236, 218, 255], [255, 238, 222, 255], [255, 240, 226, 255], [255, 242, 230, 255], [255, 244, 234, 255], [255, 246, 238, 255], [255, 248, 242, 255], [255, 250, 246, 255], [255, 252, 250, 255], [255, 255, 255, 255]]\n },\n hotMetalBlue: {\n name: 'Hot Metal Blue',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 2, 255], [0, 0, 4, 255], [0, 0, 6, 255], [0, 0, 8, 255], [0, 0, 10, 255], [0, 0, 12, 255], [0, 0, 14, 255], [0, 0, 16, 255], [0, 0, 17, 255], [0, 0, 19, 255], [0, 0, 21, 255], [0, 0, 23, 255], [0, 0, 25, 255], [0, 0, 27, 255], [0, 0, 29, 255], [0, 0, 31, 255], [0, 0, 33, 255], [0, 0, 35, 255], [0, 0, 37, 255], [0, 0, 39, 255], [0, 0, 41, 255], [0, 0, 43, 255], [0, 0, 45, 255], [0, 0, 47, 255], [0, 0, 49, 255], [0, 0, 51, 255], [0, 0, 53, 255], [0, 0, 55, 255], [0, 0, 57, 255], [0, 0, 59, 255], [0, 0, 61, 255], [0, 0, 63, 255], [0, 0, 65, 255], [0, 0, 67, 255], [0, 0, 69, 255], [0, 0, 71, 255], [0, 0, 73, 255], [0, 0, 75, 255], [0, 0, 77, 255], [0, 0, 79, 255], [0, 0, 81, 255], [0, 0, 83, 255], [0, 0, 84, 255], [0, 0, 86, 255], [0, 0, 88, 255], [0, 0, 90, 255], [0, 0, 92, 255], [0, 0, 94, 255], [0, 0, 96, 255], [0, 0, 98, 255], [0, 0, 100, 255], [0, 0, 102, 255], [0, 0, 104, 255], [0, 0, 106, 255], [0, 0, 108, 255], [0, 0, 110, 255], [0, 0, 112, 255], [0, 0, 114, 255], [0, 0, 116, 255], [0, 0, 117, 255], [0, 0, 119, 255], [0, 0, 121, 255], [0, 0, 123, 255], [0, 0, 125, 255], [0, 0, 127, 255], [0, 0, 129, 255], [0, 0, 131, 255], [0, 0, 133, 255], [0, 0, 135, 255], [0, 0, 137, 255], [0, 0, 139, 255], [0, 0, 141, 255], [0, 0, 143, 255], [0, 0, 145, 255], [0, 0, 147, 255], [0, 0, 149, 255], [0, 0, 151, 255], [0, 0, 153, 255], [0, 0, 155, 255], [0, 0, 157, 255], [0, 0, 159, 255], [0, 0, 161, 255], [0, 0, 163, 255], [0, 0, 165, 255], [0, 0, 167, 255], [3, 0, 169, 255], [6, 0, 171, 255], [9, 0, 173, 255], [12, 0, 175, 255], [15, 0, 177, 255], [18, 0, 179, 255], [21, 0, 181, 255], [24, 0, 183, 255], [26, 0, 184, 255], [29, 0, 186, 255], [32, 0, 188, 255], [35, 0, 190, 255], [38, 0, 192, 255], [41, 0, 194, 255], [44, 0, 196, 255], [47, 0, 198, 255], [50, 0, 200, 255], [52, 0, 197, 255], [55, 0, 194, 255], [57, 0, 191, 255], [59, 0, 188, 255], [62, 0, 185, 255], [64, 0, 182, 255], [66, 0, 179, 255], [69, 0, 176, 255], [71, 0, 174, 255], [74, 0, 171, 255], [76, 0, 168, 255], [78, 0, 165, 255], [81, 0, 162, 255], [83, 0, 159, 255], [85, 0, 156, 255], [88, 0, 153, 255], [90, 0, 150, 255], [93, 2, 144, 255], [96, 4, 138, 255], [99, 6, 132, 255], [102, 8, 126, 255], [105, 9, 121, 255], [108, 11, 115, 255], [111, 13, 109, 255], [114, 15, 103, 255], [116, 17, 97, 255], [119, 19, 91, 255], [122, 21, 85, 255], [125, 23, 79, 255], [128, 24, 74, 255], [131, 26, 68, 255], [134, 28, 62, 255], [137, 30, 56, 255], [140, 32, 50, 255], [143, 34, 47, 255], [146, 36, 44, 255], [149, 38, 41, 255], [152, 40, 38, 255], [155, 41, 35, 255], [158, 43, 32, 255], [161, 45, 29, 255], [164, 47, 26, 255], [166, 49, 24, 255], [169, 51, 21, 255], [172, 53, 18, 255], [175, 55, 15, 255], [178, 56, 12, 255], [181, 58, 9, 255], [184, 60, 6, 255], [187, 62, 3, 255], [190, 64, 0, 255], [194, 66, 0, 255], [198, 68, 0, 255], [201, 70, 0, 255], [205, 72, 0, 255], [209, 73, 0, 255], [213, 75, 0, 255], [217, 77, 0, 255], [221, 79, 0, 255], [224, 81, 0, 255], [228, 83, 0, 255], [232, 85, 0, 255], [236, 87, 0, 255], [240, 88, 0, 255], [244, 90, 0, 255], [247, 92, 0, 255], [251, 94, 0, 255], [255, 96, 0, 255], [255, 98, 3, 255], [255, 100, 6, 255], [255, 102, 9, 255], [255, 104, 12, 255], [255, 105, 15, 255], [255, 107, 18, 255], [255, 109, 21, 255], [255, 111, 24, 255], [255, 113, 26, 255], [255, 115, 29, 255], [255, 117, 32, 255], [255, 119, 35, 255], [255, 120, 38, 255], [255, 122, 41, 255], [255, 124, 44, 255], [255, 126, 47, 255], [255, 128, 50, 255], [255, 130, 53, 255], [255, 132, 56, 255], [255, 134, 59, 255], [255, 136, 62, 255], [255, 137, 65, 255], [255, 139, 68, 255], [255, 141, 71, 255], [255, 143, 74, 255], [255, 145, 76, 255], [255, 147, 79, 255], [255, 149, 82, 255], [255, 151, 85, 255], [255, 152, 88, 255], [255, 154, 91, 255], [255, 156, 94, 255], [255, 158, 97, 255], [255, 160, 100, 255], [255, 162, 103, 255], [255, 164, 106, 255], [255, 166, 109, 255], [255, 168, 112, 255], [255, 169, 115, 255], [255, 171, 118, 255], [255, 173, 121, 255], [255, 175, 124, 255], [255, 177, 126, 255], [255, 179, 129, 255], [255, 181, 132, 255], [255, 183, 135, 255], [255, 184, 138, 255], [255, 186, 141, 255], [255, 188, 144, 255], [255, 190, 147, 255], [255, 192, 150, 255], [255, 194, 153, 255], [255, 196, 156, 255], [255, 198, 159, 255], [255, 200, 162, 255], [255, 201, 165, 255], [255, 203, 168, 255], [255, 205, 171, 255], [255, 207, 174, 255], [255, 209, 176, 255], [255, 211, 179, 255], [255, 213, 182, 255], [255, 215, 185, 255], [255, 216, 188, 255], [255, 218, 191, 255], [255, 220, 194, 255], [255, 222, 197, 255], [255, 224, 200, 255], [255, 226, 203, 255], [255, 228, 206, 255], [255, 229, 210, 255], [255, 231, 213, 255], [255, 233, 216, 255], [255, 235, 219, 255], [255, 237, 223, 255], [255, 239, 226, 255], [255, 240, 229, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 239, 255], [255, 248, 242, 255], [255, 250, 245, 255], [255, 251, 249, 255], [255, 253, 252, 255], [255, 255, 255, 255]]\n },\n pet20Step: {\n name: 'PET 20 Step',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255]]\n },\n gray: {\n name: 'Gray',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 1, 1]]\n }\n },\n jet: {\n name: 'Jet',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.35, 0, 0], [0.66, 1, 1], [0.89, 1, 1], [1, 0.5, 0.5]],\n green: [[0, 0, 0], [0.125, 0, 0], [0.375, 1, 1], [0.64, 1, 1], [0.91, 0, 0], [1, 0, 0]],\n blue: [[0, 0.5, 0.5], [0.11, 1, 1], [0.34, 1, 1], [0.65, 0, 0], [1, 0, 0]]\n }\n },\n hsv: {\n name: 'HSV',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [0.158730, 1, 1], [0.174603, 0.968750, 0.968750], [0.333333, 0.031250, 0.031250], [0.349206, 0, 0], [0.666667, 0, 0], [0.682540, 0.031250, 0.031250], [0.841270, 0.968750, 0.968750], [0.857143, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.158730, 0.937500, 0.937500], [0.174603, 1, 1], [0.507937, 1, 1], [0.666667, 0.062500, 0.062500], [0.682540, 0, 0], [1, 0, 0]],\n blue: [[0, 0, 0], [0.333333, 0, 0], [0.349206, 0.062500, 0.062500], [0.507937, 1, 1], [0.841270, 1, 1], [0.857143, 0.937500, 0.937500], [1, 0.09375, 0.09375]]\n }\n },\n hot: {\n name: 'Hot',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.0416, 0.0416], [0.365079, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0, 0], [0.746032, 1, 1], [1, 1, 1]],\n blue: [[0, 0, 0], [0.746032, 0, 0], [1, 1, 1]]\n }\n },\n cool: {\n name: 'Cool',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 1, 1], [1, 0, 0]],\n blue: [[0, 1, 1], [1, 1, 1]]\n }\n },\n spring: {\n name: 'Spring',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0, 0]]\n }\n },\n summer: {\n name: 'Summer',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0.5, 0.5], [1, 1, 1]],\n blue: [[0, 0.4, 0.4], [1, 0.4, 0.4]]\n }\n },\n autumn: {\n name: 'Autumn',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 0, 0]]\n }\n },\n winter: {\n name: 'Winter',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 0, 0]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0.5, 0.5]]\n }\n },\n bone: {\n name: 'Bone',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.746032, 0.652778, 0.652778], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0.319444, 0.319444], [0.746032, 0.777778, 0.777778], [1, 1, 1]],\n blue: [[0, 0, 0], [0.365079, 0.444444, 0.444444], [1, 1, 1]]\n }\n },\n copper: {\n name: 'Copper',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.809524, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 0.7812, 0.7812]],\n blue: [[0, 0, 0], [1, 0.4975, 0.4975]]\n }\n },\n spectral: {\n name: 'Spectral',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.05, 0.4667, 0.4667], [0.10, 0.5333, 0.5333], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0, 0], [0.30, 0, 0], [0.35, 0, 0], [0.40, 0, 0], [0.45, 0, 0], [0.50, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0.7333, 0.7333], [0.70, 0.9333, 0.9333], [0.75, 1, 1], [0.80, 1, 1], [0.85, 1, 1], [0.90, 0.8667, 0.8667], [0.95, 0.80, 0.80], [1, 0.80, 0.80]],\n green: [[0, 0, 0], [0.05, 0, 0], [0.10, 0, 0], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0.4667, 0.4667], [0.30, 0.6000, 0.6000], [0.35, 0.6667, 0.6667], [0.40, 0.6667, 0.6667], [0.45, 0.6000, 0.6000], [0.50, 0.7333, 0.7333], [0.55, 0.8667, 0.8667], [0.60, 1, 1], [0.65, 1, 1], [0.70, 0.9333, 0.9333], [0.75, 0.8000, 0.8000], [0.80, 0.6000, 0.6000], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]],\n blue: [[0, 0, 0], [0.05, 0.5333, 0.5333], [0.10, 0.6000, 0.6000], [0.15, 0.6667, 0.6667], [0.20, 0.8667, 0.8667], [0.25, 0.8667, 0.8667], [0.30, 0.8667, 0.8667], [0.35, 0.6667, 0.6667], [0.40, 0.5333, 0.5333], [0.45, 0, 0], [0.5, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0, 0], [0.70, 0, 0], [0.75, 0, 0], [0.80, 0, 0], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]]\n }\n },\n coolwarm: {\n name: 'CoolWarm',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.2298057, 0.2298057], [0.03125, 0.26623388, 0.26623388], [0.0625, 0.30386891, 0.30386891], [0.09375, 0.342804478, 0.342804478], [0.125, 0.38301334, 0.38301334], [0.15625, 0.424369608, 0.424369608], [0.1875, 0.46666708, 0.46666708], [0.21875, 0.509635204, 0.509635204], [0.25, 0.552953156, 0.552953156], [0.28125, 0.596262162, 0.596262162], [0.3125, 0.639176211, 0.639176211], [0.34375, 0.681291281, 0.681291281], [0.375, 0.722193294, 0.722193294], [0.40625, 0.761464949, 0.761464949], [0.4375, 0.798691636, 0.798691636], [0.46875, 0.833466556, 0.833466556], [0.5, 0.865395197, 0.865395197], [0.53125, 0.897787179, 0.897787179], [0.5625, 0.924127593, 0.924127593], [0.59375, 0.944468518, 0.944468518], [0.625, 0.958852946, 0.958852946], [0.65625, 0.96732803, 0.96732803], [0.6875, 0.969954137, 0.969954137], [0.71875, 0.966811177, 0.966811177], [0.75, 0.958003065, 0.958003065], [0.78125, 0.943660866, 0.943660866], [0.8125, 0.923944917, 0.923944917], [0.84375, 0.89904617, 0.89904617], [0.875, 0.869186849, 0.869186849], [0.90625, 0.834620542, 0.834620542], [0.9375, 0.795631745, 0.795631745], [0.96875, 0.752534934, 0.752534934], [1, 0.705673158, 0.705673158]],\n green: [[0, 0.298717966, 0.298717966], [0.03125, 0.353094838, 0.353094838], [0.0625, 0.406535296, 0.406535296], [0.09375, 0.458757618, 0.458757618], [0.125, 0.50941904, 0.50941904], [0.15625, 0.558148092, 0.558148092], [0.1875, 0.604562568, 0.604562568], [0.21875, 0.648280772, 0.648280772], [0.25, 0.688929332, 0.688929332], [0.28125, 0.726149107, 0.726149107], [0.3125, 0.759599947, 0.759599947], [0.34375, 0.788964712, 0.788964712], [0.375, 0.813952739, 0.813952739], [0.40625, 0.834302879, 0.834302879], [0.4375, 0.849786142, 0.849786142], [0.46875, 0.860207984, 0.860207984], [0.5, 0.86541021, 0.86541021], [0.53125, 0.848937047, 0.848937047], [0.5625, 0.827384882, 0.827384882], [0.59375, 0.800927443, 0.800927443], [0.625, 0.769767752, 0.769767752], [0.65625, 0.734132809, 0.734132809], [0.6875, 0.694266682, 0.694266682], [0.71875, 0.650421156, 0.650421156], [0.75, 0.602842431, 0.602842431], [0.78125, 0.551750968, 0.551750968], [0.8125, 0.49730856, 0.49730856], [0.84375, 0.439559467, 0.439559467], [0.875, 0.378313092, 0.378313092], [0.90625, 0.312874446, 0.312874446], [0.9375, 0.24128379, 0.24128379], [0.96875, 0.157246067, 0.157246067], [1, 0.01555616, 0.01555616]],\n blue: [[0, 0.753683153, 0.753683153], [0.03125, 0.801466763, 0.801466763], [0.0625, 0.84495867, 0.84495867], [0.09375, 0.883725899, 0.883725899], [0.125, 0.917387822, 0.917387822], [0.15625, 0.945619588, 0.945619588], [0.1875, 0.968154911, 0.968154911], [0.21875, 0.98478814, 0.98478814], [0.25, 0.995375608, 0.995375608], [0.28125, 0.999836203, 0.999836203], [0.3125, 0.998151185, 0.998151185], [0.34375, 0.990363227, 0.990363227], [0.375, 0.976574709, 0.976574709], [0.40625, 0.956945269, 0.956945269], [0.4375, 0.931688648, 0.931688648], [0.46875, 0.901068838, 0.901068838], [0.5, 0.865395561, 0.865395561], [0.53125, 0.820880546, 0.820880546], [0.5625, 0.774508472, 0.774508472], [0.59375, 0.726736146, 0.726736146], [0.625, 0.678007945, 0.678007945], [0.65625, 0.628751763, 0.628751763], [0.6875, 0.579375448, 0.579375448], [0.71875, 0.530263762, 0.530263762], [0.75, 0.481775914, 0.481775914], [0.78125, 0.434243684, 0.434243684], [0.8125, 0.387970225, 0.387970225], [0.84375, 0.343229596, 0.343229596], [0.875, 0.300267182, 0.300267182], [0.90625, 0.259301199, 0.259301199], [0.9375, 0.220525627, 0.220525627], [0.96875, 0.184115123, 0.184115123], [1, 0.150232812, 0.150232812]]\n }\n },\n blues: {\n name: 'Blues',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.9686274528503418, 0.9686274528503418], [0.125, 0.87058824300765991, 0.87058824300765991], [0.25, 0.7764706015586853, 0.7764706015586853], [0.375, 0.61960786581039429, 0.61960786581039429], [0.5, 0.41960784792900085, 0.41960784792900085], [0.625, 0.25882354378700256, 0.25882354378700256], [0.75, 0.12941177189350128, 0.12941177189350128], [0.875, 0.031372550874948502, 0.031372550874948502], [1, 0.031372550874948502, 0.031372550874948502]],\n green: [[0, 0.9843137264251709, 0.9843137264251709], [0.125, 0.92156863212585449, 0.92156863212585449], [0.25, 0.85882353782653809, 0.85882353782653809], [0.375, 0.7921568751335144, 0.7921568751335144], [0.5, 0.68235296010971069, 0.68235296010971069], [0.625, 0.57254904508590698, 0.57254904508590698], [0.75, 0.44313725829124451, 0.44313725829124451], [0.875, 0.31764706969261169, 0.31764706969261169], [1, 0.18823529779911041, 0.18823529779911041]],\n blue: [[0, 1, 1], [0.125, 0.9686274528503418, 0.9686274528503418], [0.25, 0.93725490570068359, 0.93725490570068359], [0.375, 0.88235294818878174, 0.88235294818878174], [0.5, 0.83921569585800171, 0.83921569585800171], [0.625, 0.7764706015586853, 0.7764706015586853], [0.75, 0.70980393886566162, 0.70980393886566162], [0.875, 0.61176472902297974, 0.61176472902297974], [1, 0.41960784792900085, 0.41960784792900085]]\n }\n }\n};\n/**\n * Generate linearly spaced vectors\n* http://cens.ioc.ee/local/man/matlab/techdoc/ref/linspace.html\n * @param {Number} a A number representing the first vector\n * @param {Number} b A number representing the second vector\n * @param {Number} n The number of linear spaced vectors to generate\n * @returns {Array} An array of points representing linear spaced vectors.\n * @memberof Colors\n */\n\nfunction linspace(a, b, n) {\n n = n === null ? 100 : n;\n var increment = (b - a) / (n - 1);\n var vector = [];\n\n while (n-- > 0) {\n vector.push(a);\n a += increment;\n } // Make sure the last item will always be \"b\" because most of the\n // Time we'll get numbers like 1.0000000000000002 instead of 1.\n\n\n vector[vector.length - 1] = b;\n return vector;\n}\n/**\n * Returns the \"rank/index\" of the element in a sorted array if found or the highest index if not. Uses (binary search)\n * @param {Array} array A sorted array to search in\n * @param {any} elem the element in the array to search for\n * @returns {number} The rank/index of the element in the given array\n * @memberof Colors\n */\n\n\nfunction getRank(array, elem) {\n var left = 0;\n var right = array.length - 1;\n\n while (left <= right) {\n var mid = left + Math.floor((right - left) / 2);\n var midElem = array[mid];\n\n if (midElem === elem) {\n return mid;\n } else if (elem < midElem) {\n right = mid - 1;\n } else {\n left = mid + 1;\n }\n }\n\n return left;\n}\n/**\n * Find the indices into a sorted array a such that, if the corresponding elements\n * In v were inserted before the indices, the order of a would be preserved.\n * http://lagrange.univ-lyon1.fr/docs/numpy/1.11.0/reference/generated/numpy.searchsorted.html\n * @param {Array} inputArray The array where the values will be inserted\n * @param {Array} values An array of the values to be inserted into the inputArray\n * @returns {Array} The indices where elements should be inserted to maintain order.\n * @memberof Colors\n */\n\n\nfunction searchSorted(inputArray, values) {\n var i;\n var indexes = [];\n var len = values.length;\n inputArray.sort(function (a, b) {\n return a - b;\n });\n\n for (i = 0; i < len; i++) {\n indexes[i] = getRank(inputArray, values[i]);\n }\n\n return indexes;\n}\n/**\n * Creates an *N* -element 1-d lookup table\n * @param {Number} N The number of elements in the result lookup table\n * @param {Array} data represented by a list of x,y0,y1 mapping correspondences. Each element in this\n * List represents how a value between 0 and 1 (inclusive) represented by x is mapped to\n * A corresponding value between 0 and 1 (inclusive). The two values of y are to allow for\n * Discontinuous mapping functions (say as might be found in a sawtooth) where y0 represents\n * The value of y for values of x <= to that given, and y1 is the value to be used for x >\n * Than that given). The list must start with x=0, end with x=1, and all values of x must be\n * In increasing order. Values between the given mapping points are determined by simple linear\n * Interpolation.\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the map.\n * @returns {any[]} an array \"result\" where result[x*(N-1)] gives the closest value for\n * Values of x between 0 and 1.\n * @memberof Colors\n */\n\n\nfunction makeMappingArray(N, data, gamma) {\n var i;\n var x = [];\n var y0 = [];\n var y1 = [];\n var lut = [];\n gamma = gamma === null ? 1 : gamma;\n\n for (i = 0; i < data.length; i++) {\n var element = data[i];\n x.push((N - 1) * element[0]);\n y0.push(element[1]);\n y1.push(element[1]);\n }\n\n var xLinSpace = linspace(0, 1, N);\n\n for (i = 0; i < N; i++) {\n xLinSpace[i] = (N - 1) * Math.pow(xLinSpace[i], gamma);\n }\n\n var xLinSpaceIndexes = searchSorted(x, xLinSpace);\n\n for (i = 1; i < N - 1; i++) {\n var index = xLinSpaceIndexes[i];\n var colorPercent = (xLinSpace[i] - x[index - 1]) / (x[index] - x[index - 1]);\n var colorDelta = y0[index] - y1[index - 1];\n lut[i] = colorPercent * colorDelta + y1[index - 1];\n }\n\n lut[0] = y1[0];\n lut[N - 1] = y0[data.length - 1];\n return lut;\n}\n/**\n * Creates a Colormap based on lookup tables using linear segments.\n * @param {{red:Array, green:Array, blue:Array}} segmentedData An object with a red, green and blue entries.\n * Each entry should be a list of x, y0, y1 tuples, forming rows in a table.\n * @param {Number} N The number of elements in the result Colormap\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the Colormap.\n * @returns {Array} The created Colormap object\n * @description The lookup table is generated using linear interpolation for each\n * Primary color, with the 0-1 domain divided into any number of\n * Segments.\n * https://github.com/stefanv/matplotlib/blob/3f1a23755e86fef97d51e30e106195f34425c9e3/lib/matplotlib/colors.py#L663\n * @memberof Colors\n */\n\n\nfunction createLinearSegmentedColormap(segmentedData, N, gamma) {\n var i;\n var lut = [];\n N = N === null ? 256 : N;\n gamma = gamma === null ? 1 : gamma;\n var redLut = makeMappingArray(N, segmentedData.red, gamma);\n var greenLut = makeMappingArray(N, segmentedData.green, gamma);\n var blueLut = makeMappingArray(N, segmentedData.blue, gamma);\n\n for (i = 0; i < N; i++) {\n var red = Math.round(redLut[i] * 255);\n var green = Math.round(greenLut[i] * 255);\n var blue = Math.round(blueLut[i] * 255);\n var rgba = [red, green, blue, 255];\n lut.push(rgba);\n }\n\n return lut;\n}\n/**\n * Return all available colormaps (id and name)\n * @returns {Array<{id,key}>} An array of colormaps with an object containing the \"id\" and display \"name\"\n * @memberof Colors\n */\n\n\nfunction getColormapsList() {\n var colormaps = [];\n var keys = Object.keys(colormapsData);\n keys.forEach(function (key) {\n if (colormapsData.hasOwnProperty(key)) {\n var colormap = colormapsData[key];\n colormaps.push({\n id: key,\n name: colormap.name\n });\n }\n });\n colormaps.sort(function (a, b) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n\n if (aName === bName) {\n return 0;\n }\n\n return aName < bName ? -1 : 1;\n });\n return colormaps;\n}\n/**\n * Return a colorMap object with the provided id and colormapData\n * if the Id matches existent colorMap objects (check colormapsData) the colormapData is ignored.\n * if the colormapData is not empty, the colorMap will be added to the colormapsData list. Otherwise, an empty colorMap object is returned.\n * @param {string} id The ID of the colormap\n * @param {Object} colormapData - An object that can contain a name, numColors, gama, segmentedData and/or colors\n * @returns {*} The Colormap Object\n * @memberof Colors\n*/\n\nfunction getColormap(id, colormapData) {\n var colormap = colormapsData[id];\n\n if (!colormap) {\n colormap = colormapsData[id] = colormapData || {\n name: '',\n colors: []\n };\n }\n\n if (!colormap.colors && colormap.segmentedData) {\n colormap.colors = createLinearSegmentedColormap(colormap.segmentedData, colormap.numColors, colormap.gamma);\n }\n\n return {\n getId: function getId() {\n return id;\n },\n getColorSchemeName: function getColorSchemeName() {\n return colormap.name;\n },\n setColorSchemeName: function setColorSchemeName(name) {\n colormap.name = name;\n },\n getNumberOfColors: function getNumberOfColors() {\n return colormap.colors.length;\n },\n setNumberOfColors: function setNumberOfColors(numColors) {\n while (colormap.colors.length < numColors) {\n colormap.colors.push(COLOR_TRANSPARENT);\n }\n\n colormap.colors.length = numColors;\n },\n getColor: function getColor(index) {\n if (this.isValidIndex(index)) {\n return colormap.colors[index];\n }\n\n return COLOR_TRANSPARENT;\n },\n getColorRepeating: function getColorRepeating(index) {\n var numColors = colormap.colors.length;\n index = numColors ? index % numColors : 0;\n return this.getColor(index);\n },\n setColor: function setColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors[index] = rgba;\n }\n },\n addColor: function addColor(rgba) {\n colormap.colors.push(rgba);\n },\n insertColor: function insertColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1, rgba);\n }\n },\n removeColor: function removeColor(index) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1);\n }\n },\n clearColors: function clearColors() {\n colormap.colors = [];\n },\n buildLookupTable: function buildLookupTable(lut) {\n if (!lut) {\n return;\n }\n\n var numColors = colormap.colors.length;\n lut.setNumberOfTableValues(numColors);\n\n for (var i = 0; i < numColors; i++) {\n lut.setTableValue(i, colormap.colors[i]);\n }\n },\n createLookupTable: function createLookupTable() {\n var lut = new _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.buildLookupTable(lut);\n return lut;\n },\n isValidIndex: function isValidIndex(index) {\n return index >= 0 && index < colormap.colors.length;\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./colors/index.js\":\n/*!*************************!*\\\n !*** ./colors/index.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colormap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colormap.js */ \"./colors/colormap.js\");\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getColormap: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormap\"],\n getColormapsList: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormapsList\"],\n LookupTable: _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./colors/lookupTable.js\":\n/*!*******************************!*\\\n !*** ./colors/lookupTable.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// This code was created based on vtkLookupTable\n// http://www.vtk.org/doc/release/5.0/html/a01697.html\n// https://github.com/Kitware/VTK/blob/master/Common/Core/vtkLookupTable.cxx\nvar BELOW_RANGE_COLOR_INDEX = 0;\nvar ABOVE_RANGE_COLOR_INDEX = 1;\nvar NAN_COLOR_INDEX = 2;\n/**\n * Converts an HSV (Hue, Saturation, Value) color to RGB (Red, Green, Blue) color value\n * @param {Number} hue A number representing the hue color value\n * @param {any} sat A number representing the saturation color value\n * @param {any} val A number representing the value color value\n * @returns {Numberp[]} An RGB color array\n */\n\nfunction HSVToRGB(hue, sat, val) {\n if (hue > 1) {\n throw new Error('HSVToRGB expects hue < 1');\n }\n\n var rgb = [];\n\n if (sat === 0) {\n rgb[0] = val;\n rgb[1] = val;\n rgb[2] = val;\n return rgb;\n }\n\n var hueCase = Math.floor(hue * 6);\n var frac = 6 * hue - hueCase;\n var lx = val * (1 - sat);\n var ly = val * (1 - sat * frac);\n var lz = val * (1 - sat * (1 - frac));\n\n switch (hueCase) {\n /* 0 p.Range[1]) {\n dIndex = p.MaxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.Shift) * p.Scale;\n }\n\n return Math.floor(dIndex);\n}\n/**\n * Maps scalar values into colors via a lookup table\n * LookupTable is an object that is used by mapper objects to map scalar values into rgba (red-green-blue-alpha transparency) color specification,\n * or rgba into scalar values. The color table can be created by direct insertion of color values, or by specifying hue, saturation, value, and alpha range and generating a table\n */\n\n\nvar LookupTable =\n/*#__PURE__*/\nfunction () {\n /**\n * Creates a default linear LookupTable object with 256 colors.\n */\n function LookupTable() {\n _classCallCheck(this, LookupTable);\n\n this.NumberOfColors = 256;\n this.Ramp = 'linear';\n this.TableRange = [0, 255];\n this.HueRange = [0, 0.66667];\n this.SaturationRange = [1, 1];\n this.ValueRange = [1, 1];\n this.AlphaRange = [1, 1];\n this.NaNColor = [128, 0, 0, 255];\n this.BelowRangeColor = [0, 0, 0, 255];\n this.UseBelowRangeColor = true;\n this.AboveRangeColor = [255, 255, 255, 255];\n this.UseAboveRangeColor = true;\n this.InputRange = [0, 255];\n this.Table = [];\n }\n /**\n * Specify the number of values (i.e., colors) in the lookup table.\n * @param {Number} number The number of colors in he LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n\n _createClass(LookupTable, [{\n key: \"setNumberOfTableValues\",\n value: function setNumberOfTableValues(number) {\n this.NumberOfColors = number;\n }\n /**\n * Set the shape of the table ramp to either 'linear', 'scurve' or 'sqrt'\n * @param {String} ramp A string value representing the shape of the table. Allowed values are 'linear', 'scurve' or 'sqrt'\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRamp\",\n value: function setRamp(ramp) {\n this.Ramp = ramp;\n }\n /**\n * Sets the minimum/maximum scalar values for scalar mapping.\n * Scalar values less than minimum range value are clamped to minimum range value.\n * Scalar values greater than maximum range value are clamped to maximum range value.\n * @param {Number} start A double representing the minimum scaler value of the LookupTable\n * @param {any} end A double representing the maximum scaler value of the LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableRange\",\n value: function setTableRange(start, end) {\n this.TableRange[0] = start;\n this.TableRange[1] = end;\n }\n /**\n * Set the range in hue (using automatic generation). Hue ranges between [0,1].\n * @param {Number} start A double representing the minimum hue value in a range. Min. is 0\n * @param {Number} end A double representing the maximum hue value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setHueRange\",\n value: function setHueRange(start, end) {\n this.HueRange[0] = start;\n this.HueRange[1] = end;\n }\n /**\n * Set the range in saturation (using automatic generation). Saturation ranges between [0,1].\n * @param {Number} start A double representing the minimum Saturation value in a range. Min. is 0\n * @param {Number} end A double representing the maximum Saturation value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setSaturationRange\",\n value: function setSaturationRange(start, end) {\n this.SaturationRange[0] = start;\n this.SaturationRange[1] = end;\n }\n /**\n * Set the range in value (using automatic generation). Value ranges between [0,1].\n * @param {Numeber } start A double representing the minimum value in a range. Min. is 0\n * @param {Numeber} end A double representing the maximum value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setValueRange\",\n value: function setValueRange(start, end) {\n // Set the range in value (using automatic generation). Value ranges between [0,1].\n this.ValueRange[0] = start;\n this.ValueRange[1] = end;\n }\n /**\n * (Not Used) Sets the range of scalars which will be mapped.\n * @param {Number} start the minimum scalar value in the range\n * @param {Number} end the maximum scalar value in the range\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRange\",\n value: function setRange(start, end) {\n this.InputRange[0] = start;\n this.InputRange[1] = end;\n }\n /**\n * Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n * @param {Number} start A double representing the minimum alpha value\n * @param {Number} end A double representing the maximum alpha value\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setAlphaRange\",\n value: function setAlphaRange(start, end) {\n // Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n this.AlphaRange[0] = start;\n this.AlphaRange[1] = end;\n }\n /**\n * Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Number} scalar A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"getColor\",\n value: function getColor(scalar) {\n return this.mapValue(scalar);\n }\n /**\n * Generate lookup table from hue, saturation, value, alpha min/max values. Table is built from linear ramp of each value.\n * @param {Boolean} force true to force the build of the LookupTable. Otherwie, false. This is useful if a lookup table has been defined manually\n * (using SetTableValue) and then an application decides to rebuild the lookup table using the implicit process.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"build\",\n value: function build(force) {\n if (this.Table.length > 1 && !force) {\n return;\n } // Clear the table\n\n\n this.Table = [];\n var maxIndex = this.NumberOfColors - 1;\n var hinc, sinc, vinc, ainc;\n\n if (maxIndex) {\n hinc = (this.HueRange[1] - this.HueRange[0]) / maxIndex;\n sinc = (this.SaturationRange[1] - this.SaturationRange[0]) / maxIndex;\n vinc = (this.ValueRange[1] - this.ValueRange[0]) / maxIndex;\n ainc = (this.AlphaRange[1] - this.AlphaRange[0]) / maxIndex;\n } else {\n hinc = sinc = vinc = ainc = 0.0;\n }\n\n for (var i = 0; i <= maxIndex; i++) {\n var hue = this.HueRange[0] + i * hinc;\n var sat = this.SaturationRange[0] + i * sinc;\n var val = this.ValueRange[0] + i * vinc;\n var alpha = this.AlphaRange[0] + i * ainc;\n var rgb = HSVToRGB(hue, sat, val);\n var c_rgba = [];\n\n switch (this.Ramp) {\n case 'scurve':\n c_rgba[0] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[0]) * Math.PI)));\n c_rgba[1] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[1]) * Math.PI)));\n c_rgba[2] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[2]) * Math.PI)));\n c_rgba[3] = Math.floor(alpha * 255);\n break;\n\n case 'linear':\n c_rgba[0] = Math.floor(rgb[0] * 255 + 0.5);\n c_rgba[1] = Math.floor(rgb[1] * 255 + 0.5);\n c_rgba[2] = Math.floor(rgb[2] * 255 + 0.5);\n c_rgba[3] = Math.floor(alpha * 255 + 0.5);\n break;\n\n case 'sqrt':\n c_rgba[0] = Math.floor(Math.sqrt(rgb[0]) * 255 + 0.5);\n c_rgba[1] = Math.floor(Math.sqrt(rgb[1]) * 255 + 0.5);\n c_rgba[2] = Math.floor(Math.sqrt(rgb[2]) * 255 + 0.5);\n c_rgba[3] = Math.floor(Math.sqrt(alpha) * 255 + 0.5);\n break;\n\n default:\n throw new Error(\"Invalid Ramp value (\".concat(this.Ramp, \")\"));\n }\n\n this.Table.push(c_rgba);\n }\n\n this.buildSpecialColors();\n }\n /**\n * Ensures the out-of-range colors (Below range and Above range) are set correctly.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"buildSpecialColors\",\n value: function buildSpecialColors() {\n var numberOfColors = this.NumberOfColors;\n var belowRangeColorIndex = numberOfColors + BELOW_RANGE_COLOR_INDEX;\n var aboveRangeColorIndex = numberOfColors + ABOVE_RANGE_COLOR_INDEX;\n var nanColorIndex = numberOfColors + NAN_COLOR_INDEX; // Below range color\n\n if (this.UseBelowRangeColor || numberOfColors === 0) {\n this.Table[belowRangeColorIndex] = this.BelowRangeColor;\n } else {\n // Duplicate the first color in the table.\n this.Table[belowRangeColorIndex] = this.Table[0];\n } // Above range color\n\n\n if (this.UseAboveRangeColor || numberOfColors === 0) {\n this.Table[aboveRangeColorIndex] = this.AboveRangeColor;\n } else {\n // Duplicate the last color in the table.\n this.Table[aboveRangeColorIndex] = this.Table[numberOfColors - 1];\n } // Always use NanColor\n\n\n this.Table[nanColorIndex] = this.NaNColor;\n }\n /**\n * Similar to GetColor - Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Numeber} v A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"mapValue\",\n value: function mapValue(v) {\n var index = this.getIndex(v);\n\n if (index < 0) {\n return this.NaNColor;\n } else if (index === 0) {\n if (this.UseBelowRangeColor && v < this.TableRange[0]) {\n return this.BelowRangeColor;\n }\n } else if (index === this.NumberOfColors - 1) {\n if (this.UseAboveRangeColor && v > this.TableRange[1]) {\n return this.AboveRangeColor;\n }\n }\n\n return this.Table[index];\n }\n /**\n * Return the table index associated with a particular value.\n * @param {Number} v A double value which table index will be returned.\n * @returns {Number} The index in the LookupTable\n * @memberof Colors\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex(v) {\n var p = {};\n p.Range = [];\n p.MaxIndex = this.NumberOfColors - 1; // This was LookupShiftAndScale\n\n p.Shift = -this.TableRange[0];\n\n if (this.TableRange[1] <= this.TableRange[0]) {\n p.Scale = Number.MAX_VALUE;\n } else {\n p.Scale = p.MaxIndex / (this.TableRange[1] - this.TableRange[0]);\n }\n\n p.Range[0] = this.TableRange[0];\n p.Range[1] = this.TableRange[1]; // First, check whether we have a number...\n\n if (isNaN(v)) {\n // For backwards compatibility\n return -1;\n } // Map to an index:\n\n\n var index = linearIndexLookupMain(v, p); // For backwards compatibility, if the index indicates an\n // Out-of-range value, truncate to index range for in-range colors.\n\n if (index === this.NumberOfColors + BELOW_RANGE_COLOR_INDEX) {\n index = 0;\n } else if (index === this.NumberOfColors + ABOVE_RANGE_COLOR_INDEX) {\n index = this.NumberOfColors - 1;\n }\n\n return index;\n }\n /**\n * Directly load color into lookup table. Use [0,1] double values for color component specification.\n * Make sure that you've either used the Build() method or used SetNumberOfTableValues() prior to using this method.\n * @param {Number} index The index in the LookupTable of where to insert the color value\n * @param {Number[]} rgba An array of [0,1] double values for an RGBA color component\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableValue\",\n value: function setTableValue(index, rgba) {\n // Check if it index, red, green, blue and alpha were passed as parameter\n if (arguments.length === 5) {\n rgba = Array.prototype.slice.call(arguments, 1);\n } // Check the index to make sure it is valid\n\n\n if (index < 0) {\n throw new Error(\"Can't set the table value for negative index (\".concat(index, \")\"));\n }\n\n if (index >= this.NumberOfColors) {\n new Error(\"Index \".concat(index, \" is greater than the number of colors \").concat(this.NumberOfColors));\n }\n\n this.Table[index] = rgba;\n\n if (index === 0 || index === this.NumberOfColors - 1) {\n // This is needed due to the way the special colors are stored in\n // The internal table. If Above/BelowRangeColors are not used and\n // The min/max colors are changed in the table with this member\n // Function, then the colors used for values outside the range may\n // Be incorrect. Calling this here ensures the out-of-range colors\n // Are set correctly.\n this.buildSpecialColors();\n }\n }\n }]);\n\n return LookupTable;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LookupTable);\n\n/***/ }),\n\n/***/ \"./disable.js\":\n/*!********************!*\\\n !*** ./disable.js ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Disable an HTML element for further use in Cornerstone\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Enable\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n if (element === undefined) {\n throw new Error('disable: element must not be undefined');\n } // Search for this element in this list of enabled elements\n\n\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n // We found it!\n // Fire an event so dependencies can cleanup\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_2__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData); // Remove the child DOM elements that we created (e.g.canvas)\n\n enabledElements[i].element.removeChild(enabledElements[i].canvas);\n enabledElements[i].canvas = undefined; // Remove this element from the list of enabled elements\n\n enabledElements.splice(i, 1);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./displayImage.js\":\n/*!*************************!*\\\n !*** ./displayImage.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n\n/**\n * Sets a new image object for a given element.\n *\n * Will also apply an optional viewport setting.\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @param {Object} [viewport] A set of Cornerstone viewport parameters\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image, viewport) {\n if (element === undefined) {\n throw new Error('displayImage: parameter element must not be undefined');\n }\n\n if (image === undefined) {\n throw new Error('displayImage: parameter image must not be undefined');\n }\n\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldImage = enabledElement.image;\n enabledElement.image = image;\n\n if (enabledElement.layers && enabledElement.layers.length) {\n Object(_layers_js__WEBPACK_IMPORTED_MODULE_4__[\"setLayerImage\"])(element, image);\n }\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n }\n\n var frameRate;\n\n if (enabledElement.lastImageTimeStamp !== undefined) {\n var timeSinceLastImage = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - enabledElement.lastImageTimeStamp;\n frameRate = (1000 / timeSinceLastImage).toFixed();\n }\n\n enabledElement.lastImageTimeStamp = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var newImageEventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n oldImage: oldImage,\n enabledElement: enabledElement,\n frameRate: frameRate\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].NEW_IMAGE, newImageEventData);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./draw.js\":\n/*!*****************!*\\\n !*** ./draw.js ***!\n \\*****************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Immediately draws the enabled element\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('draw: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./drawInvalidated.js\":\n/*!****************************!*\\\n !*** ./drawInvalidated.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/**\n * This module is responsible for drawing invalidated enabled elements\n */\n\n\n/**\n * Draws all invalidated enabled elements and clears the invalid flag after drawing it\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n var ee = enabledElements[i];\n\n if (ee.invalid === true) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ee, true);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./enable.js\":\n/*!*******************!*\\\n !*** ./enable.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _generateUUID_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generateUUID.js */ \"./generateUUID.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/getCanvas.js */ \"./internal/getCanvas.js\");\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Enable\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n */\n\n/**\r\n * Returns whether or not an Enabled Element has either a currently active image or\r\n * a non-empty Array of Enabled Element Layers.\r\n *\r\n * @param {EnabledElement} enabledElement An Enabled Element\r\n * @return {Boolean} Whether or not the Enabled Element has an active image or valid set of layers\r\n * @memberof Enable\r\n */\n\nfunction hasImageOrLayers(enabledElement) {\n return enabledElement.image !== undefined || enabledElement.layers.length > 0;\n}\n/**\r\n * Enable an HTML Element for use in Cornerstone\r\n *\r\n * - If there is a Canvas already present within the HTMLElement, and it has the class\r\n * 'cornerstone-canvas', this function will use this existing Canvas instead of creating\r\n * a new one. This may be helpful when using libraries (e.g. React, Vue) which don't\r\n * want third parties to change the DOM.\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @param {Object} options Options for the enabledElement\r\n *\r\n * @return {void}\r\n * @memberof Enable\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, options) {\n if (element === undefined) {\n throw new Error('enable: parameter element cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var canvas = Object(_internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element);\n var enabledElement = {\n element: element,\n canvas: canvas,\n image: undefined,\n // Will be set once image is loaded\n invalid: false,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n uuid: Object(_generateUUID_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])()\n };\n Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"addEnabledElement\"])(enabledElement);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_7__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ELEMENT_ENABLED, enabledElement);\n Object(_resize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, true);\n /**\r\n * Draw the image immediately\r\n *\r\n * @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n function draw(timestamp) {\n if (enabledElement.canvas === undefined) {\n return;\n }\n\n var eventDetails = {\n enabledElement: enabledElement,\n timestamp: timestamp\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].PRE_RENDER, eventDetails);\n\n if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, enabledElement.invalid);\n }\n\n Object(_internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(draw);\n }\n\n draw();\n});\n\n/***/ }),\n\n/***/ \"./enabledElementData.js\":\n/*!*******************************!*\\\n !*** ./enabledElementData.js ***!\n \\*******************************/\n/*! exports provided: getElementData, removeElementData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return getElementData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return removeElementData; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n * @returns {*} Whatever data is stored for this enabled element\n */\n\nfunction getElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (ee.data.hasOwnProperty(dataType) === false) {\n ee.data[dataType] = {};\n }\n\n return ee.data[dataType];\n}\n/**\n * Clears any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n *\n * @returns {void}\n */\n\nfunction removeElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n delete ee.data[dataType];\n}\n\n/***/ }),\n\n/***/ \"./enabledElements.js\":\n/*!****************************!*\\\n !*** ./enabledElements.js ***!\n \\****************************/\n/*! exports provided: getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return getEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return addEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return getEnabledElementsByImageId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return getEnabledElements; });\nvar enabledElements = [];\n/**\n * @module EnabledElements\n */\n\n/**\n * @module Objects\n */\n\n/**\n * A two-dimensional vector\n *\n * @typedef {Object} vec2\n * @memberof Objects\n * @param {Number} x - The x distance\n * @param {Number} y - The y distance\n */\n\n/**\n * VOI\n *\n * @typedef {Object} VOI\n * @memberof Objects\n * @param {Number} windowWidth - Window Width for display\n * @param {Number} windowCenter - Window Center for display\n */\n\n/**\n * Lookup Table Array\n *\n * @typedef {Object} LUT\n * @memberof Objects\n * @property {Number} firstValueMapped\n * @property {Number} numBitsPerEntry\n * @property {Array} lut\n */\n\n/**\n * Image Statistics Object\n *\n * @typedef {Object} ImageStats\n * @memberof Objects\n * @property {Number} [lastGetPixelDataTime] The time in ms taken to retrieve stored pixels required to draw the image\n * @property {Number} [lastStoredPixelDataToCanvasImageDataTime] The time in ms taken to map from stored pixel array to canvas pixel array\n * @property {Number} [lastPutImageDataTime] The time in ms taken for putImageData to put the canvas pixel data into the canvas context\n * @property {Number} [lastRenderTime] The total time in ms taken for the entire rendering function to run\n * @property {Number} [lastLutGenerateTime] The time in ms taken to generate the lookup table for the image\n */\n\n/**\n * An Image Object in Cornerstone\n *\n * @typedef {Object} Image\n * @memberof Objects\n * @property {string} imageId - The imageId associated with this image object\n * @property {Number} minPixelValue - the minimum stored pixel value in the image\n * @property {Number} maxPixelValue - the maximum stored pixel value in the image\n * @property {Number} slope - the rescale slope to convert stored pixel values to modality pixel values or 1 if not specified\n * @property {Number} intercept - the rescale intercept used to convert stored pixel values to modality values or 0 if not specified\n * @property {Number} windowCenter - the default windowCenter to apply to the image\n * @property {Number} windowWidth - the default windowWidth to apply to the image\n * @property {function} getPixelData - a function that returns the underlying pixel data. An array of integers for grayscale and an array of RGBA for color\n * @property {function} getImageData - a function that returns a canvas imageData object for the image. This is only needed for color images\n * @property {function} getCanvas - a function that returns a canvas element with the image loaded into it. This is only needed for color images.\n * @property {function} getImage - a function that returns a JavaScript Image object with the image data. This is optional and typically used for images encoded in standard web JPEG and PNG formats\n * @property {Number} rows - number of rows in the image. This is the same as height but duplicated for convenience\n * @property {Number} columns - number of columns in the image. This is the same as width but duplicated for convenience\n * @property {Number} height - the height of the image. This is the same as rows but duplicated for convenience\n * @property {Number} width - the width of the image. This is the same as columns but duplicated for convenience\n * @property {Boolean} color - true if pixel data is RGB, false if grayscale\n * @property {Object} lut - The Lookup Table\n * @property {Boolean} rgba - Is the color pixel data stored in RGBA?\n * @property {Number} columnPixelSpacing - horizontal distance between the middle of each pixel (or width of each pixel) in mm or undefined if not known\n * @property {Number} rowPixelSpacing - vertical distance between the middle of each pixel (or height of each pixel) in mm or undefined if not known\n * @property {Boolean} invert - true if the the image should initially be displayed be inverted, false if not. This is here mainly to support DICOM images with a photometric interpretation of MONOCHROME1\n * @property {Number} sizeInBytes - the number of bytes used to store the pixels for this image.\n * @property {Boolean} [falseColor=false] - Whether or not the image has undergone false color mapping\n * @property {Array} [origPixelData] - Original pixel data for an image after it has undergone false color mapping\n * @property {ImageStats} [stats] - Statistics for the last redraw of the image\n * @property {Object} cachedLut - Cached Lookup Table for this image.\n * @property {String|Colormap} [colormap] - Depreacted. Use viewport.colormap instead. an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * A Viewport Settings Object Cornerstone\n *\n * @typedef {Object} Viewport\n * @memberof Objects\n * @property {Number} [scale=1.0] - The scale applied to the image. A scale of 1.0 will display no zoom (one image pixel takes up one screen pixel). A scale of 2.0 will be double zoom and a scale of .5 will be zoomed out by 2x\n * @property {vec2} [translation] - An object with properties x and y which describe the translation to apply in the pixel coordinate system. Note that the image is initially displayed centered in the enabled element with a x and y translation of 0 and 0 respectively.\n * @property {VOI} [voi] - an object with properties windowWidth and windowCenter.\n * @property {boolean} [invert=false] - Whether or not the image is inverted.\n * @property {boolean} [pixelReplication=false] - true if the image smooth / interpolation should be used when zoomed in on the image or false if pixel replication should be used.\n * @property {boolean} [hflip=false] - true if the image is flipped horizontally. Default is false\n * @property {boolean} [vflip=false] - true if the image is flipped vertically. Default is false\n * @property {Number} [rotation=0] - the rotation of the image (90 degree increments). Default is 0\n * @property {LUT} [modalityLUT] - the modality LUT to apply or undefined if none\n * @property {LUT} [voiLUT] - the modality LUT to apply or undefined if none\n * @property {String|Colormap} [colormap] - an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * An Enabled Element in Cornerstone\n *\n * @typedef {Object} EnabledElement\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n * @property {EnabledElementLayer[]} [layers] - The layers that have been added to the enabledElement\n * @property {Boolean} [syncViewports] - Whether or not to synchronize the viewport parameters\n * for each of the enabled element's layers\n * @property {Boolean} [lastSyncViewportsState] - The previous state for the sync viewport boolean\n */\n\n/**\n * An Enabled Element Layer in Cornerstone\n *\n * @typedef {Object} EnabledElementLayer\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Object} [options] - Layer drawing options\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n */\n\n/**\n * An Image Load Object\n *\n * @typedef {Object} ImageLoadObject\n * @memberof Objects\n * @property {Promise} promise - The Promise tracking the loading of this image\n * @property {Function|undefined} cancelFn - A function to cancel the image load request\n */\n\n/**\n * Retrieves a Cornerstone Enabled Element object\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n *\n * @returns {EnabledElement} A Cornerstone Enabled Element\n * @memberof EnabledElements\n */\n\nfunction getEnabledElement(element) {\n if (element === undefined) {\n throw new Error('getEnabledElement: parameter element must not be undefined');\n }\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n return enabledElements[i];\n }\n }\n\n throw new Error('element not enabled');\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {EnabledElement} enabledElement A Cornerstone enabledElement Object\n * @returns {void}\n * @memberof EnabledElements\n */\n\nfunction addEnabledElement(enabledElement) {\n if (enabledElement === undefined) {\n throw new Error('getEnabledElement: enabledElement element must not be undefined');\n }\n\n enabledElements.push(enabledElement);\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {string} imageId A Cornerstone Image ID\n * @returns {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElementsByImageId(imageId) {\n var ees = [];\n enabledElements.forEach(function (enabledElement) {\n if (enabledElement.image && enabledElement.image.imageId === imageId) {\n ees.push(enabledElement);\n }\n });\n return ees;\n}\n/**\n * Retrieve all of the currently enabled Cornerstone elements\n *\n * @return {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElements() {\n return enabledElements;\n}\n\n/***/ }),\n\n/***/ \"./events.js\":\n/*!*******************!*\\\n !*** ./events.js ***!\n \\*******************/\n/*! exports provided: default, events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return events; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n NEW_IMAGE: 'cornerstonenewimage',\n INVALIDATED: 'cornerstoneinvalidated',\n PRE_RENDER: 'cornerstoneprerender',\n IMAGE_CACHE_MAXIMUM_SIZE_CHANGED: 'cornerstoneimagecachemaximumsizechanged',\n IMAGE_CACHE_PROMISE_REMOVED: 'cornerstoneimagecachepromiseremoved',\n IMAGE_CACHE_FULL: 'cornerstoneimagecachefull',\n IMAGE_CACHE_CHANGED: 'cornerstoneimagecachechanged',\n WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved',\n WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull',\n IMAGE_LOADED: 'cornerstoneimageloaded',\n IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed',\n ELEMENT_RESIZED: 'cornerstoneelementresized',\n IMAGE_RENDERED: 'cornerstoneimagerendered',\n LAYER_ADDED: 'cornerstonelayeradded',\n LAYER_REMOVED: 'cornerstonelayerremoved',\n ACTIVE_LAYER_CHANGED: 'cornerstoneactivelayerchanged',\n ELEMENT_DISABLED: 'cornerstoneelementdisabled',\n ELEMENT_ENABLED: 'cornerstoneelementenabled'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EVENTS);\n/**\n * EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface\n *\n * @class\n * @memberof Polyfills\n */\n\nvar EventTarget =\n/*#__PURE__*/\nfunction () {\n function EventTarget() {\n _classCallCheck(this, EventTarget);\n\n this.listeners = {};\n this.namespaces = {};\n }\n\n _createClass(EventTarget, [{\n key: \"addEventNamespaceListener\",\n value: function addEventNamespaceListener(type, callback) {\n if (type.indexOf('.') <= 0) {\n return;\n }\n\n this.namespaces[type] = callback;\n this.addEventListener(type.split('.')[0], callback);\n }\n }, {\n key: \"removeEventNamespaceListener\",\n value: function removeEventNamespaceListener(type) {\n if (type.indexOf('.') <= 0 || !this.namespaces[type]) {\n return;\n }\n\n this.removeEventListener(type.split('.')[0], this.namespaces[type]);\n delete this.namespaces[type];\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.addEventNamespaceListener(type, callback);\n return;\n }\n\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(callback);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.removeEventNamespaceListener(type);\n return;\n }\n\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n\n var stack = this.listeners[event.type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return EventTarget;\n}();\n\nvar events = new EventTarget();\n\n/***/ }),\n\n/***/ \"./falseColorMapping.js\":\n/*!******************************!*\\\n !*** ./falseColorMapping.js ***!\n \\******************************/\n/*! exports provided: convertImageToFalseColorImage, convertToFalseColorImage, restoreImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return convertImageToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return convertToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return restoreImage; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony import */ var _colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors/colormap.js */ \"./colors/colormap.js\");\n\n\n\n/**\n * Retrieves the minimum and maximum pixel values from an Array of pixel data\n *\n * @param {Array} pixelData The input pixel data array\n *\n * @returns {{minPixelValue: Number, maxPixelValue: Number}} The minimum and maximum pixel values in the input Array\n */\n\nfunction getPixelValues(pixelData) {\n var minPixelValue = Number.MAX_VALUE;\n var maxPixelValue = Number.MIN_VALUE;\n var len = pixelData.length;\n var pixel;\n\n for (var i = 0; i < len; i++) {\n pixel = pixelData[i];\n minPixelValue = minPixelValue < pixel ? minPixelValue : pixel;\n maxPixelValue = maxPixelValue > pixel ? maxPixelValue : pixel;\n }\n\n return {\n minPixelValue: minPixelValue,\n maxPixelValue: maxPixelValue\n };\n}\n/**\n * Retrieve a function that will allow an image object to be reset to its original form\n * after a false color mapping transformation\n *\n * @param {Image} image A Cornerstone Image Object\n *\n * @return {Function} A function for resetting an Image Object to its original form\n */\n\n\nfunction getRestoreImageMethod(image) {\n if (image.restore) {\n return image.restore;\n }\n\n var color = image.color;\n var rgba = image.rgba;\n var cachedLut = image.cachedLut;\n var slope = image.slope;\n var windowWidth = image.windowWidth;\n var windowCenter = image.windowCenter;\n var minPixelValue = image.minPixelValue;\n var maxPixelValue = image.maxPixelValue;\n return function () {\n image.color = color;\n image.rgba = rgba;\n image.cachedLut = cachedLut;\n image.slope = slope;\n image.windowWidth = windowWidth;\n image.windowCenter = windowCenter;\n image.minPixelValue = minPixelValue;\n image.maxPixelValue = maxPixelValue;\n\n if (image.origPixelData) {\n var pixelData = image.origPixelData;\n\n image.getPixelData = function () {\n return pixelData;\n };\n } // Remove some attributes added by false color mapping\n\n\n image.origPixelData = undefined;\n image.colormapId = undefined;\n image.falseColor = undefined;\n };\n} //\n// Then we need to make sure it will be converted into a colormap object if it's as string.\n\n/**\n * User can pass a colormap or its id as string to some of these public functions.\n * Then we need to make sure it will be converted into a colormap object if it's a string.\n *\n * @param {*} colormap A colormap ID or Object\n * @return {*} The colormap\n */\n\n\nfunction ensuresColormap(colormap) {\n if (colormap && typeof colormap === 'string') {\n colormap = Object(_colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__[\"getColormap\"])(colormap);\n }\n\n return colormap;\n}\n/**\n * Restores a false color image to its original version\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Boolean} True if the image object had a valid restore function, which was run. Otherwise, false.\n */\n\n\nfunction restoreImage(image) {\n if (image.restore && typeof image.restore === 'function') {\n image.restore();\n return true;\n }\n\n return false;\n}\n/**\n * Convert an image to a false color image\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {String|Object} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {Boolean} - Whether or not the image has been converted to a false color image\n */\n\n\nfunction convertImageToFalseColorImage(image, colormap) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n } // User can pass a colormap id or a colormap object\n\n\n colormap = ensuresColormap(colormap);\n var colormapId = colormap.getId(); // Doesn't do anything if colormapId hasn't changed\n\n if (image.colormapId === colormapId) {\n // It has already being converted into a false color image\n // Using the colormapId passed as parameter\n return false;\n } // Restore the image attributes updated when converting to a false color image\n\n\n restoreImage(image); // Convert the image to a false color image\n\n if (colormapId) {\n var minPixelValue = image.minPixelValue || 0;\n var maxPixelValue = image.maxPixelValue || 255;\n image.restore = getRestoreImageMethod(image);\n var lookupTable = colormap.createLookupTable();\n lookupTable.setTableRange(minPixelValue, maxPixelValue); // Update the pixel data and render the new image\n\n Object(_pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lookupTable); // Update min and max pixel values\n\n var pixelValues = getPixelValues(image.getPixelData());\n image.minPixelValue = pixelValues.minPixelValue;\n image.maxPixelValue = pixelValues.maxPixelValue;\n image.windowWidth = 255;\n image.windowCenter = 128; // Cache the last colormapId used for performance\n // Then it doesn't need to be re-rendered on next\n // Time if the user hasn't updated it\n\n image.colormapId = colormapId;\n } // Return `true` to tell the caller that the image has got updated\n\n\n return true;\n}\n/**\n * Convert the image of a element to a false color image\n *\n * @param {HTMLElement} element The Cornerstone element\n * @param {*} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {void}\n */\n\n\nfunction convertToFalseColorImage(element, colormap) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return convertImageToFalseColorImage(enabledElement.image, colormap);\n}\n\n\n\n/***/ }),\n\n/***/ \"./fitToWindow.js\":\n/*!************************!*\\\n !*** ./fitToWindow.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n\n\n/**\n * Adjusts an image's scale and translation so the image is centered and all pixels\n * in the image are viewable.\n *\n * @param {HTMLElement} element The Cornerstone element to update\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var image = enabledElement.image; // The new scale is the minimum of the horizontal and vertical scale values\n\n enabledElement.viewport.scale = Object(_internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image, enabledElement.viewport.rotation).scaleFactor;\n enabledElement.viewport.translation.x = 0;\n enabledElement.viewport.translation.y = 0;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./generateUUID.js\":\n/*!*************************!*\\\n !*** ./generateUUID.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n* Generates a UUID for the enabledElement.\n*\n* @return {String} the UUID.\n*/\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n // https://stackoverflow.com/a/8809472/9208320 Public Domain/MIT\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\"&\",\"|\"] }] */\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // Use high-precision timer if available\n }\n\n return 'x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n});\n\n/***/ }),\n\n/***/ \"./getDefaultViewportForImage.js\":\n/*!***************************************!*\\\n !*** ./getDefaultViewportForImage.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n\n\n/**\n * Returns a default viewport for display the specified image on the specified\n * enabled element. The default viewport is fit to window\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image Object\n *\n * @returns {Viewport} The default viewport for the image\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n});\n\n/***/ }),\n\n/***/ \"./getImage.js\":\n/*!*********************!*\\\n !*** ./getImage.js ***!\n \\*********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Returns the currently displayed image for an element or undefined if no image has\n * been displayed yet\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Image} The Cornerstone Image Object displayed in this element\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return enabledElement.image;\n});\n\n/***/ }),\n\n/***/ \"./getPixels.js\":\n/*!**********************!*\\\n !*** ./getPixels.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony import */ var _internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n\n\n\n/**\n * Retrieves an array of pixels from a rectangular region with modality LUT transformation applied\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The modality pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n var storedPixels = Object(_getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, x, y, width, height);\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var mlutfn = Object(_internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ee.image.slope, ee.image.intercept, ee.viewport.modalityLUT);\n return storedPixels.map(mlutfn);\n});\n\n/***/ }),\n\n/***/ \"./getStoredPixels.js\":\n/*!****************************!*\\\n !*** ./getStoredPixels.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves an array of stored pixel values from a rectangular region of an image\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The stored pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n if (element === undefined) {\n throw new Error('getStoredPixels: parameter element must not be undefined');\n }\n\n x = Math.round(x);\n y = Math.round(y);\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var storedPixels = [];\n var index = 0;\n var pixelData = enabledElement.image.getPixelData();\n\n for (var row = 0; row < height; row++) {\n for (var column = 0; column < width; column++) {\n var spIndex = (row + y) * enabledElement.image.columns + (column + x);\n storedPixels[index++] = pixelData[spIndex];\n }\n }\n\n return storedPixels;\n});\n\n/***/ }),\n\n/***/ \"./getViewport.js\":\n/*!************************!*\\\n !*** ./getViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves the viewport for the specified enabled element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Viewport|undefined} The Cornerstone Viewport settings for this element, if they exist. Otherwise, undefined\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var viewport = enabledElement.viewport;\n\n if (viewport === undefined) {\n return;\n } // Return a copy of the viewport\n\n\n return Object.assign({}, viewport);\n});\n\n/***/ }),\n\n/***/ \"./imageCache.js\":\n/*!***********************!*\\\n !*** ./imageCache.js ***!\n \\***********************/\n/*! exports provided: cachedImages, setMaximumSizeBytes, putImageLoadObject, getImageLoadObject, removeImageLoadObject, getCacheInfo, purgeCache, changeImageIdCacheSize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cachedImages\", function() { return cachedImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumSizeBytes\", function() { return setMaximumSizeBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"putImageLoadObject\", function() { return putImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageLoadObject\", function() { return getImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeImageLoadObject\", function() { return removeImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCacheInfo\", function() { return getCacheInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeCache\", function() { return purgeCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeImageIdCacheSize\", function() { return changeImageIdCacheSize; });\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\n * This module deals with caching images\n * @module ImageCache\n */\n\nvar maximumSizeInBytes = 1024 * 1024 * 1024; // 1 GB\n\nvar cacheSizeInBytes = 0; // Dictionary of imageId to cachedImage objects\n\nvar imageCacheDict = {}; // Array of cachedImage objects\n\nvar cachedImages = [];\n/** Sets the maximum size of cache and purges cache contents if necessary.\n *\n * @param {number} numBytes The maximun size that the cache should occupy.\n * @returns {void}\n */\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_MAXIMUM_SIZE_CHANGED);\n purgeCacheIfNecessary();\n}\n/**\n * Purges the cache if size exceeds maximum\n * @returns {void}\n */\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary)\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n var imageId = lastCachedImage.imageId;\n removeImageLoadObject(imageId);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_PROMISE_REMOVED, {\n imageId: imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_FULL, cacheInfo);\n}\n/**\n * Puts a new image loader into the cache\n *\n * @param {string} imageId ImageId of the image loader\n * @param {Object} imageLoadObject The object that is loading or loaded the image\n * @returns {void}\n */\n\n\nfunction putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n\n if (imageCacheDict.hasOwnProperty(imageId) === true) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n\n if (imageLoadObject.cancelFn && typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancelFn must be a function');\n }\n\n var cachedImage = {\n loaded: false,\n imageId: imageId,\n sharedCacheKey: undefined,\n // The sharedCacheKey for this imageId. undefined by default\n imageLoadObject: imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0\n };\n imageCacheDict[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n imageLoadObject.promise.then(function (image) {\n if (cachedImages.indexOf(cachedImage) === -1) {\n // If the image has been purged before being loaded, we stop here.\n return;\n }\n\n cachedImage.loaded = true;\n cachedImage.image = image;\n\n if (image.sizeInBytes === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n\n cachedImage.sizeInBytes = image.sizeInBytes;\n cacheSizeInBytes += cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'addImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n purgeCacheIfNecessary();\n }, function () {\n var cachedImage = imageCacheDict[imageId];\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n delete imageCacheDict[imageId];\n });\n}\n/**\n * Retuns the object that is loading a given imageId\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n}\n/**\n * Removes the image loader associated with a given Id from the cache\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction removeImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'deleteImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n decache(cachedImage.imageLoadObject);\n delete imageCacheDict[imageId];\n}\n/**\n * @typedef {Object} CacheInformation\n * @property {number} maximumSizeInBytes The maximum size of the cache in bytes\n * @property {number} cacheSizeInBytes Currently occupied space in the cache in bytes\n * @property {number} numberOfImagesCached Number of ImageLoaders in the cache\n * @returns {void}\n */\n\n/**\n * Gets the current state of the cache\n * @returns {void}\n */\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n} // This method should only be called by `removeImageLoadObject` because it's\n// The one that knows how to deal with shared cache keys and cache size.\n\n/**\n * INTERNAL: Removes and ImageLoader from the cache\n *\n * @param {Object} imageLoadObject Image Loader Object to remove\n * @returns {void}\n */\n\nfunction decache(imageLoadObject) {\n imageLoadObject.promise.then(function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n }, function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n });\n}\n/**\n * Removes all images from cache\n * @returns {void}\n */\n\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages[0];\n removeImageLoadObject(removedCachedImage.imageId);\n }\n}\n/**\n * Updates the space than an image is using in the cache\n *\n * @param {string} imageId Image ID\n * @param {number} newCacheSize New image size\n * @returns {void}\n */\n\nfunction changeImageIdCacheSize(imageId, newCacheSize) {\n var cacheEntry = imageCacheDict[imageId];\n\n if (cacheEntry) {\n cacheEntry.imageLoadObject.promise.then(function (image) {\n var cacheSizeDifference = newCacheSize - image.sizeInBytes;\n image.sizeInBytes = newCacheSize;\n cacheEntry.sizeInBytes = newCacheSize;\n cacheSizeInBytes += cacheSizeDifference;\n var eventDetails = {\n action: 'changeImageSize',\n image: image\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n });\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n imageCache: imageCacheDict,\n cachedImages: cachedImages,\n setMaximumSizeBytes: setMaximumSizeBytes,\n putImageLoadObject: putImageLoadObject,\n getImageLoadObject: getImageLoadObject,\n removeImageLoadObject: removeImageLoadObject,\n getCacheInfo: getCacheInfo,\n purgeCache: purgeCache,\n changeImageIdCacheSize: changeImageIdCacheSize\n});\n\n/***/ }),\n\n/***/ \"./imageLoader.js\":\n/*!************************!*\\\n !*** ./imageLoader.js ***!\n \\************************/\n/*! exports provided: loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return loadImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return loadAndCacheImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return registerImageLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return registerUnknownImageLoader; });\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n\n/**\r\n * This module deals with ImageLoaders, loading images and caching images\r\n * @module ImageLoader\r\n */\n\nvar imageLoaders = {};\nvar unknownImageLoader;\n/**\r\n * Load an image using a registered Cornerstone Image Loader.\r\n *\r\n * The image loader that is used will be\r\n * determined by the image loader scheme matching against the imageId.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\nfunction loadImageFromImageLoader(imageId, options) {\n var colonIndex = imageId.indexOf(':');\n var scheme = imageId.substring(0, colonIndex);\n var loader = imageLoaders[scheme];\n\n if (loader === undefined || loader === null) {\n if (unknownImageLoader !== undefined) {\n return unknownImageLoader(imageId);\n }\n\n throw new Error('loadImageFromImageLoader: no image loader for imageId');\n }\n\n var imageLoadObject = loader(imageId, options); // Broadcast an image loaded event once the image is loaded\n\n imageLoadObject.promise.then(function (image) {\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOADED, {\n image: image\n });\n }, function (error) {\n var errorObject = {\n imageId: imageId,\n error: error\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOAD_FAILED, errorObject);\n });\n return imageLoadObject;\n}\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The loaded image is not stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\n\nfunction loadImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n return loadImageFromImageLoader(imageId, options).promise;\n} //\n\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The image is stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} Image Loader Object\r\n * @memberof ImageLoader\r\n */\n\nfunction loadAndCacheImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadAndCacheImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n imageLoadObject = loadImageFromImageLoader(imageId, options);\n Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"putImageLoadObject\"])(imageId, imageLoadObject);\n return imageLoadObject.promise;\n}\n/**\r\n * Registers an imageLoader plugin with cornerstone for the specified scheme\r\n *\r\n * @param {String} scheme The scheme to use for this image loader (e.g. 'dicomweb', 'wadouri', 'http')\r\n * @param {Function} imageLoader A Cornerstone Image Loader function\r\n * @returns {void}\r\n * @memberof ImageLoader\r\n */\n\nfunction registerImageLoader(scheme, imageLoader) {\n imageLoaders[scheme] = imageLoader;\n}\n/**\r\n * Registers a new unknownImageLoader and returns the previous one\r\n *\r\n * @param {Function} imageLoader A Cornerstone Image Loader\r\n *\r\n * @returns {Function|Undefined} The previous Unknown Image Loader\r\n * @memberof ImageLoader\r\n */\n\nfunction registerUnknownImageLoader(imageLoader) {\n var oldImageLoader = unknownImageLoader;\n unknownImageLoader = imageLoader;\n return oldImageLoader;\n}\n\n/***/ }),\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawImage\", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ \"./internal/generateLut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateLut\", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewport\", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageData\", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedColorPixelDataToCanvasImageData\", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataColorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataPseudocolorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ \"./internal/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internal\", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"]; });\n\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"]; });\n\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"]; });\n\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"]; });\n\n/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"]; });\n\n/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToCanvas\", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ \"./canvasToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canvasToPixel\", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ \"./disable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ \"./displayImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"displayImage\", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ \"./draw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ \"./drawInvalidated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawInvalidated\", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ \"./enable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"enable\", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ \"./enabledElementData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"]; });\n\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"]; });\n\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"]; });\n\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitToWindow\", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ \"./getDefaultViewportForImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewportForImage\", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ \"./getImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImage\", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ \"./getPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getPixels\", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStoredPixels\", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ \"./getViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewport\", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ \"./imageLoader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"]; });\n\n/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ \"./invalidate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidate\", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ \"./invalidateImageId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidateImageId\", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ \"./pageToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageToPixel\", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ \"./pixelToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelToCanvas\", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ \"./reset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setToPixelCoordinateSystem\", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ \"./setViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setViewport\", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"updateImage\", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelDataToFalseColorData\", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ \"./rendering/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rendering\", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"imageCache\", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ \"./metaData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"metaData\", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ \"./webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"webGL\", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colors\", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ \"./falseColorMapping.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"]; });\n\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"]; });\n\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerEvent\", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n// Internal (some of these are from old internal/legacy expose)\n\n\n\n\n\n\n\n\n // Rendering\n\n\n\n\n\n\n\n/**\n * @module PixelCoordinateSystem\n */\n\n/**\n * @module ViewportSettings\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar cornerstone = {\n drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"],\n renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"],\n renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"],\n renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"],\n renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"],\n renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"],\n removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"],\n getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"],\n addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"],\n getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"],\n getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"],\n addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"],\n removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"],\n getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"],\n getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"],\n getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"],\n setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"],\n getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"],\n purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"],\n setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"],\n fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"],\n loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"],\n registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"],\n registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"],\n invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"],\n convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"],\n restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"],\n EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n events: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"],\n triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cornerstone);\n\n/***/ }),\n\n/***/ \"./internal/calculateTransform.js\":\n/*!****************************************!*\\\n !*** ./internal/calculateTransform.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n/**\n * Calculate the transform for a Cornerstone enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\n * @param {Number} [scale] The viewport scale\n * @return {Transform} The current transform\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, scale) {\n var transform = new _transform_js__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"](); // Move to center of canvas\n\n transform.translate(enabledElement.canvas.width / 2, enabledElement.canvas.height / 2); // Apply the rotation before scaling for non square pixels\n\n var angle = enabledElement.viewport.rotation;\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n } // Apply the scale\n\n\n var widthScale = enabledElement.viewport.scale;\n var heightScale = enabledElement.viewport.scale;\n var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1);\n var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1);\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {\n if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) {\n widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing;\n } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) {\n heightScale *= enabledElement.image.rowPixelSpacing / enabledElement.image.columnPixelSpacing;\n }\n } else {\n // These should be good for \"TRUE SIZE\" and \"MAGNIFY\"\n widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing;\n heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing;\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') {\n // Fit TRUE IMAGE image (width/height) to window\n var verticalScale = enabledElement.canvas.height / (height * heightScale);\n var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale\n\n widthScale = heightScale = Math.min(horizontalScale, verticalScale);\n\n if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) {\n widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing;\n } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) {\n heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing;\n }\n }\n }\n\n transform.scale(widthScale, heightScale); // Unrotate to so we can translate unrotated\n\n if (angle !== 0) {\n transform.rotate(-angle * Math.PI / 180);\n } // Apply the pan offset\n\n\n transform.translate(enabledElement.viewport.translation.x, enabledElement.viewport.translation.y); // Rotate again so we can apply general scale\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n }\n\n if (scale !== undefined) {\n // Apply the font scale\n transform.scale(scale, scale);\n } // Apply Flip if required\n\n\n if (enabledElement.viewport.hflip) {\n transform.scale(-1, 1);\n }\n\n if (enabledElement.viewport.vflip) {\n transform.scale(1, -1);\n } // Move back from center of image\n\n\n transform.translate(-width / 2, -height / 2);\n return transform;\n});\n\n/***/ }),\n\n/***/ \"./internal/computeAutoVoi.js\":\n/*!************************************!*\\\n !*** ./internal/computeAutoVoi.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return computeAutoVoi; });\n/**\n * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.\n *\n * @param {Viewport} viewport - Object containing the viewport properties\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @returns {void}\n * @memberof Internal\n */\nfunction computeAutoVoi(viewport, image) {\n if (hasVoi(viewport)) {\n return;\n }\n\n var maxVoi = image.maxPixelValue * image.slope + image.intercept;\n var minVoi = image.minPixelValue * image.slope + image.intercept;\n var ww = maxVoi - minVoi;\n var wc = (maxVoi + minVoi) / 2;\n\n if (viewport.voi === undefined) {\n viewport.voi = {\n windowWidth: ww,\n windowCenter: wc\n };\n } else {\n viewport.voi.windowWidth = ww;\n viewport.voi.windowCenter = wc;\n }\n}\n/**\n * Check if viewport has voi LUT data\n * @param {any} viewport The viewport to check for voi LUT data\n * @returns {Boolean} true viewport has LUT data (Window Width/Window Center or voiLUT). Otherwise, false.\n * @memberof Internal\n */\n\nfunction hasVoi(viewport) {\n var hasLut = viewport.voiLUT && viewport.voiLUT.lut && viewport.voiLUT.lut.length > 0;\n return hasLut || viewport.voi.windowWidth !== undefined && viewport.voi.windowCenter !== undefined;\n}\n\n/***/ }),\n\n/***/ \"./internal/drawCompositeImage.js\":\n/*!****************************************!*\\\n !*** ./internal/drawCompositeImage.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layers.js */ \"./layers.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n\n\n\n\n\n\n\nfunction getViewportRatio(baseLayer, targetLayer) {\n if (!baseLayer.syncProps) {\n updateLayerSyncProps(baseLayer);\n }\n\n if (!targetLayer.syncProps) {\n updateLayerSyncProps(targetLayer);\n }\n\n return targetLayer.syncProps.originalScale / baseLayer.syncProps.originalScale;\n}\n\nfunction updateLayerSyncProps(layer) {\n var syncProps = layer.syncProps || {}; // This is used to keep each of the layers' viewports in sync with the active layer\n\n syncProps.originalScale = layer.viewport.scale;\n layer.syncProps = syncProps;\n} // Sync all viewports based on active layer's viewport\n\n\nfunction syncViewports(layers, activeLayer) {\n // If we intend to keep the viewport's scale, translation and rotation in sync,\n // loop through the layers\n layers.forEach(function (layer) {\n // Don't do anything to the active layer\n // Don't do anything if this layer has no viewport\n if (layer === activeLayer || !layer.viewport || !activeLayer.viewport) {\n return;\n }\n\n if (!layer.syncProps) {\n updateLayerSyncProps(layer);\n }\n\n var viewportRatio = getViewportRatio(activeLayer, layer); // Update the layer's translation and scale to keep them in sync with the first image\n // based on the ratios between the images\n\n layer.viewport.scale = activeLayer.viewport.scale * viewportRatio;\n layer.viewport.rotation = activeLayer.viewport.rotation;\n layer.viewport.translation = {\n x: activeLayer.viewport.translation.x / viewportRatio,\n y: activeLayer.viewport.translation.y / viewportRatio\n };\n layer.viewport.hflip = activeLayer.viewport.hflip;\n layer.viewport.vflip = activeLayer.viewport.vflip;\n });\n}\n/**\n * Internal function to render all layers for a Cornerstone enabled element\n *\n * @param {CanvasRenderingContext2D} context Canvas context to draw upon\n * @param {EnabledElementLayer[]} layers The array of all layers for this enabled element\n * @param {Boolean} invalidated A boolean whether or not this image has been invalidated and must be redrawn\n * @returns {void}\n * @memberof Internal\n */\n\n\nfunction renderLayers(context, layers, invalidated) {\n // Loop through each layer and draw it to the canvas\n layers.forEach(function (layer, index) {\n if (!layer.image) {\n return;\n }\n\n context.save(); // Set the layer's canvas to the pixel coordinate system\n\n layer.canvas = context.canvas;\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(layer, context); // Render into the layer's canvas\n\n var colormap = layer.viewport.colormap || layer.options.colormap;\n var labelmap = layer.viewport.labelmap;\n var isInvalid = layer.invalid || invalidated;\n\n if (colormap && colormap !== '' && labelmap === true) {\n Object(_rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"addLabelMapLayer\"])(layer, isInvalid);\n } else if (colormap && colormap !== '') {\n Object(_rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"addPseudoColorLayer\"])(layer, isInvalid);\n } else if (layer.image.color === true) {\n Object(_rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"addColorLayer\"])(layer, isInvalid);\n } else {\n // If this is the base layer, use the alpha channel for rendering of the grayscale image\n var useAlphaChannel = index === 0;\n Object(_rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"addGrayscaleLayer\"])(layer, isInvalid, useAlphaChannel);\n } // Apply any global opacity settings that have been defined for this layer\n\n\n if (layer.options && layer.options.opacity) {\n context.globalAlpha = layer.options.opacity;\n } else {\n context.globalAlpha = 1;\n }\n\n if (layer.options && layer.options.fillStyle) {\n context.fillStyle = layer.options.fillStyle;\n } // Set the pixelReplication property before drawing from the layer into the\n // composite canvas\n\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas\n\n var sx = layer.viewport.displayedArea.tlhc.x - 1;\n var sy = layer.viewport.displayedArea.tlhc.y - 1;\n var width = layer.viewport.displayedArea.brhc.x - sx;\n var height = layer.viewport.displayedArea.brhc.y - sy;\n context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height);\n context.restore();\n layer.invalid = false;\n });\n}\n/**\n * Internal API function to draw a composite image to a given enabled element\n *\n * @param {EnabledElement} enabledElement An enabled element to draw into\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var element = enabledElement.element;\n var allLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getLayers\"])(element);\n var activeLayer = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getActiveLayer\"])(element);\n var visibleLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getVisibleLayers\"])(element);\n var resynced = !enabledElement.lastSyncViewportsState && enabledElement.syncViewports; // This state will help us to determine if the user has re-synced the\n // layers allowing us to make a new copy of the viewports\n\n enabledElement.lastSyncViewportsState = enabledElement.syncViewports; // Stores a copy of all viewports if the user has just synced them then we can use the\n // copies to calculate anything later (ratio, translation offset, rotation offset, etc)\n\n if (resynced) {\n allLayers.forEach(function (layer) {\n if (layer.viewport) {\n updateLayerSyncProps(layer);\n }\n });\n } // Sync all viewports in case it's activated\n\n\n if (enabledElement.syncViewports === true) {\n syncViewports(visibleLayers, activeLayer);\n } // Get the enabled element's canvas so we can draw to it\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Render all visible layers\n\n renderLayers(context, visibleLayers, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImage.js\":\n/*!*******************************!*\\\n !*** ./internal/drawImage.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Internal API function to draw an image to a given enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} [invalidated = false] - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof Internal\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n enabledElement.needsRedraw = true;\n\n if (invalidated) {\n enabledElement.invalid = true;\n }\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImageSync.js\":\n/*!***********************************!*\\\n !*** ./internal/drawImageSync.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n/* harmony import */ var _drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawCompositeImage.js */ \"./internal/drawCompositeImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n\n\n\n\n\n\n\n\n/**\r\n * Draw an image to a given enabled element synchronously\r\n *\r\n * @param {EnabledElement} enabledElement An enabled element to draw into\r\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\r\n * @returns {void}\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var image = enabledElement.image;\n var element = enabledElement.element;\n var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn\n\n if (!enabledElement.canvas || !(enabledElement.image || layers.length)) {\n return;\n } // Start measuring the time needed to draw the image/layers\n\n\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n image.stats = {\n lastGetPixelDataTime: -1.0,\n lastStoredPixelDataToCanvasImageDataTime: -1.0,\n lastPutImageDataTime: -1.0,\n lastRenderTime: -1.0,\n lastLutGenerateTime: -1.0\n };\n\n if (layers && layers.length) {\n Object(_drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n } else if (image) {\n var render = image.render;\n\n if (!render) {\n if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '' && enabledElement.image.labelmap === true) {\n render = _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__[\"renderLabelMapImage\"];\n } else if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '') {\n render = _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderPseudoColorImage\"];\n } else if (image.color) {\n render = _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderColorImage\"];\n } else {\n render = _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderGrayscaleImage\"];\n }\n }\n\n render(enabledElement, invalidated);\n } // Calculate how long it took to draw the image/layers\n\n\n var renderTimeInMs = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var eventData = {\n viewport: enabledElement.viewport,\n element: element,\n image: image,\n enabledElement: enabledElement,\n canvasContext: enabledElement.canvas.getContext('2d'),\n renderTimeInMs: renderTimeInMs\n };\n image.stats.lastRenderTime = renderTimeInMs;\n enabledElement.invalid = false;\n enabledElement.needsRedraw = false;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].IMAGE_RENDERED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./internal/generateColorLut.js\":\n/*!**************************************!*\\\n !*** ./internal/generateColorLut.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n/**\n * Creates a LUT used while rendering to convert stored pixel values to\n * display pixels\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Number} windowWidth The Window Width\n * @param {Number} windowCenter The Window Center\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\n *\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(storedValue);\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(_storedValue);\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/generateLut.js\":\n/*!*********************************!*\\\n !*** ./internal/generateLut.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n\n/**\r\n * Creates a LUT used while rendering to convert stored pixel values to\r\n * display pixels\r\n *\r\n * @param {Image} image A Cornerstone Image Object\r\n * @param {Number} windowWidth The Window Width\r\n * @param {Number} windowCenter The Window Center\r\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\r\n * @param {Array} [modalityLUT] A modality Lookup Table\r\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\r\n *\r\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, modalityLUT, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image.slope, image.intercept, modalityLUT);\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(mlutfn(_storedValue));\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/getCanvas.js\":\n/*!*******************************!*\\\n !*** ./internal/getCanvas.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getCanvas; });\nvar CANVAS_CSS_CLASS = 'cornerstone-canvas';\n/**\n * Create a canvas and append it to the element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\nfunction createCanvas(element) {\n var canvas = document.createElement('canvas');\n canvas.style.display = 'block';\n canvas.classList.add(CANVAS_CSS_CLASS);\n element.appendChild(canvas);\n return canvas;\n}\n/**\n * Create a canvas or returns the one that already exists for a given element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\n\nfunction getCanvas(element) {\n var selector = \"canvas.\".concat(CANVAS_CSS_CLASS);\n return element.querySelector(selector) || createCanvas(element);\n}\n\n/***/ }),\n\n/***/ \"./internal/getDefaultViewport.js\":\n/*!****************************************!*\\\n !*** ./internal/getDefaultViewport.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n/**\n * Creates a new viewport object containing default values\n *\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\nfunction createViewport() {\n var displayedArea = createDefaultDisplayedArea();\n return {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: undefined,\n windowCenter: undefined\n },\n invert: false,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: undefined,\n voiLUT: undefined,\n colormap: undefined,\n labelmap: false,\n displayedArea: displayedArea\n };\n}\n/**\n * Creates the default displayed area.\n * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space.\n *\n * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object\n * @memberof Internal\n */\n\n\nfunction createDefaultDisplayedArea() {\n return {\n // Top Left Hand Corner\n tlhc: {\n x: 1,\n y: 1\n },\n // Bottom Right Hand Corner\n brhc: {\n x: 1,\n y: 1\n },\n rowPixelSpacing: 1,\n columnPixelSpacing: 1,\n presentationSizeMode: 'NONE'\n };\n}\n/**\n * Creates a new viewport object containing default values for the image and canvas\n *\n * @param {HTMLElement} canvas A Canvas DOM element\n * @param {Image} image A Cornerstone Image Object\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n if (canvas === undefined) {\n throw new Error('getDefaultViewport: parameter canvas must not be undefined');\n }\n\n if (image === undefined) {\n return createViewport();\n } // Fit image to window\n\n\n var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(canvas, image, 0).scaleFactor;\n return {\n scale: scale,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter\n },\n invert: image.invert,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: image.modalityLUT,\n voiLUT: image.voiLUT,\n colormap: image.colormap,\n labelmap: Boolean(image.labelmap),\n displayedArea: {\n tlhc: {\n x: 1,\n y: 1\n },\n brhc: {\n x: image.columns,\n y: image.rows\n },\n rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing,\n columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing,\n presentationSizeMode: 'NONE'\n }\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageFitScale.js\":\n/*!**************************************!*\\\n !*** ./internal/getImageFitScale.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n/* harmony import */ var _getImageSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageSize.js */ \"./internal/getImageSize.js\");\n\n\n/**\n * Calculates the horizontal, vertical and minimum scale factor for an image\n @param {{width, height}} windowSize The window size where the image is displayed. This can be any HTML element or structure with a width, height fields (e.g. canvas).\n * @param {any} image The cornerstone image object\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{horizontalScale, verticalScale, scaleFactor}} The calculated horizontal, vertical and minimum scale factor\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowSize, image) {\n var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(windowSize, 'getImageScale: parameter windowSize must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageScale: parameter image must not be undefined');\n var imageSize = Object(_getImageSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, rotation);\n var rowPixelSpacing = image.rowPixelSpacing || 1;\n var columnPixelSpacing = image.columnPixelSpacing || 1;\n var verticalRatio = 1;\n var horizontalRatio = 1;\n\n if (rowPixelSpacing < columnPixelSpacing) {\n horizontalRatio = columnPixelSpacing / rowPixelSpacing;\n } else {\n // even if they are equal we want to calculate this ratio (the ration might be 0.5)\n verticalRatio = rowPixelSpacing / columnPixelSpacing;\n }\n\n var verticalScale = windowSize.height / imageSize.height / verticalRatio;\n var horizontalScale = windowSize.width / imageSize.width / horizontalRatio; // Fit image to window\n\n return {\n verticalScale: verticalScale,\n horizontalScale: horizontalScale,\n scaleFactor: Math.min(horizontalScale, verticalScale)\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageSize.js\":\n/*!**********************************!*\\\n !*** ./internal/getImageSize.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n\n/**\n * Check if the angle is rotated\n * @param {Number} rotation the rotation angle\n * @returns {Boolean} true if the angle is rotated; Otherwise, false.\n * @memberof Internal\n */\n\nfunction isRotated(rotation) {\n return !(rotation === null || rotation === undefined || rotation === 0 || rotation === 180);\n}\n/**\n * Retrieves the current image dimensions given an enabled element\n *\n * @param {any} image The Cornerstone image.\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{width:Number, height:Number}} The Image dimensions\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image) {\n var rotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageSize: parameter image must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.width, 'getImageSize: parameter image must have width');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.height, 'getImageSize: parameter image must have height');\n\n if (isRotated(rotation)) {\n return {\n height: image.width,\n width: image.height\n };\n }\n\n return {\n width: image.width,\n height: image.height\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getModalityLUT.js\":\n/*!************************************!*\\\n !*** ./internal/getModalityLUT.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generates a linear modality transformation function\n *\n * See DICOM PS3.3 C.11.1 Modality LUT Module\n *\n * http://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.11.html\n *\n * @param {Number} slope m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} intercept The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n\n Output units = m*SV + b.\n * @return {function(*): *} A linear modality LUT function. Given a stored pixel it returns the modality pixel value\n * @memberof Internal\n */\nfunction generateLinearModalityLUT(slope, intercept) {\n return function (storedPixelValue) {\n return storedPixelValue * slope + intercept;\n };\n}\n\nfunction generateNonLinearModalityLUT(modalityLUT) {\n var minValue = modalityLUT.lut[0];\n var maxValue = modalityLUT.lut[modalityLUT.lut.length - 1];\n var maxValueMapped = modalityLUT.firstValueMapped + modalityLUT.lut.length;\n return function (storedPixelValue) {\n if (storedPixelValue < modalityLUT.firstValueMapped) {\n return minValue;\n } else if (storedPixelValue >= maxValueMapped) {\n return maxValue;\n }\n\n return modalityLUT.lut[storedPixelValue];\n };\n}\n/**\n * Get the appropriate Modality LUT for the current situation.\n *\n * @param {Number} [slope] m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} [intercept] The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n * @param {Function} [modalityLUT] A modality LUT function. Given a stored pixel it returns the modality pixel value.\n *\n * @return {function(*): *} A modality LUT function. Given a stored pixel it returns the modality pixel value.\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (slope, intercept, modalityLUT) {\n if (modalityLUT) {\n return generateNonLinearModalityLUT(modalityLUT);\n }\n\n return generateLinearModalityLUT(slope, intercept);\n});\n\n/***/ }),\n\n/***/ \"./internal/getTransform.js\":\n/*!**********************************!*\\\n !*** ./internal/getTransform.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n // For now we will calculate it every time it is requested.\n // In the future, we may want to cache it in the enabled element to speed things up.\n return Object(_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./internal/getVOILut.js\":\n/*!*******************************!*\\\n !*** ./internal/getVOILut.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint no-bitwise: 0 */\n\n/**\n * Volume of Interest Lookup Table Function\n *\n * @typedef {Function} VOILUTFunction\n *\n * @param {Number} modalityLutValue\n * @returns {Number} transformed value\n * @memberof Objects\n */\n\n/**\n * @module: VOILUT\n */\n\n/**\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\nfunction generateLinearVOILUT(windowWidth, windowCenter) {\n return function (modalityLutValue) {\n return ((modalityLutValue - windowCenter) / windowWidth + 0.5) * 255.0;\n };\n}\n/**\n * Generate a non-linear volume of interest lookup table\n *\n * @param {LUT} voiLUT Volume of Interest Lookup Table Object\n *\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\nfunction generateNonLinearVOILUT(voiLUT) {\n // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa!\n var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length;\n var shift = bitsPerEntry - 8;\n var minValue = voiLUT.lut[0] >> shift;\n var maxValue = voiLUT.lut[voiLUT.lut.length - 1] >> shift;\n var maxValueMapped = voiLUT.firstValueMapped + voiLUT.lut.length - 1;\n return function (modalityLutValue) {\n if (modalityLutValue < voiLUT.firstValueMapped) {\n return minValue;\n } else if (modalityLutValue >= maxValueMapped) {\n return maxValue;\n }\n\n return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift;\n };\n}\n/**\n * Retrieve a VOI LUT mapping function given the current windowing settings\n * and the VOI LUT for the image\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object\n *\n * @return {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowWidth, windowCenter, voiLUT) {\n if (voiLUT) {\n return generateNonLinearVOILUT(voiLUT);\n }\n\n return generateLinearVOILUT(windowWidth, windowCenter);\n});\n\n/***/ }),\n\n/***/ \"./internal/guid.js\":\n/*!**************************!*\\\n !*** ./internal/guid.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n/**\n * Generate a unique identifier\n *\n * @return {string} A unique identifier\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return \"\".concat(s4() + s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4()).concat(s4()).concat(s4());\n});\n\n/***/ }),\n\n/***/ \"./internal/index.js\":\n/*!***************************!*\\\n !*** ./internal/index.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ \"./internal/drawImage.js\");\n/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ \"./internal/generateLut.js\");\n/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ \"./internal/getTransform.js\");\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__[\"Transform\"]\n});\n\n/***/ }),\n\n/***/ \"./internal/now.js\":\n/*!*************************!*\\\n !*** ./internal/now.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @module Polyfills\n */\n\n/**\n * Use the performance.now() method if possible, and if not, use Date.now()\n *\n * @return {number} Time elapsed since the time origin\n * @memberof Polyfills\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n if (window.performance) {\n return performance.now();\n }\n\n return Date.now();\n});\n\n/***/ }),\n\n/***/ \"./internal/requestAnimationFrame.js\":\n/*!*******************************************!*\\\n !*** ./internal/requestAnimationFrame.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction requestFrame(callback) {\n window.setTimeout(callback, 1000 / 60);\n}\n/**\n * Polyfills requestAnimationFrame for older browsers.\n *\n * @param {Function} callback A parameter specifying a function to call when it's time to update your animation for the next repaint. The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame starts to fire callbacks.\n *\n * @return {Number} A long integer value, the request id, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.\n * @memberof Polyfills\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (callback) {\n return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback);\n});\n\n/***/ }),\n\n/***/ \"./internal/storedColorPixelDataToCanvasImageData.js\":\n/*!***********************************************************!*\\\n !*** ./internal/storedColorPixelDataToCanvasImageData.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored color pixel values to display pixel values using a LUT.\n *\n * Note: Skips alpha value for any input image pixel data.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex] + -minPixelValue]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex]]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageData.js\":\n/*!******************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageData.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT. This is the most performance sensitive code in cornerstone and\n * we use a special trick to make this go as fast as possible. Specifically we\n * use the alpha channel only to control the luminance rather than the red, green and\n * blue channels which makes it over 3x faster. The canvasImageDataData buffer needs\n * to be previously filled with white pixels.\n *\n * NOTE: Attribution would be appreciated if you use this technique!\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 3;\n var storedPixelDataIndex = 0; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\":\n/*!**************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataColorLUT.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataColorLUT(image, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataColorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\":\n/*!********************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} grayscaleLut Lookup table array\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataPseudocolorLUT(image, grayscaleLut, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var grayscale;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++]];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataPseudocolorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataRGBA.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var pixelValue; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedRGBAPixelDataToCanvasImageData.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedRGBAPixelDataToCanvasImageData.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored RGBA color pixel values to display pixel values using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/transform.js\":\n/*!*******************************!*\\\n !*** ./internal/transform.js ***!\n \\*******************************/\n/*! exports provided: Transform */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// By Simon Sarris\n// Www.simonsarris.com\n// Sarris@acm.org\n//\n// Free to use and distribute at will\n// So long as you are nice to people, etc\n// Simple class for keeping track of the current transformation matrix\n// For instance:\n// Var t = new Transform();\n// T.rotate(5);\n// Var m = t.m;\n// Ctx.setTransform(m[0], m[1], m[2], m[3], m[4], m[5]);\n// Is equivalent to:\n// Ctx.rotate(5);\n// But now you can retrieve it :)\n// Remember that this does not account for any CSS transforms applied to the canvas\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform() {\n _classCallCheck(this, Transform);\n\n this.reset();\n }\n\n _createClass(Transform, [{\n key: \"reset\",\n value: function reset() {\n this.m = [1, 0, 0, 1, 0, 0];\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var transform = new Transform();\n transform.m[0] = this.m[0];\n transform.m[1] = this.m[1];\n transform.m[2] = this.m[2];\n transform.m[3] = this.m[3];\n transform.m[4] = this.m[4];\n transform.m[5] = this.m[5];\n return transform;\n }\n }, {\n key: \"multiply\",\n value: function multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n }\n }, {\n key: \"invert\",\n value: function invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n }\n }, {\n key: \"rotate\",\n value: function rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n }\n }, {\n key: \"translate\",\n value: function translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(px, py) {\n var x = px;\n var y = py;\n px = x * this.m[0] + y * this.m[2] + this.m[4];\n py = x * this.m[1] + y * this.m[3] + this.m[5];\n return {\n x: px,\n y: py\n };\n }\n }]);\n\n return Transform;\n}();\n\n/***/ }),\n\n/***/ \"./internal/tryEnableWebgl.js\":\n/*!************************************!*\\\n !*** ./internal/tryEnableWebgl.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n\n/**\n * Checks if webGL is supported and initializes the rendering engine.\n * @param {any} options Options to check if webgl rendering is requested (e.g. enable webgl by passing {renderer: 'webgl'})\n * @returns {Boolean} true if webgl rendering has been successfully initialized. Otherwise, false.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.isWebGLAvailable()) {\n // If WebGL is available on the device, initialize the renderer\n // And return the renderCanvas from the WebGL rendering path\n _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.initRenderer();\n options.renderer = 'webgl';\n return true;\n } // If WebGL is not available on this device, we will fall back\n // To using the Canvas renderer\n\n\n console.error('WebGL not available, falling back to Canvas renderer');\n delete options.renderer;\n return false;\n});\n\n/***/ }),\n\n/***/ \"./internal/validator.js\":\n/*!*******************************!*\\\n !*** ./internal/validator.js ***!\n \\*******************************/\n/*! exports provided: validateParameterUndefined, validateParameterUndefinedOrNull */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefined\", function() { return validateParameterUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefinedOrNull\", function() { return validateParameterUndefinedOrNull; });\n/**\n * Check if the supplied parameter is undefined and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\nfunction validateParameterUndefined(checkParam, errorMsg) {\n if (checkParam === undefined) {\n throw new Error(errorMsg);\n }\n}\n/**\n * Check if the supplied parameter is undefined or null and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\n\nfunction validateParameterUndefinedOrNull(checkParam, errorMsg) {\n if (checkParam === undefined || checkParam === null) {\n throw new Error(errorMsg);\n }\n}\n\n/***/ }),\n\n/***/ \"./invalidate.js\":\n/*!***********************!*\\\n !*** ./invalidate.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Sets the invalid flag on the enabled element and fire an event\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.invalid = true;\n enabledElement.needsRedraw = true;\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].INVALIDATED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./invalidateImageId.js\":\n/*!******************************!*\\\n !*** ./invalidateImageId.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the all enabled elements\n * displaying the specified imageId\n *\n * @param {string} imageId The imageId of the Cornerstone Image Object to redraw\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (imageId) {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElementsByImageId\"])(imageId);\n enabledElements.forEach(function (enabledElement) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, true);\n });\n});\n\n/***/ }),\n\n/***/ \"./layers.js\":\n/*!*******************!*\\\n !*** ./layers.js ***!\n \\*******************/\n/*! exports provided: rescaleImage, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, setLayerImage, getActiveLayer, purgeLayers */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rescaleImage\", function() { return rescaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return addLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return removeLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return getLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return getLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return getVisibleLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return setActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return setLayerImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return getActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return purgeLayers; });\n/* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ \"./internal/guid.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\n * @module EnabledElementLayers\n */\n\n/**\n * Helper function to trigger an event on a Cornerstone element with\n * a specific layerId\n *\n * @param {String} eventName The event name (e.g. CornerstoneLayerAdded)\n * @param {EnabledElement} enabledElement The Cornerstone enabled element\n * @param {String} layerId The layer's unique identifier\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction triggerEventForLayer(eventName, enabledElement, layerId) {\n var element = enabledElement.element;\n var eventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n enabledElement: enabledElement,\n layerId: layerId\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(element, eventName, eventData);\n}\n/**\n * Rescale the target layer to the base layer based on the\n * relative size of each image and their pixel dimensions.\n *\n * This function will update the Viewport parameters of the\n * target layer to a new scale.\n *\n * @param {EnabledElementLayer} baseLayer The base layer\n * @param {EnabledElementLayer} targetLayer The target layer to rescale\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\n\nfunction rescaleImage(baseLayer, targetLayer) {\n if (baseLayer.layerId === targetLayer.layerId) {\n throw new Error('rescaleImage: both arguments represent the same layer');\n }\n\n var baseImage = baseLayer.image;\n var targetImage = targetLayer.image; // Return if these images don't have an imageId (e.g. for dynamic images)\n\n if (!baseImage.imageId || !targetImage.imageId) {\n return;\n } // Column pixel spacing need to be considered when calculating the\n // ratio between the layer added and base layer images\n\n\n var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width);\n var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative;\n targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio;\n}\n/**\n * Add a layer to a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image object to add as a new layer\n * @param {Object} options Options for the layer\n *\n * @returns {String} layerId The new layer's unique identifier\n * @memberof EnabledElementLayers\n */\n\nfunction addLayer(element, image, options) {\n var layerId = Object(_internal_guid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var viewport;\n\n if (image) {\n viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (options && options.viewport) {\n viewport = Object.assign(viewport, options.viewport);\n }\n } // Set syncViewports to true by default when a new layer is added\n\n\n if (enabledElement.syncViewports !== false) {\n enabledElement.syncViewports = true;\n }\n\n var newLayer = {\n image: image,\n layerId: layerId,\n viewport: viewport,\n options: options || {},\n renderingTools: {}\n }; // Rescale the new layer based on the base layer to make sure\n // they will have a proportional size (pixel spacing)\n\n if (layers.length && image) {\n rescaleImage(layers[0], newLayer);\n }\n\n layers.push(newLayer);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added\n\n if (layers.length === 1 && image) {\n setActiveLayer(element, layerId);\n }\n\n return layerId;\n}\n/**\n * Remove a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction removeLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index !== -1) {\n layers.splice(index, 1); // If the current layer is active, and we have other layers,\n // switch to the first layer that remains in the array\n\n if (layerId === enabledElement.activeLayerId && layers.length) {\n setActiveLayer(element, layers[0].layerId);\n }\n\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_REMOVED, enabledElement, layerId);\n }\n}\n/**\n * Retrieve a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @return {EnabledElementLayer} The layer\n * @memberof EnabledElementLayers\n */\n\nfunction getLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === layerId;\n });\n}\n/**\n * Retrieve all layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers;\n}\n/**\n * Retrieve all visible layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getVisibleLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.filter(function (layer) {\n return layer.options && layer.options.visible !== false && layer.options.opacity !== 0;\n });\n}\n/**\n * Set the active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setActiveLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // Stop here if this layer is already active\n\n if (enabledElement.activeLayerId === layerId) {\n return;\n }\n\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index === -1) {\n throw new Error('setActiveLayer: layer not found in layers array');\n }\n\n var layer = enabledElement.layers[index];\n\n if (!layer.image) {\n throw new Error('setActiveLayer: layer with undefined image cannot be set as active.');\n }\n\n enabledElement.activeLayerId = layerId;\n enabledElement.image = layer.image;\n enabledElement.viewport = layer.viewport;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ACTIVE_LAYER_CHANGED, enabledElement, layerId);\n}\n/**\n * Set a new image for a specific layerId\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image The image to be displayed in this layer\n * @param {String} [layerId] The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setLayerImage(element, image, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var baseLayer = enabledElement.layers[0];\n var layer;\n\n if (layerId) {\n layer = getLayer(element, layerId);\n } else {\n layer = getActiveLayer(element);\n }\n\n if (!layer) {\n throw new Error('setLayerImage: Layer not found');\n }\n\n layer.image = image;\n\n if (!image) {\n layer.viewport = undefined;\n return;\n }\n\n if (!layer.viewport) {\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (layer.options && layer.options.viewport) {\n layer.viewport = Object.assign(defaultViewport, layer.options.viewport);\n }\n\n if (baseLayer.layerId !== layerId) {\n rescaleImage(baseLayer, layer);\n }\n }\n}\n/**\n * Retrieve the currently active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @return {EnabledElementLayer} The currently active layer\n * @memberof EnabledElementLayers\n */\n\nfunction getActiveLayer(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === enabledElement.activeLayerId;\n });\n}\n/**\n * Purge the layers\r\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\r\n * @returns {void}\r\n */\n\nfunction purgeLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n enabledElement.layers = [];\n delete enabledElement.activeLayerId;\n delete enabledElement.lastSyncViewportsState;\n}\n\n/***/ }),\n\n/***/ \"./metaData.js\":\n/*!*********************!*\\\n !*** ./metaData.js ***!\n \\*********************/\n/*! exports provided: addProvider, removeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addProvider\", function() { return addProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeProvider\", function() { return removeProvider; });\n// This module defines a way to access various metadata about an imageId. This layer of abstraction exists\n// So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document)\nvar providers = [];\n/**\n * @module Metadata\n */\n\n/**\n * Adds a metadata provider with the specified priority\n * @param {Function} provider Metadata provider function\n * @param {Number} [priority=0] - 0 is default/normal, > 0 is high, < 0 is low\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction addProvider(provider) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var i; // Find the right spot to insert this provider based on priority\n\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n } // Insert the decode task at position i\n\n\n providers.splice(i, 0, {\n priority: priority,\n provider: provider\n });\n}\n/**\n * Removes the specified provider\n *\n * @param {Function} provider Metadata provider function\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction removeProvider(provider) {\n for (var i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\n/**\n * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest\n * until one responds\n *\n * @param {String} type The type of metadata requested from the metadata store\n * @param {String} imageId The Cornerstone Image Object's imageId\n *\n * @returns {*} The metadata retrieved from the metadata store\n * @memberof Metadata\n */\n\nfunction getMetaData(type, imageId) {\n // Invoke each provider in priority order until one returns something\n for (var i = 0; i < providers.length; i++) {\n var result = providers[i].provider(type, imageId);\n\n if (result !== undefined) {\n return result;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addProvider: addProvider,\n removeProvider: removeProvider,\n get: getMetaData\n});\n\n/***/ }),\n\n/***/ \"./pageToPixel.js\":\n/*!************************!*\\\n !*** ./pageToPixel.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the page coordinate system to the pixel coordinate\n * system\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {Number} pageX The x value in the page coordinate system\n * @param {Number} pageY The y value in the page coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pageX, pageY) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('image has not been loaded yet');\n } // Convert the pageX and pageY to the canvas client coordinates\n\n\n var rect = element.getBoundingClientRect();\n var clientX = pageX - rect.left - window.pageXOffset;\n var clientY = pageY - rect.top - window.pageYOffset;\n var pt = {\n x: clientX,\n y: clientY\n };\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./pixelDataToFalseColorData.js\":\n/*!**************************************!*\\\n !*** ./pixelDataToFalseColorData.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pixelDataToFalseColorData; });\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n\n/**\n * Converts the image pixel data into a false color data\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Object} lookupTable A lookup table Object\n *\n * @returns {void}\n * @deprecated This function is superseded by the ability to set the Viewport parameters\n * to include colormaps.\n */\n\nfunction pixelDataToFalseColorData(image, lookupTable) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n }\n\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = image.width * image.height;\n var origPixelData = image.origPixelData || image.getPixelData();\n var storedColorPixelData = new Uint8Array(numPixels * 4);\n var sp;\n var mapped;\n image.color = true;\n image.falseColor = true;\n image.origPixelData = origPixelData;\n\n if (lookupTable instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n lookupTable.build();\n\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n mapped = lookupTable.mapValue(sp);\n storedColorPixelData[canvasImageDataIndex++] = mapped[0];\n storedColorPixelData[canvasImageDataIndex++] = mapped[1];\n storedColorPixelData[canvasImageDataIndex++] = mapped[2];\n storedColorPixelData[canvasImageDataIndex++] = mapped[3];\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][3]; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][3]; // Alpha\n }\n }\n\n image.rgba = true;\n image.cachedLut = undefined;\n image.render = undefined;\n image.slope = 1;\n image.intercept = 0;\n image.minPixelValue = 0;\n image.maxPixelValue = 255;\n image.windowWidth = 255;\n image.windowCenter = 128;\n\n image.getPixelData = function () {\n return storedColorPixelData;\n };\n}\n\n/***/ }),\n\n/***/ \"./pixelToCanvas.js\":\n/*!**************************!*\\\n !*** ./pixelToCanvas.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the pixel coordinate system to the canvas coordinate system\n * system. This can be used to render using canvas context without having the weird\n * side effects that come from scaling and non square pixels\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {{x: Number, y: Number}} pt The transformed point in the pixel coordinate system\n *\n * @returns {{x: Number, y: Number}} The input point in the canvas coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./rendering/doesImageNeedToBeRendered.js\":\n/*!************************************************!*\\\n !*** ./rendering/doesImageNeedToBeRendered.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Determine whether or not an Enabled Element needs to be re-rendered.\n *\n * If the imageId has changed, or if any of the last rendered viewport\n * parameters have changed, this function will return true.\n *\n * @param {EnabledElement} enabledElement An Enabled Element\n * @param {Image} image An Image\n * @return {boolean} Whether or not the Enabled Element needs to re-render its image\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var lastRenderedImageId = enabledElement.renderingTools.lastRenderedImageId;\n var lastRenderedViewport = enabledElement.renderingTools.lastRenderedViewport;\n return image.imageId !== lastRenderedImageId || !lastRenderedViewport || lastRenderedViewport.windowCenter !== enabledElement.viewport.voi.windowCenter || lastRenderedViewport.windowWidth !== enabledElement.viewport.voi.windowWidth || lastRenderedViewport.invert !== enabledElement.viewport.invert || lastRenderedViewport.rotation !== enabledElement.viewport.rotation || lastRenderedViewport.hflip !== enabledElement.viewport.hflip || lastRenderedViewport.vflip !== enabledElement.viewport.vflip || lastRenderedViewport.modalityLUT !== enabledElement.viewport.modalityLUT || lastRenderedViewport.voiLUT !== enabledElement.viewport.voiLUT || lastRenderedViewport.colormap !== enabledElement.viewport.colormap;\n});\n\n/***/ }),\n\n/***/ \"./rendering/getLut.js\":\n/*!*****************************!*\\\n !*** ./rendering/getLut.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/computeAutoVoi.js */ \"./internal/computeAutoVoi.js\");\n/* harmony import */ var _lutMatches_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lutMatches.js */ \"./rendering/lutMatches.js\");\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateLut.js */ \"./internal/generateLut.js\");\n\n\n\n/**\n * Retrieve or generate a LUT Array for an Image and Viewport\n *\n * @param {Image} image An Image Object\n * @param {Viewport} viewport An Viewport Object\n * @param {Boolean} invalidated Whether or not the LUT data has been invalidated\n * (e.g. by a change to the windowWidth, windowCenter, or invert viewport parameters).\n * @return {Uint8ClampedArray} LUT Array\n * @memberof rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, viewport, invalidated) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.modalityLUT, viewport.modalityLUT) && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.voiLUT, viewport.voiLUT) && image.cachedLut.invert === viewport.invert && invalidated !== true) {\n return image.cachedLut.lutArray;\n }\n\n Object(_internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(viewport, image); // Lut is invalid or not present, regenerate it and cache it\n\n Object(_internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert, viewport.modalityLUT, viewport.voiLUT);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n image.cachedLut.voiLUT = viewport.voiLUT;\n image.cachedLut.modalityLUT = viewport.modalityLUT;\n return image.cachedLut.lutArray;\n});\n\n/***/ }),\n\n/***/ \"./rendering/index.js\":\n/*!****************************!*\\\n !*** ./rendering/index.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony import */ var _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n\n\n\n\n\n\n/**\n * @module rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n colorImage: _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__[\"renderColorImage\"],\n grayscaleImage: _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderGrayscaleImage\"],\n webImage: _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderWebImage\"],\n pseudoColorImage: _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderPseudoColorImage\"],\n labelMapImage: _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderLabelMapImage\"],\n toCanvas: _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./rendering/initializeRenderCanvas.js\":\n/*!*********************************************!*\\\n !*** ./rendering/initializeRenderCanvas.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Sets size and clears canvas\n *\n * @param {Object} enabledElement Cornerstone Enabled Element\n * @param {Object} image Image to be rendered\n * @returns {void}\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // Resize the canvas\n\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we\n // control the luminance using the alpha channel to improve rendering performance.\n\n canvasContext.fillStyle = 'white';\n canvasContext.fillRect(0, 0, renderCanvas.width, renderCanvas.height);\n var renderCanvasData = canvasContext.getImageData(0, 0, image.width, image.height);\n enabledElement.renderingTools.renderCanvasContext = canvasContext;\n enabledElement.renderingTools.renderCanvasData = renderCanvasData;\n});\n\n/***/ }),\n\n/***/ \"./rendering/lutMatches.js\":\n/*!*********************************!*\\\n !*** ./rendering/lutMatches.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Check if two lookup tables match\n *\n * @param {LUT} a A lookup table function\n * @param {LUT} b Another lookup table function\n * @return {boolean} Whether or not they match\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (a, b) {\n // If undefined, they are equal\n if (!a && !b) {\n return true;\n } // If one is undefined, not equal\n\n\n if (!a || !b) {\n return false;\n } // Check the unique ids\n\n\n return a.id === b.id;\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderColorImage.js\":\n/*!***************************************!*\\\n !*** ./rendering/renderColorImage.js ***!\n \\***************************************/\n/*! exports provided: renderColorImage, addColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return renderColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addColorLayer\", function() { return addColorLayer; });\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ \"./internal/generateColorLut.js\");\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ \"./internal/storedRGBAPixelDataToCanvasImageData.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Generates an appropriate Look Up Table to render the given image with the given window width and level (specified in the viewport)\n * Uses an internal cache for performance\n *\n * @param {Object} image The image to be rendered\n * @param {Object} viewport The viewport values used for rendering\n * @returns {Uint8ClampedArray} Look Up Table array.\n * @memberof rendering\n */\n\nfunction getLut(image, viewport) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && image.cachedLut.invert === viewport.invert) {\n return image.cachedLut.lutArray;\n } // Lut is invalid or not present, regenerate it and cache it\n\n\n Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n return image.cachedLut.lutArray;\n}\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || !canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // The ww/wc is identity and not inverted - get a canvas with the image rendered into it for\n // Fast drawing\n\n if (enabledElement.viewport.voi.windowWidth === 255 && enabledElement.viewport.voi.windowCenter === 128 && enabledElement.viewport.invert === false && image.getCanvas && image.getCanvas()) {\n return image.getCanvas();\n } // Apply the lut to the stored pixel data onto the render canvas\n\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var colorLut = getLut(image, enabledElement.viewport);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // The color image voi/invert has been modified - apply the lut to the underlying\n // Pixel data and put it into the renderCanvas\n\n if (image.rgba) {\n Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, colorLut, renderCanvasData.data);\n } else {\n Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, colorLut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to render a color image to an enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderColorImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderColorImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\nfunction addColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addColorLayer: image must be loaded before it can be drawn');\n } // All multi-layer images should include the alpha value\n\n\n image.rgba = true;\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderGrayscaleImage.js\":\n/*!*******************************************!*\\\n !*** ./rendering/renderGrayscaleImage.js ***!\n \\*******************************************/\n/*! exports provided: renderGrayscaleImage, addGrayscaleLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return renderGrayscaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGrayscaleLayer\", function() { return addGrayscaleLayer; });\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @param {Boolean} [useAlphaChannel = true] Will an alpha channel be used\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var useAlphaChannel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas\n\n if (useAlphaChannel) {\n Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image, lut, renderCanvasData.data);\n } else {\n Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a grayscale image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderGrayscaleImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a grayscale image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @param {Boolean} [useAlphaChannel] - Whether or not to render the grayscale image using only the alpha channel.\n This does not work if this layer is not the first layer in the enabledElement.\n * @returns {void}\n */\n\nfunction addGrayscaleLayer(layer, invalidated) {\n var useAlphaChannel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (layer === undefined) {\n throw new Error('addGrayscaleLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addGrayscaleLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderLabelMapImage.js\":\n/*!******************************************!*\\\n !*** ./rendering/renderLabelMapImage.js ***!\n \\******************************************/\n/*! exports provided: renderLabelMapImage, addLabelMapLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return renderLabelMapImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLabelMapLayer\", function() { return addLabelMapLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderLabelMapImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a label map image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderLabelMapImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderLabelMapImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for label map pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addLabelMapLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addLabelMapLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addLabelMapLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderPseudoColorImage.js\":\n/*!*********************************************!*\\\n !*** ./rendering/renderPseudoColorImage.js ***!\n \\*********************************************/\n/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return renderPseudoColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPseudoColorLayer\", function() { return addPseudoColorLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderPseudoColorImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n colormap.setNumberOfColors(256);\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(image, lut, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a pseudo-color image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderPseudoColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for pseudocolor pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addPseudoColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addPseudoColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addPseudoColorLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderToCanvas.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderToCanvas.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n\n\n\n\n\n/**\r\n * @typedef {Object} EnabledElementStub\r\n * @property {HTMLElement} element The enabled element\r\n * @property {HTMLCanvasElement} canvas The current canvas\r\n * @property {Object} image Currently displayed image\r\n * @property {Boolean} invalid Whether or not the image pixel data has been changed\r\n * @property {Boolean} needsRedraw A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\r\n * @property {Object} options Layer drawing options\r\n * @property {Object[]} layers Layers added to the EnabledElement\r\n * @property {Object} data\r\n * @property {Object} renderingTools\r\n * @property {Object} viewport The current viewport\r\n * @memberof rendering\r\n */\n\n/**\r\n * creates a dummy enabled element\r\n *\r\n * @param {HTMLCanvasElement} canvas the canvas that will be assigned to the enabled element.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param { any } options Options for rendering the image (e.g.enable webgl by {renderer: 'webgl' })\r\n * @param { any } viewport A set of Cornerstone viewport parameters\r\n * @returns {EnabledElementStub} a dummy enabled element\r\n * @memberof rendering\r\n */\n\nfunction createEnabledElementStub(canvas, image, options, viewport) {\n return {\n element: canvas,\n canvas: canvas,\n image: image,\n invalid: true,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n viewport: viewport\n };\n}\n/**\r\n * Render the image to the provided canvas immediately.\r\n * @param {any} canvas The HTML canvas where the image will be rendered.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param {any} [viewport = null] A set of Cornerstone viewport parameters\r\n * @param {any} [options = null] Options for rendering the image (e.g. enable webgl by {renderer: 'webgl'})\r\n * @returns {void}\r\n * @memberof rendering\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (canvas === undefined) {\n throw new Error('renderToCanvas: parameter canvas cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canvas, image);\n\n if (viewport) {\n Object.assign(defaultViewport, viewport);\n }\n\n var enabledElementStub = createEnabledElementStub(canvas, image, options, defaultViewport);\n var eventDetails = {\n enabledElement: enabledElementStub,\n timestamp: Date.now()\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElementStub.element, _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PRE_RENDER, eventDetails);\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElementStub, enabledElementStub.invalid);\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderWebImage.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderWebImage.js ***!\n \\*************************************/\n/*! exports provided: renderWebImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return renderWebImage; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n\n\n/**\n * API function to draw a standard web image (PNG, JPG) to an enabledImage\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\nfunction renderWebImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderWebImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderWebImage: image must be loaded before it can be drawn');\n } // If the viewport ww/wc and invert all match the initial state of the image, we can draw the image\n // Directly. If any of those are changed, we call renderColorImage() to apply the lut\n\n\n if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) {\n // Get the canvas context and reset the transform\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height);\n } else {\n Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderColorImage\"])(enabledElement, invalidated);\n }\n}\n\n/***/ }),\n\n/***/ \"./rendering/saveLastRendered.js\":\n/*!***************************************!*\\\n !*** ./rendering/saveLastRendered.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Saves the parameters of the last render into renderingTools, used later to decide if data can be reused.\n *\n * @param {Object} enabledElement Cornerstone EnabledElement\n * @returns {Object} enabledElement.renderingTools\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var imageId = enabledElement.image.imageId;\n var viewport = enabledElement.viewport;\n var isColor = enabledElement.image.color;\n enabledElement.renderingTools.lastRenderedImageId = imageId;\n enabledElement.renderingTools.lastRenderedIsColor = isColor;\n enabledElement.renderingTools.lastRenderedViewport = {\n windowCenter: viewport.voi.windowCenter,\n windowWidth: viewport.voi.windowWidth,\n invert: viewport.invert,\n rotation: viewport.rotation,\n hflip: viewport.hflip,\n vflip: viewport.vflip,\n modalityLUT: viewport.modalityLUT,\n voiLUT: viewport.voiLUT,\n colormap: viewport.colormap\n };\n return enabledElement.renderingTools;\n});\n\n/***/ }),\n\n/***/ \"./reset.js\":\n/*!******************!*\\\n !*** ./reset.js ***!\n \\******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\n/**\n * Resets the viewport to the default settings\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, enabledElement.image);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./resize.js\":\n/*!*******************!*\\\n !*** ./resize.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/getImageSize.js */ \"./internal/getImageSize.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {HTMLElement} canvas The Canvas DOM element within the DOM element enabled for Cornerstone\r\n * @returns {void}\r\n */\n\nfunction setCanvasSize(element, canvas) {\n // The device pixel ratio is 1.0 for normal displays and > 1.0\n // For high DPI displays like Retina\n\n /*\r\n This functionality is disabled due to buggy behavior on systems with mixed DPI's. If the canvas\r\n is created on a display with high DPI (e.g. 2.0) and then the browser window is dragged to\r\n a different display with a different DPI (e.g. 1.0), the canvas is not recreated so the pageToPixel\r\n produces incorrect results. I couldn't find any way to determine when the DPI changed other than\r\n by polling which is not very clean. If anyone has any ideas here, please let me know, but for now\r\n we will disable this functionality. We may want\r\n to add a mechanism to optionally enable this functionality if we can determine it is safe to do\r\n so (e.g. iPad or iPhone or perhaps enumerate the displays on the system. I am choosing\r\n to be cautious here since I would rather not have bug reports or safety issues related to this\r\n scenario.\r\n var devicePixelRatio = window.devicePixelRatio;\r\n if(devicePixelRatio === undefined) {\r\n devicePixelRatio = 1.0;\r\n }\r\n */\n // Avoid setting the same value because it flashes the canvas with IE and Edge\n if (canvas.width !== element.clientWidth) {\n canvas.width = element.clientWidth;\n canvas.style.width = \"\".concat(element.clientWidth, \"px\");\n } // Avoid setting the same value because it flashes the canvas with IE and Edge\n\n\n if (canvas.height !== element.clientHeight) {\n canvas.height = element.clientHeight;\n canvas.style.height = \"\".concat(element.clientHeight, \"px\");\n }\n}\n/**\r\n * Checks if the image of a given enabled element fitted the window\r\n * before the resize\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {Boolean} true if it fitted the windows, false otherwise\r\n */\n\n\nfunction wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var imageSize = Object(_internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement.image, enabledElement.viewport.rotation);\n var imageWidth = Math.round(imageSize.width * scale);\n var imageHeight = Math.round(imageSize.height * scale);\n var x = enabledElement.viewport.translation.x;\n var y = enabledElement.viewport.translation.y;\n return imageWidth === oldCanvasWidth && imageHeight <= oldCanvasHeight || imageWidth <= oldCanvasWidth && imageHeight === oldCanvasHeight && x === 0 && y === 0;\n}\n/**\r\n * Rescale the image relative to the changed size of the canvas\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {void}\r\n */\n\n\nfunction relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var canvasWidth = enabledElement.canvas.width;\n var canvasHeight = enabledElement.canvas.height;\n var relWidthChange = canvasWidth / oldCanvasWidth;\n var relHeightChange = canvasHeight / oldCanvasHeight;\n var relChange = Math.sqrt(relWidthChange * relHeightChange);\n enabledElement.viewport.scale = relChange * scale;\n}\n/**\r\n * Resizes an enabled element and optionally fits the image to window\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {Boolean} forceFitToWindow true to to force a refit, false to rescale accordingly\r\n * @returns {void}\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, forceFitToWindow) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldCanvasWidth = enabledElement.canvas.width;\n var oldCanvasHeight = enabledElement.canvas.height;\n setCanvasSize(element, enabledElement.canvas);\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ELEMENT_RESIZED, eventData);\n\n if (enabledElement.image === undefined) {\n return;\n }\n\n if (forceFitToWindow || wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight)) {\n // Fit the image to the window again if it fitted before the resize\n Object(_fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n } else {\n // Adapt the scale of a zoomed or panned image relative to the size change\n relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./setToPixelCoordinateSystem.js\":\n/*!***************************************!*\\\n !*** ./setToPixelCoordinateSystem.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/**\n * Sets the canvas context transformation matrix to the pixel coordinate system. This allows\n * geometry to be driven using the canvas context using coordinates in the pixel coordinate system\n * @param {EnabledElement} enabledElement The\n * @param {CanvasRenderingContext2D} context The CanvasRenderingContext2D for the enabledElement's Canvas\n * @param {Number} [scale] Optional scale to apply\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, context, scale) {\n if (enabledElement === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter enabledElement must not be undefined');\n }\n\n if (context === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter context must not be undefined');\n }\n\n var transform = Object(_internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, scale);\n context.setTransform(transform.m[0], transform.m[1], transform.m[2], transform.m[3], transform.m[4], transform.m[5]);\n});\n\n/***/ }),\n\n/***/ \"./setViewport.js\":\n/*!************************!*\\\n !*** ./setViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\nvar MIN_WINDOW_WIDTH = 0.000001;\nvar MIN_VIEWPORT_SCALE = 0.0001;\n/**\n * Sets/updates viewport of a given enabled element\n *\n * @param {HTMLElement} element - DOM element of the enabled element\n * @param {Viewport} [viewport] - Object containing the viewport properties\n * @returns {void}\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, viewport) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // If viewport is not already set, start with default and merge new\n // viewport options later\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement.canvas);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n } // Prevent window width from being too small (note that values close to zero are valid and can occur with\n // PET images in particular)\n\n\n if (enabledElement.viewport.voi.windowWidth) {\n enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH);\n } // Prevent scale from getting too small\n\n\n if (enabledElement.viewport.scale) {\n enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE);\n } // Normalize the rotation value to a positive rotation in degrees\n\n\n enabledElement.viewport.rotation %= 360;\n\n if (enabledElement.viewport.rotation < 0) {\n enabledElement.viewport.rotation += 360;\n }\n\n if (enabledElement.image) {\n // Force the image to be updated since the viewport has been modified\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./triggerEvent.js\":\n/*!*************************!*\\\n !*** ./triggerEvent.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return triggerEvent; });\n/**\n * Trigger a CustomEvent\n *\n * @param {EventTarget} el The element or EventTarget to trigger the event upon\n * @param {String} type The event type name\n * @param {Object|null} detail=null The event data to be sent\n * @returns {Boolean} The return value is false if at least one event listener called preventDefault(). Otherwise it returns true.\n */\nfunction triggerEvent(el, type) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var event; // This check is needed to polyfill CustomEvent on IE11-\n\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(type, {\n detail: detail,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, detail);\n }\n\n return el.dispatchEvent(event);\n}\n\n/***/ }),\n\n/***/ \"./updateImage.js\":\n/*!************************!*\\\n !*** ./updateImage.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the specified enabled element\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Boolean} [invalidated=false] Whether or not the image pixel data has been changed, necessitating a redraw\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined && !enabledElement.layers.length) {\n throw new Error('updateImage: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./webgl/createProgramFromString.js\":\n/*!******************************************!*\\\n !*** ./webgl/createProgramFromString.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Creates and compiles a shader.\n *\n * @param {!WebGLRenderingContext} gl The WebGL Context.\n * @param {string} shaderSource The GLSL source code for the shader.\n * @param {number} shaderType The type of shader, VERTEX_SHADER or FRAGMENT_SHADER.\n *\n * @return {!WebGLShader} The shader.\n * @memberof WebGLRendering\n */\nfunction compileShader(gl, shaderSource, shaderType) {\n // Create the shader object\n var shader = gl.createShader(shaderType); // Set the shader source code.\n\n gl.shaderSource(shader, shaderSource); // Compile the shader\n\n gl.compileShader(shader); // Check if it compiled\n\n var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong during compilation; get the error\n var infoLog = gl.getShaderInfoLog(shader);\n console.error(\"Could not compile shader:\\n\".concat(infoLog));\n }\n\n return shader;\n}\n/**\n * Creates a program from 2 shaders.\n *\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShader A vertex shader.\n * @param {!WebGLShader} fragmentShader A fragment shader.\n * @return {!WebGLProgram} A program.\n * @memberof WebGLRendering\n */\n\n\nfunction createProgram(gl, vertexShader, fragmentShader) {\n // Create a program.\n var program = gl.createProgram(); // Attach the shaders.\n\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader); // Link the program.\n\n gl.linkProgram(program); // Check if it linked.\n\n var success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong with the link\n var infoLog = gl.getProgramInfoLog(program);\n console.error(\"WebGL program filed to link:\\n\".concat(infoLog));\n }\n\n return program;\n}\n/**\n * Creates a program from 2 shaders source (Strings)\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShaderSrc Vertex shader string\n * @param {!WebGLShader} fragShaderSrc Fragment shader string\n * @return {!WebGLProgram} A program\n * @memberof WebGLRendering\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (gl, vertexShaderSrc, fragShaderSrc) {\n var vertexShader = compileShader(gl, vertexShaderSrc, gl.VERTEX_SHADER);\n var fragShader = compileShader(gl, fragShaderSrc, gl.FRAGMENT_SHADER);\n return createProgram(gl, vertexShader, fragShader);\n});\n\n/***/ }),\n\n/***/ \"./webgl/index.js\":\n/*!************************!*\\\n !*** ./webgl/index.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"./webgl/renderer.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n\n\n\n/**\n * @module WebGLRendering\n */\n\nvar mod = {\n createProgramFromString: _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n renderer: {\n render: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n initRenderer: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"initRenderer\"],\n getRenderCanvas: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"getRenderCanvas\"],\n isWebGLAvailable: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLAvailable\"]\n },\n textureCache: _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nObject.defineProperty(mod, 'isWebGLInitialized', {\n enumerable: true,\n configurable: false,\n get: function get() {\n return _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLInitialized\"];\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n\n/***/ }),\n\n/***/ \"./webgl/renderer.js\":\n/*!***************************!*\\\n !*** ./webgl/renderer.js ***!\n \\***************************/\n/*! exports provided: isWebGLInitialized, getRenderCanvas, initRenderer, render, isWebGLAvailable */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLInitialized\", function() { return isWebGLInitialized; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderCanvas\", function() { return getRenderCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRenderer\", function() { return initRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLAvailable\", function() { return isWebGLAvailable; });\n/* harmony import */ var _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shaders/index.js */ \"./webgl/shaders/index.js\");\n/* harmony import */ var _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertexShader.js */ \"./webgl/vertexShader.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* eslint no-bitwise: 0 */\n\n\n\n\nvar renderCanvas = document.createElement('canvas');\nvar gl;\nvar texCoordBuffer;\nvar positionBuffer;\nvar isWebGLInitialized = false;\n\nfunction getRenderCanvas() {\n return renderCanvas;\n}\n\nfunction initShaders() {\n for (var id in _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"]) {\n // Console.log(\"WEBGL: Loading shader\", id);\n var shader = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][id];\n shader.attributes = {};\n shader.uniforms = {};\n shader.vert = _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__[\"vertexShader\"];\n shader.program = Object(_createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(gl, shader.vert, shader.frag);\n shader.attributes.texCoordLocation = gl.getAttribLocation(shader.program, 'a_texCoord');\n gl.enableVertexAttribArray(shader.attributes.texCoordLocation);\n shader.attributes.positionLocation = gl.getAttribLocation(shader.program, 'a_position');\n gl.enableVertexAttribArray(shader.attributes.positionLocation);\n shader.uniforms.resolutionLocation = gl.getUniformLocation(shader.program, 'u_resolution');\n }\n}\n\nfunction initRenderer() {\n if (isWebGLInitialized === true) {\n // Console.log(\"WEBGL Renderer already initialized\");\n return;\n }\n\n if (initWebGL(renderCanvas)) {\n initBuffers();\n initShaders(); // Console.log(\"WEBGL Renderer initialized!\");\n\n isWebGLInitialized = true;\n }\n}\n\nfunction updateRectangle(gl, width, height) {\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([width, height, 0, height, width, 0, 0, 0]), gl.STATIC_DRAW);\n}\n\nfunction handleLostContext(event) {\n event.preventDefault();\n console.warn('WebGL Context Lost!');\n}\n\nfunction handleRestoredContext(event) {\n event.preventDefault();\n isWebGLInitialized = false;\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].purgeCache();\n initRenderer(); // Console.log('WebGL Context Restored.');\n}\n\nfunction initWebGL(canvas) {\n gl = null;\n\n try {\n // Try to grab the standard context. If it fails, fallback to experimental.\n var options = {\n preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element\n\n }; // ---------------- Testing purposes -------------\n // If (debug === true && WebGLDebugUtils) {\n // RenderCanvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderCanvas);\n // }\n // ---------------- Testing purposes -------------\n\n gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); // Set up event listeners for context lost / context restored\n\n canvas.removeEventListener('webglcontextlost', handleLostContext, false);\n canvas.addEventListener('webglcontextlost', handleLostContext, false);\n canvas.removeEventListener('webglcontextrestored', handleRestoredContext, false);\n canvas.addEventListener('webglcontextrestored', handleRestoredContext, false);\n } catch (error) {\n throw new Error('Error creating WebGL context');\n } // If we don't have a GL context, give up now\n\n\n if (!gl) {\n console.error('Unable to initialize WebGL. Your browser may not support it.');\n gl = null;\n }\n\n return gl;\n}\n/**\n * Returns the image data type as a string representation.\n * @param {any} image The cornerstone image object\n * @returns {string} image data type (rgb, iint16, uint16, int8 and uint8)\n * @memberof WebGLRendering\n */\n\n\nfunction getImageDataType(image) {\n if (image.color) {\n return 'rgb';\n }\n\n var pixelData = image.getPixelData();\n\n if (pixelData instanceof Int16Array) {\n return 'int16';\n }\n\n if (pixelData instanceof Uint16Array) {\n return 'uint16';\n }\n\n if (pixelData instanceof Int8Array) {\n return 'int8';\n }\n\n return 'uint8';\n}\n\nfunction getShaderProgram(image) {\n var datatype = getImageDataType(image); // We need a mechanism for\n // Choosing the shader based on the image datatype\n // Console.log(\"Datatype: \" + datatype);\n\n if (_shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].hasOwnProperty(datatype)) {\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][datatype];\n }\n\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].rgb;\n}\n\nfunction generateTexture(image) {\n var TEXTURE_FORMAT = {\n uint8: gl.LUMINANCE,\n int8: gl.LUMINANCE_ALPHA,\n uint16: gl.LUMINANCE_ALPHA,\n int16: gl.RGB,\n rgb: gl.RGB\n };\n var TEXTURE_BYTES = {\n int8: 1,\n // Luminance\n uint16: 2,\n // Luminance + Alpha\n int16: 3,\n // RGB\n rgb: 3 // RGB\n\n };\n var imageDataType = getImageDataType(image);\n var format = TEXTURE_FORMAT[imageDataType]; // GL texture configuration\n\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var imageData = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"dataUtilities\"][imageDataType].storedPixelDataToImageData(image, image.width, image.height);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, image.width, image.height, 0, format, gl.UNSIGNED_BYTE, imageData); // Calculate the size in bytes of this image in memory\n\n var sizeInBytes = image.width * image.height * TEXTURE_BYTES[imageDataType];\n return {\n texture: texture,\n sizeInBytes: sizeInBytes\n };\n}\n\nfunction getImageTexture(image) {\n var imageTexture = _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageTexture(image.imageId);\n\n if (!imageTexture) {\n // Console.log(\"Generating texture for imageid: \", image.imageId);\n imageTexture = generateTexture(image);\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].putImageTexture(image, imageTexture);\n }\n\n return imageTexture.texture;\n}\n\nfunction initBuffers() {\n positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]), gl.STATIC_DRAW);\n texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0]), gl.STATIC_DRAW);\n}\n\nfunction renderQuad(shader, parameters, texture, width, height) {\n gl.clearColor(1.0, 0.0, 0.0, 1.0);\n gl.viewport(0, 0, width, height);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.useProgram(shader.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.vertexAttribPointer(shader.attributes.texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.vertexAttribPointer(shader.attributes.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n for (var key in parameters) {\n var uniformLocation = gl.getUniformLocation(shader.program, key);\n\n if (!uniformLocation) {\n continue; // Disabling this error for now since RGB requires minPixelValue\n // but the other shaders do not.\n // throw `Could not access location for uniform: ${key}`;\n }\n\n var uniform = parameters[key];\n var type = uniform.type;\n var value = uniform.value;\n\n if (type === 'i') {\n gl.uniform1i(uniformLocation, value);\n } else if (type === 'f') {\n gl.uniform1f(uniformLocation, value);\n } else if (type === '2f') {\n gl.uniform2f(uniformLocation, value[0], value[1]);\n }\n }\n\n updateRectangle(gl, width, height);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\n\nfunction render(enabledElement) {\n // Resize the canvas\n var image = enabledElement.image;\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var viewport = enabledElement.viewport; // Render the current image\n\n var shader = getShaderProgram(image);\n var texture = getImageTexture(image);\n var parameters = {\n u_resolution: {\n type: '2f',\n value: [image.width, image.height]\n },\n wc: {\n type: 'f',\n value: viewport.voi.windowCenter\n },\n ww: {\n type: 'f',\n value: viewport.voi.windowWidth\n },\n slope: {\n type: 'f',\n value: image.slope\n },\n intercept: {\n type: 'f',\n value: image.intercept\n },\n minPixelValue: {\n type: 'f',\n value: image.minPixelValue\n },\n invert: {\n type: 'i',\n value: viewport.invert ? 1 : 0\n }\n };\n renderQuad(shader, parameters, texture, image.width, image.height);\n return renderCanvas;\n}\nfunction isWebGLAvailable() {\n // Adapted from\n // http://stackoverflow.com/questions/9899807/three-js-detect-webgl-support-and-fallback-to-regular-canvas\n var options = {\n failIfMajorPerformanceCaveat: true\n };\n\n try {\n var canvas = document.createElement('canvas');\n return Boolean(window.WebGLRenderingContext) && (canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options));\n } catch (e) {\n return false;\n }\n}\n\n/***/ }),\n\n/***/ \"./webgl/shaders/index.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/index.js ***!\n \\********************************/\n/*! exports provided: shaders, dataUtilities */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shaders\", function() { return shaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataUtilities\", function() { return dataUtilities; });\n/* harmony import */ var _int16_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int16.js */ \"./webgl/shaders/int16.js\");\n/* harmony import */ var _int8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int8.js */ \"./webgl/shaders/int8.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"./webgl/shaders/rgb.js\");\n/* harmony import */ var _uint16_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uint16.js */ \"./webgl/shaders/uint16.js\");\n/* harmony import */ var _uint8_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uint8.js */ \"./webgl/shaders/uint8.js\");\n\n\n\n\n\nvar shaders = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16Shader\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8Shader\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbShader\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16Shader\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8Shader\"]\n};\nvar dataUtilities = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16DataUtilities\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8DataUtilities\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbDataUtilities\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16DataUtilities\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8DataUtilities\"]\n};\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int16.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/int16.js ***!\n \\********************************/\n/*! exports provided: int16DataUtilities, int16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16DataUtilities\", function() { return int16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16Shader\", function() { return int16Shader; });\n/* eslint no-bitwise: 0 */\nvar int16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack int16 into three uint8 channels (r, g, b)\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack int16 into three uint8 channels (r, g, b)\n var pixelData = image.getPixelData();\n var numberOfChannels = 3;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = Math.abs(pixelData[i]);\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.g*65536.0;' + 'if (color.b == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int8.js\":\n/*!*******************************!*\\\n !*** ./webgl/shaders/int8.js ***!\n \\*******************************/\n/*! exports provided: int8DataUtilities, int8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8DataUtilities\", function() { return int8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8Shader\", function() { return int8Shader; });\nvar int8Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Store data in Uint8Array\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n // Store data in Uint8Array\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n data[offset++] = pixelData[i];\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.;' + 'if (color.a == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/rgb.js\":\n/*!******************************!*\\\n !*** ./webgl/shaders/rgb.js ***!\n \\******************************/\n/*! exports provided: rgbDataUtilities, rgbShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbDataUtilities\", function() { return rgbDataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbShader\", function() { return rgbShader; });\nvar rgbShader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack RGB images into a 3-channel RGB texture\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0; // Only 3 channels, since we use WebGL's RGB texture format\n\n var numStoredPixels = image.width * image.height * 4;\n var numOutputPixels = image.width * image.height * 3;\n var storedPixelData = image.getPixelData();\n var data = new Uint8Array(numOutputPixels); // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n } else {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n }\n\n return data;\n}\n\nvar rgbDataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nrgbShader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform float minPixelValue;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec3 color = texture2D(u_image, v_texCoord).xyz;' + // Rescale based on slope and intercept\n'color = color * 256.0 * slope + intercept;' + // Apply window settings\n'float center0 = wc - 0.5 - minPixelValue;' + 'float width0 = max(ww, 1.0);' + 'color = (color - center0) / width0 + 0.5;' + // RGBA output\n'gl_FragColor = vec4(color, 1);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1. - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint16.js\":\n/*!*********************************!*\\\n !*** ./webgl/shaders/uint16.js ***!\n \\*********************************/\n/*! exports provided: uint16DataUtilities, uint16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16DataUtilities\", function() { return uint16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16Shader\", function() { return uint16Shader; });\n/* eslint no-bitwise: 0 */\nvar uint16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * For uint16 pack uint16 into two uint8 channels (r and a).\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack uint16 into two uint8 channels (r and a)\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = pixelData[i];\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n }\n\n return data;\n}\n\nvar uint16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.a*65536.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint8.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/uint8.js ***!\n \\********************************/\n/*! exports provided: uint8DataUtilities, uint8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8DataUtilities\", function() { return uint8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8Shader\", function() { return uint8Shader; });\nvar uint8Shader = {};\n/**\n * Convert stored pixel data to image data. Here we will store\n * all data in the alpha channel.\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n return image.getPixelData();\n}\n\nvar uint8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/textureCache.js\":\n/*!*******************************!*\\\n !*** ./webgl/textureCache.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\r\n * This module deals with caching image textures in VRAM for WebGL\r\n * @module WebGLTextureCache\r\n */\n\nvar imageCache = {};\nvar cachedImages = [];\nvar maximumSizeInBytes = 1024 * 1024 * 256; // 256 MB\n\nvar cacheSizeInBytes = 0;\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n}\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n cacheSizeInBytes -= lastCachedImage.sizeInBytes;\n delete imageCache[lastCachedImage.imageId];\n cachedImages.pop();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_REMOVED, {\n imageId: lastCachedImage.imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_CACHE_FULL, cacheInfo);\n}\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n purgeCacheIfNecessary();\n}\n\nfunction putImageTexture(image, imageTexture) {\n var imageId = image.imageId;\n\n if (image === undefined) {\n throw new Error('putImageTexture: image must not be undefined');\n }\n\n if (imageId === undefined) {\n throw new Error('putImageTexture: imageId must not be undefined');\n }\n\n if (imageTexture === undefined) {\n throw new Error('putImageTexture: imageTexture must not be undefined');\n }\n\n if (Object.prototype.hasOwnProperty.call(imageCache, imageId) === true) {\n throw new Error('putImageTexture: imageId already in cache');\n }\n\n var cachedImage = {\n imageId: imageId,\n imageTexture: imageTexture,\n timeStamp: new Date(),\n sizeInBytes: imageTexture.sizeInBytes\n };\n imageCache[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n\n if (imageTexture.sizeInBytes === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes must not be undefined');\n }\n\n if (imageTexture.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes is not a number');\n }\n\n cacheSizeInBytes += cachedImage.sizeInBytes;\n purgeCacheIfNecessary();\n}\n\nfunction getImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = new Date();\n return cachedImage.imageTexture;\n}\n\nfunction removeImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n delete imageCache[imageId];\n return cachedImage.imageTexture;\n}\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages.pop();\n delete imageCache[removedCachedImage.imageId];\n }\n\n cacheSizeInBytes = 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n purgeCache: purgeCache,\n getImageTexture: getImageTexture,\n putImageTexture: putImageTexture,\n removeImageTexture: removeImageTexture,\n setMaximumSizeBytes: setMaximumSizeBytes\n});\n\n/***/ }),\n\n/***/ \"./webgl/vertexShader.js\":\n/*!*******************************!*\\\n !*** ./webgl/vertexShader.js ***!\n \\*******************************/\n/*! exports provided: vertexShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertexShader\", function() { return vertexShader; });\nvar vertexShader = 'attribute vec2 a_position;' + 'attribute vec2 a_texCoord;' + 'uniform vec2 u_resolution;' + 'varying vec2 v_texCoord;' + 'void main() {' + 'vec2 zeroToOne = a_position / u_resolution;' + 'vec2 zeroToTwo = zeroToOne * 2.0;' + 'vec2 clipSpace = zeroToTwo - 1.0;' + 'gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);' + 'v_texCoord = a_texCoord;' + '}';\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=cornerstone.js.map","/*! cornerstone-wado-image-loader - 2.2.2 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstoneWADOImageLoader */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstoneWADOImageLoader\",[],t):\"object\"==typeof exports?exports.cornerstoneWADOImageLoader=t():e.cornerstoneWADOImageLoader=t()}(this,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,r){\"use strict\";t.a=function(e){for(var t,r=e[0],a=e[0],n=e.length,o=1;o>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var i;return e};var d=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var r=t,a=e.rows*e.columns,n=new ArrayBuffer(a*e.samplesPerPixel),o=new DataView(r.buffer,r.byteOffset),i=new Int8Array(r.buffer,r.byteOffset),l=new Int8Array(n),s=0,u=o.getInt32(0,!0),c=0;c>l;var u=(new Date).getTime();return e.decodeTimeInMS=u-o,e}},function(e,t,r){\"use strict\";r.r(t);var a=function(e,t){if(void 0===e)throw new Error(\"decodeRGB: rgbBuffer must not be undefined\");if(e.length%3!=0)throw new Error(\"decodeRGB: rgbBuffer length must be divisible by 3\");for(var r=e.length/3,a=0,n=0,o=0;o>t;return a}var l=function(e,t){for(var r=e.columns*e.rows,a=e.pixelData,n=e.redPaletteColorLookupTableData,o=e.greenPaletteColorLookupTableData,i=e.bluePaletteColorLookupTableData,l=e.redPaletteColorLookupTableData.length,s=0,u=0,c=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,d=x(n,f),p=x(o,f),m=x(i,f),g=0;gt.length)return!1;for(var a=r,n=0;n=E.maxWebWorkers)){var e=new Worker(E.webWorkerPath);R.push({worker:e,status:\"initializing\"}),e.addEventListener(\"message\",F),e.postMessage({taskType:\"initialize\",workerIndex:R.length-1,config:E})}}function G(e){if(e=e||W,E)throw new Error(\"WebWorkerManager already initialized\");if((E=e).maxWebWorkers=E.maxWebWorkers||navigator.hardwareConcurrency||1,!E.startWebWorkersOnDemand)for(var t=0;t=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,u)}if(16===n){if((r=s+t*u*2)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,2*u)}if(1===n){if((r=s+t*u*.125)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return Pe(e.byteArray,r,u)}if(32!==n)throw new Error(\"unsupported pixel format\");if((r=s+t*u*4)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,4*u)};var Ie=function(e){var t=de(e),r=parseInt(t.url,10),a=be.get(r);return new Promise(function(r,e){var t=new FileReader;t.onload=function(e){var t=e.target.result;r(t)},t.onerror=e,t.readAsArrayBuffer(a)})};var Te=function(e){var t=1i?i:t},e.degToRad=function(t){return t*(Math.PI/180)},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return\"number\"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(3),s=(n=o)&&n.__esModule?n:{default:n},r=i(0);var a,h,u,c,l,f=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};f.prototype={constructor:f,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(\"index is out of range: \"+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+t)}},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},sub:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyAxisAngle:(l=void 0,function(t,e){return void 0===l&&(l=new s.default),this.applyQuaternion(l.setFromAxisAngle(t.normalize(),e)),this}),applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[3]*i+o[6]*n,this.y=o[1]*e+o[4]*i+o[7]*n,this.z=o[2]*e+o[5]*i+o[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n+o[12],this.y=o[1]*e+o[5]*i+o[9]*n+o[13],this.z=o[2]*e+o[6]*i+o[10]*n+o[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements,s=1/(o[3]*e+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*e+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*e+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*e+o[6]*i+o[10]*n+o[14])*s,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,o=t.x,s=t.y,r=t.z,a=t.w,h=a*e+s*n-r*i,u=a*i+r*e-o*n,c=a*n+o*i-s*e,l=-o*e-s*i-r*n;return this.x=h*a+l*-o+u*-r-c*-s,this.y=u*a+l*-s+c*-o-h*-r,this.z=c*a+l*-r+h*-s-u*-o,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n,this.y=o[1]*e+o[5]*i+o[9]*n,this.z=o[2]*e+o[6]*i+o[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:(u=void 0,c=void 0,function(t,e){return void 0===u&&(u=new f,c=new f),u.set(t,t,t),c.set(e,e,e),this.clamp(u,c)}),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},cross:function(t,e){if(void 0!==e)return console.warn(\"DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(t,e);var i=this.x,n=this.y,o=this.z;return this.x=n*t.z-o*t.y,this.y=o*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,o=t.z,s=e.x,r=e.y,a=e.z;return this.x=n*a-o*r,this.y=o*s-i*a,this.z=i*r-n*s,this},projectOnVector:(a=void 0,h=void 0,function(t){return void 0===a&&(a=new f),a.copy(t).normalize(),h=this.dot(a),this.copy(a).multiplyScalar(h)}),projectOnPlane:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,r.clamp)(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new f(this.x,this.y,this.z)}},e.default=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}var r={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var i=s(t.start,t.end);if(0===i)return s(e,t.start);var n=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/i;return s(e,n<0?t.start:n>1?t.end:{x:t.start.x+n*(t.end.x-t.start.x),y:t.start.y+n*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var i,o,s,r,a,h,u,c,l,f,y,d={},p=t.start.x,x=t.start.y,m=t.end.x,v=t.end.y,g=e.start.x,z=e.start.y,b=e.end.x,M=e.end.y,w=void 0;if(f=(i=v-x)*b+(s=p-m)*M+(a=m*x-p*v),(0===(l=i*g+s*z+a)||0===f||(0,n.sign)(l)!==(0,n.sign)(f))&&(c=(o=M-z)*m+(r=g-b)*v+(h=b*z-g*M),0===(u=o*p+r*x+h)||0===c||(0,n.sign)(u)!==(0,n.sign)(c))){y=i*r-o*s,w=s*h-r*a;var R=parseFloat(w/y);w=o*a-i*h;var P=parseFloat(w/y);return d.x=R,d.y=P,d}}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=void 0!==n?n:1};n.prototype.setFromAxisAngle=function(t,e){var i=e/2,n=Math.sin(i);return this.x=t.x*n,this.y=t.y*n,this.z=t.z*n,this.w=Math.cos(i),this},n.prototype.multiplyQuaternions=function(t,e){var i=t.x,n=t.y,o=t.z,s=t.w,r=e.x,a=e.y,h=e.z,u=e.w;return this.x=i*u+s*r+n*h-o*a,this.y=n*u+s*a+o*r-i*h,this.z=o*u+s*h+i*a-n*r,this.w=s*u-i*r-n*a-o*h,this},n.prototype.setFromRotationMatrix=function(t){var e=t.elements,i=e[0],n=e[4],o=e[8],s=e[1],r=e[5],a=e[9],h=e[2],u=e[6],c=e[10],l=i+r+c,f=void 0;return l>0?(f=.5/Math.sqrt(l+1),this.w=.25/f,this.x=(u-a)*f,this.y=(o-h)*f,this.z=(s-n)*f):i>r&&i>c?(f=2*Math.sqrt(1+i-r-c),this.w=(u-a)/f,this.x=.25*f,this.y=(n+s)/f,this.z=(o+h)/f):r>c?(f=2*Math.sqrt(1+r-i-c),this.w=(o-h)/f,this.x=(n+s)/f,this.y=.25*f,this.z=(a+u)/f):(f=2*Math.sqrt(1+c-i-r),this.w=(s-n)/f,this.x=(o+h)/f,this.y=(a+u)/f,this.z=.25*f),this},e.default=n},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(2),s=(n=o)&&n.__esModule?n:{default:n};function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var a={distanceToPoint:function(t,e){var i=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var n=s.default.distanceToPoint(t,e);n=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),n=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),i&&n}(t,e)){var n=r(t),o=r(e);return t.width>=0?e.width>=0?(i.topLeft.x=Math.max(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.bottomRight.x)):(i.topLeft.x=Math.max(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.topLeft.x)):e.width>=0?(i.topLeft.x=Math.min(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.topLeft.x)):(i.topLeft.x=Math.min(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(i.topLeft.y=Math.max(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.bottomRight.y)):(i.topLeft.y=Math.max(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.topLeft.y)):e.height>=0?(i.topLeft.y=Math.min(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.topLeft.y)):(i.topLeft.y=Math.min(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.bottomRight.y)),i}}};e.default=a},function(t,e,i){\"use strict\";function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function o(t,e){return Math.sqrt(s(t,e))}function s(t,e){var i=n(t,e);return i.x*i.x+i.y*i.y}Object.defineProperty(e,\"__esModule\",{value:!0});var r={subtract:n,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:o,distanceSquared:s,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var i=[],n=void 0;return t.forEach(function(t,s){var r=o(t,e);i.push(r),n=0===s?r:Math.min(r,n)}),t[i.indexOf(n)]}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r,a,h=function(t,e){this.normal=void 0!==t?t:new s.default(1,0,0),this.constant=void 0!==e?e:0};h.prototype={constructor:h,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:(r=new s.default,a=new s.default,function(t,e,i){var n=r.subVectors(i,e).cross(a.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}),copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return this.orthoPoint(t,e).sub(t).negate()},orthoPoint:function(t,e){var i=this.distanceToPoint(t);return(e||new s.default).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(t){var e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0},intersectLine:function(){var t=new s.default;return function(e,i){var n=i||new s.default,o=e.delta(t),r=this.normal.dot(o);if(0===r)return 0===this.distanceToPoint(e.start)?n.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?void 0:n.copy(o).multiplyScalar(a).add(e.start)}}(),intersectPlane:function(t){var e=this.normal.clone().cross(t.normal),i={origin:new s.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return i.direction=new s.default,i;var n=this.constant,o=t.constant,r=this.normal.clone().dot(t.normal),a=-(n-o*r)/(1-r*r),h=-(o-n*r)/(1-r*r);return i.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(h)),i},coplanarPoint:function(t){return(t||new s.default).copy(this.normal).multiplyScalar(-this.constant)},translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},clone:function(){return(new h).copy(this)}},e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r=function(t,e,i,n,o,s,r,a,h,u,c,l,f,y,d,p){this.elements=new Float32Array(16);var x=this.elements;x[0]=void 0!==t?t:1,x[4]=e||0,x[8]=i||0,x[12]=n||0,x[1]=o||0,x[5]=void 0!==s?s:1,x[9]=r||0,x[13]=a||0,x[2]=h||0,x[6]=u||0,x[10]=void 0!==c?c:1,x[14]=l||0,x[3]=f||0,x[7]=y||0,x[11]=d||0,x[15]=void 0!==p?p:1};r.prototype.makeRotationFromQuaternion=function(t){var e=this.elements,i=t.x,n=t.y,o=t.z,s=t.w,r=i+i,a=n+n,h=o+o,u=i*r,c=i*a,l=i*h,f=n*a,y=n*h,d=o*h,p=s*r,x=s*a,m=s*h;return e[0]=1-(f+d),e[4]=c-m,e[8]=l+x,e[1]=c+m,e[5]=1-(u+d),e[9]=y-p,e[2]=l-x,e[6]=y+p,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},r.prototype.multiplyMatrices=function(t,e){var i=t.elements,n=e.elements,o=this.elements,s=i[0],r=i[4],a=i[8],h=i[12],u=i[1],c=i[5],l=i[9],f=i[13],y=i[2],d=i[6],p=i[10],x=i[14],m=i[3],v=i[7],g=i[11],z=i[15],b=n[0],M=n[4],w=n[8],R=n[12],P=n[1],L=n[5],T=n[9],S=n[13],_=n[2],V=n[6],q=n[10],j=n[14],E=n[3],k=n[7],O=n[11],A=n[15];return o[0]=s*b+r*P+a*_+h*E,o[4]=s*M+r*L+a*V+h*k,o[8]=s*w+r*T+a*q+h*O,o[12]=s*R+r*S+a*j+h*A,o[1]=u*b+c*P+l*_+f*E,o[5]=u*M+c*L+l*V+f*k,o[9]=u*w+c*T+l*q+f*O,o[13]=u*R+c*S+l*j+f*A,o[2]=y*b+d*P+p*_+x*E,o[6]=y*M+d*L+p*V+x*k,o[10]=y*w+d*T+p*q+x*O,o[14]=y*R+d*S+p*j+x*A,o[3]=m*b+v*P+g*_+z*E,o[7]=m*M+v*L+g*V+z*k,o[11]=m*w+v*T+g*q+z*O,o[15]=m*R+v*S+g*j+z*A,this},r.prototype.multiply=function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},r.prototype.getInverse=function(t,e){var i=this.elements,n=t.elements,o=n[0],s=n[4],r=n[8],a=n[12],h=n[1],u=n[5],c=n[9],l=n[13],f=n[2],y=n[6],d=n[10],p=n[14],x=n[3],m=n[7],v=n[11],g=n[15];i[0]=c*p*m-l*d*m+l*y*v-u*p*v-c*y*g+u*d*g,i[4]=a*d*m-r*p*m-a*y*v+s*p*v+r*y*g-s*d*g,i[8]=r*l*m-a*c*m+a*u*v-s*l*v-r*u*g+s*c*g,i[12]=a*c*y-r*l*y-a*u*d+s*l*d+r*u*p-s*c*p,i[1]=l*d*x-c*p*x-l*f*v+h*p*v+c*f*g-h*d*g,i[5]=r*p*x-a*d*x+a*f*v-o*p*v-r*f*g+o*d*g,i[9]=a*c*x-r*l*x-a*h*v+o*l*v+r*h*g-o*c*g,i[13]=r*l*f-a*c*f+a*h*d-o*l*d-r*h*p+o*c*p,i[2]=u*p*x-l*y*x+l*f*m-h*p*m-u*f*g+h*y*g,i[6]=a*y*x-s*p*x-a*f*m+o*p*m+s*f*g-o*y*g,i[10]=s*l*x-a*u*x+a*h*m-o*l*m-s*h*g+o*u*g,i[14]=a*u*f-s*l*f-a*h*y+o*l*y+s*h*p-o*u*p,i[3]=c*y*x-u*d*x-c*f*m+h*d*m+u*f*v-h*y*v,i[7]=s*d*x-r*y*x+r*f*m-o*d*m-s*f*v+o*y*v,i[11]=r*u*x-s*c*x-r*h*m+o*c*m+s*h*v-o*u*v,i[15]=s*c*f-r*u*f+r*h*y-o*c*y-s*h*d+o*u*d;var z=o*i[0]+h*i[4]+f*i[8]+x*i[12];if(0===z){var b=\"Matrix4.getInverse(): can't invert matrix, determinant is 0\";if(e)throw new Error(b);return console.warn(b),this.identity(),this}return this.multiplyScalar(1/z),this},r.prototype.applyToVector3Array=function(){var t=new s.default;return function(e,i,n){void 0===i&&(i=0),void 0===n&&(n=e.length);for(var o=0,s=i;o1||isNaN(r))){var a=this.start.clone().add(e.clone().multiplyScalar(r));return a.clone().sub(t.start).lengthSq()+a.clone().sub(t.end).lengthSq()<=t.distanceSq()?a:void 0}}}}]),t}();e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var n=f(i(8)),o=f(i(2)),s=i(0),r=f(i(7)),a=f(i(6)),h=f(i(5)),u=f(i(3)),c=f(i(4)),l=f(i(1));function f(t){return t&&t.__esModule?t:{default:t}}var y={Line3:n.default,lineSegment:o.default,clamp:s.clamp,degToRad:s.degToRad,radToDeg:s.radToDeg,sign:s.sign,Matrix4:r.default,Plane:a.default,point:h.default,quaternion:u.default,rect:c.default,Vector3:l.default};e.Line3=n.default,e.lineSegment=o.default,e.clamp=s.clamp,e.degToRad=s.degToRad,e.radToDeg=s.radToDeg,e.sign=s.sign,e.Matrix4=r.default,e.Plane=a.default,e.point=h.default,e.quaternion=u.default,e.rect=c.default,e.Vector3=l.default,e.default=y}])});\n//# sourceMappingURL=cornerstoneMath.min.js.map","/*! cornerstone-tools - 3.0.0-b.1512 - 2018-12-17 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstone-tools\",[],t):\"object\"==typeof exports?exports[\"cornerstone-tools\"]=t():e.cornerstoneTools=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=10)}([function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;return\"function\"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent(\"CustomEvent\")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}var b={drawColorId:0,radius:10,minRadius:1,maxRadius:50,alpha:.4,renderBrushIfHiddenButActive:!0,hiddenButActiveAlpha:.2,colorMapId:\"BrushColorMap\",visibleSegmentations:{},imageBitmapCache:{},segmentationMetadata:{}},E={radius:function(e){b.radius=Math.min(Math.max(e,b.minRadius),b.maxRadius)},brushColorMap:function(e){var t=f.cornerstone.colors.getColormap(b.colorMapId);t.setNumberOfColors(e.length);for(var n=0;n2&&void 0!==arguments[2])||arguments[2];b.visibleSegmentations[e]||(b.imageBitmapCache[e]=[]),b.visibleSegmentations[e][t]=n},imageBitmapCacheForElement:function(e,t,n){b.imageBitmapCache[e]||(b.imageBitmapCache[e]=[]),b.imageBitmapCache[e][t]=n},clearImageBitmapCacheForElement:function(e){b.imageBitmapCache[e]=[]},metadata:function(e,t,n){b.segmentationMetadata[e]||(b.segmentationMetadata[e]=[]),b.segmentationMetadata[e][t]=n}};var M={state:b,onRegisterCallback:function(){!function(){var e=f.cornerstone.colors.getColormap(b.colorMapId);e.setNumberOfColors(19);for(var t=0;t<19;t++)t0}).forEach(function(t){var n=!1;t.supportedInteractionTypes.forEach(function(e){t.options[\"is\".concat(e,\"Active\")]&&(n=!0)}),n||(console.info(\"Setting tool \".concat(t.name,\"'s to PASSIVE\")),N(e,t.name))})}(e,o,n,a),o.supportedInteractionTypes.forEach(function(e){void 0===a||a.includes(e)?n[\"is\".concat(e,\"Active\")]=!0:n[\"is\".concat(e,\"Active\")]=!1})),F(\"active\",null,e,t,n)},L=function(e,t,n){z(\"active\",e,t,n),_.state.enabledElements.forEach(function(a){D(a,e,t,n)})},A=F.bind(null,\"disabled\",null),H=V.bind(null,\"disabled\",null),R=F.bind(null,\"enabled\",null),U=V.bind(null,\"enabled\",null),N=F.bind(null,\"passive\",x.TOOL_DEACTIVATED),B=V.bind(null,\"passive\",x.TOOL_DEACTIVATED);function F(e,t,n,a,o){var i=O(n,a);i?(o=G(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(i.options.mouseButtonMask)&&(o.mouseButtonMask=o.mouseButtonMask.concat(i.options.mouseButtonMask)),i.mode=e,i.mergeOptions(o),i[\"\".concat(e,\"Callback\")]&&i[\"\".concat(e,\"Callback\")](n,o),t&&T(n,t,{options:o,toolName:a,type:t})):console.warn(\"Unable to find tool '\".concat(a,\"' for enabledElement\"))}function V(e,t,n,a){z(e,n,a),_.state.enabledElements.forEach(function(o){F(e,t,o,n,a)})}function j(e,t,n,a){var o=_.state.tools.find(function(t){return t.element===n&&\"active\"===t.mode&&!0===t.options[\"is\".concat(e,\"Active\")]});o&&(console.info(\"Setting tool \".concat(o.name,\"'s is\").concat(e,\"Active to false\")),o.options[\"is\".concat(e,\"Active\")]=!1)}function z(e,t,n,a){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),_.state.globalToolChangeHistory.push(o);_.state.globalToolChangeHistory.length>50&&_.state.globalToolChangeHistory.shift();var i=_.state.globalTools[t];if(\"active\"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=_.state.globalTools[e];if(o){var i=new o.tool(o.configuration);i.supportedInteractionTypes.forEach(function(e){if(void 0===n||n.includes(e))if(\"Mouse\"===e){var o=G(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach(function(t){return a.push(\"\".concat(e,\"-\").concat(t))}):Array.isArray(o)&&0===o.length&&a.push(\"\".concat(e,\"-DELETE\"))}else\"MultiTouch\"===e?a.push(\"\".concat(e,\"-\").concat(i.configuration.touchPointers)):a.push(e)})}return a}(t,n,a);Object.keys(_.state.globalTools).forEach(function(e){var t=_.state.globalTools[e];t.activeBindings=t.activeBindings.filter(function(e){return!r.includes(e)})}),r.some(function(e){return e.includes(\"Mouse-DELETE\")})&&(i.activeBindings=i.activeBindings.filter(function(e){return!e.includes(\"Mouse\")}),r=r.filter(function(e){return!e.includes(\"Mouse\")})),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[]}}var W={Mouse:function(e,t,n){var a=G(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some(function(e){return a.includes(e)})});o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter(function(e){return!a.includes(e)}),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:j.bind(void 0,\"MouseWheel\"),Touch:function(e,t,n){var a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive}),o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers});a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isTouchActive to false\")),o.options.isMultiTouchActive=!1)},TouchPinch:j.bind(void 0,\"TouchPinch\"),TouchRotate:j.bind(void 0,\"TouchRotate\"),DoubleTap:j.bind(void 0,\"DoubleTap\"),MultiTouch:function(e,t,n){var a,o=_.state.tools.find(function(n){return n.element===t&&\"active\"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers});1===e.configuration.touchPointers&&(a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive})),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isMultiTouchActive to false\")),o.options.isMultiTouchActive=!1),a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1)}};function G(e){if(e!==Object(e)||Array.isArray(e))if(\"number\"==typeof e){var t=[];t.push(e),e={mouseButtonMask:0===e?[]:t}}else null===e?e={mouseButtonMask:[]}:(console.info(\"No options provided when changing tool mode\"),e={});else if(0===e.mouseButtonMask||null===e.mouseButtonMask)e.mouseButtonMask=[];else if(\"number\"==typeof e.mouseButtonMask){var n=[];n.push(e.mouseButtonMask),e.mouseButtonMask=n}return e}var q={activeOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},enabledCallback:function(e){D(e,this.name)}},enabledOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},activeCallback:function(e){R(e,this.name)}}},Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.name,a=t.strategies,i=t.defaultStrategy,r=t.configuration,s=t.supportedInteractionTypes,l=t.mixins;o()(this,e),this.name=n,this.mode=\"disabled\",this.element=void 0,this.supportedInteractionTypes=s||[],this.strategies=a||{},this.defaultStrategy=i||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,this._options={},this._configuration=Object.assign({},r),this.hasCursor=!1,l&&l.length&&this._applyMixins(l)}return r()(e,[{key:\"mergeOptions\",value:function(e){this._options=Object.assign({},this._options,e)}},{key:\"clearOptions\",value:function(){this._options={}}},{key:\"applyActiveStrategy\",value:function(e){return this.strategies[this.activeStrategy](e,this.configuration)}},{key:\"_applyMixins\",value:function(e){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=a.detail,i=o.element,r=o.image,s=a.detail.deltaPoints.image,l=s.x,c=s.y;t.active=!0;for(var u=Object.keys(t.handles),d=0;d2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=s.detail,c=s.detail.element;t.active=!1,t.invalidated=!0,S.isToolLocked=!1,ce[a].forEach(function(e){c.removeEventListener(e,i)}),ue[a].forEach(function(e){c.removeEventListener(e,r)}),n.deleteIfHandleOutsideImage&&re(l,t.handles)&&$(c,e,t);\"function\"==typeof n.doneMovingCallback&&n.doneMovingCallback();f.cornerstone.updateImage(c)}(t,n,o,i,{dragHandler:r,upOrEndHandler:e},a)};n.active=!0,S.isToolLocked=!0,ce[i].forEach(function(e){a.addEventListener(e,r)}),ue[i].forEach(function(e){a.addEventListener(e,s)})};var he={value:!1},ve={mouse:[x.MOUSE_DRAG],touch:[x.TOUCH_DRAG]},ge={mouse:[x.MOUSE_UP,x.MOUSE_CLICK],touch:[x.TOUCH_END,x.TOUCH_DRAG_END,x.TOUCH_PINCH,x.TOUCH_PRESS,x.TAP]},me=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element,s=function(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=l.page,d=f.cornerstone.pageToPixel(c,u.x,\"touch\"===o?u.y+-57:u.y);!1===n.hasMoved&&(n.hasMoved=!0);he.value=!1,n.active=!0,n.x=d.x,n.y=d.y,a.preventHandleOutsideImage&&le(n,s);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function r(l){!function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=t.currentPoints.image,d=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,S.isToolLocked=!1,he.value=!1,ve[i].forEach(function(e){d.removeEventListener(e,s)}),ge[i].forEach(function(e){d.removeEventListener(e,l)}),o.deleteIfHandleOutsideImage&&re(t,n.handles)&&$(d,e,n);c.type===x.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=u.x,a.y=u.y);\"function\"==typeof o.doneMovingCallback&&o.doneMovingCallback();f.cornerstone.updateImage(d)}(t,e,n,a,o,i,{dragHandler:s,upOrEndHandler:r},l)};if(a.active=!0,n.active=!0,S.isToolLocked=!0,ve[i].forEach(function(e){r.addEventListener(e,s)}),ge[i].forEach(function(e){r.addEventListener(e,l)}),\"touch\"===i){he.value=!0;var c=f.cornerstone.getEnabledElement(r),u={x:e.currentPoints.page.x,y:e.currentPoints.page.y+-57},d=f.cornerstone.pageToPixel(r,u.x,u.y);!function e(t,n,a,o){if(!n.value)return;var i=Math.abs(t.y-o.y);var r=i/10;if(i<1)return t.y=o.y,void(n.value=!1);t.y>o.y?t.y-=r:t.y5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element;S.isToolLocked=!0,a.active=!0,n.active=!0;var s=function(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=s.page,d=f.cornerstone.pageToPixel(c,\"touch\"===o?u.x+-57:u.x,\"touch\"===o?u.y+-57:u.y);n.active=!0,n.x=d.x,n.y=d.y,a&&a.preventHandleOutsideImage&&le(n,l);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function e(r){!function(e,t,n,a,o,i,r){var s=i.moveHandler,l=i.moveEndHandler,c=r.detail,u=c.element,d=c.currentPoints.page,h=f.cornerstone.pageToPixel(u,\"touch\"===o?d.x+-57:d.x,\"touch\"===o?d.y+-57:d.y);if(n.active=!1,t.active=!1,S.isToolLocked=!1,n.x=h.x,n.y=h.y,fe[o].forEach(function(e){u.removeEventListener(e,s)}),pe[o].forEach(function(e){u.removeEventListener(e,l)}),u.removeEventListener(x.TOUCH_START,xe),r.type===x.TOUCH_PINCH||r.type===x.TOUCH_PRESS)return n.active=!1,f.cornerstone.updateImage(u),void(\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback());a.preventHandleOutsideImage&&le(n,r.detail.image);a.deleteIfHandleOutsideImage&&re(r.detail,t.handles)&&$(u,e,t);\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback();f.cornerstone.updateImage(u)}(t,n,a,o,i,{moveHandler:s,moveEndHandler:e},r)};fe[i].forEach(function(e){r.addEventListener(e,s)}),pe[i].forEach(function(e){r.addEventListener(e,l)}),r.addEventListener(x.TOUCH_START,xe)};function xe(e){return e.stopImmediatePropagation(),!1}var Te=function(e,t,n,a,o){n.active=!0,S.isToolLocked=!0,me(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},be=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"mouse\",i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=Object.assign({},{doneMovingCallback:function(){n.active=!1,S.isToolLocked=!1}},t.options);n.active=!0,S.isToolLocked=!0,de(e.detail,t.name,n,null,o,a),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Me=function(e){function t(e){var n=e.name,a=e.strategies,i=e.defaultStrategy,r=e.configuration,s=e.supportedInteractionTypes,c=e.mixins;return o()(this,t),l()(this,u()(t).call(this,{name:n,strategies:a,defaultStrategy:i,configuration:r,supportedInteractionTypes:s,mixins:c}))}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){throw new Error(\"Method createNewMeasurement not implemented for \".concat(this.name,\".\"))}},{key:\"pointNearTool\",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error(\"Method pointNearTool not implemented for \".concat(this.name,\".\"))}},{key:\"distanceFromPoint\",value:function(e,t,n){throw new Error(\"Method distanceFromPoint not implemented for \".concat(this.name,\".\"))}},{key:\"renderToolData\",value:function(e){throw new Error(\"renderToolData not implemented for \".concat(this.name,\".\"))}},{key:\"mouseMoveCallback\",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=Q(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:\"mouse\";Te(e,this,t,n,a)}},{key:\"toolSelectedCallback\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"mouse\";Ee(e,this,t,n)}}]),t}(Y),Ce=1,we=2;var Ie={setToolWidth:function(e){Ce=e},getToolWidth:function(){return Ce},setActiveWidth:function(e){we=e},getActiveWidth:function(){return we}},Se=\"white\",ke=\"greenyellow\",Pe=\"transparent\";var _e={setFillColor:function(e){Pe=e},getFillColor:function(){return Pe},setToolColor:function(e){Se=e},getToolColor:function(){return Se},setActiveColor:function(e){ke=e},getActiveColor:function(){return ke},getColorIfActive:function(e){return e.color?e.color:e.active?ke:Se}},Oe=function(e,t){e.save(),t(e),e.restore()},De=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Ie.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),e.stroke(),r&&e.setLineDash([])};function Le(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)})}var Ae=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=a.map(function(e){return f.cornerstone.pixelToCanvas(t,e)})),e.moveTo(n.x,n.y),a.forEach(function(t){var n=t.x,a=t.y;e.lineTo(n,a)})})},He=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Le(e,void 0,t,n,r,\"canvas\"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Ae(e,void 0,n,s,r,\"canvas\")},Re=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n)),De(e,o,function(e){e.arc(n.x,n.y,a,0,2*Math.PI)})},Ue=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a));var i=Math.min(n.x,a.x),r=Math.min(n.y,a.y),s=Math.abs(n.x-a.x),l=Math.abs(n.y-a.y),c=s/2*.5522848,u=l/2*.5522848,d=i+s,h=r+l,v=i+s/2,g=r+l/2;De(e,o,function(e){e.moveTo(i,g),e.bezierCurveTo(i,g-u,v-c,r,v,r),e.bezierCurveTo(v+c,r,d,g-u,d,g),e.bezierCurveTo(d,g+u,v+c,h,v,h),e.bezierCurveTo(v-c,h,i,g+u,i,g),e.closePath()})},Ne=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=_e.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return\"continue\";if(!0===a.drawHandlesIfActive&&!s.active)return\"continue\";var l=s.active?Ie.getActiveWidth():Ie.getToolWidth(),c=a.fill;De(e,{lineWidth:l,fillStyle:c},function(e){var t=f.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||S.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)})},l=0;l0?f.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Le(a,void 0,r,f.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},\"canvas\")},Fe=15,Ve=\"\".concat(Fe,\"px Arial\"),je=\"transparent\";var ze={setFont:function(e){Ve=e},getFont:function(){return Ve},setFontSize:function(e){Fe=e},getFontSize:function(){return Fe},setBackgroundColor:function(e){je=e},getBackgroundColor:function(){return je}},We=function(e,t,n,a,o){var i=ze.getFontSize();e.font=ze.getFont(),e.textBaseline=\"top\",e.fillStyle=a,n.forEach(function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))})},Ge=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function qe(e,t,n){var a=ze.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var Ye=function(e,t,n,a,o,i){\"[object Array]\"!==Object.prototype.toString.call(t)&&(t=[t]);var r=ze.getFontSize(),s=ze.getBackgroundColor(),l=0;t.forEach(function(t){var n=qe(e,t,5);l=Math.max(l,n)});var c={width:l,height:5+t.length*(r+5)};return Oe(e,function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?\"#FF0000\":s;Ge(e,c,r),We(e,c,t,o,5)}),c},Xe=function(e,t,n,a,o,i,r,s,l,c){var u=f.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=Ye(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map(function(e){return u.pixelToCanvas(t,e)});Be(v,d,n.boundingBox,e,r,s)}},Ke=function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(r,s,l,c)})},Ze=function(e){var t=e.getContext(\"2d\");return t.setTransform(1,0,0,1,0,0),t},Je=function(e,t){return void 0===e?t:e},Qe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Je(t.shadowColor,\"#000000\"),e.shadowBlur=Je(t.shadowBlur,0),e.shadowOffsetX=Je(t.shadowOffsetX,1),e.shadowOffsetY=Je(t.shadowOffsetY,1))},$e=function(e,t,n){if(n.vflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},et=function(e){e.setTransform(1,0,0,1,0,0)},tt=function(e,t,n,a){var o=f.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return f.cornerstoneMath.lineSegment.distanceToPoint(i,a)},nt=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n};function at(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}var ot=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Angle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(tt(e,t.handles.start,t.handles.middle,n)<25||tt(e,t.handles.middle,t.handles.end,n)<25)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=Q(e.currentTarget,this.name);if(s)for(var l=Ze(n.canvasContext.canvas),c=Ie.getToolWidth(),u=function(e){var o=s.data[e];if(!1===o.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var s=_e.getColorIfActive(o),l=f.cornerstone.pixelToCanvas(n.element,o.handles.start),u=f.cornerstone.pixelToCanvas(n.element,o.handles.middle);Ae(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var d={color:s,handleRadius:i,drawHandlesIfActive:r};Ne(e,n,o.handles,d);var v=n.image.columnPixelSpacing||1,g=n.image.rowPixelSpacing||1,m={x:(o.handles.middle.x-o.handles.start.x)*v,y:(o.handles.middle.y-o.handles.start.y)*g},p={x:(o.handles.end.x-o.handles.middle.x)*v,y:(o.handles.end.y-o.handles.middle.y)*g},y={x:(o.handles.end.x-o.handles.start.x)*v,y:(o.handles.end.y-o.handles.start.y)*g},x=at(m),T=at(p),b=at(y),E=Math.acos((Math.pow(x,2)+Math.pow(T,2)-Math.pow(b,2))/(2*x*T));if(E*=180/Math.PI,o.rAngle=nt(E,2),o.rAngle){var M,C=function(e,t,n){var a=t&&n?\"\":\" (isotropic)\";return e.rAngle.toString()+String.fromCharCode(parseInt(\"00B0\",16))+a}(o,n.image.rowPixelSpacing,n.image.columnPixelSpacing);if(!o.handles.textBox.hasMoved){M={x:u.x,y:u.y};var w=qe(e,C,5);u.x0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ArrowAnnotate\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{getTextCallback:rt,changeTextCallback:st,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=Q(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Ze(c),d=Ie.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return\"continue\";Oe(u,function(n){Qe(n,t.configuration);var l=_e.getColorIfActive(i),c=f.cornerstone.pixelToCanvas(a,i.handles.start),u=f.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?He(n,u,c,l,d):He(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&Ne(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&\"\"!==v){var m=qe(n,v,5),p=ze.getFontSize()+10,y=Math.max(m,p)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},ht=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,handles:{start:dt(n,a,0),end:dt(n,a,1,{active:!0}),perpendicularStart:dt(n,a,2,{locked:!0}),perpendicularEnd:dt(n,a,3),textBox:dt(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},vt=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=f.cornerstone,i=f.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ne(r.textBox,n))return!0;var c=\"mouse\"===a?S.clickProximity:S.touchProximity;return!!function(e,t,n,a){var o=f.cornerstone,i=f.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)u){var g=u;u=v,v=g}e.longestDiameter=u.toFixed(1),e.shortestDiameter=v.toFixed(1)},ft=function(e,t,n){var a=\" mm\";return t&&n||(a=\" pixels\"),[\" L \".concat(e.longestDiameter).concat(a),\" W \".concat(e.shortestDiameter).concat(a)]},pt=function(e,t){var n=this,a=e.detail,o=a.element,i=a.image,r=this.configuration;if(!yt(i)){var s=this.createNewMeasurement(a),l=function(){s.active=!1,f.cornerstone.updateImage(o)};J(o,this.name,s),f.cornerstone.updateImage(o);var c=(new Date).getTime(),u=s.handles,d=u.end,h=u.perpendicularStart;ye(a,this.name,s,d,{doneMovingCallback:function(){var e=s.handles,t=s.longestDiameter,i=s.shortestDiameter,u=re(a,e),d=parseFloat(t)||0,v=parseFloat(i)||0,g=d<1||v<1,m=(new Date).getTime()-c<150;u||g||m?(s.cancelled=!0,$(o,n.name,s)):r.getMeasurementLocationCallback(s,a,l),h.locked=!1,f.cornerstone.updateImage(o)}},t)}},yt=function(e){var t=f.cornerstone.metaData.get(\"imagePlaneModule\",e.imageId),n=e.rowPixelSpacing,a=e.columnPixelSpacing;return t&&(n=t.rowPixelSpacing||t.rowImagePixelSpacing,a=t.columnPixelSpacing||t.colImagePixelSpacing),!n||!a};var xt={setCoords:function(e){lt=e.currentPoints.canvas},getCoords:function(){return lt}},Tt=function(e){var t=this,n=e.detail,a=n.element;xt.setCoords(n);var o=Q(a,this.name);if(o){for(var i=!1,r=function(e){var r=n.currentPoints.canvas,s=o.data[e],l=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=oe(e,t,n,a),i=!1;return Object.keys(t).forEach(function(e){if(\"textBox\"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}}),i}(a,s.handles,r);Object.keys(s.handles).forEach(function(e){if(\"textBox\"!==e){var t=s.handles[e];t.hover=t.active}}),l&&(i=!0);var c=t.pointNearTool(a,s,r,\"mouse\"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;sn(e,i)?(r.x=y+u*g,r.y=x-u*v,s.x=r.x-d*g,s.y=r.y+d*v):(r.x=m+u*g,r.y=p-u*v,s.x=r.x-d*g,s.y=r.y+d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=f.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=f.cornerstoneMath.lineSegment.intersectLine(l,c),r=f.cornerstoneMath.point.distance(i,n.handles.start),s=f.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||function(e,t){var n=f.cornerstoneMath.point.distance,a=t.handles,o=a.start,i=a.end,r=a.perpendicularStart,s=a.perpendicularEnd,l=r,c=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,l),u=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,e),d=c+u;if(n(l,e)<=c)return!1;var h=n(o,i),v=(o.x-i.x)/h,g=(o.y-i.y)/h,m=o.x-1*v,p=o.y-1*g,y=i.x+1*v,x=i.y+1*g;r.x=e.x+d*g,r.y=e.y-d*v,s.x=e.x,s.y=e.y,s.locked=!1,r.locked=!1;var T={start:{x:o.x,y:o.y},end:{x:i.x,y:i.y}},b={start:{x:r.x,y:r.y},end:{x:s.x,y:s.y}};return f.cornerstoneMath.lineSegment.intersectLine(T,b)||(n(e,o)>n(e,i)?(s.x=y-u*g,s.y=x+u*v,r.x=s.x+d*g,r.y=s.y-d*v):(s.x=m-u*g,s.y=p+u*v,r.x=s.x+d*g,r.y=s.y-d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Et=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mt=function(e,t){Et(e,t,\"x\"),Et(e,t,\"y\"),Et(e,t,\"moving\"),Et(e,t,\"hover\"),Et(e,t,\"active\"),Et(e,t,\"selected\")};var Ct=function(e){var t,n=this,a=e.detail,o=a.element,i=S.clickProximity,r=function(e){t.invalidated=!0,re(a,t.handles)&&$(o,n.name,t),e&&(e.moving=!1,e.selected=!0),o.style.cursor=\"\",f.cornerstone.updateImage(o),o.addEventListener(x.MOUSE_MOVE,n._moveCallback),o.addEventListener(x.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=Q(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=oe.apply(void 0,u);if(d)return o.removeEventListener(x.MOUSE_MOVE,n._moveCallback),o.removeEventListener(x.TOUCH_START,n._moveCallback),t.active=!0,wt(t.handles),d.moving=!0,d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),m=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+m*m)||0)>v?(Mt(s,l),Mt(s,c),Mt(l,u),Object.values(r).find(function(e){return!0===e.moving})):n}(a,t,d),o.style.cursor=d.hasBoundingBox?\"move\":\"none\",function(e,t,n,a,o,i){var r=e.element,s={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},l=function(e){var o=e.detail;a.active=!0,a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+s.x,a.y=o.currentPoints.image.y+s.y):bt(a,o,n,s),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),f.cornerstone.updateImage(r);var l={toolType:t,element:r,measurementData:n};f.cornerstone.triggerEvent(r,x.MEASUREMENT_MODIFIED,l)};r.addEventListener(x.MOUSE_DRAG,l),r.addEventListener(x.TOUCH_DRAG,l);var c=f.cornerstone.getImage(r),u=function(){f.cornerstone.getImage(r).imageId!==c.imageId&&d()};r.addEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u);var d=function e(){r.removeEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u),r.removeEventListener(x.MOUSE_DRAG,l),r.removeEventListener(x.MOUSE_UP,e),r.removeEventListener(x.MOUSE_CLICK,e),r.removeEventListener(x.TOUCH_DRAG,l),r.removeEventListener(x.TOUCH_DRAG_END,e),r.removeEventListener(x.TAP,e),f.cornerstone.updateImage(r),\"function\"==typeof o&&o()};r.addEventListener(x.MOUSE_UP,d),r.addEventListener(x.MOUSE_CLICK,d),r.addEventListener(x.TOUCH_DRAG_END,d),r.addEventListener(x.TAP,d)}(a,n.name,t,d,function(){return r(d)}),St(e),{v:!0}},u=0;u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Bidirectional\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{changeMeasurementLocationCallback:Lt,getMeasurementLocationCallback:Lt,textBox:\"\",shadow:\"\",drawHandlesOnHover:!0,additionalData:[]}},i=Object.assign(a.configuration,n),r=Object.assign(a,{configuration:i});return(e=l()(this,u()(t).call(this,r))).createNewMeasurement=ht.bind(ut()(ut()(e))),e.pointNearTool=vt.bind(ut()(ut()(e))),e.renderToolData=gt.bind(ut()(ut()(e))),e.addNewMeasurement=pt.bind(ut()(ut()(e))),e._moveCallback=Tt.bind(ut()(ut()(e))),e.preMouseDownCallback=Ct.bind(ut()(ut()(e))),e.preTouchStartCallback=Pt.bind(ut()(ut()(e))),e}return h()(t,e),t}(Me),Ht=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"CobbAngle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.hasIncomplete=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,complete:!1,value:\"\",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(tt(e,t.handles.start,t.handles.end,n)<25||tt(e,t.handles.start2,t.handles.end2,n)<25))}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r)for(var s=Ze(n.canvasContext.canvas),l=Ie.getToolWidth(),c=ze.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(s,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Le(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Xe(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)})},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"EllipticalRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x)+7.5,top:Math.min(o.y,i.y)+7.5,width:Math.abs(o.x-i.x)-15,height:Math.abs(o.y-i.y)-15},s={left:Math.min(o.x,i.x)-7.5,top:Math.min(o.y,i.y)-7.5,width:Math.abs(o.x-i.x)+15,height:Math.abs(o.y-i.y)+15},l=Vt(r,n);return!(!Vt(s,n)||l)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ue(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.round(Math.min(a.handles.start.x,a.handles.end.x)),top:Math.round(Math.min(a.handles.start.y,a.handles.end.y)),width:Math.round(Math.abs(a.handles.start.x-a.handles.end.x)),height:Math.round(Math.abs(a.handles.start.y-a.handles.end.y))};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=jt(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=Math.PI*(y.width*(m||1)/2)*(y.height*(g||1)/2),isNaN(l)||(a.area=l),a.invalidated=!1}a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2);var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;ye.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.x+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>o.value}(e,t,n));var a,o,i}function Xt(e,t,n,a){qt(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var Kt=function e(t,n){o()(this,e),this.toolIndex=t,this.handleIndexArray=n},Zt=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];o()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function Jt(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function tn(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var nn={newHandle:function(e,t){var n=t.length-1;return Jt(t,$t(t[n]),$t(e),[n])},end:function(e){var t=e.length-1;return Jt(e,$t(e[t]),$t(e[0]),[t,0])},modify:function(e,t){var n=$t(e[t]),a=t-1;0===t&&(a=e.length-1);var o=$t(e[a]);return!!Jt(e,n,o,[t,a])||Jt(e,n,o=$t(e[a=t===e.length-1?0:t+1]),[t,a])}},an=function(){function e(t){o()(this,e),this._eventData=t}return r()(e,[{key:\"findLine\",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:\"findTool\",value:function(){return this._toolData=Q(this._eventData.element,\"FreehandMouse\"),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:\"_nearestHandleToPointAllTools\",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:5,activeHandleRadius:3,completeHandleRadius:6,alwaysShowHandles:!1,invalidColor:\"crimson\",currentHandle:0,currentTool:-1}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(ut()(ut()(e))),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(ut()(ut()(e))),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(ut()(ut()(e))),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(ut()(ut()(e))),e._editMouseUpCallback=e._editMouseUpCallback.bind(ut()(ut()(e))),e._editMouseDragCallback=e._editMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:[]};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles;if(!a)throw new Error(\"invalid parameters supplied to tool \".concat(this.name,\"'s pointNearTool\"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:\"distanceFromPoint\",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=e.detail,i=o.element;if(n.hasBoundingBox)Te(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};var s=this._pointNearHandleAllTools(o),l=s.handleNearby,c=s.toolIndex;this._modifying=!0,r.currentHandle=l,r.currentTool=c,this._activateModify(i),S.isToolLocked=!0,vn(e)}}},{key:\"_drawingMouseMoveCallback\",value:function(e){var t=e.detail,n=t.element,a=Q(t.element,this.name),o=this.configuration,i=o.currentTool,r=a.data[i],s=t.currentPoints.canvas;this._getMouseLocation(t),this._checkInvalidHandleLocation(r,t);var l=this._pointNearHandle(n,r,s);void 0!==l&&!l.hasBoundingBox&&l\")}},{key:\"_compareDistanceToSpacingCanvas\",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\">\",o=this.configuration;f.cornerstone.pixelToCanvas(e,t),f.cornerstone.pixelToCanvas(e,n);return\">\"===a?f.cornerstoneMath.point.distance(t,n)>o.spacing:f.cornerstoneMath.point.distance(t,n)0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Length\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;return a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!(!a||!1===t.visible)&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l,c=Ze(n.canvasContext.canvas),u=n.image,d=n.element,h=Ie.getToolWidth(),v=f.cornerstone.metaData.get(\"imagePlaneModule\",u.imageId);v?(s=v.rowPixelSpacing||v.rowImagePixelSpacing,l=v.columnPixelSpacing||v.colImagePixelSpacing):(s=u.rowPixelSpacing,l=u.columnPixelSpacing);for(var g=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(c,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,d,a.handles.start,a.handles.end,{color:r});var c={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,c);var u=(a.handles.end.x-a.handles.start.x)*(l||1),v=(a.handles.end.y-a.handles.start.y)*(s||1),g=Math.sqrt(u*u+v*v);if(a.length=g,!a.handles.textBox.hasMoved){var m={x:Math.max(a.handles.start.x,a.handles.end.x)};m.x===a.handles.start.x?m.y=a.handles.start.y:m.y=a.handles.end.y,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}var f=function(e,t,n){var a=\" mm\";t&&n||(a=\" pixels\");return\"\".concat(e.length.toFixed(2)).concat(a)}(a,s,l);Xe(e,d,a.handles.textBox,f,a.handles,p,r,h,10,!0)})},m=0;m0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Probe\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};console.error(\"required eventData not supplieed to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.end);return f.cornerstoneMath.point.distance(o,n)<5}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration.handleRadius,a=Q(e.currentTarget,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=t.image,r=ze.getFontSize(),s=function(e){var s=a.data[e];if(!1===s.visible)return\"continue\";Oe(o,function(e){var a=_e.getColorIfActive(s);Ne(e,t,s.handles,{handleRadius:n,color:a});var o,l,c,u=Math.round(s.handles.end.x),d=Math.round(s.handles.end.y);if(u>=0&&d>=0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RectangleRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x),top:Math.min(o.y,i.y),width:Math.abs(o.x-i.x),height:Math.abs(o.y-i.y)};return f.cornerstoneMath.rect.distanceToPoint(r,n)<5}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ke(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.min(a.handles.start.x,a.handles.end.x),top:Math.min(a.handles.start.y,a.handles.end.y),width:Math.abs(a.handles.start.x-a.handles.end.x),height:Math.abs(a.handles.start.y-a.handles.end.y)};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=yn(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=y.width*(m||1)*(y.height*(g||1)),isNaN(l)||(a.area=l),a.invalidated=!1}var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2),Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"TextMarker\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{markers:[],current:\"\",ascending:!0,loop:!1,changeTextCallback:Tn}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.touchPressCallback=e._changeText.bind(ut()(ut()(e))),e.doubleClickCallback=e._changeText.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(f.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:\"pointNearTool\",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=f.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ne(t.handles.end,n);return a<10||o}}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration,a=Q(t.element,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return\"continue\";var r=_e.getColorIfActive(i);Oe(o,function(e){Qe(e,n);var a=f.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=Ye(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})})},r=0;r3&&void 0!==arguments[3]&&arguments[3];e.forEach(function(e){var o,i=(o=e[0],e[1]*n+o);t[i]=a?0:1})},drawBrushOnCanvas:function(e,t,n,a){var o=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),i=f.cornerstone.pixelToCanvas(a,{x:1,y:1}),r=i.x-o.x,s=i.y-o.y;Oe(t,function(t){e.forEach(function(e){var o=f.cornerstone.pixelToCanvas(a,{x:e[0],y:e[1]}),i={left:o.x,top:o.y,width:r,height:s};Ge(t,i,n)})})},getCircle:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.round(a),r=Math.round(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>n||h<0||d*d+c*c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Brush\",supportedInteractionTypes:[\"Mouse\"],strategies:{overlapping:_n,nonOverlapping:On},defaultStrategy:\"overlapping\",configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"renderBrush\",value:function(e){var t,n=e.detail,a=n.viewport;if(this._drawing?t=this._lastImageCoords:this._mouseUpRender?(t=this._lastImageCoords,this._mouseUpRender=!1):t=_.state.mousePositionImage,t){var o=n.image,i=o.rows,r=o.columns,s=t,l=s.x,c=s.y;if(!(l<0||l>r||c<0||c>i)){this._configuration;var u=kn.radius,d=n.canvasContext,h=n.element,v=kn.drawColorId,g=this._getBrushColor(v);d.setTransform(1,0,0,1,0,0);var m=f.cornerstone,p=u*a.scale,y=m.pixelToCanvas(h,t);d.beginPath(),d.strokeStyle=g,d.ellipse(y.x,y.y,p,p,0,0,2*Math.PI),d.stroke()}}}},{key:\"_paint\",value:function(e){this.applyActiveStrategy(e,this.configuration),f.cornerstone.updateImage(e.detail.element)}}]),t}(Cn);function _n(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData),d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u.data[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u.data[h].pixelData=v}var g=u.data[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u.data[h].invalidated=!0}}function On(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData).data,d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u[h].pixelData=v}var g=u[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u[h].invalidated=!0;for(var p=Cn.getNumberOfColors(),y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Crosshairs\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDownCallback=e._chooseLocation.bind(ut()(ut()(e))),e.mouseDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e.touchDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_chooseLocation\",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=Q(n,this.name);if(a){var o=n,i=f.cornerstone.getEnabledElement(o).image.imageId,r=f.cornerstone.metaData.get(\"imagePlaneModule\",i);if(r){var s=Bn(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach(function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=Q(e,\"stack\");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach(function(e,a){var o=f.cornerstone.metaData.get(\"imagePlaneModule\",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Un(o.imagePositionPatient),r=Un(o.rowCosines),l=Un(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"DoubleTapFitToWindow\",supportedInteractionTypes:[\"DoubleTap\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"doubleTapCallback\",value:function(e){var t=e.detail;f.cornerstone.fitToWindow(t.element)}}]),t}(Y),qn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"DragProbe\",strategies:{default:Yn,minimal:Xn},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).touchDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.touchEndCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.mouseUpCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.initialConfiguration=i,e.dragEventData={},e}return h()(t,e),r()(t,[{key:\"_movingEventCallback\",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,f.cornerstone.updateImage(n)}},{key:\"_endMovingEventCallback\",value:function(e){var t=e.detail.element;this.dragEventData={},f.cornerstone.updateImage(t)}},{key:\"renderToolData\",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(Y),Yn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Ze(s.canvas),c=_e.getActiveColor(),u=ze.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Oe(l,function(e){Qe(e,t);var a,s,l=\"\".concat(d,\", \").concat(h);if(i.color)a=mn(o,d,h,1,1),s=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2],\" A: \").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,m=Rt(i,v);s=\"SP: \".concat(v,\" MO: \").concat(parseFloat(g.toFixed(3))),m&&(s+=\" SUV: \".concat(parseFloat(m.toFixed(3))))}var f={x:r.canvas.x+5,y:r.canvas.y-5};Ye(e,s,f.x,f.y+u+5,c),Ye(e,l,f.x,f.y,c)})},Xn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Ze(s.canvas),u=_e.getActiveColor(),d=r.page.y-ze.getFontSize()/2;l&&(d=r.page.y-4*ze.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Oe(c,function(e){Qe(e,t);var a,r=n.metaData.get(\"generalSeriesModule\",i.imageId),s=r&&r.modality,c=\"\";if(i.color)a=mn(o,h.x,h.y,1,1),c=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if(\"CT\"===s)c+=\"HU: \".concat(g);else if(\"PT\"===s){c+=g;var m=Rt(i,d);m&&(c+=\" SUV: \".concat(parseFloat(m.toFixed(2))))}else c+=g}var f=n.pixelToCanvas(o,h),p={x:12,y:-(ze.getFontSize()+10)/2},y=qe(e,c,5);l&&(p={x:-y/2,y:-ze.getFontSize()-10-12}),Re(e,o,f,6,{color:u},\"canvas\"),Ye(e,c,f.x+p.x,f.y+p.y,u)})},Kn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Eraser\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preMouseDownCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_deleteAllNearbyTools\",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;S.tools.forEach(function(e){var a=Q(n,e.name);a&&a.data.forEach(function(a){\"function\"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&($(n,e.name,a),f.cornerstone.updateImage(n))})});return!0}}]),t}(Y),Zn=rn.FreehandHandleData,Jn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandSculpterMouse\",referencedToolName:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],mixins:[\"activeOrDisabledBinaryTool\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:5,maxSpacing:20,currentTool:null,dragColor:_e.getActiveColor(),hoverColor:_e.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).hasCursor=!0,e.initialConfiguration=i,e.referencedToolName=i.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(ut()(ut()(e))),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;if(this._active){var n=t.canvasContext.canvas.getContext(\"2d\"),a={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};Ne(n,t,this.configuration.mouseLocation.handles,a)}else this.configuration.showCursorOnHover&&this._renderHoverCursor(e)}},{key:\"doubleClickCallback\",value:function(e){var t=e.detail;this._selectFreehandTool(t),f.cornerstone.updateImage(t.element)}},{key:\"preMouseDownCallback\",value:function(e){var t=e.detail;return null===this.configuration.currentTool?this._selectFreehandTool(t):this._initialiseSculpting(t),f.cornerstone.updateImage(t.element),!0}},{key:\"activeMouseDragCallback\",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=Q(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles;this._getMouseLocation(n),this._sculpt(n,o),f.cornerstone.updateImage(n.element)}}}},{key:\"activeMouseUpCallback\",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,S.isToolLocked=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),f.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:\"_renderHoverCursor\",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext(\"2d\"),i=Q(a,this.referencedToolName).data[this.configuration.currentTool];this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=S.mousePositionImage;var r=O(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};Ne(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:\"newImageCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"enabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"passiveCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"disabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"_selectFreehandTool\",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a)}},{key:\"_activateFreehandTool\",value:function(e,t){var n=Q(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;ae.maxSpacing&&a.push(o)}return a}},{key:\"_insertHandleRadially\",value:function(e,t){var n=e.dataHandles,a=t-1,o=this.constructor._getNextHandleIndexBeforeInsert(t,n.length),i=this.constructor._getInsertPosition(e,t,a,o),r=new Zn(i);n.splice(t,0,r),n[a].lines.pop(),n[a].lines.push(n[t]),t===n.length-1?n[t].lines.push(n[0]):n[t].lines.push(n[t+1])}},{key:\"_consolidateHandles\",value:function(e){if(e.dataHandles.length>3){var t=this._findCloseHandlePairs(e);this._mergeCloseHandles(e,t)}}},{key:\"_findCloseHandlePairs\",value:function(e){for(var t=e.dataHandles,n=e.element,a=e.minSpacing,o=[],i=t.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=Q(a,this.referencedToolName).data[i.currentTool],s=1;if(n){var l=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),c=f.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height});s=(c.x-l.x)*(c.y-l.y)/(o.width*o.height)}var u=r.area*s,d=Math.pow(u/Math.PI,.5);return Math.min(t,d)}},{key:\"_getClosestFreehandToolOnElement\",value:function(e,t){var n=O(e,this.referencedToolName),a=Q(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Magnify\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{magnifySize:300,magnificationLevel:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.enabledCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.disabledCallback=e._destroyMagnificationCanvas.bind(ut()(ut()(e))),e.postTouchStartCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.touchEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.postMouseDownCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.mouseDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.mouseUpCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.mouseClickCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.newImageCallback=e._drawMagnificationTool.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_addMagnifyingGlass\",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame(function(){return t._drawMagnificationTool(e)}),e.preventDefault(),e.stopPropagation()}},{key:\"_updateMagnifyingGlass\",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:\"_removeMagnifyingGlass\",value:function(e){e.detail.element.querySelector(\".magnifyTool\").style.display=\"none\",document.body.style.cursor=\"default\",this._removeZoomElement()}},{key:\"_drawMagnificationTool\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector(\"canvas:not(.magnifyTool)\"),o=Ze(n),i=f.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top=\"\".concat(u.top,\"px\"),n.style.left=\"\".concat(u.left,\"px\"),n.style.display=\"block\",document.body.style.cursor=\"none\"}}},{key:\"_drawZoomedElement\",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=f.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement=document.createElement(\"div\"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,f.cornerstone.enable(this.zoomElement,n.options);var r=f.cornerstone.getEnabledElement(this.zoomElement),s=f.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,f.cornerstone.displayImage(this.zoomElement,i),f.cornerstone.setViewport(this.zoomElement,s)}},{key:\"_removeZoomElement\",value:function(){void 0!==this.zoomElement&&(f.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:\"_createMagnificationCanvas\",value:function(e){if(null===e.querySelector(\".magnifyTool\")){var t=document.createElement(\"canvas\");t.classList.add(\"magnifyTool\"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position=\"absolute\",t.style.display=\"none\",e.appendChild(t)}}},{key:\"_destroyMagnificationCanvas\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");n&&t.removeChild(n)}}]),t}(Y),$n=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"PanMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{touchPointers:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Pan\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ReferenceLines\",mixins:[\"enabledOrDisabledBinaryTool\"],configuration:{renderer:ia}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.renderer=null,e.synchronizationContext=null,e}var n;return h()(t,e),r()(t,[{key:\"enabledCallback\",value:(n=oa()(na.a.mark(function e(t){var n,a,o,i=arguments;return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,sa(t);case 4:if(e.sent&&o&&a){e.next=8;break}return console.warn(\"Unable to enable \".concat(this.name,\". Exiting enable callback. Tool will be enabled, but will not render.\")),e.abrupt(\"return\");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case\"end\":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Ze(n.canvasContext.canvas);f.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach(function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)})}}}]),t}(Y),ua=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},da=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Rotate\",strategies:{default:ha,horizontal:va,vertical:ga},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"mouseDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"postMouseDownCallback\",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:\"dragCallback\",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y),ha=function(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=ua(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle},va=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},ga=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},ma=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RotateTouch\",supportedInteractionTypes:[\"TouchRotate\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchRotateCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,f.cornerstone.setViewport(n,a)}}]),t}(Y),fa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ScaleOverlay\",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:[\"enabledOrDisabledBinaryTool\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"enabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=Ze(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=f.cornerstone.metaData.get(\"imagePlaneModule\",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=pa(c,.25,.05),v=pa(c,.05,.15);if(c.width&&c.height&&h&&v){var g=_e.getToolColor(),m=Ie.getToolWidth(),p=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:m},this.configuration);Oe(n,function(e){Qe(e,p),Le(e,i,p.verticalLine.start,p.verticalLine.end,{color:g,lineWidth:m},\"canvas\"),ya(e,i,p),Le(e,i,p.horizontalLine.start,p.horizontalLine.end,{color:g,lineWidth:m},\"canvas\"),xa(e,i,p)})}}else console.warn(\"unable to define rowPixelSpacing or colPixelSpacing from data on \".concat(this.name,\"'s renderToolData\"))}}]),t}(Y),pa=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},ya=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},xa=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},Ta={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function ba(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];return/trident/i.test(n[1])?(e=/\\brv[ :]+(\\d+)/g.exec(t)||[],\"IE \".concat(e[1]||\"\")):\"Chrome\"===n[1]&&null!==(e=t.match(/\\b(OPR|Edge)\\/(\\d+)/))?e.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(e=t.match(/version\\/(\\d+)/i))&&n.splice(1,1,e[1]),n.join(\" \"))}function Ea(){return la||Ma()}function Ma(){var e=ba().split(\" \"),t=e[0],n=e[1],a=Ta[t];return a?a[n]?a[n]:a.default:Ta.default}var Ca={interaction:[],thumbnail:[],prefetch:[]},wa={interaction:0,thumbnail:0,prefetch:0},Ia={interaction:6,thumbnail:6,prefetch:5},Sa=!1,ka=20;function Pa(){Sa&&setTimeout(function(){Oa()},ka)}function _a(e){var t=f.cornerstone,n=e.type;wa[n]++,Sa=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()});else{var s=function(e){return\"prefetch\"===e.type?-5:\"interactive\"===e.type?0:\"thumbnail\"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()})}}function Oa(){var e=Ea();Ia={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(wa.interaction+wa.thumbnail+wa.prefetch),n=0;n1){var i=Q(e,\"stackRenderer\");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=Rn.getStartLoadHandler(),l=Rn.getEndLoadHandler(),c=Rn.getErrorLoadingHandler();if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then(function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}},function(n){var a=r.imageIds[t];c&&c(e,a,n)}),La.startGrabbing(),T(e,x.STACK_SCROLL,u)}}},Ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n)r%=i.imageIds.length;else r=se(r,0,i.imageIds.length-1);if(a)Aa(e,r);else{var s={index:r};i.pending.push(s),function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function e(o){t.imageIds.indexOf(o.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,e),t.pending.length>0&&function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function o(i){t.imageIds.indexOf(i.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,o),t.pending.length>0&&e(t,t.pending[0],a))}),Aa(a,n.index)}}(t,t.pending[0],a))}),Aa(a,n.index)}}(i,s,e)}}};function Ra(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index){e.pending.splice(e.pending.indexOf(t),1);if(e.pending.length>0){Ra(e,e.pending[0],n)}return}var a=function a(o){var i;if(e.imageIds.indexOf(o.detail.image.imageId)===t.index){e.pending.splice(e.pending.indexOf(t),1);n.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);if(e.pending.length>0){Ra(e,e.pending[0],n)}}};n.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);Aa(n,t.index)}}var Ua=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{loop:!1,allowSkipping:!0,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;Ha(a,s?-n:n,i,r)}}]),t}(Y),Na=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Ba=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScroll\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{loop:!1,allowSkipping:!0}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Fa=function(e,t,n,a,o){if(!e)throw new Error(\"getLuminance: parameter element must not be undefined\");t=Math.round(t),n=Math.round(n);var i,r,s,l=f.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"WwwcRegion\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{minWindowWidth:10}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.touchDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.touchEndCallback=e._applyStrategy.bind(ut()(ut()(e))),e.postMouseDownCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseClickCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseUpCallback=e._applyStrategy.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=_e.getColorIfActive({active:!0}),i=Ze(n.canvasContext.canvas);Oe(i,function(e){Ke(e,a,t.handles.start,t.handles.end,{color:o})})}},{key:\"_startOutliningRegion\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return ja(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),f.cornerstone.updateImage(t),!0}},{key:\"_setHandlesAndUpdate\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,f.cornerstone.updateImage(t)}},{key:\"_applyStrategy\",value:function(e){ja(this.handles.start)||ja(this.handles.end)||(e.detail.handles=this.handles,za(e,this.configuration),this._resetHandles())}},{key:\"_resetHandles\",value:function(){this.handles={start:{},end:{}}}}]),t}(Y),ja=function(e){return 0===Object.keys(e).length&&e.constructor===Object},za=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=se(l,0,a.width),c=se(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Fa(o,l,c,u,d),v=Wa(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,f.cornerstone.setViewport(o,g),f.cornerstone.updateImage(o)},Wa=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Wwwc\",strategies:{basicLevelingStrategy:qa},supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{orientation:0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"mouseDragCallback\",value:function(e){this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:\"touchDragCallback\",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y);function qa(e,t){var n=t.orientation,a=e.detail,o=(a.image.maxPixelValue*a.image.slope+a.image.intercept-(a.image.minPixelValue*a.image.slope+a.image.intercept))/1024,i=a.deltaPoints.page.x*o,r=a.deltaPoints.page.y*o;0===n?(a.viewport.voi.windowWidth+=i,a.viewport.voi.windowCenter+=r):(a.viewport.voi.windowWidth+=r,a.viewport.voi.windowCenter+=i)}var Ya=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{minScale:.25,maxScale:20,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Ya(a,r?o/4:-o/4,{maxScale:s,minScale:l});f.cornerstone.setViewport(n,c)}}]),t}(Y),Za=Xa.correctShift,Ja=Xa.changeViewportScale,Qa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Zoom\",strategies:{default:eo,translate:to,zoomToCenter:no},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){$a.call(this,e)}},{key:\"mouseDragCallback\",value:function(e){$a.call(this,e)}}]),t}(Y),$a=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function eo(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],m=Ja(c,r,{maxScale:a,minScale:o});f.cornerstone.setViewport(l,m);var p=f.cornerstone.pageToPixel(l,d,h),y={x:v-p.x,y:g-p.y};y=Za(y,m),c.translation.x-=y.x,c.translation.y-=y.y}function to(e,t){var n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=Ja(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&le(e.detail.startPoints.image,l);var m={x:l.width/2-d,y:l.height/2-h};m=Za(m,v);var f={x:v.translation.x-m.x,y:v.translation.y-m.y};Math.abs(f.x)<.01?v.translation.x=m.x:g.x=f.x/8,Math.abs(f.y)<.01?v.translation.y=m.y:g.y=f.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function no(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;Ja(s,r,{maxScale:a,minScale:o})}var ao=Xa.correctShift,oo=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomTouchPinch\",supportedInteractionTypes:[\"TouchPinch\"],configuration:{minScale:.25,maxScale:20}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchPinchCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var so,lo={48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",13:\"RETURN\",8:\"BACKSPACE\",9:\"TAB\",46:\"DELETE\",12:\"DELETE\",27:\"ESCAPE\",20:\"CAPSLOCK\",173:\"-\",189:\"-\",109:\"-\",61:\"+\",187:\"+\",107:\"+\",219:\"[\",221:\"]\",59:\";\",186:\";\",188:\",\",190:\".\",199:\"/\"},co={\"base/BaseTool\":Y,\"base/BaseAnnotationTool\":Me,\"base/BaseBrushTool\":Cn,\"manipulators/anyHandlesOutsideImage\":re,\"manipulators/getHandleNearImagePoint\":oe,\"manipulators/handleActivator\":ie,\"manipulators/moveAllHandles\":de,\"manipulators/moveHandle\":me,\"manipulators/moveNewHandle\":ye,\"manipulators/moveHandleNearImagePoint\":Te,\"manipulators/findHandleDataNearImagePoint\":be,\"manipulators/moveAnnotation\":Ee,\"mixins/activeOrDisabledBinaryTool\":q.activeOrDisabledBinaryTool,\"mixins/enabledOrDisabledBinaryTool\":q.enabledOrDisabledBinaryTool,\"drawing/getNewContext\":Ze,\"drawing/draw\":Oe,\"drawing/path\":De,\"drawing/setShadow\":Qe,\"drawing/drawLine\":Le,\"drawing/drawLines\":function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"pixel\";De(e,a,function(e){n.forEach(function(n){var a=n.start,i=n.end;if(\"pixel\"===o){var r=f.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)})})},\"drawing/drawJoinedLines\":Ae,\"drawing/drawCircle\":Re,\"drawing/drawEllipse\":Ue,\"drawing/drawRect\":Ke,\"drawing/fillOutsideRect\":function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(r+l,s,-l,c)})},\"drawing/drawTextBox\":Ye,\"drawing/drawArrow\":He,\"drawing/fillBox\":Ge,\"drawing/fillTextLines\":We,\"drawing/drawLink\":Be,\"drawing/drawLinkedTextBox\":Xe,\"drawing/drawHandles\":Ne,\"drawing/textBoxWidth\":qe,\"util/getLuminance\":Fa,\"util/copyPoints\":io,\"util/calculateSUV\":Rt,\"util/setContextToDisplayFontSize\":function(e,t,n){return f.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},\"util/scrollToIndex\":Aa,\"util/scroll\":Ha,\"util/roundToDecimal\":nt,\"util/projectPatientPointToImagePlane\":Nn,\"util/imagePointToPatientPoint\":Bn,\"util/planePlaneIntersection\":Fn,\"util/pointInsideBoundingBox\":ne,\"util/makeUnselectable\":function(e,t){e.style.webkitUserSelect=\"none\",e.style.webkitTouchCallout=\"none\",e.style.mozUserSelect=\"none\",e.style.msUserSelect=\"none\",e.style.oUserSelect=\"none\",e.style.khtmlUserSelect=\"none\",e.style.userSelect=\"none\",e.unselectable=\"on\",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents=\"none\")},\"util/getRGBPixels\":mn,\"util/getDefaultSimultaneousRequests\":Ma,\"util/getMaxSimultaneousRequests\":Ea,\"util/getBrowserInfo\":ba,\"util/isMobileDevice\":function(){return new RegExp(\"Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\").test(navigator.userAgent)},\"util/angleBetweenPoints\":ua,\"util/getKeyFromKeyCode\":function(e){return lo[e]},\"util/numbersWithCommas\":Nt,\"util/lineSegDistance\":tt,\"util/triggerEvent\":T,\"util/convertToVectro3\":Un,\"util/ellipseUtils\":Ft,\"util/freehandUtils\":rn,\"util/brushUtils\":wn,\"util/zoomUtils\":Xa},uo=function(e){return co[e]},ho=!0,vo=200;function go(e){if(\"number\"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function mo(){ho=!1}function fo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_DOUBLE_CLICK,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o);console.log(\"double-click: \".concat(go(e))),T(t,a,{event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function po(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){so=setTimeout(mo,vo),t.removeEventListener(\"mousemove\",yo);var a={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=f.cornerstone.pixelToCanvas(t,a.image);var o=io(a),i={event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:x.MOUSE_DOWN};T(i.element,x.MOUSE_DOWN,i)&&(i.type=x.MOUSE_DOWN_ACTIVATE,T(i.element,x.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",function e(i){clearTimeout(so);var s=x.MOUSE_UP;ho&&(s=x.MOUSE_CLICK);var l={page:f.cornerstoneMath.point.pageToPoint(i),image:f.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=f.cornerstone.pixelToCanvas(t,l.image);var c={page:f.cornerstoneMath.point.subtract(l.page,o.page),image:f.cornerstoneMath.point.subtract(l.image,o.image),client:f.cornerstoneMath.point.subtract(l.client,o.client),canvas:f.cornerstoneMath.point.subtract(l.canvas,o.canvas)};console.log(\"mouseup: \".concat(go(i)));var u={event:i,buttons:go(i),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};T(u.element,s,u),document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e),t.addEventListener(\"mousemove\",yo),ho=!0})}function r(e){var i=x.MOUSE_DRAG,r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,o.page),image:f.cornerstoneMath.point.subtract(r.image,o.image),client:f.cornerstoneMath.point.subtract(r.client,o.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,o.canvas)};console.log(\"mousemove \".concat(go(e)));var l={buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};T(l.element,i,l),o=io(r)}}function yo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_MOVE,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o),r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,i.page),image:f.cornerstoneMath.point.subtract(r.image,i.image),client:f.cornerstoneMath.point.subtract(r.client,i.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,i.canvas)};T(t,a,{viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=io(r)}}function xo(e){e.removeEventListener(\"mousedown\",po),e.removeEventListener(\"mousemove\",yo),e.removeEventListener(\"dblclick\",fo)}var To={enable:function(e){xo(e),e.addEventListener(\"mousedown\",po),e.addEventListener(\"mousemove\",yo),e.addEventListener(\"dblclick\",fo)},disable:xo},bo=function(e){var t=0,n=0,a=0,o=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),a=10*t,o=10*n,\"deltaY\"in e&&(o=e.deltaY),\"deltaX\"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function Eo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){e.preventDefault();var a=e.pageX,o=e.pageY,i=f.cornerstone.pageToPixel(t,a,o),r=bo(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:f.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};T(t,x.MOUSE_WHEEL,h)}}function Mo(e){e.removeEventListener(\"wheel\",Eo,{passive:!1})}var Co,wo,Io={enable:function(e){Mo(e),e.addEventListener(\"wheel\",Eo,{passive:!1})},disable:Mo},So=2e3,ko={mouse:0,touch:1};function Po(e,t){var n=Date.now();if(e!==Co){if(n-wo<=So)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Co=e}wo=n}var _o=Po.bind(null,ko.mouse),Oo=Po.bind(null,ko.touch);function Do(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.addEventListener(t,a,{passive:!1})})}function Lo(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.removeEventListener(t,a)})}var Ao=[\"mousedown\",\"mouseup\"],Ho=[\"touchstart\",\"touchend\"];function Ro(e){Lo(e,Ao,ko.mouse),Lo(e,Ho,ko.touch)}var Uo,No,Bo,Fo,Vo,jo,zo,Wo,Go,qo={enable:function(e){Ro(e),Do(e,Ao,ko.mouse),Do(e,Ho,ko.touch)},disable:Ro},Yo=1,Xo=0,Ko=!1,Zo=!1,Jo=700,Qo=5,$o=\"touchInput\";function ei(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Zo=!1,clearTimeout(zo)),e.type){case\"tap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"doubletap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.DOUBLE_TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"pinchstart\":Zo=!1,clearTimeout(zo),Yo=1;break;case\"pinchmove\":if(Zo=!1,clearTimeout(zo),!0===Ko){Yo=e.scale,Ko=!1;break}o=(e.scale-Yo)/Yo,(Uo={page:e.center,image:f.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PINCH,Vo={event:e,startPoints:Uo,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},T(t,a,Vo),Yo=e.scale;break;case\"touchstart\":Yo=1,clearTimeout(zo),clearTimeout(jo),jo=setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_START,e.touches.length>1&&(a=x.MULTI_TOUCH_START),Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},!0===T(t,a,Vo)&&(a=x.TOUCH_START_ACTIVE,e.touches.length>1&&(a=x.MULTI_TOUCH_START_ACTIVE),Vo.type=a,T(t,a,Vo)),Bo=io(Uo)},50),Zo=!0,Wo=0,zo=setTimeout(function(){Zo&&((No={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PRESS,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo))},Jo);break;case\"touchend\":Yo=1,Zo=!1,clearTimeout(zo),setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:f.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_END,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},T(t,a,Vo)},50);break;case\"panmove\":i={x:e.deltaX-Go.x,y:e.deltaY-Go.y},Go={x:e.deltaX,y:e.deltaY},(No={page:{x:Bo.page.x+i.x,y:Bo.page.y+i.y},image:f.cornerstone.pageToPixel(t,Bo.page.x+i.x,Bo.page.y+i.y),client:{x:Bo.client.x+i.x,y:Bo.client.y+i.y}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},(Wo+=Math.sqrt(Fo.page.x*Fo.page.x+Fo.page.y*Fo.page.y))>Qo&&(Zo=!1,clearTimeout(zo)),a=x.TOUCH_DRAG,e.pointers.length>1&&(a=x.MULTI_TOUCH_DRAG),Vo={viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,numPointers:e.pointers.length,type:a,isTouchEvent:!0},T(t,a,Vo),Bo=io(No);break;case\"panstart\":Go={x:e.deltaX,y:e.deltaY},(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Bo=io(No);break;case\"panend\":if(Zo=!1,clearTimeout(zo),!Bo)return!1;(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},a=x.TOUCH_DRAG_END,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,type:a,isTouchEvent:!0},T(t,a,Vo),2===e.pointers.length-e.changedPointers.length&&(Ko=!0);break;case\"rotatemove\":Zo=!1,clearTimeout(zo),r=e.rotation-Xo,Xo=e.rotation,a=x.TOUCH_ROTATE,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},T(t,a,Vo)}return!1}}function ti(e){qo.disable(e);[\"touchstart\",\"touchend\"].forEach(function(t){e.removeEventListener(t,ei)});var t=jn($o,e).hammer;t&&t.off(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei)}var ni={enable:function(e){ti(e);var t=f.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:\"doubletap\",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei),qo.enable(e),[\"touchstart\",\"touchend\"].forEach(function(t){e.addEventListener(t,ei,{passive:!1})});var c=jn($o,e);c.hammer=a,zn($o,e,c)},disable:ti},ai=function(e,t,n){return t.filter(function(t){return t.element===e&&\"active\"===t.mode&&(void 0===n||t.options[\"is\".concat(n,\"Active\")])})};\"createImageBitmap\"in window||(window.createImageBitmap=function(){var e=oa()(na.a.mark(function e(t){return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e){var n=document.createElement(\"img\");n.addEventListener(\"load\",function(){e(this)});var a=document.createElement(\"canvas\");a.width=t.width,a.height=t.height,a.getContext(\"2d\").putImageData(t,0,0,0,0,a.width,a.height),n.src=a.toDataURL()}));case 1:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}());var oi=_.modules.brush,ii=oi.state,ri=oi.getters,si=oi.setters;function li(e,t,n){var a=e.detail.element,o=n.toolData,i=n.visibleSegmentations;return!!o.data[t].pixelData&&(!!i[t]||ii.drawColorId===t&&ai(a,_.state.tools).filter(function(e){return e instanceof Cn}).length>0)}function ci(e,t,n){var a=n.toolData,o=n.imageBitmapCache,i=n.visibleSegmentations;o&&o[t]&&function(e,t,n){var a=e.detail,o=Ze(a.canvasContext.canvas),i=f.cornerstone.pixelToCanvas(a.element,{x:0,y:0}),r=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:0}),s=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:a.image.height}),l=f.cornerstoneMath.point.distance(i,r),c=f.cornerstoneMath.point.distance(r,s),u=a.canvasContext.canvas,d=a.viewport;o.imageSmoothingEnabled=!1,o.globalAlpha=function(e){if(e)return ii.alpha;return ii.hiddenButActiveAlpha}(n),$e(o,u,d);var h={x:d.translation.x*d.scale,y:d.translation.y*d.scale};o.drawImage(t,u.width/2-l/2+h.x,u.height/2-c/2+h.y,l,c),o.globalAlpha=1,et(o)}(e,o[t],i[t]),a.data[t].invalidated&&function(e,t,n){var a=e.detail,o=a.element,i=f.cornerstone.getEnabledElement(o),r=t.data[n].pixelData,s=ii.colorMapId,l=[[0,0,0,0],f.cornerstone.colors.getColormap(s).getColor(n)],c=new ImageData(a.image.width,a.image.height),u={stats:{},minPixelValue:0,getPixelData:function(){return r}};f.cornerstone.storedPixelDataToCanvasImageDataColorLUT(u,l,c.data),window.createImageBitmap(c).then(function(e){si.imageBitmapCacheForElement(i.uuid,n,e),t.data[n].invalidated=!1,f.cornerstone.updateImage(a.element)})}(e,a,t)}var ui=function(e){var t=e.detail.element,n=S.tools.filter(function(e){return e.element===t&&(\"active\"===e.mode||\"passive\"===e.mode||\"enabled\"===e.mode)});n.filter(function(e){return e instanceof Cn}).length>0&&function(e){var t=e.detail,n=t.element,a=Cn.getNumberOfColors(),o=Q(n,Cn.getReferencedToolDataName());if(!o){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\")?S.clickProximity:S.touchProximity;return t.filter(function(t){for(var o=Q(e,t.name),i=0;i0})},pi=function(e){if(!S.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mi(n,k.mouseTools()),i=o.filter(function(e){return\"active\"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preMouseDownCallback});if(r)if(r.preMouseDownCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"mouse\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"mouse\")}else{var g=o.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"mouse\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"mouse\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postMouseDownCallback});if(p)if(p.postMouseDownCallback(e))return}}}},yi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=ai(n,k.mouseTools());if(0!==(a=a.filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive})).length){var o=a[0];if(\"function\"==typeof o.preMouseDownActivateCallback)if(o.preMouseDownActivateCallback(e))return;o.addNewMeasurement?o.addNewMeasurement(e,\"mouse\"):o instanceof Me&&function(e,t){e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(J(a,t.name,o),f.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?me:ye)(n,t.name,o,o.handles.end,t.options,\"mouse\"))}(e,o)}}},xi=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element;if(0!==(t=(t=(t=ai(a,k.mouseTools())).filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive})).filter(function(e){return\"function\"==typeof e.mouseDragCallback})).length)t[0].mouseDragCallback(e)}},Ti=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element,o=n.currentPoints;S.mousePositionImage=o.image;var i=(t=mi(a,k.mouseTools())).filter(function(e){return\"active\"===e.mode&&e.options.isMouseActive}),r=!1;i.length>0&&(r=i.some(function(e){return e.hasCursor})),t=fi(a,t);for(var s=0;s0&&function(e){var t=e.detail,n=t.element,a=Q(n,Cn.getReferencedToolDataName());if(!a){for(var o=Cn.getNumberOfColors(),i=0;i0){var i=o[0],r=Q(n,i.name),s=r.data.find(function(e){return void 0!==oe(n,e.handles,a,28)});r.data.active=!0,s.active=!0,f.cornerstone.updateImage(n);var l=Object.assign({},{doneMovingCallback:function(){Di(r)}},i.options);return me(e.detail,i.name,r.data,s,l,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var c=t.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a)})});if(c.length>0){var u=c[0],d=Q(n,u.name),h=d.data.find(function(e){return u.pointNearTool(n,e,a)});h.active=!0,f.cornerstone.updateImage(n);var v=Object.assign({},{doneMovingCallback:function(){Di(d)}},u.options);return de(e.detail,u.name,h,null,v,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var g=ai(n,k.touchTools());return g.length>0&&g[0].touchStartActiveCallback?g[0].touchStartActiveCallback(e):Oi(e),!1}},Hi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mi(n,k.touchTools()),i=o.filter(function(e){return\"active\"===e.mode&&e.options.isTouchActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preTouchStartCallback});if(r)if(r.preTouchStartCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"touch\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a,\"touch\"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"touch\")}else{var g=s.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"touch\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"touch\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postTouchStartCallback});if(p)if(p.postTouchStartCallback(e))return}}}},Ri=vi.bind(null,\"DoubleTap\",\"doubleTapCallback\"),Ui=vi.bind(null,\"Touch\",\"touchDragCallback\"),Ni=vi.bind(null,\"Touch\",\"touchEndCallback\"),Bi=vi.bind(null,\"TouchPinch\",\"touchPinchCallback\"),Fi=vi.bind(null,\"Touch\",\"touchPressCallback\"),Vi=vi.bind(null,\"TouchRotate\",\"touchRotateCallback\"),ji=function(e){e.addEventListener(x.TAP,Ai),e.addEventListener(x.TOUCH_START,Hi,{passive:!1}),e.addEventListener(x.TOUCH_DRAG,Ui,{passive:!1}),e.addEventListener(x.TOUCH_END,Ni),e.addEventListener(x.TOUCH_START_ACTIVE,Oi),e.addEventListener(x.TOUCH_PRESS,Fi),e.addEventListener(x.DOUBLE_TAP,Ri),e.addEventListener(x.TOUCH_PINCH,Bi),e.addEventListener(x.TOUCH_ROTATE,Vi),e.addEventListener(x.MULTI_TOUCH_DRAG,_i)},zi=function(e){e.removeEventListener(x.TAP,Ai),e.removeEventListener(x.TOUCH_START,Hi),e.removeEventListener(x.TOUCH_DRAG,Ui),e.removeEventListener(x.TOUCH_END,Ni),e.removeEventListener(x.TOUCH_START_ACTIVE,Oi),e.removeEventListener(x.TOUCH_PRESS,Fi),e.removeEventListener(x.DOUBLE_TAP,Ri),e.removeEventListener(x.TOUCH_PINCH,Bi),e.removeEventListener(x.TOUCH_ROTATE,Vi),e.removeEventListener(x.MULTI_TOUCH_DRAG,_i)},Wi=function(e,t,n){var a=new t(n);O(e,a.name)?console.warn(\"\".concat(a.name,\" has already been added to the target element\")):(a.element=e,_.state.tools.push(a))},Gi=function(e,t){qi(e,t),_.state.enabledElements.forEach(function(n){Wi(n,e,t)})},qi=function(e,t){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var n=new e(t);void 0!==_.state.globalTools[n.name]?console.warn(\"\".concat(n.name,\" has already been added globally\")):_.state.globalTools[n.name]={tool:e,configuration:t,activeBindings:[]}}},Yi=function(e){console.log(\"EVENT:ELEMENT_ENABLED\");var t=e.detail.element;di(t),ki(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.enable(t),Io.enable(t),wi(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.enable(t),ji(t)),Xi(t)},Xi=function(e){_.state.enabledElements.push(e),_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;Object.keys(_.state.globalTools).forEach(function(t){var n=_.state.globalTools[t],a=n.tool,o=n.configuration;Wi(e,a,o)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;var t={active:D,passive:N,enabled:R,disabled:A};_.state.globalToolChangeHistory.forEach(function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)})}(e)};var Ki=function(e){console.info(\"EVENT:ELEMENT_DISABLED\");var t=e.detail.element;hi(t),Pi(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.disable(t),Io.disable(t),Ii(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.disable(t),zi(t)),Zi(t),Ji(t)},Zi=function(e){_.state.tools=_.state.tools.filter(function(t){return t.element!==e})},Ji=function(e){_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)})}(e);var t=_.state.enabledElements.findIndex(function(t){return t===e});t>-1?_.state.enabledElements.splice(t,1):console.warn(\"unable to remove element\")};var Qi,$i=function(){window.removeEventListener(\"resize\",er,!1)};function er(){Qi||(Qi=setTimeout(function(){Qi=null,tr()},66))}var tr=function(){S.enabledElements.forEach(function(e){f.cornerstone.resize(e)})},nr=function(){$i(),window.addEventListener(\"resize\",er,!1)},ar=function(e){var t;!function(){!function(){var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Yi),e.events.removeEventListener(n,Ki)}();var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Yi),e.events.addEventListener(n,Ki)}(),t=_.modules,Object.keys(t).forEach(function(e){\"function\"==typeof t[e].onRegisterCallback&&t[e].onRegisterCallback()}),nr(),_.modules.globalConfiguration.state=Object.assign({},_.modules.globalConfiguration.state,e)};var or,ir=\"stackPrefetch\",rr=\"prefetch\",sr={maxImagesToPrefetch:1/0},lr=10;var cr=function(e){return Math.max.apply(null,e)},ur=function(e){return Math.min.apply(null,e)};function dr(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0],a=Q(e,ir);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort(function(e,t){return e-t}),o.indicesToRequest.slice().forEach(function(e){var t=n.imageIds[e];t&&(f.cornerstone.imageCache.getImageLoadObject(t)&&b(e))}),o.indicesToRequest.length){La.clearRequestStack(rr);for(var i,r,s,l,c,u,d=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=[],l=[],i.forEach(function(e){er&&l.push(e)}),{low:i.indexOf(cr(s)),high:i.indexOf(ur(l))}),h=Rn.getErrorLoadingHandler(),v=d.low,g=d.high;v>=0||gsr.maxImagesToPrefetch,y=o.indicesToRequest[g]-m>sr.maxImagesToPrefetch,x=!p&&v>=0,T=!y&&g-1&&o.indicesToRequest.splice(t,1)}function E(e){b(n.imageIds.indexOf(e.imageId))}function M(t){console.log(\"prefetch errored: \".concat(t)),h&&h(e,c,t,\"stackPrefetch\")}}function hr(e){return function(t){var n,a=t.detail;try{n=Q(e,\"stack\")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=Q(e,ir);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function vr(e){clearTimeout(or),or=setTimeout(function(){var t=e.target;try{dr(t)}catch(e){return}},lr)}var gr={enable:function(e){Q(e,ir).data=[];var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:function(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),J(e,ir,a),dr(e),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr),e.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var i=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),f.cornerstone.events.addEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else console.warn(\"A stack that should not be cached was given the stackPrefetch\")}},disable:function(e){clearTimeout(or),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var t=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=Q(e,ir);n&&n.data.length&&(n.data[0].enabled=!1,La.clearRequestStack(rr))},getConfiguration:function(){return sr},setConfiguration:function(e){var t;sr=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,la=t)}},mr=function(){function e(){o()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return r()(e,[{key:\"render\",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error(\"FusionRenderer: render - Image ID Index is not an integer\");if(!this.findImageFn)throw new Error(\"No findImage function has been defined\");t||(t=Q(e,\"stack\").data);var a=f.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then(function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach(function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then(function(t){a.setLayerImage(e,t,c),a.updateImage(e)}):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))})})}}]),e}(),fr={};fr.FusionRenderer=mr;var pr=fr,yr=\"playClip\";function xr(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Tr(e,t){var n,a;if(void 0===e)throw new Error(\"playClip: element must not be undefined\");var o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i,r=f.cornerstone;if(o.data.length>1){var s=Q(e,\"stackRenderer\");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=Q(e,yr);c&&c.data&&c.data.length?xr(n=c.data[0]):J(e,yr,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,(\"number\"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return xr(n),void function(e){var t={element:e};T(e,x.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rn.getStartLoadHandler(),a=Rn.getEndLoadHandler(),s=Rn.getErrorLoadingHandler(),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then(function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}},function(t){var n=l.imageIds[c];s&&s(e,n,t)}))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout(function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()},0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function br(e){var t=Q(e,yr);t&&t.data&&t.data.length&&xr(t.data[0])}var Er=function(e,t){var n=_.state.tools.findIndex(function(n){return n.element===e&&n.name===t});n>=0&&_.state.tools.splice(n,1)},Mr=function(e){Cr(e),_.state.enabledElements.forEach(function(t){Er(t,e)})},Cr=function(e){_.modules.globalConfiguration.state.globalToolSyncEnabled&&_.state.globalTools[e]&&delete _.state.globalTools[e]},wr=function(e,t,n){var a=O(e,t);a&&a.mergeOptions(n)},Ir=function(e,t){S.enabledElements.forEach(function(e){wr(e,t)})};function Sr(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var kr=[];function Pr(e,t){var n=Z(e);n||(n=K);var a=[\"stack\",\"stackPrefetch\",\"playClip\",\"volume\",\"slab\",\"referenceLines\",\"crosshairs\",\"stackRenderer\"];t&&(a=a.concat(t));var o=Sr(a,n);kr.push(o),te(e,o)}var _r={newStackSpecificToolStateManager:Sr,addStackStateManager:Pr};function Or(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else{if(!(r.z>1e-4&&r.z>r.x&&r.z>r.y))break;n+=i,r.z=0}return n},invertOrientationString:function(e){var t=e.replace(\"H\",\"f\");return t=(t=(t=(t=(t=(t=t.replace(\"F\",\"h\")).replace(\"R\",\"l\")).replace(\"L\",\"r\")).replace(\"A\",\"p\")).replace(\"P\",\"a\")).toUpperCase()}},Ar=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"image/png\",a=e.querySelector(\"canvas\");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement(\"a\");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent(\"MouseEvents\");r.initMouseEvent(\"click\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent(\"onclick\")},Hr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return Object.keys(P).some(function(t){return t===e})}(e)){if(console.warn(\"A module with the name \".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting module \".concat(e))}P[e]=t};var Rr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return void 0!==q[e]}(e)){if(console.warn(\"mixins/\".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting mixins/\".concat(e))}q[e]=t,co[\"mixins/\".concat(e)]=q[e]};var Ur=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t){return void 0!==co[\"\".concat(e,\"/\").concat(t)]}(e,t)){if(console.warn(\"\".concat(e,\"/\").concat(t,\" is already registered\")),!a)return;console.warn(\"Overwriting \".concat(e,\"/\").concat(t))}co[\"\".concat(e,\"/\").concat(t)]=n};var Nr=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t,n){if(!e)return console.warn(\"The type must be given in order to register.\"),!1;if(!t)return console.warn(\"The \".concat(e,\" must have a name in order to register.\")),!1;if(\"object\"!==y()(n)&&\"function\"!=typeof n)return console.warn(\"The \".concat(n,\" is a \").concat(y()(n),\", it should be an Object or a function.\")),!1;return!0}(e,t,n))switch(e){case\"module\":Hr(t,n,a);break;case\"mixin\":Rr(t,n,a);break;default:Ur(e,t,n,a),console.warn(\"unrecognised type \".concat(e,\", not registering \").concat(t))}};var Br=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=0;n=0;--i){var r=this.tryEntries[i],s=r.completion;if(\"root\"===r.tryLoc)return a(\"end\");if(r.tryLoc<=this.prev){var l=o.call(r,\"catchLoc\"),c=o.call(r,\"finallyLoc\");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,\"finallyLoc\")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if(\"throw\"===a.type){var o=a.arg;P(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:O(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=n),m}}}function T(e,t,n,a){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),r=new _(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error(\"Generator is already running\");if(a===g){if(\"throw\"===o)throw i;return D()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===m)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);a=v;var l=b(e,t,n);if(\"normal\"===l.type){if(a=n.done?g:h,l.arg===m)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(a=g,n.method=\"throw\",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}function E(){}function M(){}function C(){}function w(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise(function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if(\"throw\"!==s.type){var l=s.arg,c=l.value;return c&&\"object\"==typeof c&&o.call(c,\"__await\")?Promise.resolve(c.__await).then(function(e){t(\"next\",e,i,r)},function(e){t(\"throw\",e,i,r)}):Promise.resolve(c).then(function(e){l.value=e,i(l)},function(e){return t(\"throw\",e,i,r)})}r(s.arg)}(n,a,t,i)})}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=n,S(e,t),\"throw\"===t.method))return m;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return m}var o=b(a,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,m;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,m):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,m)}function k(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 P(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function O(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(11),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t\\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","import dicomParser from 'dicom-parser';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';\nimport cornerstoneMath from 'cornerstone-math';\nimport cornerstoneTools from 'cornerstone-tools';\nimport Hammer from 'hammerjs';\nimport OHIF from 'ohif-core';\n//import sha from './sha.js';\n//import version from './version.js';\nimport { homepage } from '../package.json';\n\nwindow.info = {\n //sha,\n //version,\n homepage\n};\n\n// For debugging\nwindow.cornerstone = cornerstone;\nwindow.cornerstoneTools = cornerstoneTools;\nwindow.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\ncornerstoneTools.external.cornerstone = cornerstone;\ncornerstoneTools.external.Hammer = Hammer;\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\ncornerstoneTools.init();\n\ncornerstoneWADOImageLoader.external.cornerstone = cornerstone;\ncornerstoneWADOImageLoader.external.dicomParser = dicomParser;\n\nOHIF.external.cornerstone = cornerstone;\nOHIF.external.cornerstoneTools = cornerstoneTools;\nOHIF.external.cornerstoneMath = cornerstoneMath;\nOHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\n// TODO: Is there a better way to guess ROOT_URL?\nlet ROOT_URL = window.location.pathname;\n\n// If the page we are on is not a subset of the expected homepage\n// provided in the package.json file, we might be doing local development.\n// In this case, set the base URL to the current location's origin.\nif (homepage.includes(window.location.origin) === false) {\n ROOT_URL = window.location.origin;\n}\n\nconst config = {\n maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),\n startWebWorkersOnDemand: true,\n webWorkerPath: ROOT_URL + '/cornerstoneWADOImageLoaderWebWorker.min.js',\n taskConfiguration: {\n decodeTask: {\n loadCodecsOnStartup: true,\n initializeCodecsOnStartup: false,\n codecsPath: ROOT_URL + '/cornerstoneWADOImageLoaderCodecs.min.js',\n usePDFJS: false,\n strict: false\n }\n }\n};\n\ncornerstoneWADOImageLoader.webWorkerManager.initialize(config);\n\n\nOHIF.user.getAccessToken = () => {\n // TODO: Get the Redux store from somewhere else\n const state = window.store.getState();\n if (!state.oidc || !state.oidc.user) {\n return;\n }\n\n return state.oidc.user.access_token;\n}\n\ncornerstoneWADOImageLoader.configure({\n beforeSend: function(xhr) {\n const headers = OHIF.DICOMWeb.getAuthorizationHeader();\n\n if (headers.Authorization) {\n xhr.setRequestHeader(\"Authorization\", headers.Authorization);\n }\n }\n});\n\n// Set the tool font and font size\n// context.font = \"[style] [variant] [weight] [size]/[line height] [font family]\";\nconst fontFamily =\n 'Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif';\ncornerstoneTools.textStyle.setFont(`16px ${fontFamily}`);\n\n// Set the tool width\ncornerstoneTools.toolStyle.setToolWidth(2);\n// Set color for inactive tools\ncornerstoneTools.toolColors.setToolColor('rgb(255, 255, 0)');\n\n// Set color for active tools\ncornerstoneTools.toolColors.setActiveColor('rgb(0, 255, 0)');\n\ncornerstoneTools.store.state.touchProximity = 40;\n","const defaultState = {\n leftSidebarOpen: true,\n rightSidebarOpen: false,\n}\n\nconst ui = (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LEFT_SIDEBAR_OPEN':\n return Object.assign({}, state, { leftSidebarOpen: action.state });\n case 'SET_RIGHT_SIDEBAR_OPEN':\n return Object.assign({}, state, { rightSidebarOpen: action.state });\n default:\n return state;\n }\n};\n\nexport default ui;\n","import React, { PureComponent, Component } from 'react';\nimport reactDom from 'react-dom';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".CineDialog {\\n background: var(--ui-gray-darkest);\\n color: var(--text-secondary-color);\\n filter: drop-shadow(0 0 3px var(--ui-gray-darkest));\\n border: none;\\n border-radius: 8px;\\n width: inherit;\\n}\\n.CineDialog h5 {\\n font-size: 20px;\\n line-height: 35px;\\n margin: 0;\\n}\\n.CineDialog h5,\\n.CineDialog label {\\n font-weight: 400;\\n}\\n.CineDialog .cine-navigation,\\n.CineDialog .cine-controls,\\n.CineDialog .cine-options {\\n cursor: default;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"] {\\n background-color: transparent;\\n border: 0 none;\\n outline: 0 none;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"]::-ms-tooltip {\\n display: none;\\n}\\n.CineDialog .double-row-style {\\n box-sizing: border-box;\\n width: 290px;\\n height: 80px;\\n padding: 10px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .double-row-style .cine-navigation {\\n position: absolute;\\n right: 16px;\\n top: 10px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn {\\n padding: 0 4px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 32px;\\n}\\n.CineDialog .double-row-style .cine-controls {\\n left: 0px;\\n}\\n.CineDialog .double-row-style .cine-options {\\n padding: 0px 0;\\n}\\n.CineDialog .double-row-style .cine-options .fps-section {\\n width: 175px;\\n float: left;\\n}\\n.CineDialog .double-row-style .cine-options .fps {\\n float: right;\\n margin: 5px 20px 0 0;\\n}\\n.CineDialog .single-row-style {\\n box-sizing: content-box;\\n width: 425px;\\n height: 45px;\\n padding: 4px 8px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .single-row-style .cine-navigation {\\n float: right;\\n overflow: hidden;\\n padding-right: 12px;\\n position: relative;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn {\\n padding: 0 2px;\\n margin: 0 0 0 2px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn:first-of-type {\\n margin-left: 0;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 45px;\\n}\\n.CineDialog .single-row-style .cine-controls {\\n position: relative;\\n float: left;\\n overflow: hidden;\\n}\\n.CineDialog .single-row-style .cine-controls .btn {\\n font-size: 22px;\\n line-height: 45px;\\n min-width: 28px;\\n padding: 0 0px;\\n margin: 0 4px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-options {\\n display: block;\\n position: relative;\\n width: 150px;\\n float: left;\\n overflow: hidden;\\n padding: 0;\\n margin: 0 0 0 10px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section {\\n display: block;\\n float: left;\\n width: 80px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section input[type=\\\"range\\\"] {\\n line-height: 45px;\\n height: 45px;\\n}\\n.CineDialog .single-row-style .cine-options .fps {\\n display: block;\\n width: 68px;\\n float: left;\\n padding: 0;\\n margin: 0 0 0 2px;\\n text-align: center;\\n line-height: 45px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n}\\n.CineDialog .btn {\\n color: var(--text-secondary-color);\\n background-color: transparent;\\n border: 0;\\n border-radius: 4px;\\n font-size: 15px;\\n font-weight: normal;\\n height: 37px;\\n line-height: 37px;\\n padding: 0 12px;\\n}\\n.CineDialog .btn:hover,\\n.CineDialog .btn:active,\\n.CineDialog .btn.active {\\n color: var(--hover-color);\\n}\\n.CineDialog .btn[disabled]:hover {\\n color: inherit;\\n}\\n.CineDialog .btn[disabled]:active {\\n color: var(--text-secondary-color);\\n}\\n.CineDialog .btn.btn-primary,\\n.CineDialog .btn.btn-secondary,\\n.CineDialog .btn.btn-danger {\\n transition: background-color 0.3s ease;\\n}\\n.CineDialog .btn.btn-primary:hover,\\n.CineDialog .btn.btn-secondary:hover,\\n.CineDialog .btn.btn-danger:hover,\\n.CineDialog .btn.btn-primary:active,\\n.CineDialog .btn.btn-secondary:active,\\n.CineDialog .btn.btn-danger:active,\\n.CineDialog .btn.btn-primary:focus,\\n.CineDialog .btn.btn-secondary:focus,\\n.CineDialog .btn.btn-danger:focus {\\n opacity: 0.8;\\n}\\n.CineDialog .btn.btn-primary {\\n background-color: var(--active-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-secondary {\\n background-color: var(--text-secondary-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-danger {\\n background-color: var(--text-destructive-color);\\n color: var(--text-primary-color);\\n}\\n.CineDialog .btn.active {\\n box-shadow: inset 1px 1px 2px var(--ui-gray-darkest);\\n}\\n\";\nstyleInject(css);\n\nvar CineDialog =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CineDialog, _PureComponent);\n\n function CineDialog(props) {\n var _this;\n\n _classCallCheck(this, CineDialog);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CineDialog).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var target = event.target;\n var value = target.value;\n\n if (target.type === 'range') {\n value = parseFloat(target.value);\n }\n\n var name = target.name;\n\n _this.setState(_defineProperty({}, name, value));\n\n if (name === 'cineFrameRate' && _this.props.onFrameRateChanged) {\n _this.props.onFrameRateChanged(parseFloat(value));\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickPlayPause\", function () {\n var value = !_this.state.isPlaying;\n\n _this.setState({\n isPlaying: value\n });\n\n if (_this.props.onPlayPauseChanged) {\n _this.props.onPlayPauseChanged(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickNextButton\", function (event) {\n if (_this.props.onClickNextButton) {\n _this.props.onClickNextButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickBackButton\", function (event) {\n if (_this.props.onClickBackButton) {\n _this.props.onClickBackButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToStart\", function (event) {\n if (_this.props.onClickSkipToStart) {\n _this.props.onClickSkipToStart(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToEnd\", function (event) {\n if (_this.props.onClickSkipToEnd) {\n _this.props.onClickSkipToEnd(event);\n }\n });\n\n _this.state = {\n cineFrameRate: props.cineFrameRate,\n isPlaying: props.isPlaying\n };\n return _this;\n }\n\n _createClass(CineDialog, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // TODO: Not sure if we should just switch this to a stateless\n // fully-controlled component instead\n if (this.props.isPlaying !== prevProps.isPlaying || this.props.isPlaying !== this.state.isPlaying) {\n this.setState({\n isPlaying: this.props.isPlaying\n });\n }\n\n if (this.props.cineFrameRate !== prevProps.cineFrameRate || this.props.cineFrameRate !== this.state.cineFrameRate) {\n this.setState({\n cineFrameRate: this.props.cineFrameRate\n });\n }\n }\n }, {\n key: \"render\",\n // TODO:\n // - Add next / previous display set buttons which just call\n // onClickNextDisplaySet and onClickPreviousDisplaySet which are passed in as props.\n // See https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.html#L38\n // - Add 'isEnabled' prop: https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.js#L301\n value: function render() {\n return React.createElement(\"div\", {\n className: \"CineDialog\"\n }, React.createElement(\"div\", {\n className: \"noselect double-row-style\"\n }, React.createElement(\"div\", {\n className: \"cine-controls\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"cineFirstButton\",\n title: \"Skip to first image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToStart\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-backward\"\n })), React.createElement(\"button\", {\n id: \"cineBackButton\",\n title: \"Previous image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickBackButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-backward\"\n })), React.createElement(\"button\", {\n id: \"cinePlayButton\",\n title: \"Play / Stop\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickPlayPause\n }, React.createElement(\"i\", {\n className: this.state.isPlaying ? 'fa fa-lg fa-stop' : 'fa fa-lg fa-play'\n })), React.createElement(\"button\", {\n id: \"cineNextButton\",\n title: \"Next image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickNextButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-forward\"\n })), React.createElement(\"button\", {\n id: \"cineLastButton\",\n title: \"Skip to last image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToEnd\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-forward\"\n })))), React.createElement(\"div\", {\n className: \"cine-options\"\n }, React.createElement(\"div\", {\n className: \"fps-section\"\n }, React.createElement(\"input\", {\n type: \"range\",\n name: \"cineFrameRate\",\n id: \"cineSlider\",\n min: this.props.cineMinFrameRate,\n max: this.props.cineMaxFrameRate,\n step: this.props.cineStepFrameRate,\n value: this.state.cineFrameRate,\n onChange: this.handleInputChange\n })), React.createElement(\"span\", {\n className: \"fps\"\n }, this.state.cineFrameRate.toFixed(1), \" fps\"))));\n }\n }]);\n\n return CineDialog;\n}(PureComponent);\n\n_defineProperty(CineDialog, \"propTypes\", {\n cineMinFrameRate: propTypes.number.isRequired,\n cineMaxFrameRate: propTypes.number.isRequired,\n cineStepFrameRate: propTypes.number.isRequired,\n cineFrameRate: propTypes.number.isRequired,\n isPlaying: propTypes.bool.isRequired,\n onPlayPauseChanged: propTypes.func,\n onFrameRateChanged: propTypes.func,\n onClickNextButton: propTypes.func,\n onClickBackButton: propTypes.func,\n onClickSkipToStart: propTypes.func,\n onClickSkipToEnd: propTypes.func\n});\n\n_defineProperty(CineDialog, \"defaultProps\", {\n cineMinFrameRate: 1,\n cineMaxFrameRate: 90,\n cineStepFrameRate: 1,\n cineFrameRate: 24,\n isPlaying: false\n});\n\nvar interfaces = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n});\n\nunwrapExports(interfaces);\nvar interfaces_1 = interfaces.HandlerRole;\n\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n}\n\n/* global window */\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread$1({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n createStore: createStore,\n combineReducers: combineReducers,\n bindActionCreators: bindActionCreators,\n applyMiddleware: applyMiddleware,\n compose: compose,\n __DO_NOT_USE__ActionTypes: ActionTypes\n});\n\nvar types = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n});\n\nunwrapExports(types);\nvar types_1 = types.INIT_COORDS;\nvar types_2 = types.BEGIN_DRAG;\nvar types_3 = types.PUBLISH_DRAG_SOURCE;\nvar types_4 = types.HOVER;\nvar types_5 = types.DROP;\nvar types_6 = types.END_DRAG;\n\nvar setClientOffset_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n});\n\nunwrapExports(setClientOffset_1);\nvar setClientOffset_2 = setClientOffset_1.setClientOffset;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\nvar beginDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar ResetCoordinatesAction = {\n type: types.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1(isObject_1(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n});\n\nunwrapExports(beginDrag);\n\nvar publishDragSource = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n});\n\nunwrapExports(publishDragSource);\n\nvar matchesType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n});\n\nunwrapExports(matchesType_1);\n\nvar hover = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n});\n\nunwrapExports(hover);\n\nvar drop = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target.drop(monitor, targetId);\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1(typeof dropResult === 'undefined' || isObject_1(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n});\n\nunwrapExports(drop);\n\nvar endDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n});\n\nunwrapExports(endDrag);\n\nvar dragDrop = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n__export(types);\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag.default(manager),\n publishDragSource: publishDragSource.default(manager),\n hover: hover.default(manager),\n drop: drop.default(manager),\n endDrag: endDrag.default(manager),\n };\n}\nexports.default = createDragDropActions;\n});\n\nunwrapExports(dragDrop);\n\nvar equality = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n});\n\nunwrapExports(equality);\nvar equality_1 = equality.strictEquality;\nvar equality_2 = equality.areCoordsEqual;\nvar equality_3 = equality.areArraysEqual;\n\nvar dragOffset_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.INIT_COORDS:\n case dragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop.HOVER:\n if (equality.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n});\n\nunwrapExports(dragOffset_1);\n\nvar registry = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n});\n\nunwrapExports(registry);\nvar registry_1 = registry.ADD_SOURCE;\nvar registry_2 = registry.ADD_TARGET;\nvar registry_3 = registry.REMOVE_SOURCE;\nvar registry_4 = registry.REMOVE_TARGET;\nvar registry_5 = registry.addSource;\nvar registry_6 = registry.addTarget;\nvar registry_7 = registry.removeSource;\nvar registry_8 = registry.removeTarget;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$1 = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$1;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$1.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = _getNative(_root, 'Map');\n\nvar _Map = Map$1;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\nvar _setCacheAdd = setCacheAdd;\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nvar _setCacheHas = setCacheHas;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\n\nvar _SetCache = SetCache;\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nvar _baseFindIndex = baseFindIndex;\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nvar _baseIsNaN = baseIsNaN;\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nvar _strictIndexOf = strictIndexOf;\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? _strictIndexOf(array, value, fromIndex)\n : _baseFindIndex(array, _baseIsNaN, fromIndex);\n}\n\nvar _baseIndexOf = baseIndexOf;\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && _baseIndexOf(array, value, 0) > -1;\n}\n\nvar _arrayIncludes = arrayIncludes;\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nvar _arrayIncludesWith = arrayIncludesWith;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nvar _arrayMap = arrayMap;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nvar _cacheHas = cacheHas;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = _arrayMap(values, _baseUnary(iteratee));\n }\n if (comparator) {\n includes = _arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = _cacheHas;\n isCommon = false;\n values = new _SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseDifference = baseDifference;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$2 = defineProperty;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$2 ? identity_1 : function(func, string) {\n return _defineProperty$2(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = _baseRest(function(array, values) {\n return isArrayLikeObject_1(array)\n ? _baseDifference(array, values)\n : [];\n});\n\nvar without_1 = without;\n\nvar dragOperation_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: without_1(state.targetIds, payload.targetId) });\n case dragDrop.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n});\n\nunwrapExports(dragOperation_1);\n\nvar refCount_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n return state + 1;\n case registry.REMOVE_SOURCE:\n case registry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n});\n\nunwrapExports(refCount_1);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? _arrayIncludesWith : _arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = _arrayMap(array, _baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new _SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? _cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? _cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseIntersection = baseIntersection;\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject_1(value) ? value : [];\n}\n\nvar _castArrayLikeObject = castArrayLikeObject;\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = _baseRest(function(arrays) {\n var mapped = _arrayMap(arrays, _castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? _baseIntersection(mapped)\n : [];\n});\n\nvar intersection_1 = intersection;\n\nvar dirtiness = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.NONE = [];\nexports.ALL = [];\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n return intersection_1(handlerIds, dirtyIds).length > 0;\n}\nexports.areDirty = areDirty;\n});\n\nunwrapExports(dirtiness);\nvar dirtiness_1 = dirtiness.NONE;\nvar dirtiness_2 = dirtiness.ALL;\nvar dirtiness_3 = dirtiness.areDirty;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nvar _arrayFilter = arrayFilter;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nvar _arrayPush = arrayPush;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nvar _isFlattenable = isFlattenable;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nvar _baseFlatten = baseFlatten;\n\n/* Built-in method references that are verified to be native. */\nvar Set = _getNative(_root, 'Set');\n\nvar _Set = Set;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nvar noop_1 = noop;\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nvar _setToArray = setToArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY) ? noop_1 : function(values) {\n return new _Set(values);\n};\n\nvar _createSet = createSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE$1 = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE$1) {\n var set = iteratee ? null : _createSet(array);\n if (set) {\n return _setToArray(set);\n }\n isCommon = false;\n includes = _cacheHas;\n seen = new _SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseUniq = baseUniq;\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? _baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = _baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return _baseUniq(_baseFlatten(result, 1), iteratee, comparator);\n}\n\nvar _baseXor = baseXor;\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = _baseRest(function(arrays) {\n return _baseXor(_arrayFilter(arrays, isArrayLikeObject_1));\n});\n\nvar xor_1 = xor;\n\nvar dirtyHandlerIds_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness.NONE; }\n switch (action.type) {\n case dragDrop.HOVER:\n break;\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n case registry.REMOVE_TARGET:\n case registry.REMOVE_SOURCE:\n return dirtiness.NONE;\n case dragDrop.BEGIN_DRAG:\n case dragDrop.PUBLISH_DRAG_SOURCE:\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n default:\n return dirtiness.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = xor_1(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n});\n\nunwrapExports(dirtyHandlerIds_1);\n\nvar stateId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n});\n\nunwrapExports(stateId_1);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol;\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nvar _isKey = isKey;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache;\n\nvar memoize_1 = memoize;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nvar _memoizeCapped = memoizeCapped;\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nvar _stringToPath = stringToPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n}\n\nvar _baseToString = baseToString;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : _baseToString(value);\n}\n\nvar toString_1 = toString;\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\n\nvar _castPath = castPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;\n}\n\nvar _toKey = toKey;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nvar _baseGet = baseGet;\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar get_1 = get;\n\nvar reducers = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: get_1(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n});\n\nunwrapExports(reducers);\n\nvar coords = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n});\n\nunwrapExports(coords);\nvar coords_1 = coords.add;\nvar coords_2 = coords.subtract;\nvar coords_3 = coords.getSourceClientOffset;\nvar coords_4 = coords.getDifferenceFromInitialOffset;\n\nvar DragDropMonitorImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n invariant_1(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n var source = this.registry.getSource(sourceId);\n invariant_1(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n var target = this.registry.getTarget(targetId);\n invariant_1(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n var source = this.registry.getSource(sourceId, true);\n invariant_1(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n});\n\nunwrapExports(DragDropMonitorImpl_1);\n\nvar getNextUniqueId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n});\n\nunwrapExports(getNextUniqueId_1);\n\nvar contracts = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction validateSourceContract(source) {\n invariant_1(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n});\n\nunwrapExports(contracts);\nvar contracts_1 = contracts.validateSourceContract;\nvar contracts_2 = contracts.validateTargetContract;\nvar contracts_3 = contracts.validateType;\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/*\n\n\n

License

\n\nUnless stated otherwise all works are:\n\n
\n\nand licensed under:\n\n\n\n

MIT License

\n\n
\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n\n\n*/\ninherits$1(Domain, EventEmitter);\nfunction createEmitError(d) {\n return emitError;\n function emitError(e) {\n d.emit('error', e);\n }\n}\n\nfunction Domain() {\n EventEmitter.call(this);\n this.__emitError = createEmitError(this);\n}\nDomain.prototype.add = function (emitter) {\n emitter.on('error', this.__emitError);\n};\nDomain.prototype.remove = function(emitter) {\n emitter.removeListener('error', this.__emitError);\n};\nDomain.prototype.bind = function(fn) {\n var emitError = this.__emitError;\n return function() {\n var args = Array.prototype.slice.call(arguments);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n};\nDomain.prototype.intercept = function(fn) {\n var emitError = this.__emitError;\n return function(err) {\n if (err) {\n emitError(err);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n }\n};\nDomain.prototype.run = function(fn) {\n var emitError = this.__emitError;\n try {\n fn();\n } catch (err) {\n emitError(err);\n }\n return this\n};\nDomain.prototype.dispose = function() {\n this.removeAllListeners();\n return this\n};\nDomain.prototype.enter = Domain.prototype.exit = function() {\n return this\n};\nfunction createDomain() {\n return new Domain();\n}\nvar create = createDomain;\n\nvar require$$0 = {\n Domain: Domain,\n createDomain: createDomain,\n create: create\n};\n\nvar domain$1; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nvar raw = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index$2 = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index$2 < queue.length) {\n var currentIndex = index$2;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index$2 = index$2 + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index$2 > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index$2; scan < newLength; scan++) {\n queue[scan] = queue[scan + index$2];\n }\n queue.length -= index$2;\n index$2 = 0;\n }\n }\n queue.length = 0;\n index$2 = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain$1) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain$1 = require$$0;\n }\n domain$1.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain$1.active = process.domain = parentDomain;\n }\n}\n\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nvar asap_1 = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n raw(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n raw.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\nvar HandlerRegistryImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces.HandlerRole.SOURCE;\n case 'T':\n return interfaces.HandlerRole.TARGET;\n default:\n invariant_1(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts.validateType(type);\n contracts.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts.validateType(type, true);\n contracts.validateTargetContract(target);\n var targetId = this.addHandler(interfaces.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry.removeSource(sourceId));\n asap_1(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n});\n\nunwrapExports(HandlerRegistryImpl_1);\n\nvar DragDropManagerImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux.createStore(reducers.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(createBackend, context, debugMode) {\n if (context === void 0) { context = {}; }\n if (debugMode === void 0) { debugMode = false; }\n var _this = this;\n this.context = context;\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n this.backend = createBackend(this);\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.getContext = function () {\n return this.context;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n});\n\nunwrapExports(DragDropManagerImpl_1);\n\nvar factories = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createDragDropManager(backend, context, debugMode) {\n return new DragDropManagerImpl_1.default(backend, context, debugMode);\n}\nexports.createDragDropManager = createDragDropManager;\n});\n\nunwrapExports(factories);\nvar factories_1 = factories.createDragDropManager;\n\nvar lib = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(interfaces);\n__export(factories);\n});\n\nunwrapExports(lib);\n\nvar checkDecoratorArguments_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction checkDecoratorArguments(functionName, signature) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (process.env.NODE_ENV !== 'production') {\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg && arg.prototype && arg.prototype.render) {\n // tslint:disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' +\n (\"It should be \" + functionName + \"(\" + signature + \")(Component), not the other way around. \") +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}\nexports.default = checkDecoratorArguments;\n});\n\nunwrapExports(checkDecoratorArguments_1);\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty$1 = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar isClassComponent_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar _default = isClassComponent;\nexports.default = _default;\n});\n\nunwrapExports(isClassComponent_1);\n\nvar DragDropContext_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n/**\n * Create the React Context\n */\nexports.Consumer = (_a = React.createContext({ dragDropManager: undefined }), _a.Consumer), exports.Provider = _a.Provider;\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createChildContext(backend, context, debugMode) {\n return {\n dragDropManager: lib.createDragDropManager(backend, context, debugMode),\n };\n}\nexports.createChildContext = createChildContext;\n/**\n * A React component that provides the React-DnD context\n */\nexports.DragDropContextProvider = function (_a) {\n var backend = _a.backend, context = _a.context, debugMode = _a.debugMode, children = _a.children;\n var contextValue = createChildContext(backend, context, debugMode);\n return React.createElement(exports.Provider, { value: contextValue }, children);\n};\n/**\n * Wrap the root component of your application with DragDropContext decorator to set up React DnD.\n * This lets you specify the backend, and sets up the shared DnD state behind the scenes.\n * @param backendFactory The DnD backend factory\n * @param backendContext The backend context\n */\nfunction DragDropContext(backendFactory, backendContext, debugMode) {\n checkDecoratorArguments_1.default('DragDropContext', 'backend', backendFactory);\n var childContext = createChildContext(backendFactory, backendContext, debugMode);\n return function decorateContext(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragDropContextContainer = /** @class */ (function (_super) {\n __extends(DragDropContextContainer, _super);\n function DragDropContextContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = React.createRef();\n _this.getManager = function () { return childContext.dragDropManager; };\n return _this;\n }\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragDropContextContainer.prototype.render = function () {\n return (React.createElement(exports.Provider, { value: childContext },\n React.createElement(Decorated, __assign({}, this.props, { ref: isClassComponent(Decorated) ? this.ref : undefined }))));\n };\n DragDropContextContainer.DecoratedComponent = DecoratedComponent;\n DragDropContextContainer.displayName = \"DragDropContext(\" + displayName + \")\";\n return DragDropContextContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContextContainer, DecoratedComponent);\n };\n}\nexports.DragDropContext = DragDropContext;\n});\n\nunwrapExports(DragDropContext_1);\nvar DragDropContext_2 = DragDropContext_1.Consumer;\nvar DragDropContext_3 = DragDropContext_1.Provider;\nvar DragDropContext_4 = DragDropContext_1.createChildContext;\nvar DragDropContext_5 = DragDropContext_1.DragDropContextProvider;\nvar DragDropContext_6 = DragDropContext_1.DragDropContext;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$6 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject$1(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$6.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject$1;\n\n//\n\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar DragLayer_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\nfunction DragLayer(collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragLayer', 'collect[, options]', collect, options);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' +\n 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _a = options.arePropsEqual, arePropsEqual = _a === void 0 ? shallowequal : _a;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragLayerContainer = /** @class */ (function (_super) {\n __extends(DragLayerContainer, _super);\n function DragLayerContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n return _this;\n }\n DragLayerContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragLayerContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragLayerContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.handleChange();\n };\n DragLayerContainer.prototype.componentWillUnmount = function () {\n this.isCurrentlyMounted = false;\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n };\n DragLayerContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: isClassComponent(Decorated) ? _this.ref : undefined })));\n }));\n };\n DragLayerContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n };\n DragLayerContainer.prototype.getCurrentState = function () {\n if (!this.manager) {\n return {};\n }\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n };\n DragLayerContainer.displayName = \"DragLayer(\" + displayName + \")\";\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragLayerContainer, DecoratedComponent);\n };\n}\nexports.default = DragLayer;\n});\n\nunwrapExports(DragLayer_1);\n\nvar Disposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable(action) {\n this.isDisposed = false;\n this.action = isFunction_1(action) ? action : noop_1;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n Disposable.isDisposable = function (d) {\n return d && isFunction_1(d.dispose);\n };\n Disposable._fixup = function (result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n };\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n Disposable.create = function (action) {\n return new Disposable(action);\n };\n /** Performs the task of cleaning up resources. */\n Disposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n };\n /**\n * Gets the disposable that does nothing when disposed.\n */\n Disposable.empty = { dispose: noop_1 };\n return Disposable;\n}());\nexports.Disposable = Disposable;\n});\n\nunwrapExports(Disposable_1);\nvar Disposable_2 = Disposable_1.Disposable;\n\nvar SerialDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\nvar SerialDisposable = /** @class */ (function () {\n function SerialDisposable() {\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n SerialDisposable.prototype.getDisposable = function () {\n return this.current;\n };\n SerialDisposable.prototype.setDisposable = function (value) {\n var shouldDispose = this.isDisposed;\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n if (old) {\n old.dispose();\n }\n }\n if (shouldDispose && value) {\n value.dispose();\n }\n };\n /** Performs the task of cleaning up resources. */\n SerialDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n if (old) {\n old.dispose();\n }\n }\n };\n return SerialDisposable;\n}());\nexports.SerialDisposable = SerialDisposable;\n});\n\nunwrapExports(SerialDisposable_1);\nvar SerialDisposable_2 = SerialDisposable_1.SerialDisposable;\n\nvar CompositeDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\nvar CompositeDisposable = /** @class */ (function () {\n function CompositeDisposable() {\n var disposables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n disposables[_i] = arguments[_i];\n }\n this.isDisposed = false;\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n CompositeDisposable.prototype.add = function (item) {\n if (this.isDisposed) {\n item.dispose();\n }\n else {\n this.disposables.push(item);\n }\n };\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n CompositeDisposable.prototype.remove = function (item) {\n var shouldDispose = false;\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n return shouldDispose;\n };\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n CompositeDisposable.prototype.clear = function () {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n CompositeDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n return CompositeDisposable;\n}());\nexports.CompositeDisposable = CompositeDisposable;\n});\n\nunwrapExports(CompositeDisposable_1);\nvar CompositeDisposable_2 = CompositeDisposable_1.CompositeDisposable;\n\nvar disposables = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(Disposable_1);\n__export(SerialDisposable_1);\n__export(CompositeDisposable_1);\n});\n\nunwrapExports(disposables);\n\nvar decorateHandler_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n\n\n\n\nfunction decorateHandler(_a) {\n var DecoratedComponent = _a.DecoratedComponent, createHandler = _a.createHandler, createMonitor = _a.createMonitor, createConnector = _a.createConnector, registerHandler = _a.registerHandler, containerDisplayName = _a.containerDisplayName, getType = _a.getType, collect = _a.collect, options = _a.options;\n var _b = options.arePropsEqual, arePropsEqual = _b === void 0 ? shallowequal : _b;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n var DragDropContainer = /** @class */ (function (_super) {\n __extends(DragDropContainer, _super);\n function DragDropContainer(props) {\n var _this = _super.call(this, props) || this;\n _this.isCurrentlyMounted = false;\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n _this.disposable = new disposables.SerialDisposable();\n _this.receiveProps(props);\n _this.dispose();\n return _this;\n }\n DragDropContainer.prototype.getHandlerId = function () {\n return this.handlerId;\n };\n DragDropContainer.prototype.getDecoratedComponentInstance = function () {\n if (!this.handler) {\n return null;\n }\n return this.handler.ref.current;\n };\n DragDropContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragDropContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.disposable = new disposables.SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n };\n DragDropContainer.prototype.componentDidUpdate = function (prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n };\n DragDropContainer.prototype.componentWillUnmount = function () {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n DragDropContainer.prototype.receiveProps = function (props) {\n if (!this.handler) {\n return;\n }\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n DragDropContainer.prototype.receiveType = function (type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n if (type === this.currentType) {\n return;\n }\n this.currentType = type;\n var _a = registerHandler(type, this.handler, this.manager), handlerId = _a.handlerId, unregister = _a.unregister;\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n this.disposable.setDisposable(new disposables.CompositeDisposable(new disposables.Disposable(unsubscribe), new disposables.Disposable(unregister)));\n };\n DragDropContainer.prototype.dispose = function () {\n this.disposable.dispose();\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n };\n DragDropContainer.prototype.getCurrentState = function () {\n if (!this.handlerConnector) {\n return {};\n }\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(nextState), 'Expected `collect` specified as the second argument to ' +\n '%s for %s to return a plain object of props to inject. ' +\n 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n return nextState;\n };\n DragDropContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: _this.handler && isClassComponent(Decorated)\n ? _this.handler.ref\n : undefined })));\n }));\n };\n DragDropContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n };\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = containerDisplayName + \"(\" + displayName + \")\";\n return DragDropContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContainer, DecoratedComponent);\n}\nexports.default = decorateHandler;\n});\n\nunwrapExports(decorateHandler_1);\n\nvar registerSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n return {\n handlerId: sourceId,\n unregister: unregisterSource,\n };\n}\nexports.default = registerSource;\n});\n\nunwrapExports(registerSource_1);\n\nvar createSourceFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n var SourceImpl = /** @class */ (function () {\n function SourceImpl(monitor) {\n var _this = this;\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n var item = spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(item), 'beginDrag() must return a plain object that represents the dragged item. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n }\n SourceImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n SourceImpl.prototype.canDrag = function () {\n if (!this.props) {\n return false;\n }\n if (!spec.canDrag) {\n return true;\n }\n return spec.canDrag(this.props, this.monitor);\n };\n SourceImpl.prototype.isDragging = function (globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n return spec.isDragging(this.props, this.monitor);\n };\n SourceImpl.prototype.endDrag = function () {\n if (!this.props) {\n return;\n }\n if (!spec.endDrag) {\n return;\n }\n spec.endDrag(this.props, this.monitor, this.ref.current);\n };\n return SourceImpl;\n }());\n return function createSource(monitor) {\n return new SourceImpl(monitor);\n };\n}\nexports.default = createSourceFactory;\n});\n\nunwrapExports(createSourceFactory_1);\n\nvar createSourceMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar SourceMonitor = /** @class */ (function () {\n function SourceMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n SourceMonitor.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n SourceMonitor.prototype.canDrag = function () {\n invariant_1(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n SourceMonitor.prototype.isDragging = function () {\n invariant_1(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n SourceMonitor.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n SourceMonitor.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n SourceMonitor.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n SourceMonitor.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n SourceMonitor.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n SourceMonitor.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n SourceMonitor.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n SourceMonitor.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n SourceMonitor.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n SourceMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n SourceMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n SourceMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n SourceMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n SourceMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n SourceMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n SourceMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n SourceMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return SourceMonitor;\n}());\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\nexports.default = createSourceMonitor;\n});\n\nunwrapExports(createSourceMonitor_1);\n\nvar cloneWithRef_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return React.cloneElement(element, {\n ref: newRef,\n });\n }\n return React.cloneElement(element, {\n ref: function (node) {\n newRef(node);\n if (previousRef) {\n previousRef(node);\n }\n },\n });\n}\nexports.default = cloneWithRef;\n});\n\nunwrapExports(cloneWithRef_1);\n\nvar wrapConnectorHooks_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a
, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!React.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return undefined;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.default(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook; };\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n});\n\nunwrapExports(wrapConnectorHooks_1);\n\nvar createSourceConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createSourceConnector(backend) {\n var currentHandlerId;\n var currentDragSourceNode;\n var currentDragSourceOptions;\n var disconnectCurrentDragSource;\n var currentDragPreviewNode;\n var currentDragPreviewOptions;\n var disconnectCurrentDragPreview;\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = undefined;\n }\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = undefined;\n }\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n var hooks = wrapConnectorHooks_1.default({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode &&\n shallowequal(options, currentDragSourceOptions)) {\n return;\n }\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n reconnectDragSource();\n },\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode &&\n shallowequal(options, currentDragPreviewOptions)) {\n return;\n }\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n reconnectDragPreview();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createSourceConnector;\n});\n\nunwrapExports(createSourceConnector_1);\n\nvar isValidType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isValidType(type, allowArray) {\n return (typeof type === 'string' ||\n typeof type === 'symbol' ||\n (!!allowArray &&\n Array.isArray(type) &&\n type.every(function (t) { return isValidType(t, false); })));\n}\nexports.default = isValidType;\n});\n\nunwrapExports(isValidType_1);\n\nvar DragSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\nfunction DragSource(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type), 'Expected \"type\" provided as the first argument to DragSource to be ' +\n 'a string, or a function that returns a string given the current props. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = createSourceFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource_1.default,\n createMonitor: createSourceMonitor_1.default,\n createConnector: createSourceConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DragSource;\n});\n\nunwrapExports(DragSource_1);\n\nvar registerTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n return {\n handlerId: targetId,\n unregister: unregisterTarget,\n };\n}\nexports.default = registerTarget;\n});\n\nunwrapExports(registerTarget_1);\n\nvar createTargetFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n var TargetImpl = /** @class */ (function () {\n function TargetImpl(monitor) {\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n }\n TargetImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n TargetImpl.prototype.receiveMonitor = function (monitor) {\n this.monitor = monitor;\n };\n TargetImpl.prototype.canDrop = function () {\n if (!spec.canDrop) {\n return true;\n }\n return spec.canDrop(this.props, this.monitor);\n };\n TargetImpl.prototype.hover = function () {\n if (!spec.hover) {\n return;\n }\n spec.hover(this.props, this.monitor, this.ref.current);\n };\n TargetImpl.prototype.drop = function () {\n if (!spec.drop) {\n return undefined;\n }\n var dropResult = spec.drop(this.props, this.monitor, this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(typeof dropResult === 'undefined' || isPlainObject_1(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n return TargetImpl;\n }());\n return function createTarget(monitor) {\n return new TargetImpl(monitor);\n };\n}\nexports.default = createTargetFactory;\n});\n\nunwrapExports(createTargetFactory_1);\n\nvar createTargetMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrop = false;\nvar TargetMonitor = /** @class */ (function () {\n function TargetMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n TargetMonitor.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n TargetMonitor.prototype.canDrop = function () {\n invariant_1(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n TargetMonitor.prototype.isOver = function (options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n TargetMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n TargetMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n TargetMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n TargetMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n TargetMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n TargetMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n TargetMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n TargetMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return TargetMonitor;\n}());\nexports.TargetMonitor = TargetMonitor;\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\nexports.default = createTargetMonitor;\n});\n\nunwrapExports(createTargetMonitor_1);\nvar createTargetMonitor_2 = createTargetMonitor_1.TargetMonitor;\n\nvar createTargetConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createTargetConnector(backend) {\n var currentHandlerId;\n var currentDropTargetNode;\n var currentDropTargetOptions;\n var disconnectCurrentDropTarget;\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = undefined;\n }\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n var hooks = wrapConnectorHooks_1.default({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode &&\n shallowequal(options, currentDropTargetOptions)) {\n return;\n }\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n reconnectDropTarget();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createTargetConnector;\n});\n\nunwrapExports(createTargetConnector_1);\n\nvar DropTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' +\n 'a string, an array of strings, or a function that returns either given ' +\n 'the current props. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = createTargetFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget_1.default,\n createMonitor: createTargetMonitor_1.default,\n createConnector: createTargetConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DropTarget;\n});\n\nunwrapExports(DropTarget_1);\n\nvar lib$1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.DragDropContext = DragDropContext_1.DragDropContext;\nexports.DragDropContextProvider = DragDropContext_1.DragDropContextProvider;\n\nexports.DragLayer = DragLayer_1.default;\n\nexports.DragSource = DragSource_1.default;\n\nexports.DropTarget = DropTarget_1.default;\n});\n\nunwrapExports(lib$1);\nvar lib_1 = lib$1.DragDropContext;\nvar lib_2 = lib$1.DragDropContextProvider;\nvar lib_3 = lib$1.DragLayer;\nvar lib_4 = lib$1.DragSource;\nvar lib_5 = lib$1.DropTarget;\n\nvar css$1 = \".ExampleDropTarget {\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\\n width: 100%;\\n min-height: 100px;\\n\\n border: 2px dashed black;\\n padding: 20px;\\n transition: 0.2s all ease;\\n}\\n\\n.ExampleDropTarget h4,\\n.ExampleDropTarger p {\\n text-align: center;\\n word-break: break-word;\\n}\\n\\n.ExampleDropTarget.can-drop {\\n border: 2px dashed #20a5d6;\\n background-color: #fafafa;\\n color: black;\\n}\\n\\n.ExampleDropTarget.hovered {\\n border: 2px dashed #20a5d6;\\n background-color: black;\\n color: #91b9cd;\\n}\\n\";\nstyleInject(css$1);\n\n// if they have the same string type.\n\nvar Types = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget = {\n drop: function drop(props, monitor, component) {\n // Note: For this example we use setState, but in\n // OHIF we will update the redux store instead\n var item = monitor.getItem();\n component.setState({\n item: {\n id: item.id,\n seriesDescription: item.seriesDescription\n }\n });\n return {\n id: 'ExampleDropTarget'\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar ExampleDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ExampleDropTarget, _Component);\n\n function ExampleDropTarget() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ExampleDropTarget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ExampleDropTarget)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n item: null\n });\n\n return _this;\n }\n\n _createClass(ExampleDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = ExampleDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, React.createElement(\"h4\", null, isActive ? 'Release to drop' : 'Drag / Drop something from the Study Browser here'), React.createElement(\"p\", {\n className: \"study-drop-results\"\n }, this.state.item && JSON.stringify(this.state.item))));\n }\n }]);\n\n return ExampleDropTarget;\n}(Component);\n\n_defineProperty(ExampleDropTarget, \"className\", 'ExampleDropTarget');\n\n_defineProperty(ExampleDropTarget, \"defaultProps\", {\n isOver: false\n});\n\n_defineProperty(ExampleDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired\n});\n\nvar collect = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n};\n\nvar ExampleDropTarget$1 = lib_5(Types.THUMBNAIL, divTarget, collect)(ExampleDropTarget);\n\nvar css$2 = \".layoutChooser {\\n border: 1px solid rgba(77,99,110,0.81);\\n border-radius: 8px;\\n padding: 5px 0;\\n position: absolute;\\n z-index: 5000;\\n}\\n.layoutChooser .selectedBefore {\\n background-color: #5cc3eb;\\n}\\n.layoutChooser table {\\n margin: 0 auto;\\n}\\n.layoutChooser table td {\\n cursor: pointer;\\n}\\n.layoutChooser table td:hover,\\n.layoutChooser table td.hover {\\n background-color: #209ac9;\\n}\\n\";\nstyleInject(css$2);\n\n/**\n * Adds the 'hover' class to cells above and to the left of the current cell\n * This is used to \"fill in\" the grid that the user will change the layout to,\n * if they click on a specific table cell.\n **/\n\nvar LayoutChooser =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutChooser, _PureComponent);\n\n function LayoutChooser(props) {\n var _this;\n\n _classCallCheck(this, LayoutChooser);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayoutChooser).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isRange\", function (cell, parentCell) {\n return cell.row <= parentCell.row && cell.col <= parentCell.col;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"highlightCells\", function (currentCell) {\n var table = [];\n\n for (var row = 0; row < _this.props.rows; row++) {\n var newRow = [];\n\n for (var col = 0; col < _this.props.columns; col++) {\n var cell = {\n row: row,\n col: col\n };\n\n if (_this.isRange(cell, currentCell)) {\n cell.className = 'hover';\n } else if (_this.isRange(currentCell, _this.emptyCell) && _this.isRange(cell, _this.state.selectedCell)) {\n cell.className = 'selectedBefore';\n }\n\n newRow.push(cell);\n }\n\n table.push(newRow);\n }\n\n _this.setState({\n table: table\n });\n });\n\n _this.emptyCell = {\n row: -1,\n column: -1\n };\n _this.state = {\n table: [[]],\n selectedCell: _this.props.selectedCell\n };\n return _this;\n }\n\n _createClass(LayoutChooser, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.highlightCells(this.emptyCell);\n }\n }, {\n key: \"onClick\",\n value: function onClick(currentCell) {\n this.setState({\n selectedCell: currentCell\n });\n this.highlightCells(currentCell);\n\n if (this.props.onClick) {\n this.props.onClick(currentCell);\n }\n\n if (this.props.onChange) {\n this.props.onChange(currentCell);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var columns = this.props.columns;\n var style = {\n display: this.props.visible ? 'block' : 'none',\n minWidth: columns * this.props.boxSize + (columns + 5) * this.props.cellBorder\n };\n return React.createElement(\"div\", {\n className: \"layoutChooser pull-left dropdown-menu\",\n role: \"menu\",\n style: style\n }, React.createElement(\"table\", null, React.createElement(\"tbody\", null, this.state.table.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (cell, j) {\n return React.createElement(\"td\", {\n className: cell.className,\n style: {\n width: _this2.props.boxSize,\n height: _this2.props.boxSize,\n border: 'solid 1px black'\n },\n key: j,\n onMouseEnter: function onMouseEnter() {\n return _this2.highlightCells(cell);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.highlightCells(_this2.emptyCell);\n },\n onClick: function onClick() {\n return _this2.onClick(cell);\n }\n });\n }));\n }))));\n }\n }]);\n\n return LayoutChooser;\n}(PureComponent);\n\n_defineProperty(LayoutChooser, \"propTypes\", {\n rows: propTypes.number.isRequired,\n columns: propTypes.number.isRequired,\n visible: propTypes.bool.isRequired,\n selectedCell: propTypes.object,\n boxSize: propTypes.number.isRequired,\n cellBorder: propTypes.number.isRequired,\n onClick: propTypes.func,\n onChange: propTypes.func\n});\n\n_defineProperty(LayoutChooser, \"defaultProps\", {\n rows: 3,\n columns: 3,\n visible: true,\n boxSize: 20,\n cellBorder: 1,\n selectedCell: {\n row: -1,\n col: -1\n }\n});\n\nvar LayoutButton =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutButton, _PureComponent);\n\n function LayoutButton() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutButton);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutButton)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownVisible: _this.props.dropdownVisible\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (selectedCell) {\n if (_this.props.onChange) {\n _this.props.onChange(selectedCell);\n }\n });\n\n return _this;\n }\n\n _createClass(LayoutButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.dropdownVisible !== prevProps.dropdownVisible) {\n this.setState({\n dropdownVisible: this.props.dropdownVisible\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"layout\",\n type: \"button\",\n className: \"btn btn-sm btn-default dropdown-toggle\",\n \"data-container\": \"body\",\n \"data-toggle\": \"dropdown\",\n \"aria-expanded\": \"false\",\n \"data-placement\": \"right\",\n title: \"Layout\",\n rel: \"tooltip\",\n onClick: this.onClick\n }, React.createElement(\"span\", {\n className: \"fa fa-th-large\"\n })), React.createElement(LayoutChooser, {\n visible: this.state.dropdownVisible,\n onChange: this.onChange,\n onClick: this.onClick,\n selectedCell: this.props.selectedCell\n }));\n }\n }]);\n\n return LayoutButton;\n}(PureComponent);\nLayoutButton.defaultProps = {\n dropdownVisible: false\n};\nLayoutButton.propTypes = {\n dropdownVisible: propTypes.bool.isRequired,\n onChange: propTypes.func,\n selectedCell: propTypes.object\n};\n\nvar css$3 = \".viewport-container {\\n float: left;\\n\\n border: var(--viewport-border-thickness) solid var(--ui-border-color);\\n}\\n\\n.viewport-container.active {\\n border: var(--viewport-border-thickness) solid var(--active-color);\\n}\\n\\n.EmptyViewport {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n color: var(--text-secondary-color);\\n}\\n\";\nstyleInject(css$3);\n\nvar css$4 = \".LayoutPanelDropTarget {\\n width: 100%;\\n height: 100%;\\n\\n opacity: 1;\\n transition: 0.3s all ease;\\n}\\n\\n.LayoutPanelDropTarget.hovered {\\n opacity: 0.5;\\n}\\n\";\nstyleInject(css$4);\n\n// if they have the same string type.\n\nvar Types$1 = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget$1 = {\n drop: function drop(props, monitor, component) {\n var item = monitor.getItem();\n\n if (props.onDrop) {\n props.onDrop({\n viewportIndex: props.viewportIndex,\n item: item\n });\n }\n\n return {\n id: \"LayoutPanelDropTarget-\".concat(props.viewportIndex),\n viewportIndex: props.viewportIndex,\n item: item\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar LayoutPanelDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutPanelDropTarget, _Component);\n\n function LayoutPanelDropTarget() {\n _classCallCheck(this, LayoutPanelDropTarget);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LayoutPanelDropTarget).apply(this, arguments));\n }\n\n _createClass(LayoutPanelDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = LayoutPanelDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, this.props.children));\n }\n }]);\n\n return LayoutPanelDropTarget;\n}(Component);\n\n_defineProperty(LayoutPanelDropTarget, \"className\", 'LayoutPanelDropTarget');\n\n_defineProperty(LayoutPanelDropTarget, \"defaultProps\", {\n isOver: false,\n canDrop: false\n});\n\n_defineProperty(LayoutPanelDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired,\n viewportComponent: propTypes.object\n});\n\nvar collect$1 = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n canDrop: monitor.canDrop(),\n isOver: monitor.isOver()\n };\n};\n\nvar LayoutPanelDropTarget$1 = lib_5(Types$1.THUMBNAIL, divTarget$1, collect$1)(LayoutPanelDropTarget);\n\nfunction defaultViewportPlugin(props) {\n return React.createElement(\"div\", null, JSON.stringify(props));\n}\n\nfunction EmptyViewport() {\n return React.createElement(\"div\", {\n className: \"EmptyViewport\"\n }, React.createElement(\"p\", null, \"Please drag a stack here to view images.\"));\n}\n\nvar LayoutManager =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutManager, _Component);\n\n function LayoutManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDrop\", function (_ref) {\n var viewportIndex = _ref.viewportIndex,\n item = _ref.item;\n\n if (_this.props.setViewportData) {\n _this.props.setViewportData({\n viewportIndex: viewportIndex,\n item: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPluginComponent\", function (plugin) {\n var pluginComponent = _this.props.availablePlugins[plugin || _this.props.defaultPlugin];\n\n if (!pluginComponent) {\n throw new Error(\"No Viewport Plugin available for plugin \".concat(plugin, \". Available plugins: \").concat(JSON.stringify(_this.props.availablePlugins)));\n }\n\n return pluginComponent;\n });\n\n return _this;\n }\n\n _createClass(LayoutManager, [{\n key: \"getChildComponent\",\n value: function getChildComponent(plugin, data, viewportIndex) {\n if (data.displaySet) {\n var PluginComponent = this.getPluginComponent(plugin);\n return React.createElement(PluginComponent, {\n viewportData: data,\n viewportIndex: viewportIndex\n });\n }\n\n return React.createElement(EmptyViewport, null);\n }\n }, {\n key: \"getContent\",\n value: function getContent(childComponent, supportsDragAndDrop, viewportIndex) {\n if (supportsDragAndDrop) {\n return React.createElement(LayoutPanelDropTarget$1, {\n onDrop: this.onDrop,\n viewportIndex: viewportIndex\n }, childComponent);\n }\n\n return React.createElement(\"div\", {\n className: \"LayoutPanel\"\n }, childComponent);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!this.props.viewportData.length) {\n return '';\n }\n\n var _this$props = this.props,\n supportsDragAndDrop = _this$props.supportsDragAndDrop,\n studies = _this$props.studies,\n viewportData = _this$props.viewportData;\n var viewports = this.props.layout.viewports;\n var viewportElements = viewports.map(function (layout, viewportIndex) {\n var displaySet = viewportData[viewportIndex];\n var data = {\n displaySet: displaySet,\n studies: studies\n };\n\n var childComponent = _this2.getChildComponent(layout.plugin, data, viewportIndex);\n\n var content = _this2.getContent(childComponent, supportsDragAndDrop, viewportIndex);\n\n var className = 'viewport-container';\n\n if (_this2.props.activeViewportIndex === viewportIndex) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n key: viewportIndex,\n className: className,\n style: _objectSpread({}, layout)\n }, content);\n });\n return React.createElement(\"div\", {\n className: LayoutManager.className\n }, viewportElements);\n }\n }]);\n\n return LayoutManager;\n}(Component);\n\n_defineProperty(LayoutManager, \"className\", 'LayoutManager');\n\n_defineProperty(LayoutManager, \"defaultProps\", {\n viewportData: [],\n layout: {\n viewports: [{\n top: 0,\n left: 0,\n height: '100%',\n width: '100%'\n }]\n },\n activeViewportIndex: 0,\n supportsDragAndDrop: true,\n availablePlugins: {\n defaultViewportPlugin: defaultViewportPlugin\n },\n defaultPlugin: 'defaultViewportPlugin'\n});\n\n_defineProperty(LayoutManager, \"propTypes\", {\n viewportData: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n activeViewportIndex: propTypes.number.isRequired,\n layout: propTypes.object.isRequired,\n availablePlugins: propTypes.object.isRequired,\n setViewportData: propTypes.func,\n studies: propTypes.array\n});\n\nvar css$5 = \".tableList {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n}\\n.tableList .tableListHeader {\\n background-color: var(--ui-gray-darker);\\n color: var(--text-secondary-color);\\n fill: var(--text-secondary-color);\\n display: flex;\\n height: 63px;\\n line-height: 63px;\\n margin-top: 2px;\\n overflow: hidden;\\n width: 100%;\\n}\\n.tableList .tableListHeader .tableListHeaderTitle {\\n color: var(--text-secondary-color);\\n font-size: 22px;\\n font-weight: 300;\\n line-height: 63px;\\n padding: 0 10px;\\n text-align: left;\\n flex: 1;\\n}\\n.tableList .tableListHeader .numberOfItems {\\n color: var(--ui-sky-blue);\\n float: right;\\n font-weight: 300;\\n font-size: 40px;\\n max-width: 54px;\\n height: 63px;\\n line-height: 66px;\\n flex: 1;\\n}\\n\";\nstyleInject(css$5);\n\nvar TableList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableList, _Component);\n\n function TableList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getHeader\", function () {\n if (_this.props.customHeader) {\n return _this.props.customHeader;\n } else {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, _this.props.headerTitle), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, _this.props.children.length));\n }\n });\n\n return _this;\n }\n\n _createClass(TableList, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableList\"\n }, React.createElement(\"div\", {\n className: \"tableListHeader\",\n onClick: this.onHeaderClick\n }, this.getHeader()), React.createElement(\"div\", {\n className: \"tableListContent\"\n }, this.props.children));\n }\n }]);\n\n return TableList;\n}(Component);\n\n_defineProperty(TableList, \"propTypes\", {\n customHeader: propTypes.node,\n defaultItems: propTypes.object,\n children: propTypes.node.isRequired,\n headerTitle: propTypes.string\n});\n\nvar css$6 = \".tableListItem {\\n display: flex;\\n margin-left: -6px;\\n margin-top: 2px;\\n padding-left: 6px;\\n opacity: 0.7;\\n width: calc(100% + 6px);\\n}\\n.tableListItem:hover {\\n opacity: 1;\\n}\\n.tableListItem.selected {\\n opacity: 1;\\n}\\n.tableListItem.selected .itemIndex {\\n color: $activeColor;\\n}\\n.tableListItem .itemIndex {\\n background-color: var(--ui-gray);\\n color: var(--text-secondary-color);\\n cursor: pointer;\\n flex: 1;\\n max-width: 40px;\\n font-size: 14px;\\n font-weight: 400;\\n margin-right: 5px;\\n padding: 10px;\\n text-align: center;\\n}\\n.tableListItem .itemContent {\\n flex: 1;\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n margin-left: -2px;\\n}\\n\";\nstyleInject(css$6);\n\nvar TableListItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableListItem, _Component);\n\n function TableListItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableListItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableListItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event) {\n if (_this.props.onItemClick) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onItemClick(event, _this.props);\n }\n });\n\n return _this;\n }\n\n _createClass(TableListItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableListItem \".concat(this.props.itemClass),\n onClick: this.onItemClick\n }, React.createElement(\"div\", {\n className: \"itemIndex\"\n }, this.props.itemIndex + 1), React.createElement(\"div\", {\n className: \"itemContent\"\n }, this.props.children));\n }\n }]);\n\n return TableListItem;\n}(Component);\n\n_defineProperty(TableListItem, \"propTypes\", {\n children: propTypes.node,\n itemClass: propTypes.string,\n itemIndex: propTypes.number,\n onItemClick: propTypes.func.isRequired\n});\n\nvar css$7 = \".measurementItem .rowActions {\\n background-color: var(--ui-gray-darker);\\n height: 0;\\n overflow: hidden;\\n transition: all 0.3s ease;\\n visibility: hidden;\\n padding-left: 14px;\\n}\\n.measurementItem .rowActions .btnAction {\\n background-color: transparent;\\n border: none;\\n color: var(--default-color);\\n cursor: pointer;\\n line-height: 35px;\\n transition: all 0.3s ease;\\n}\\n.measurementItem .rowActions .btnAction:hover,\\n.measurementItem .rowActions .btnAction:active {\\n color: var(--text-primary-color);\\n}\\n.measurementItem .rowActions .btnAction i {\\n margin-right: 4px;\\n}\\n.measurementItem.selected .rowActions {\\n height: 35px;\\n visibility: visible;\\n}\\n.measurementItem .measurementLocation {\\n margin-left: 9px;\\n margin-top: 9px;\\n}\\n.measurementItem .measurementDisplayText {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n\";\nstyleInject(css$7);\n\nvar MeasurementTableItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTableItem, _Component);\n\n function MeasurementTableItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MeasurementTableItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MeasurementTableItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getDataDisplayText\", function () {\n return _this.props.measurementData.data.map(function (data, index) {\n return React.createElement(\"div\", {\n key: \"displayText_\".concat(index),\n className: \"measurementDisplayText\"\n }, data.displayText ? data.displayText : '...');\n });\n });\n\n return _this;\n }\n\n _createClass(MeasurementTableItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(TableListItem, {\n itemKey: this.props.itemKey,\n itemClass: \"measurementItem \".concat(this.props.itemClass),\n itemIndex: this.props.itemIndex,\n onItemClick: this.props.onItemClick\n }, React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"measurementLocation\"\n }, this.props.measurementData.label), React.createElement(\"div\", null, this.getDataDisplayText()), React.createElement(\"div\", {\n className: \"rowActions\"\n }, React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onRelabel\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Relabel\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onEditDescription\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Description\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onDelete\n }, React.createElement(\"i\", {\n className: \"fa fa-trash-o\"\n }), \"Delete\"))));\n }\n }]);\n\n return MeasurementTableItem;\n}(Component);\n\n_defineProperty(MeasurementTableItem, \"propTypes\", {\n measurementData: propTypes.object.isRequired,\n onItemClick: propTypes.func.isRequired,\n onRelabel: propTypes.func.isRequired,\n onDelete: propTypes.func.isRequired,\n onEditDescription: propTypes.func.isRequired,\n itemKey: propTypes.string.isRequired,\n itemClass: propTypes.string,\n itemIndex: propTypes.number\n});\n\nfunction throttled(delay, fn) {\n var lastCall = 0;\n return function () {\n var now = new Date().getTime();\n\n if (now - lastCall < delay) {\n return;\n }\n\n lastCall = now;\n return fn.apply(void 0, arguments);\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar css$8 = \".scrollArea {\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollArea .scrollable {\\n max-height: inherit;\\n overflow: hidden;\\n zoom: 1;\\n}\\n.scrollArea .scrollable.scrollX {\\n overflow-x: scroll;\\n}\\n.scrollArea .scrollable.scrollY {\\n overflow-y: scroll;\\n}\\n.scrollArea.fit {\\n height: 100%;\\n width: 100%;\\n}\\n.scrollArea.fit .scrollable {\\n bottom: 0;\\n left: 0;\\n max-height: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scrollArea .scrollNav {\\n background-color: rgba(0,0,0,0.75);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.75);\\n cursor: pointer;\\n height: 24px;\\n left: 10px;\\n opacity: 0;\\n position: absolute;\\n right: 10px;\\n transition: all 0.3s ease;\\n}\\n.scrollArea .scrollNav:after {\\n color: var(--active-color);\\n display: block;\\n font-family: FontAwesome;\\n font-size: 20px;\\n text-align: center;\\n transition: color 0.3s ease;\\n}\\n.scrollArea .scrollNav:hover {\\n background-color: rgba(0,0,0,0.9);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.9);\\n}\\n.scrollArea .scrollNav:hover:after {\\n color: var(--hover-color);\\n}\\n.scrollArea .scrollNavUp {\\n border-bottom-left-radius: 24px/2;\\n border-bottom-right-radius: 24px/2;\\n top: 0;\\n transform: ranslateY(-24px);\\n}\\n.scrollArea .scrollNavUp:after {\\n content: '\\\\f102';\\n}\\n.scrollArea .scrollNavDown {\\n border-top-left-radius: 24px/2;\\n border-top-right-radius: 24px/2;\\n bottom: 0;\\n transform: translateY(24px);\\n}\\n.scrollArea .scrollNavDown:after {\\n content: '\\\\f103';\\n}\\n.scrollArea.canScrollUp .scrollNavUp,\\n.scrollArea.canScrollDown .scrollNavDown {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\";\nstyleInject(css$8);\n\nvar ScrollableArea =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollableArea, _Component);\n\n function ScrollableArea(props) {\n var _this;\n\n _classCallCheck(this, ScrollableArea);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollableArea).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavDown\", function (event) {\n var _this$scrollableEleme = _this.scrollableElement,\n currentTop = _this$scrollableEleme.scrollTop,\n height = _this$scrollableEleme.offsetHeight,\n scrollHeight = _this$scrollableEleme.scrollHeight;\n var limit = scrollHeight - height;\n var scrollTop = currentTop + _this.props.scrollStep;\n scrollTop = scrollTop > limit ? limit : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavUp\", function (event) {\n var currentTop = _this.scrollableElement.scrollTop;\n var scrollTop = currentTop - _this.props.scrollStep;\n scrollTop = scrollTop < 0 ? 0 : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"adjustMargins\", function () {\n if (_this.props.hideScrollbar) {\n var x = _this.props.scrollX ? 1 : 0;\n var y = _this.props.scrollY ? 1 : 0;\n var scrollbarSize = getScrollbarSize();\n _this.scrollableElement.style.marginRight = \"\".concat(0 - scrollbarSize[0] * y, \"px\");\n _this.scrollableElement.style.marginBottom = \"\".concat(0 - scrollbarSize[1] * x, \"px\");\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollHandler\", function () {\n var _this$scrollableEleme2 = _this.scrollableElement,\n height = _this$scrollableEleme2.offsetHeight,\n scrollTop = _this$scrollableEleme2.scrollTop,\n scrollHeight = _this$scrollableEleme2.scrollHeight;\n var scrollAreaClasses = ''; // Stop here if unable to scroll\n\n if (scrollHeight <= height) return; // Check if can scroll up\n\n if (scrollTop) {\n scrollAreaClasses += 'canScrollUp';\n } // Check if can scroll down\n\n\n if (scrollTop + height < scrollHeight) {\n scrollAreaClasses += ' canScrollDown';\n }\n\n if (_this.state.scrollAreaClasses !== scrollAreaClasses) {\n _this.setState({\n scrollAreaClasses: scrollAreaClasses\n });\n }\n });\n\n _this.state = {\n scrollAreaClasses: ''\n };\n _this.scrollHandlerThrottled = throttled(150, _this.scrollHandler);\n return _this;\n }\n\n _createClass(ScrollableArea, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var scrollableClass = 'scrollable';\n\n if (this.props.scrollableClass) {\n scrollableClass += \" \".concat(this.props.scrollableClass);\n }\n\n if (this.props.scrollX) {\n scrollableClass += \" scrollX\";\n }\n\n if (this.props.scrollY) {\n scrollableClass += \" scrollY\";\n }\n\n return React.createElement(\"div\", {\n className: \"scrollArea \".concat(this.props.class, \" \").concat(this.state.scrollAreaClasses)\n }, React.createElement(\"div\", {\n className: scrollableClass,\n ref: function ref(element) {\n _this2.scrollableElement = element;\n },\n onScroll: this.scrollHandlerThrottled,\n onMouseEnter: this.scrollHandlerThrottled,\n onTransitionEnd: this.scrollHandlerThrottled\n }, this.props.children), React.createElement(\"div\", {\n className: \"scrollNav scrollNavUp\",\n onClick: this.scrollNavUp\n }), React.createElement(\"div\", {\n className: \"scrollNav scrollNavDown\",\n onClick: this.scrollNavDown\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.adjustMargins();\n this.scrollHandler();\n window.addEventListener('resize', this.adjustMargins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.adjustMargins);\n }\n }]);\n\n return ScrollableArea;\n}(Component);\n\n_defineProperty(ScrollableArea, \"propTypes\", {\n children: propTypes.node.isRequired,\n class: propTypes.string,\n scrollableClass: propTypes.string,\n scrollX: propTypes.bool,\n scrollY: propTypes.bool,\n hideScrollbar: propTypes.bool,\n scrollStep: propTypes.number\n});\n\n_defineProperty(ScrollableArea, \"defaultProps\", {\n hideScrollbar: true,\n class: 'flex-grow fit',\n scrollY: true,\n scrollX: false,\n scrollStep: 100\n});\n\nvar css$9 = \".measurementTable {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n.measurementTable .maxMeasurements {\\n border-radius: 3px;\\n color: var(--primary-background-color);\\n font-size: 12px;\\n font-weight: 500;\\n height: 19px;\\n line-height: 17px;\\n margin-top: 22px;\\n margin-right: 15px;\\n padding: 2px 6px 0;\\n text-transform: uppercase;\\n transition: all 0.3s ease;\\n background-color: var(--default-color);\\n}\\n.measurementTable .measurementTableHeader {\\n padding-left: 45px;\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem .timepointLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n}\\n\";\nstyleInject(css$9);\n\nvar MeasurementTable =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTable, _Component);\n\n function MeasurementTable(props) {\n var _this;\n\n _classCallCheck(this, MeasurementTable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MeasurementTable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurementsGroups\", function () {\n return _this.props.measurementCollection.map(function (measureGroup, index) {\n return React.createElement(TableList, {\n key: index,\n customHeader: _this.getCustomHeader(measureGroup)\n }, _this.getMeasurements(measureGroup));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurements\", function (measureGroup) {\n return measureGroup.measurements.map(function (measurement, index) {\n var key = \"\".concat(measureGroup.groupName, \"_\").concat(index);\n return React.createElement(MeasurementTableItem, {\n key: key,\n itemIndex: index,\n itemKey: key,\n itemClass: _this.state.selectedKey === key ? 'selected' : '',\n measurementData: measurement,\n onItemClick: _this.onItemClick,\n onRelabel: function onRelabel() {\n alert('relabel');\n },\n onDelete: function onDelete() {\n alert('delete');\n },\n onEditDescription: function onEditDescription() {\n alert('editDescription');\n }\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getCustomHeader\", function (measureGroup) {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, measureGroup.groupName), measureGroup.maxMeasurements && React.createElement(\"div\", {\n className: \"maxMeasurements\"\n }, \"MAX \", measureGroup.maxMeasurements), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, measureGroup.measurements.length));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTimepointsHeader\", function () {\n return _this.props.timepoints.map(function (timepoint, index) {\n return React.createElement(\"div\", {\n key: index,\n className: \"measurementTableHeaderItem\"\n }, React.createElement(\"div\", {\n className: \"timepointLabel\"\n }, timepoint.label), React.createElement(\"div\", {\n className: \"timepointDate\"\n }, timepoint.date));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event, itemProps) {\n _this.setState({\n selectedKey: itemProps.itemKey\n });\n });\n\n _this.state = {\n selectedKey: null\n };\n return _this;\n }\n\n _createClass(MeasurementTable, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"measurementTable\"\n }, React.createElement(\"div\", {\n className: \"measurementTableHeader\"\n }, this.getTimepointsHeader()), React.createElement(ScrollableArea, null, React.createElement(\"div\", null, this.getMeasurementsGroups())));\n }\n }]);\n\n return MeasurementTable;\n}(Component);\n\n_defineProperty(MeasurementTable, \"propTypes\", {\n measurementCollection: propTypes.array.isRequired,\n timepoints: propTypes.array.isRequired\n});\n\nvar PlayClipButton =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PlayClipButton, _Component);\n\n function PlayClipButton() {\n _classCallCheck(this, PlayClipButton);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PlayClipButton).apply(this, arguments));\n }\n\n _createClass(PlayClipButton, [{\n key: \"render\",\n value: function render() {\n var playClass = 'fa-stop';\n\n if (this.props.isPlaying) {\n playClass = 'fa-play';\n }\n\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"playClip\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Play/Stop Clip\"\n }, React.createElement(\"span\", {\n className: \"fa \".concat(playClass)\n })), React.createElement(\"button\", {\n id: \"toggleCineDialog\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Toggle CINE Dialog\"\n }, React.createElement(\"span\", {\n className: \"fa fa-youtube-play\"\n })));\n }\n }]);\n\n return PlayClipButton;\n}(Component);\nPlayClipButton.propTypes = {\n isPlaying: propTypes.bool.isRequired\n};\nPlayClipButton.defaultProps = {\n isPlaying: false\n};\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css$a = \".RoundedButtonGroup {\\n --height: 25px;\\n\\n position: relative;\\n z-index: 0;\\n}\\n\\n.roundedButtonWrapper {\\n cursor: pointer;\\n display: inline-block;\\n float: left;\\n margin-left: -2px;\\n text-decoration: none;\\n text-align: center;\\n}\\n\\n.roundedButtonWrapper.disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper .roundedButton {\\n align-items: center;\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--ui-border-color-dark);\\n color: var(--text-secondary-color);\\n display: flex;\\n font-size: 11px;\\n font-weight: 500;\\n justify-content: center;\\n height: var(--height);\\n line-height: var(--height);\\n padding: 0 22px;\\n position: relative;\\n text-transform: uppercase;\\n transition: var(--sidebar-transition);\\n z-index: 1;\\n}\\n\\n.roundedButtonWrapper .roundedButton svg {\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n\\n.roundedButtonWrapper\\n .roundedButton\\n svg\\n .roundedButtonWrapper\\n .roundedButton\\n span {\\n margin: 0 2px;\\n}\\n\\n.roundedButtonWrapper .roundedButton i {\\n line-height: 15px;\\n font-size: 15px;\\n}\\n\\n.bottomLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n font-weight: 500;\\n line-height: 12px;\\n margin-top: 8px;\\n}\\n\\n.roundedButtonWrapper:first-child {\\n margin-left: 0;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:first-child .roundedButton {\\n border-bottom-left-radius: var(--height);\\n border-top-left-radius: var(--height);\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:last-child .roundedButton {\\n border-bottom-right-radius: var(--height);\\n border-top-right-radius: var(--height);\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton {\\n background-color: var(--box-background-color);\\n color: var(--ui-gray-dark);\\n}\\n\\n.roundedButtonWrapper.active .roundedButton {\\n background-color: var(--active-color);\\n border-color: var(--ui-border-color-active);\\n color: var(--ui-gray-dark);\\n z-index: 2;\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton svg,\\n.roundedButtonWrapper.active .roundedButton svg {\\n fill: var(--ui-gray-dark);\\n stroke: var(--ui-gray-dark);\\n}\\n\";\nstyleInject(css$a);\n\nvar RoundedButtonGroup =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RoundedButtonGroup, _Component);\n\n function RoundedButtonGroup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RoundedButtonGroup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RoundedButtonGroup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickOption\", function (value) {\n var newValue = value;\n\n if (_this.props.value === value) {\n newValue = null;\n }\n\n if (_this.props.onValueChanged) {\n _this.props.onValueChanged(newValue);\n }\n });\n\n return _this;\n }\n\n _createClass(RoundedButtonGroup, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classnames(RoundedButtonGroup.className, 'clearfix center-table');\n var buttons = this.props.options.map(function (option, index) {\n var className = classnames({\n roundedButtonWrapper: true,\n noselect: true,\n active: _this2.props.value === option.value\n });\n var optionSVG;\n\n if (option.svgLink) {\n var svgStyle = {\n width: \"\".concat(option.svgWidth, \"px\"),\n height: \"\".concat(option.svgHeight, \"px\")\n };\n optionSVG = React.createElement(\"svg\", {\n style: svgStyle\n }, React.createElement(\"use\", {\n xlinkHref: option.svgLink\n }));\n }\n\n var optionText = option.text && React.createElement(\"span\", null, option.text);\n var optionIcon = option.iconClasses && React.createElement(\"i\", {\n className: option.iconClasses\n });\n var bottomLabel = option.bottomLabel && React.createElement(\"div\", {\n className: \"bottomLabel\"\n }, option.bottomLabel);\n return React.createElement(\"div\", {\n key: index,\n className: className,\n onClick: function onClick() {\n return _this2.onClickOption(option.value);\n }\n }, React.createElement(\"div\", {\n className: \"roundedButton\"\n }, optionSVG, optionText, optionIcon), bottomLabel);\n });\n return React.createElement(\"div\", {\n className: className\n }, buttons);\n }\n }]);\n\n return RoundedButtonGroup;\n}(Component);\n\n_defineProperty(RoundedButtonGroup, \"className\", 'RoundedButtonGroup');\n\n_defineProperty(RoundedButtonGroup, \"propTypes\", {\n options: propTypes.array,\n value: propTypes.string,\n onValueChanged: propTypes.func\n});\n\n_defineProperty(RoundedButtonGroup, \"defaultProps\", {\n options: [],\n value: null\n});\n\nvar css$b = \".dd-menu {\\n float: left;\\n margin-right: 10px;\\n cursor: pointer;\\n position: relative;\\n z-index: 999;\\n}\\n\\n.dd-title {\\n font-size: 13px;\\n}\\n\\n.dd-menu-toggle {\\n display: inline-block;\\n}\\n\\n.dd-caret-down {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-top: 0.5rem;\\n margin-left: 0.5rem;\\n border-top: 5px solid;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n}\\n\\n.dd-menu-list {\\n position: absolute;\\n top: 100%;\\n margin-top: 10px;\\n background: white;\\n border-radius: 5px;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n overflow: hidden;\\n transition: all 300ms ease;\\n -webkit-transition: all 300ms ease;\\n -moz-transition: all 300ms ease;\\n -ms-transition: all 300ms ease;\\n -o-transition: all 300ms ease;\\n}\\n\\n.dd-menu-list.open {\\n display: inline-block;\\n}\\n\\n.dd-menu-list.left {\\n left: 0;\\n}\\n\\n.dd-menu-list.right {\\n right: 0;\\n}\\n\\n.dd-menu-list.center {\\n left: 50%;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n -moz-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n}\\n\\n.dd-item {\\n display: flex;\\n color: var(--text-color-active);\\n padding: 10px 15px;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.dd-item:hover {\\n text-decoration: none;\\n background: #eee;\\n}\\n\\n.dd-item:last-child {\\n border-bottom: none;\\n}\\n\\n.dd-item-icon {\\n width: 10px;\\n text-align: center;\\n margin-right: 10px;\\n}\\n\\n.dd-item-icon:before {\\n vertical-align: middle;\\n}\\n\";\nstyleInject(css$b);\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Dropdown, _Component);\n\n function Dropdown() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Dropdown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Dropdown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n open: false\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderList\", function () {\n var _this$props = _this.props,\n list = _this$props.list,\n align = _this$props.align;\n\n if (!_this.state.open) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"dd-menu-list \".concat(align || 'left')\n }, list.map(function (_ref, key) {\n var icon = _ref.icon,\n title = _ref.title,\n link = _ref.link,\n _onClick = _ref.onClick;\n return React.createElement(\"a\", {\n href: link || '#',\n key: key,\n className: \"dd-item\",\n onClick: function onClick() {\n return _this.handleOnClick(_onClick);\n }\n }, icon && React.createElement(\"span\", {\n className: \"dd-item-icon \".concat(icon)\n }), React.createElement(\"span\", null, title));\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleOnClick\", function (onClick) {\n _this.toggleList();\n\n if (onClick) {\n onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMouseClick\", function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n _this.toggleList();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderTitleElement\", function () {\n var _this$props2 = _this.props,\n titleElement = _this$props2.titleElement,\n title = _this$props2.title;\n\n if (titleElement) {\n return titleElement;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"span\", {\n className: \"dd-title\"\n }, title), React.createElement(\"span\", {\n className: \"dd-caret-down\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"toggleList\", function () {\n var open = _this.state.open;\n var state = true;\n document.addEventListener('mousedown', _this.handleMouseClick, false);\n\n if (open) {\n document.removeEventListener('mousedown', _this.handleMouseClick, false);\n state = false;\n }\n\n _this.setState({\n open: state\n });\n });\n\n return _this;\n }\n\n _createClass(Dropdown, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", {\n className: \"dd-menu\",\n ref: function ref(node) {\n return _this2.node = node;\n }\n }, React.createElement(\"div\", {\n className: \"dd-menu-toggle\",\n onClick: this.toggleList\n }, this.renderTitleElement()), this.renderList());\n }\n }]);\n\n return Dropdown;\n}(Component);\n\n_defineProperty(Dropdown, \"propTypes\", {\n titleElement: propTypes.node,\n title: propTypes.string,\n align: propTypes.oneOf(['left', 'center', 'right']),\n list: propTypes.arrayOf(propTypes.shape({\n title: propTypes.string.isRequired,\n icon: propTypes.string,\n onClick: propTypes.func,\n link: propTypes.string\n }))\n});\n\nvar InputRadio =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InputRadio, _Component);\n\n function InputRadio() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, InputRadio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(InputRadio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (evt) {\n _this.props.onSelected(evt, _this.props.itemData);\n });\n\n return _this;\n }\n\n _createClass(InputRadio, [{\n key: \"render\",\n value: function render() {\n var labelClass = this.props.labelClass ? this.props.labelClass : '';\n return React.createElement(\"label\", {\n className: 'wrapperLabel radioLabel ' + labelClass,\n htmlFor: this.props.id\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: this.props.id,\n className: \"radioInput\",\n value: this.props.value,\n onChange: this.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, this.props.label));\n }\n }]);\n\n return InputRadio;\n}(Component);\n\nInputRadio.propTypes = {\n value: propTypes.string,\n label: propTypes.string.isRequired,\n itemData: propTypes.object.isRequired,\n labelClass: propTypes.string,\n id: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar SelectTreeBreadcrumb =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTreeBreadcrumb, _Component);\n\n function SelectTreeBreadcrumb() {\n _classCallCheck(this, SelectTreeBreadcrumb);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SelectTreeBreadcrumb).apply(this, arguments));\n }\n\n _createClass(SelectTreeBreadcrumb, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"selectTreeBreadcrumb\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel radioLabel\",\n htmlFor: \"selectTreeBreadcrumb\"\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: \"selectTreeBreadcrumb\",\n className: \"treeNode radioInput\",\n value: this.props.value,\n onChange: this.props.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, React.createElement(\"span\", {\n className: \"backIcon\"\n }, React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: \"/icons.svg#fast-backward\"\n }))), this.props.label)));\n }\n }]);\n\n return SelectTreeBreadcrumb;\n}(Component);\n\nSelectTreeBreadcrumb.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar css$c = \".selectTreeRoot {\\n text-align: initial;\\n width: 320px;\\n max-height: inherit;\\n font-size: 14px;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeContent {\\n max-height: inherit;\\n overflow: hidden;\\n border: 1px solid #c4c4c4;\\n border-radius: 5px;\\n background-color: #fff;\\n display: flex;\\n flex-direction: column;\\n}\\n.selectTreeRoot .treeHeader {\\n background-color: #c0c0c0;\\n border-bottom: 1px solid #c4c4c4;\\n color: #303030;\\n padding: 5px;\\n text-align: center;\\n}\\n.selectTreeRoot .treeHeader .wrapperText {\\n font-weight: bold;\\n padding-bottom: 2px;\\n}\\n.selectTreeRoot .treeHeader .wrapperSearch {\\n width: 100%;\\n}\\n.selectTreeRoot .treeHeader .searchIcon {\\n position: absolute;\\n width: 18px;\\n height: 15px;\\n margin: 10px;\\n color: #a3a3a3;\\n}\\n.selectTreeRoot .treeHeader .searchInput {\\n width: 100%;\\n height: 34px;\\n padding: 6px 12px 6px 35px;\\n background-color: #fff;\\n background-image: none;\\n border: 1px solid #9b9b9b;\\n border-radius: 4px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n color: #555;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.selectTreeRoot .treeHeader .searchInput:focus {\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6);\\n}\\n.selectTreeRoot .wrapperText {\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .wrapperLabel {\\n cursor: pointer;\\n padding: 0 12px;\\n height: 41px;\\n width: 100%;\\n line-height: 41px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon {\\n padding-right: 10px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon svg {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n top: 2px;\\n color: #457fb0;\\n}\\n.selectTreeRoot .treeOptions {\\n overflow: auto;\\n height: 100%;\\n}\\n.selectTreeRoot .treeOptions .selectTreeBreadcrumb + .treeInputsWrapper .treeInputs .treeLeaf {\\n border: none;\\n height: initial;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeOptions > .treeInputsWrapper > .treeInputs .treeLeaf {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .treeNode,\\n.selectTreeRoot .treeLeaf {\\n cursor: pointer;\\n display: block;\\n overflow: hidden;\\n font-weight: normal;\\n box-shadow: 0 0 0 200px transparent;\\n padding: 0 12px;\\n}\\n.selectTreeRoot .treeNode {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .radioLabel .radioInput {\\n display: none;\\n}\\n\";\nstyleInject(css$c);\n\nvar SelectTree =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTree, _Component);\n\n function SelectTree(props) {\n var _this;\n\n _classCallCheck(this, SelectTree);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTree).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"componentDidUpdate\", function () {\n _this.props.onComponentChange();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isLeafSelected\", function (item) {\n return item && !Array.isArray(item.items);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getLabelClass\", function (item) {\n var labelClass = 'treeLeaf';\n\n if (_this.state.searchTerm || Array.isArray(item.items)) {\n labelClass = 'treeNode';\n }\n\n return labelClass;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"headerItem\", function () {\n var title = _this.props.selectTreeFirstTitle;\n\n if (_this.state.currentNode && _this.props.selectTreeSecondTitle) {\n title = _this.props.selectTreeSecondTitle;\n }\n\n return React.createElement(\"div\", {\n className: \"wrapperLabel treeHeader\"\n }, React.createElement(\"div\", {\n className: \"wrapperText\"\n }, title), _this.props.searchEnabled && React.createElement(\"div\", {\n className: \"wrapperSearch\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-search searchIcon\"\n }), React.createElement(\"input\", {\n type: \"text\",\n className: \"searchInput\",\n placeholder: \"Search labels\",\n autoFocus: true,\n onChange: _this.searchLocations,\n value: _this.state.searchTerm ? _this.state.searchTerm : ''\n })));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"searchLocations\", function (evt) {\n _this.setState({\n currentNode: null,\n searchTerm: evt.currentTarget.value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (event, item) {\n if (_this.isLeafSelected(item)) {\n _this.setState({\n searchTerm: null,\n currentNode: null,\n value: null\n });\n\n return _this.props.onSelected(event, item);\n } else {\n _this.setState({\n currentNode: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onBreadcrumbSelected\", function () {\n _this.setState({\n currentNode: null\n });\n });\n\n _this.state = {\n searchTerm: null,\n currentNode: null,\n value: null\n };\n return _this;\n }\n\n _createClass(SelectTree, [{\n key: \"render\",\n value: function render() {\n var treeItems = this.getTreeItems();\n return React.createElement(\"div\", {\n className: \"selectTree selectTreeRoot\"\n }, React.createElement(\"div\", {\n className: \"treeContent\"\n }, this.headerItem(), React.createElement(\"div\", {\n className: \"treeOptions\"\n }, this.state.currentNode && React.createElement(SelectTreeBreadcrumb, {\n onSelected: this.onBreadcrumbSelected,\n label: this.state.currentNode.label,\n value: this.state.currentNode.value\n }), React.createElement(\"div\", {\n className: \"treeInputsWrapper\"\n }, React.createElement(\"div\", {\n className: \"treeInputs\"\n }, treeItems)))));\n }\n }, {\n key: \"getTreeItems\",\n value: function getTreeItems() {\n var _this2 = this;\n\n var storageKey = 'SelectTree';\n var treeItems;\n\n if (this.state.searchTerm) {\n var filteredItems = [];\n var rawItems = lodash_clonedeep(this.props.items);\n rawItems.forEach(function (item) {\n if (Array.isArray(item.items)) {\n item.items.forEach(function (item) {\n var label = item.label.toLowerCase();\n\n var searchTerm = _this2.state.searchTerm.toLowerCase();\n\n if (label.indexOf(searchTerm) !== -1) {\n filteredItems.push(item);\n }\n });\n }\n });\n treeItems = filteredItems;\n } else if (this.state.currentNode) {\n treeItems = lodash_clonedeep(this.state.currentNode.items);\n } else {\n treeItems = lodash_clonedeep(this.props.items);\n }\n\n return treeItems.map(function (item, index) {\n var itemKey = index;\n\n if (_this2.state.currentNode) {\n itemKey += \"_\".concat(_this2.state.currentNode.value);\n }\n\n return React.createElement(InputRadio, {\n key: itemKey,\n id: \"\".concat(storageKey, \"_\").concat(item.value),\n name: index,\n itemData: item,\n value: item.value,\n label: item.label,\n labelClass: _this2.getLabelClass(item),\n onSelected: _this2.onSelected\n });\n });\n }\n }]);\n\n return SelectTree;\n}(Component);\n\n_defineProperty(SelectTree, \"defaultProps\", {\n searchEnabled: true,\n selectTreeFirstTitle: 'First Level itens',\n items: []\n});\n\nSelectTree.propTypes = {\n searchEnabled: propTypes.bool,\n selectTreeFirstTitle: propTypes.string,\n selectTreeSecondTitle: propTypes.string,\n onComponentChange: propTypes.func,\n items: propTypes.array.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar css$d = \".simpleDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n z-index: 1000;\\n border: 0;\\n border-radius: 6px;\\n background-color: var(--ui-gray-darker);\\n}\\n.simpleDialog .header {\\n border-bottom: 3px solid var(--primary-background-color);\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.simpleDialog .header .title {\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 24px;\\n padding-right: 40px;\\n color: var(--text-secondary-color);\\n margin: 0;\\n}\\n.simpleDialog .header .closeBtn {\\n -webkit-transform: translateY(-50%);\\n color: var(--text-secondary-color);\\n height: 20px;\\n opacity: 1;\\n overflow: hidden;\\n padding: 2px;\\n position: absolute;\\n right: 21px;\\n text-align: center;\\n text-shadow: none;\\n top: 50%;\\n transform: translateY(-50%);\\n transition: color 0.3s ease;\\n width: 20px;\\n}\\n.simpleDialog .header .closeIcon {\\n color: transparent;\\n display: block;\\n font-size: 0;\\n height: 100%;\\n line-height: 0;\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n}\\n.simpleDialog .header .closeIcon:after,\\n.simpleDialog .header .closeIcon:before {\\n content: ' ';\\n display: block;\\n height: 2px;\\n transition: background-color 0.3s ease;\\n width: 19px;\\n background-color: var(--text-secondary-color);\\n}\\n.simpleDialog .header .closeIcon:before {\\n left: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n -webkit-transform-origin: 1px 50%;\\n transform-origin: 1px 50%;\\n}\\n.simpleDialog .header .closeIcon:after {\\n right: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-transform-origin: calc(100% - 1px) 50%;\\n transform-origin: calc(100% - 1px) 50%;\\n}\\n.simpleDialog .content {\\n padding: 16px 22px 25px;\\n position: relative;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .content .simpleDialogSelect,\\n.simpleDialog .content .simpleDialogInput {\\n background-color: var(--input-background-color);\\n color: var(--text-primary-color);\\n border: 0;\\n border-radius: 2px;\\n font-size: 14px;\\n height: 30px;\\n width: 100%;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n margin-top: 10px;\\n display: block;\\n}\\n.simpleDialog .content .simpleDialogLabelFor {\\n font-size: 14px;\\n font-weight: 700;\\n line-height: 16px;\\n margin: 10px 0 0 0;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .footer {\\n padding: 15px;\\n text-align: right;\\n}\\n.simpleDialog .footer .btn {\\n margin-left: 5px;\\n}\\n\";\nstyleInject(css$d);\n\nvar SimpleDialog =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SimpleDialog, _Component);\n\n function SimpleDialog() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SimpleDialog);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SimpleDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClose\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onClose();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onConfirm\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onConfirm();\n });\n\n return _this;\n }\n\n _createClass(SimpleDialog, [{\n key: \"render\",\n value: function render() {\n return React.createElement(React.Fragment, null, this.props.isOpen && React.createElement(\"div\", {\n className: \"simpleDialog \".concat(this.props.rootClass, \" \"),\n ref: this.props.componentRef,\n style: this.props.componentStyle\n }, React.createElement(\"form\", null, React.createElement(\"div\", {\n className: \"header\"\n }, React.createElement(\"span\", {\n className: \"closeBtn\",\n onClick: this.onClose\n }, React.createElement(\"span\", {\n className: \"closeIcon\"\n }, \"x\")), React.createElement(\"h4\", {\n className: \"title\"\n }, this.props.headerTitle)), React.createElement(\"div\", {\n className: \"content\"\n }, this.props.children), React.createElement(\"div\", {\n className: \"footer\"\n }, React.createElement(\"button\", {\n className: \"btn btn-default\",\n onClick: this.onClose\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.onConfirm\n }, \"Confirm\")))));\n }\n }]);\n\n return SimpleDialog;\n}(Component);\n\n_defineProperty(SimpleDialog, \"defaultProps\", {\n isOpen: true,\n componentStyle: {},\n rootClass: ''\n});\n\nSimpleDialog.propTypes = {\n headerTitle: propTypes.string.isRequired,\n onClose: propTypes.func.isRequired,\n onConfirm: propTypes.func.isRequired\n};\n\nfunction ViewportLoadingIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, \"Loading \", props.percentComplete);\n}\nViewportLoadingIndicator.propTypes = {\n percentComplete: propTypes.number\n};\n\nfunction ViewportErrorIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, React.createElement(\"p\", null, \"Error\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, props.details));\n}\nViewportErrorIndicator.propTypes = {\n details: propTypes.string\n};\n\nvar css$e = \":root {\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n --primary-background-color: #000;\\n --ui-border-color-dark: #3c5d80;\\n --sidebar-transition: all 0.3s ease;\\n}\\n.ThumbnailEntry.active .ImageThumbnail {\\n border-color: var(--active-color);\\n box-shadow: none;\\n transition: var(--sidebar-transition);\\n}\\n.ImageThumbnail {\\n background-color: var(--primary-background-color);\\n box-shadow: inset 0 0 0 1px var(--ui-border-color-dark);\\n border: 5px solid transparent;\\n border-radius: 12px;\\n height: 135px;\\n margin: 0 auto;\\n padding: 5px;\\n position: relative;\\n transition: var(--sidebar-transition);\\n width: 217px;\\n -moz-background-clip: padding;\\n -webkit-background-clip: padding;\\n background-clip: padding-box;\\n}\\n.image-thumbnail-canvas {\\n height: 100%;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n}\\n.image-thumbnail-canvas img {\\n -webkit-user-drag: none;\\n}\\n.thumbnailLoadingIndicator {\\n display: none;\\n pointer-events: none;\\n color: var(--text-secondary-color);\\n height: 20px;\\n width: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n margin: auto;\\n position: absolute;\\n}\\n.thumbnailLoadingIndicator.d-block {\\n display: block;\\n}\\n.thumbnailLoadingIndicator p {\\n text-align: center;\\n font-size: 10pt;\\n}\\n.image-thumbnail-progress-bar {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n top: -5px;\\n}\\n.image-thumbnail-progress-bar .image-thumbnail-progress-bar-inner {\\n height: 100%;\\n width: 0;\\n border-radius: 5px;\\n background-color: var(--active-color);\\n}\\n\";\nstyleInject(css$e);\n\n// - Passed in as a prop?\n// - Set as external dependency?\n// - Pass in the entire load and render function as a prop?\n//import cornerstone from 'cornerstone-core';\n\n/**\n * Asynchronous wrapper around Cornerstone's renderToCanvas method.\n *\n * @param {HTMLElement} canvasElement An HTML element\n * @param {Image} image A Cornerstone Image\n *\n * @return {Promise} A promise tracking the progress of the rendering. Resolves empty.\n */\n\nfunction renderAsync(canvasElement, image) {\n return new Promise(function (resolve, reject) {\n try {\n cornerstone.renderToCanvas(canvasElement, image);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nvar ImageThumbnail =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageThumbnail, _PureComponent);\n\n function ImageThumbnail(props) {\n var _this;\n\n _classCallCheck(this, ImageThumbnail);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageThumbnail).call(this, props));\n _this.canvas = React.createRef();\n var renderIntoCanvas = _this.props.imageId && !_this.props.imageSrc;\n _this.state = {\n loading: renderIntoCanvas\n };\n return _this;\n }\n\n _createClass(ImageThumbnail, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n\n if (renderIntoCanvas) {\n var imageId = this.props.imageId;\n var canvas = this.canvas.current;\n cornerstone.loadAndCacheImage(imageId).then(function (image) {\n renderAsync(canvas, image).then(function () {\n _this2.setState({\n loading: false\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var loadingOrError;\n\n if (this.props.error) {\n loadingOrError = React.createElement(ViewportErrorIndicator, null);\n } else if (this.state.loading) {\n loadingOrError = React.createElement(ViewportLoadingIndicator, null);\n }\n\n var showStackLoadingProgressBar = this.props.stackPercentComplete !== undefined;\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n return React.createElement(\"div\", {\n className: \"ImageThumbnail\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-canvas\"\n }, renderIntoCanvas ? React.createElement(\"canvas\", {\n ref: this.canvas,\n width: this.props.width,\n height: this.props.height\n }) : React.createElement(\"img\", {\n className: \"static-image\",\n src: this.props.imageSrc //width={this.props.width}\n ,\n height: this.props.height,\n alt: ''\n })), loadingOrError, showStackLoadingProgressBar && React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar-inner\",\n style: {\n width: \"\".concat(this.props.stackPercentComplete, \"%\")\n }\n })));\n }\n }]);\n\n return ImageThumbnail;\n}(PureComponent);\n\n_defineProperty(ImageThumbnail, \"propTypes\", {\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n width: propTypes.number.isRequired,\n height: propTypes.number.isRequired,\n stackPercentComplete: propTypes.number.isRequired\n});\n\n_defineProperty(ImageThumbnail, \"defaultProps\", {\n error: false,\n stackPercentComplete: 0,\n width: 217,\n height: 123\n});\n\nvar css$f = \":root {\\n --series-count-background-color: #678696;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n}\\n.ThumbnailEntry {\\n cursor: pointer;\\n display: table;\\n}\\n.ThumbnailEntry .p-x-1 {\\n padding: 0 1rem;\\n}\\n.ThumbnailEntry .series-details {\\n display: flex;\\n flex-direction: row;\\n color: var(--text-primary-color);\\n font-size: 14px;\\n line-height: 1.3em;\\n margin-top: 5px;\\n margin-left: 1rem;\\n margin-right: 1rem;\\n max-width: 217px;\\n min-height: 36px;\\n position: relative;\\n word-wrap: break-word;\\n}\\n.ThumbnailEntry .series-details .series-description {\\n flex-grow: 1;\\n}\\n.ThumbnailEntry .series-details.info-only .series-description {\\n display: none;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information {\\n display: flex;\\n flex-grow: 1;\\n float: none;\\n max-width: none;\\n padding-right: 0;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item {\\n flex: 1;\\n text-align: center;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .icon,\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n display: inline;\\n float: none;\\n line-height: 25px;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n margin-left: 0;\\n width: auto;\\n}\\n.ThumbnailEntry .series-information {\\n padding-right: 4px;\\n max-width: 50px;\\n}\\n.ThumbnailEntry .series-information .item-frames .icon {\\n height: 18px;\\n}\\n.ThumbnailEntry .series-information .value {\\n color: var(--text-secondary-color);\\n display: inline-block;\\n float: right;\\n font-size: 12px;\\n margin-left: 4px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: calc(100% - 15px);\\n}\\n.ThumbnailEntry .series-information .icon {\\n color: var(--active-color);\\n display: inline-block;\\n float: left;\\n font-size: 10px;\\n font-weight: 900;\\n text-align: right;\\n width: 11px;\\n}\\n.ThumbnailEntry .series-information .icon div {\\n background-color: var(--series-count-background-color);\\n margin-top: 6px;\\n position: relative;\\n}\\n.ThumbnailEntry .series-information .icon div:after {\\n background-color: var(--active-color);\\n box-shadow: 1px 1px rgba(0,0,0,0.115);\\n left: -5px;\\n position: absolute;\\n top: -5px;\\n}\\n.ThumbnailEntry .series-information .icon div,\\n.ThumbnailEntry .series-information .icon div:after {\\n border: 1px solid var(--series-count-background-color);\\n content: '';\\n display: inline-block;\\n height: 11px;\\n width: 11px;\\n}\\n.image-thumbnail-clone {\\n z-index: 100000;\\n pointer-events: none;\\n}\\n.image-thumbnail-clone:hover {\\n border-color: var(--hover-color);\\n box-shadow: none;\\n}\\n\";\nstyleInject(css$f);\n\nvar ThumbnailEntry =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntry, _Component);\n\n function ThumbnailEntry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThumbnailEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThumbnailEntry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n if (_this.props.onClick) {\n _this.props.onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDoubleClick\", function () {\n if (_this.props.onDoubleClick) {\n _this.props.onDoubleClick();\n }\n });\n\n return _this;\n }\n\n _createClass(ThumbnailEntry, [{\n key: \"render\",\n value: function render() {\n var hasInstanceNumber = this.props.instanceNumber !== undefined;\n var className = classnames('ThumbnailEntry noselect', {\n active: this.props.active\n });\n return React.createElement(\"div\", {\n className: className,\n onClick: this.onClick,\n onDoubleClick: this.onDoubleClick,\n onMouseDown: this.onMouseDown\n }, React.createElement(\"div\", {\n className: \"p-x-1\"\n }, React.createElement(ImageThumbnail, {\n imageSrc: this.props.imageSrc,\n imageId: this.props.imageId,\n error: this.props.error,\n stackPercentComplete: this.props.stackPercentComplete\n })), React.createElement(\"div\", {\n className: 'series-details'\n }, React.createElement(\"div\", {\n className: \"series-description\"\n }, this.props.seriesDescription), React.createElement(\"div\", {\n className: \"series-information\"\n }, React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"S:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.seriesNumber)), hasInstanceNumber && React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"I:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.instanceNumber)), React.createElement(\"div\", {\n className: \"item item-frames clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, React.createElement(\"div\", null)), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.numImageFrames)))));\n }\n }]);\n\n return ThumbnailEntry;\n}(Component);\n\n_defineProperty(ThumbnailEntry, \"defaultProps\", {\n active: false,\n error: false,\n stackPercentComplete: 0\n});\n\n_defineProperty(ThumbnailEntry, \"propTypes\", {\n id: propTypes.string.isRequired,\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n active: propTypes.bool.isRequired,\n stackPercentComplete: propTypes.number,\n seriesDescription: propTypes.string,\n seriesNumber: propTypes.string,\n instanceNumber: propTypes.string,\n numImageFrames: propTypes.number,\n onDoubleClick: propTypes.func,\n onClick: propTypes.func\n});\n\n// if they have the same string type.\n\nvar Types$2 = {\n THUMBNAIL: 'thumbnail'\n};\nvar thumbnailSource = {\n /*canDrag(props) {\n return props.error === false;\n },*/\n beginDrag: function beginDrag(props) {\n return props;\n },\n endDrag: function endDrag(props, monitor) {\n //const item = monitor.getItem();\n var dropResult = monitor.getDropResult();\n }\n};\n\nvar ThumbnailEntryDragSource =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntryDragSource, _Component);\n\n function ThumbnailEntryDragSource() {\n _classCallCheck(this, ThumbnailEntryDragSource);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThumbnailEntryDragSource).apply(this, arguments));\n }\n\n _createClass(ThumbnailEntryDragSource, [{\n key: \"render\",\n value: function render() {\n var connectDragSource = this.props.connectDragSource;\n var dropEffect = 'copy';\n return connectDragSource(React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, this.props)), {\n dropEffect: dropEffect\n });\n }\n }]);\n\n return ThumbnailEntryDragSource;\n}(Component);\n\n_defineProperty(ThumbnailEntryDragSource, \"propTypes\", {\n connectDragSource: propTypes.func.isRequired,\n isDragging: propTypes.bool.isRequired\n});\n\n_defineProperty(ThumbnailEntryDragSource, \"defaultProps\", {\n isDragging: false\n});\n\nvar collect$2 = function collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n};\n\nvar ThumbnailEntryDragSource$1 = lib_4(Types$2.THUMBNAIL, thumbnailSource, collect$2)(ThumbnailEntryDragSource);\n\nvar css$g = \".StudyBrowser {\\n float: left;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n background-color: #000;\\n padding-bottom: 20px;\\n}\\n.StudyBrowser .scrollable-study-thumbnails {\\n height: 100%;\\n overflow-y: auto;\\n overflow-x: hidden;\\n padding-bottom: 50px;\\n padding-right: 16px;\\n padding-left: 4px;\\n margin-right: -16px;\\n display: flex;\\n flex-direction: column;\\n}\\n.StudyBrowser .scrollable-study-thumbnails::-webkit-scrollbar {\\n display: none;\\n}\\n.StudyBrowser .scrollable-study-thumbnails .ThumbnailEntryContainer {\\n margin: 0 auto;\\n padding-top: 1rem;\\n padding-bottom: 1.5rem;\\n}\\n.draggable {\\n cursor: copy;\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n}\\n\";\nstyleInject(css$g);\n\nvar StudyBrowser =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyBrowser, _Component);\n\n function StudyBrowser() {\n _classCallCheck(this, StudyBrowser);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudyBrowser).apply(this, arguments));\n }\n\n _createClass(StudyBrowser, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var studies = this.props.studies;\n var thumbnails = studies.map(function (study, studyIndex) {\n return study.thumbnails.map(function (thumb, thumbIndex) {\n if (_this.props.supportsDragAndDrop) {\n return React.createElement(ThumbnailEntryDragSource$1, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n })));\n }\n });\n });\n var components = thumbnails.flat();\n return React.createElement(\"div\", {\n className: \"StudyBrowser\"\n }, React.createElement(\"div\", {\n className: \"scrollable-study-thumbnails\"\n }, components));\n }\n }]);\n\n return StudyBrowser;\n}(Component);\n\n_defineProperty(StudyBrowser, \"defaultProps\", {\n studies: [],\n supportsDragAndDrop: true\n});\n\n_defineProperty(StudyBrowser, \"propTypes\", {\n studies: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n onThumbnailClick: propTypes.func,\n onThumbnailDoubleClick: propTypes.func\n});\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar css$h = \".studyListToolbar {\\n background-color: var(--ui-gray-darker);\\n height: 75px;\\n margin-bottom: 2px;\\n padding: 0 8%;\\n}\\n.studyListToolbar>div {\\n display: inline-block;\\n}\\n.studyListToolbar .header {\\n font-size: 22px;\\n font-weight: 300;\\n color: var(--table-text-secondary-color);\\n line-height: 75px;\\n}\\n.studyListToolbar .studylistToolbar {\\n height: 75px;\\n line-height: 75px;\\n}\\n.studyListToolbar .studyCount {\\n color: var(--large-numbers-color);\\n font-size: 40px;\\n font-weight: 100;\\n line-height: 75px;\\n}\\n.theadBackground {\\n height: 121px;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before,\\n.theadBackground:after {\\n content: '';\\n display: block;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before {\\n background-color: var(--ui-gray-darker);\\n height: 100%;\\n top: 0;\\n z-index: 1;\\n}\\n.theadBackground:after {\\n background-color: var(--large-numbers-color);\\n bottom: -1px;\\n height: 1px;\\n z-index: 3;\\n}\\n#studyListContainer {\\n width: 100%;\\n padding: 0 8%;\\n position: absolute;\\n z-index: 2;\\n}\\n#studyListContainer .loadingTextDiv {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n}\\n#studyListContainer .notFound {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n font-weight: 200;\\n text-align: center;\\n}\\n#studyListContainer table#tblStudyList tr {\\n height: 20px;\\n}\\n#studyListContainer table#tblStudyList thead {\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList thead tr th {\\n padding: 0;\\n border-bottom: solid 1px var(--ui-border-color-active);\\n width: 100%;\\n}\\n#studyListContainer table#tblStudyList thead tr th.studyDate {\\n min-width: 230px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell {\\n display: inline-block;\\n cursor: pointer;\\n width: 100%;\\n min-width: 95px;\\n margin: 0 auto;\\n color: var(--table-text-primary-color);\\n font-weight: 400;\\n padding: 20px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell span {\\n font-size: 15px;\\n float: left;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell i {\\n margin: 0 5px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:hover {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell.active,\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:active {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search {\\n height: 40px;\\n margin: 0 5px 20px 5px;\\n padding: 0 20px;\\n cursor: pointer;\\n border: none;\\n background-color: var(--input-background-color);\\n color: var(--input-placeholder-color);\\n font-size: 10pt;\\n font-weight: normal;\\n width: calc(100% - 10px);\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-webkit-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-ms-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search.invisible {\\n visibility: hidden;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:active,\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:hover {\\n background-color: var(--input-background-color);\\n}\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-year-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-month-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-day-field:not([aria-valuenow]) {\\n color: transparent;\\n}\\n#studyListContainer table#tblStudyList tbody tr {\\n padding: 5px;\\n background-color: #000;\\n}\\n#studyListContainer table#tblStudyList tbody tr:nth-child(even) {\\n background-color: var(--ui-gray-darker);\\n}\\n#studyListContainer table#tblStudyList tbody tr td {\\n height: 40px;\\n line-height: 40px;\\n color: var(--table-text-primary-color);\\n font-weight: 300;\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList tbody tr td.emptyValue {\\n color: var(--ui-gray-light);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover,\\n#studyListContainer table#tblStudyList tbody tr:active,\\n#studyListContainer table#tblStudyList tbody tr.active {\\n background-color: var(--table-hover-color);\\n color: var(--text-primary-color);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover td,\\n#studyListContainer table#tblStudyList tbody tr:active td,\\n#studyListContainer table#tblStudyList tbody tr.active td {\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n background-color: var(--table-hover-color);\\n}\\n@media only screen and (max-width: 1362px) {\\n #studyListContainer {\\n padding: 0 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 5%;\\n }\\n}\\n@media only screen and (max-width: 1161px) {\\n #studyListContainer {\\n padding: 0 $tablePaddingBigWidth;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 3%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 3%;\\n }\\n}\\n@media only screen and (max-width: 1069px) {\\n .theadBackground {\\n height: 101px;\\n }\\n .studylist-pagination > .row {\\n margin-right: 0;\\n }\\n .studyListToolbar {\\n padding: 0 5px;\\n }\\n #studyListContainer {\\n padding: 0;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th input.worklist-search {\\n padding: 10px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell {\\n padding: 10px 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell i {\\n width: auto;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer .worklistPagination .row {\\n margin-left: 0;\\n margin-right: 0;\\n }\\n}\\n\";\nstyleInject(css$h);\n\nvar css$i = \".studyListToolbar .addNewStudy {\\n margin: 0 10px;\\n}\\n.studyListToolbar .addNewStudy label {\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n cursor: pointer;\\n}\\n.studyListToolbar .addNewStudy:hover {\\n color: var(--hover-color);\\n}\\n.studyListToolbar .addNewStudy:active {\\n color: var(--active-color);\\n}\\n.studyListToolbar .addNewStudy input {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\n\";\nstyleInject(css$i);\n\nvar StudylistToolbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(StudylistToolbar, _PureComponent);\n\n function StudylistToolbar() {\n _classCallCheck(this, StudylistToolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudylistToolbar).apply(this, arguments));\n }\n\n _createClass(StudylistToolbar, [{\n key: \"clear\",\n value: function clear(e) {\n e.target.value = null;\n }\n }, {\n key: \"getImportTool\",\n value: function getImportTool() {\n if (this.props.onImport && this.props.studyListFunctionsEnabled) {\n return React.createElement(\"div\", {\n className: \"addNewStudy btn-file\"\n }, React.createElement(\"label\", {\n htmlFor: \"btnImport\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }), \"Import study\"), React.createElement(\"input\", {\n id: \"btnImport\",\n onChange: this.props.onImport,\n onClick: this.clear,\n className: \"js-import-files\",\n type: \"file\",\n webkitdirectory: \"true\",\n directory: \"true\",\n multiple: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"studylistToolbar\"\n }, this.getImportTool());\n }\n }]);\n\n return StudylistToolbar;\n}(PureComponent);\n\n_defineProperty(StudylistToolbar, \"propTypes\", {\n studyListFunctionsEnabled: propTypes.bool.isRequired,\n onImport: propTypes.func\n});\n\n_defineProperty(StudylistToolbar, \"defaultProps\", {\n studyListFunctionsEnabled: true\n});\n\nfunction LoadingText() {\n return React.createElement(\"div\", {\n className: \"loadingTextDiv\"\n }, React.createElement(\"h5\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spinner fa-pulse\"\n })));\n}\n\nvar css$j = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --primary-background-color: #000;\\n}\\n.pagination-area {\\n color: var(--text-secondary-color);\\n font-size: 13px;\\n font-weight: normal !important;\\n}\\n.pagination-area label {\\n font-weight: normal;\\n}\\n.pagination-area select {\\n margin: 5px;\\n background-color: var(--primary-background-color);\\n color: #fff;\\n}\\n.rows-per-page label.wrapperLabel {\\n display: inline-table !important;\\n margin: 0 4px;\\n}\\n.rows-per-page label.wrapperLabel select {\\n margin: 0px 4px 0px 4px;\\n width: 42px;\\n}\\n.page-buttons {\\n margin: 0;\\n text-align: right;\\n}\\n.page-buttons label {\\n font-weight: normal;\\n}\\n.page-buttons label ul.pagination-control {\\n margin: 0;\\n}\\n.page-buttons label ul.pagination-control li {\\n display: table-cell;\\n padding: 5px 2px;\\n}\\n.page-buttons label ul.pagination-control li button {\\n padding: 4px 8px;\\n background-color: var(--primary-background-color);\\n border-color: var(--ui-gray);\\n color: var(--ui-gray-darkest);\\n color: #fff;\\n text-decoration: none;\\n}\\n.page-buttons label ul.pagination-control li button:hover:enabled {\\n color: var(--active-color);\\n}\\n.page-buttons label ul.pagination-control li .active button {\\n background-color: var(--ui-gray);\\n border-color: #ddd;\\n color: #fff;\\n}\\n\";\nstyleInject(css$j);\n\nvar PaginationArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PaginationArea, _PureComponent);\n\n function PaginationArea() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PaginationArea);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationArea)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nextPage\", function () {\n _this.props.nextPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"prevPage\", function () {\n _this.props.prevPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onRowsPerPageChange\", function (event) {\n _this.props.onRowsPerPageChange(parseInt(event.target.value));\n });\n\n return _this;\n }\n\n _createClass(PaginationArea, [{\n key: \"renderPaginationButtons\",\n value: function renderPaginationButtons() {\n return React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-buttons noselect\"\n }, React.createElement(\"label\", null, React.createElement(\"ul\", {\n className: \"pagination-control no-margins\"\n }, React.createElement(\"li\", {\n className: \"page-item prev\"\n }, React.createElement(\"button\", {\n onClick: this.prevPage,\n disabled: this.props.currentPage === 0,\n className: \"btn page-link\"\n }, \"Previous\")), React.createElement(\"li\", {\n className: \"page-item next\"\n }, React.createElement(\"button\", {\n onClick: this.nextPage,\n disabled: this.props.currentPage === this.props.numberOfPages - 1,\n className: \"btn page-link\"\n }, \"Next\"))))));\n }\n }, {\n key: \"renderRowsPerPageDropdown\",\n value: function renderRowsPerPageDropdown() {\n return React.createElement(\"div\", {\n className: \"form-inline form-group rows-per-page\"\n }, React.createElement(\"span\", null, \"Show\"), React.createElement(\"select\", {\n onChange: this.onRowsPerPageChange,\n defaultValue: this.props.rowsPerPage\n }, this.props.pageOptions.map(function (pageNumber) {\n return React.createElement(\"option\", {\n key: pageNumber,\n value: pageNumber\n }, pageNumber);\n })), React.createElement(\"span\", null, \"rows per page\"));\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n name: \"paginationArea\"\n }, React.createElement(\"div\", {\n className: \"pagination-area\"\n }, React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"div\", {\n className: \"col-xs-4 col-sm-3 col-md-3\"\n }, this.renderRowsPerPageDropdown()), React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-number pull-right\"\n }, this.renderPaginationButtons())))));\n }\n }]);\n\n return PaginationArea;\n}(PureComponent);\n\n_defineProperty(PaginationArea, \"defaultProps\", {\n pageOptions: [5, 10, 25, 50, 100],\n rowsPerPage: 25,\n currentPage: 0,\n numberOfPages: 1\n});\n\n_defineProperty(PaginationArea, \"propTypes\", {\n pageOptions: propTypes.array.isRequired,\n rowsPerPage: propTypes.number.isRequired,\n currentPage: propTypes.number.isRequired,\n numberOfPages: propTypes.number.isRequired,\n nextPageFunc: propTypes.func,\n prevPageFunc: propTypes.func,\n onRowsPerPageChange: propTypes.func\n});\n\nvar StudyList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyList, _Component);\n\n function StudyList(props) {\n var _this;\n\n _classCallCheck(this, StudyList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyList).call(this, props));\n var sortData = {};\n var sortClasses = {\n patientName: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n patientId: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n accessionNumber: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDate: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n modality: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDescription: StudyList.DEFAULT_SORTABLE_ICON_CLS\n };\n\n if (props.defaultSort) {\n sortData.field = props.defaultSort.field;\n sortData.order = props.defaultSort.order;\n sortClasses[props.defaultSort.field] = props.defaultSort.order === 'desc' ? StudyList.DESC_SORT_ICON_CLS : StudyList.ASC_SORT_ICON_CLS;\n }\n\n _this.state = {\n loading: false,\n error: false,\n sortClasses: sortClasses,\n searchData: {\n sortData: sortData,\n currentPage: _this.props.currentPage,\n rowsPerPage: _this.props.rowsPerPage\n },\n highlightedItem: ''\n };\n _this.getChangeHandler = _this.getChangeHandler.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onInputKeydown = _this.onInputKeydown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.nextPage = _this.nextPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.prevPage = _this.prevPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onRowsPerPageChange = _this.onRowsPerPageChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(StudyList, [{\n key: \"getChangeHandler\",\n value: function getChangeHandler(key) {\n var _this2 = this;\n\n return function (event) {\n _this2.setSearchData(key, event.target.value);\n };\n }\n }, {\n key: \"setSearchData\",\n value: function setSearchData(key, value, callback) {\n var searchData = this.state.searchData;\n searchData[key] = value;\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"setSearchDataBatch\",\n value: function setSearchDataBatch(keyValues, callback) {\n var searchData = this.state.searchData;\n Object.keys(keyValues).forEach(function (key) {\n searchData[key] = keyValues[key];\n });\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"onInputKeydown\",\n value: function () {\n var _onInputKeydown = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(event) {\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation(); // reset the page because user is doing a new search\n\n this.setSearchData('currentPage', 0, this.search);\n }\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onInputKeydown(_x) {\n return _onInputKeydown.apply(this, arguments);\n }\n\n return onInputKeydown;\n }()\n }, {\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2() {\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n this.setState({\n loading: true,\n error: false\n });\n _context2.next = 4;\n return this.props.onSearch(this.state.searchData);\n\n case 4:\n _context2.next = 10;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2[\"catch\"](0);\n this.setState({\n error: true\n });\n throw new Error(_context2.t0);\n\n case 10:\n _context2.prev = 10;\n this.setState({\n loading: false\n });\n return _context2.finish(10);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6, 10, 13]]);\n }));\n\n function search() {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"renderNoMachingResults\",\n value: function renderNoMachingResults() {\n if (!this.props.studies.length && !this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"No matching results\");\n }\n }\n }, {\n key: \"renderHasError\",\n value: function renderHasError() {\n if (this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"There was an error fetching studies\");\n }\n }\n }, {\n key: \"renderIsLoading\",\n value: function renderIsLoading() {\n if (this.state.loading) {\n return React.createElement(\"div\", {\n className: \"loading\"\n }, React.createElement(LoadingText, null));\n }\n }\n }, {\n key: \"nextPage\",\n value: function nextPage(currentPage) {\n currentPage = currentPage + 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"prevPage\",\n value: function prevPage(currentPage) {\n currentPage = currentPage - 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"onRowsPerPageChange\",\n value: function onRowsPerPageChange(rowsPerPage) {\n this.setSearchDataBatch({\n rowsPerPage: rowsPerPage,\n currentPage: 0\n }, this.search);\n }\n }, {\n key: \"onSortClick\",\n value: function onSortClick(key) {\n var _this3 = this;\n\n return function () {\n var sortClasses = _this3.state.sortClasses;\n var order;\n\n if (sortClasses[key] === StudyList.ASC_SORT_ICON_CLS) {\n sortClasses[key] = StudyList.DESC_SORT_ICON_CLS;\n order = 'desc';\n } else {\n sortClasses[key] = StudyList.ASC_SORT_ICON_CLS;\n order = 'asc';\n }\n\n Object.keys(sortClasses).forEach(function (sortClassKey) {\n if (sortClassKey !== key) {\n sortClasses[sortClassKey] = StudyList.DEFAULT_SORTABLE_ICON_CLS;\n }\n });\n\n _this3.setState({\n sortClasses: sortClasses\n }, function () {\n _this3.setSearchData('sortData', {\n field: key,\n order: order\n }, _this3.search);\n });\n };\n }\n }, {\n key: \"onHighlightItem\",\n value: function onHighlightItem(studyItemUid) {\n this.setState({\n highlightedItem: studyItemUid\n });\n }\n }, {\n key: \"renderTableRow\",\n value: function renderTableRow(study) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: study.studyInstanceUID,\n className: this.state.highlightedItem === study.studyInstanceUID ? 'studylistStudy noselect active' : 'studylistStudy noselect',\n onClick: function onClick() {\n _this4.onHighlightItem(study.studyInstanceUID);\n },\n onMouseDown: function onMouseDown(event) {\n // middle/wheel click\n if (event.button === 1) {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n },\n onDoubleClick: function onDoubleClick() {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n }, React.createElement(\"td\", {\n className: \"patientName\"\n }, study.patientName), React.createElement(\"td\", {\n className: \"patientId\"\n }, study.patientId), React.createElement(\"td\", {\n className: \"accessionNumber\"\n }, study.accessionNumber), React.createElement(\"td\", {\n className: \"studyDate\"\n }, study.studyDate), React.createElement(\"td\", {\n className: \"modalities\"\n }, study.modalities), React.createElement(\"td\", {\n className: \"studyDescription\"\n }, study.studyDescription));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n className: \"StudyList\"\n }, React.createElement(\"div\", {\n className: \"studyListToolbar clearfix\"\n }, React.createElement(\"div\", {\n className: \"header pull-left\"\n }, \"Study List\"), React.createElement(\"div\", {\n className: \"studyCount pull-right\"\n }, this.props.studyCount), React.createElement(\"div\", {\n className: \"pull-right\"\n }, React.createElement(StudylistToolbar, {\n studyListFunctionsEnabled: this.props.studyListFunctionsEnabled,\n onImport: this.props.onImport\n }))), React.createElement(\"div\", {\n className: \"theadBackground\"\n }), React.createElement(\"div\", {\n id: \"studyListContainer\"\n }, React.createElement(\"table\", {\n id: \"tblStudyList\",\n className: \"studylistResult table noselect\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"patientName\"\n }, React.createElement(\"div\", {\n id: \"_patientName\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientName')\n }, React.createElement(\"span\", null, \"Patient Name\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientName\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientName\",\n value: this.state.patientName,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientName')\n })), React.createElement(\"th\", {\n className: \"patientId\"\n }, React.createElement(\"div\", {\n id: \"_patientId\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientId')\n }, React.createElement(\"span\", null, \"MRN\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientId\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientId\",\n value: this.state.patientId,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientId')\n })), React.createElement(\"th\", {\n className: \"accessionNumber\"\n }, React.createElement(\"div\", {\n id: \"_accessionNumber\",\n className: \"sortingCell\",\n onClick: this.onSortClick('accessionNumber')\n }, React.createElement(\"span\", null, \"Accession #\"), React.createElement(\"i\", {\n className: this.state.sortClasses.accessionNumber\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"accessionNumber\",\n value: this.state.accessionNumber,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('accessionNumber')\n })), React.createElement(\"th\", {\n className: \"studyDate\"\n }, React.createElement(\"div\", {\n id: \"_studyDate\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDate')\n }, React.createElement(\"span\", null, \"Study Date\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDate\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n name: \"daterange\",\n id: \"studyDate\",\n value: this.state.studyDateRange,\n onChange: this.getChangeHandler('studyDateRange')\n })), React.createElement(\"th\", {\n className: \"modality\"\n }, React.createElement(\"div\", {\n id: \"_modality\",\n className: \"sortingCell\",\n onClick: this.onSortClick('modality')\n }, React.createElement(\"span\", null, \"Modality\"), React.createElement(\"i\", {\n className: this.state.sortClasses.modality\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"modality\",\n onKeyDown: this.onInputKeydown,\n value: this.state.modality,\n onChange: this.getChangeHandler('modality')\n })), React.createElement(\"th\", {\n className: \"studyDescription\"\n }, React.createElement(\"div\", {\n id: \"_studyDescription\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDescription')\n }, React.createElement(\"span\", null, \"Study Description\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDescription\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"studyDescription\",\n onKeyDown: this.onInputKeydown,\n value: this.state.studyDescription,\n onChange: this.getChangeHandler('studyDescription')\n })))), React.createElement(\"tbody\", {\n id: \"studyListData\"\n }, this.props.studies.map(function (study) {\n return _this5.renderTableRow(study);\n }))), this.renderIsLoading(), this.renderHasError(), this.renderNoMachingResults(), React.createElement(PaginationArea, {\n currentPage: this.state.searchData.currentPage,\n nextPageFunc: this.nextPage,\n prevPageFunc: this.prevPage,\n onRowsPerPageChange: this.onRowsPerPageChange,\n rowsPerPage: this.state.searchData.rowsPerPage,\n numberOfPages: Math.ceil(this.props.studyCount / this.state.searchData.rowsPerPage)\n })));\n }\n }]);\n\n return StudyList;\n}(Component);\n\n_defineProperty(StudyList, \"propTypes\", {\n studies: propTypes.array.isRequired,\n onSelectItem: propTypes.func.isRequired,\n onSearch: propTypes.func.isRequired,\n studyCount: propTypes.number.isRequired,\n currentPage: propTypes.number,\n rowsPerPage: propTypes.number,\n studyListFunctionsEnabled: propTypes.bool,\n defaultSort: propTypes.shape({\n field: propTypes.string.isRequired,\n order: propTypes.oneOf(['desc', 'asc']).isRequired\n }),\n onImport: propTypes.func\n});\n\n_defineProperty(StudyList, \"defaultProps\", {\n currentPage: 0,\n rowsPerPage: 25\n});\n\n_defineProperty(StudyList, \"DEFAULT_SORTABLE_ICON_CLS\", 'fa fa-fw fa-sort');\n\n_defineProperty(StudyList, \"DESC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-desc');\n\n_defineProperty(StudyList, \"ASC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-asc');\n\nfunction SimpleToolbarButton(props) {\n var className = classnames(props.className, 'btn btn-sm btn-default');\n return React.createElement(\"button\", {\n id: props.id,\n type: \"button\",\n className: className,\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: props.title\n }, React.createElement(\"span\", {\n className: props.iconClassName\n }));\n}\nSimpleToolbarButton.propTypes = {\n iconClassName: propTypes.string,\n title: propTypes.string,\n className: propTypes.string,\n id: propTypes.string,\n onClick: propTypes.func\n};\n\nfunction getDefaultButtonData() {\n var buttonData = [];\n buttonData.push({\n id: 'wwwc',\n title: 'WW/WC',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-sun-o'\n });\n buttonData.push({\n id: 'wwwcRegion',\n title: 'Window by Region',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square'\n });\n buttonData.push({\n id: 'magnify',\n title: 'Magnify',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle'\n });\n buttonData.push({\n id: 'annotate',\n title: 'Annotation',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-h'\n });\n buttonData.push({\n id: 'invert',\n title: 'Invert',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-adjust'\n });\n buttonData.push({\n id: 'zoom',\n title: 'Zoom',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-search'\n });\n buttonData.push({\n id: 'pan',\n title: 'Pan',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows'\n });\n buttonData.push({\n id: 'stackScroll',\n title: 'Stack Scroll',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-bars'\n });\n buttonData.push({\n id: 'length',\n title: 'Length Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-v'\n });\n buttonData.push({\n id: 'angle',\n title: 'Angle Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-angle-left'\n });\n buttonData.push({\n id: 'dragProbe',\n title: 'Pixel Probe',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-dot-circle-o'\n });\n buttonData.push({\n id: 'ellipticalRoi',\n title: 'Elliptical ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle-o'\n });\n buttonData.push({\n id: 'rectangleRoi',\n title: 'Rectangle ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square-o'\n });\n buttonData.push({\n id: 'resetViewport',\n title: 'Reset Viewport',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-undo'\n });\n buttonData.push({\n id: 'clearTools',\n title: 'Clear tools',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-trash'\n });\n return buttonData;\n}\n\nvar Toolbar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Toolbar, _Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Toolbar).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: \"render\",\n value: function render() {\n var maybePlayClipButton;\n\n if (this.props.includePlayClipButton) {\n maybePlayClipButton = React.createElement(PlayClipButton, null);\n }\n\n var maybeLayoutButton;\n\n if (this.props.includeLayoutButton) {\n maybeLayoutButton = React.createElement(LayoutButton, null);\n }\n\n return React.createElement(\"div\", {\n id: \"toolbar\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, this.props.buttons.map(function (button, i) {\n return React.createElement(SimpleToolbarButton, _extends({}, button, {\n key: i\n }));\n }), maybePlayClipButton, maybeLayoutButton));\n }\n }]);\n\n return Toolbar;\n}(Component);\nToolbar.propTypes = {\n buttons: propTypes.array.isRequired,\n includeLayoutButton: propTypes.bool.isRequired,\n includePlayClipButton: propTypes.bool.isRequired\n};\nToolbar.defaultProps = {\n buttons: getDefaultButtonData(),\n includeLayoutButton: true,\n includePlayClipButton: true\n};\n\nvar css$k = \".ToolbarButton {\\n height: 48px;\\n color: var(--default-color);\\n float: left;\\n text-align: center;\\n padding: 0 1rem;\\n cursor: pointer;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none; /* Non-prefixed version, currently\\n supported by Chrome and Opera */\\n}\\n.ToolbarButton svg {\\n height: 21px;\\n width: 21px;\\n margin: 2px;\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n.ToolbarButton i {\\n font-size: 18px;\\n line-height: 30px;\\n}\\n.ToolbarButton:hover {\\n color: var(--hover-color);\\n}\\n.ToolbarButton:hover svg {\\n fill: var(--hover-color);\\n stroke: var(--hover-color);\\n}\\n.ToolbarButton:hover i {\\n color: var(--hover-color);\\n}\\n.ToolbarButton.active,\\n.ToolbarButton:active {\\n color: var(--active-color);\\n}\\n.ToolbarButton.active svg,\\n.ToolbarButton:active svg {\\n fill: var(--active-color);\\n stroke: var(--active-color);\\n}\\n.ToolbarButton.active i,\\n.ToolbarButton:active i {\\n color: var(--active-color);\\n}\\n.ToolbarButton span.toolbar-button-label {\\n font-size: 12px;\\n font-weight: 500;\\n display: block;\\n}\\n\";\nstyleInject(css$k);\n\nfunction ToolbarButton(props) {\n var onClick = function onClick(event) {\n if (props.onClick) {\n props.onClick(event, props);\n }\n\n if (props.setToolActive) {\n props.setToolActive(props);\n }\n };\n\n var className = classnames(props.className, {\n active: props.active\n });\n var active = props.active,\n svgUrlActive = props.svgUrlActive,\n iconClassesActive = props.iconClassesActive,\n textActive = props.textActive;\n var svgUrl = props.svgUrl;\n\n if (active && svgUrlActive) {\n svgUrl = svgUrlActive;\n }\n\n var iconClasses = props.iconClasses;\n\n if (active && iconClassesActive) {\n iconClasses = iconClassesActive;\n }\n\n var label = props.text;\n\n if (active && textActive) {\n label = textActive;\n }\n\n return React.createElement(\"div\", {\n className: className,\n onClick: onClick\n }, svgUrl && React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: svgUrl\n })), iconClasses && React.createElement(\"i\", {\n className: iconClasses\n }), React.createElement(\"span\", {\n className: \"toolbar-button-label\"\n }, label));\n}\nToolbarButton.defaultProps = {\n command: 'ToolbarButton',\n onClick: function onClick() {//console.log(`ToolbarButton does not have an onClick event`);\n },\n className: 'ToolbarButton'\n};\nToolbarButton.propTypes = {\n active: propTypes.bool.isRequired,\n className: propTypes.string.isRequired,\n text: propTypes.string.isRequired,\n textActive: propTypes.string,\n iconClasses: propTypes.string,\n iconClassesActive: propTypes.string,\n svgUrl: propTypes.string,\n svgUrlActive: propTypes.string,\n onClick: propTypes.func,\n setToolActive: propTypes.func\n};\n\nvar css$l = \".ToolbarSection {\\n float: left;\\n background-color: var(--primary-background-color);\\n border-radius: 8px;\\n}\\n\";\nstyleInject(css$l);\n\nvar ToolbarSection =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ToolbarSection, _PureComponent);\n\n function ToolbarSection() {\n _classCallCheck(this, ToolbarSection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ToolbarSection).apply(this, arguments));\n }\n\n _createClass(ToolbarSection, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var items = this.props.buttons.map(function (item, index) {\n return React.createElement(ToolbarButton, _extends({\n key: index\n }, item, {\n active: item.command === _this.props.activeCommand,\n setToolActive: _this.props.setToolActive\n }));\n });\n return React.createElement(\"div\", {\n className: 'ToolbarSection'\n }, items);\n }\n }]);\n\n return ToolbarSection;\n}(PureComponent);\n\nToolbarSection.propTypes = {\n buttons: propTypes.array.isRequired,\n activeCommand: propTypes.string,\n setToolActive: propTypes.func\n};\n\nvar range = function range(start, end) {\n return new Array(end - start).fill().map(function (d, i) {\n return i + start;\n });\n};\nvar allowedKeys = [8, 13, 27, 32, 46].concat([12, 106, 107, 109, 110, 111], _toConsumableArray(range(218, 220)), _toConsumableArray(range(185, 190)), _toConsumableArray(range(111, 131)), _toConsumableArray(range(32, 41)), _toConsumableArray(range(47, 58)), _toConsumableArray(range(64, 91)));\nvar specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 191: '/',\n 224: 'meta'\n};\n\nvar HotKeysPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HotKeysPreferences, _Component);\n\n function HotKeysPreferences(props) {\n var _this;\n\n _classCallCheck(this, HotKeysPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HotKeysPreferences).call(this, props));\n _this.columns = {};\n Object.keys(_this.props.hotKeysData).forEach(function (key) {\n var hotKey = _this.props.hotKeysData[key];\n\n if (_this.columns.hasOwnProperty(hotKey.column)) {\n _this.columns[hotKey.column].push(key);\n } else {\n _this.columns[hotKey.column] = [key];\n }\n });\n _this.columnClass = \"col-md-\".concat(12 / Object.keys(_this.columns).length || 1);\n _this.state = {\n hotKeys: _this.props.hotKeysData,\n errorMessages: {}\n };\n _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(HotKeysPreferences, [{\n key: \"getKeysPressedArray\",\n value: function getKeysPressedArray(event) {\n var keysPressedArray = [];\n\n if (event.ctrlKey && !event.altKey) {\n keysPressedArray.push('CTRL');\n }\n\n if (event.shiftKey && !event.altKey) {\n keysPressedArray.push('SHIFT');\n }\n\n if (event.altKey && !event.ctrlKey) {\n keysPressedArray.push('ALT');\n }\n\n return keysPressedArray;\n }\n }, {\n key: \"getConflictingCommand\",\n value: function getConflictingCommand(currentToolKey, hotKeyCommand) {\n var _this2 = this;\n\n return Object.keys(this.state.hotKeys).find(function (tool) {\n var value = _this2.state.hotKeys[tool].command;\n return value && value === hotKeyCommand && tool !== currentToolKey;\n });\n }\n }, {\n key: \"updateInputText\",\n value: function updateInputText(toolKey, event) {\n var displayPressedKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pressedKeys = this.getKeysPressedArray(event);\n\n if (displayPressedKey) {\n var specialKeyName = specialKeys[event.which];\n var keyName = specialKeyName || event.key || String.fromCharCode(event.keyCode);\n pressedKeys.push(keyName.toUpperCase());\n }\n\n this.updateHotKeysState(toolKey, pressedKeys.join('+'));\n }\n }, {\n key: \"updateHotKeysState\",\n value: function updateHotKeysState(toolKey, command) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var hotKeys = this.state.hotKeys;\n hotKeys[toolKey].command = command;\n this.setState(hotKeys, callback);\n }\n }, {\n key: \"updateErrorsState\",\n value: function updateErrorsState(toolKey, errorMessage) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var errorMessages = this.state.errorMessages;\n errorMessages[toolKey] = errorMessage;\n this.setState({\n errorMessages: errorMessages\n }, callback);\n }\n }, {\n key: \"onInputKeyDown\",\n value: function onInputKeyDown(event, toolKey) {\n // Prevent ESC key from propagating and closing the modal\n if (event.key === 'Escape') {\n event.stopPropagation();\n }\n\n if (allowedKeys.includes(event.keyCode)) {\n this.updateInputText(toolKey, event, true);\n } else {\n this.updateInputText(toolKey, event, false);\n }\n\n event.preventDefault();\n }\n }, {\n key: \"onChange\",\n value: function onChange(event, toolKey) {\n var _this3 = this;\n\n if (event.ctrlKey || event.altKey || event.shiftKey) {\n return;\n }\n\n var hotKey = this.state.hotKeys[toolKey];\n var command = hotKey.command;\n var pressedKeys = command.split('+');\n var lastPressedKey = pressedKeys[pressedKeys.length - 1].toUpperCase(); // clear the prior errors\n\n this.setState({\n errorMessages: {}\n }, function () {\n // Check if it has a valid modifier\n var isModifier = ['CTRL', 'ALT', 'SHIFT'].includes(lastPressedKey);\n\n if (isModifier) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n /*\n * Check if it has some conflict\n */\n\n\n var conflictedCommandKey = _this3.getConflictingCommand(toolKey, command);\n\n if (conflictedCommandKey) {\n var conflictedCommand = _this3.state.hotKeys[conflictedCommandKey];\n\n _this3.updateErrorsState(toolKey, \"\\\"\".concat(conflictedCommand.label, \"\\\" is already using the \\\"\").concat(conflictedCommand.command, \"\\\" shortcut.\"));\n\n _this3.updateErrorsState(conflictedCommandKey, '');\n\n _this3.updateHotKeysState(toolKey, '');\n\n return;\n }\n /*\n * Check if is a valid combination\n */\n\n\n var modifierCommand = pressedKeys.slice(0, pressedKeys.length - 1).join('+').toUpperCase();\n var disallowedCombinations$$1 = HotKeysPreferences.disallowedCombinations[modifierCommand];\n var hasDisallowedCombinations = disallowedCombinations$$1 ? disallowedCombinations$$1.includes(lastPressedKey) : false;\n\n if (hasDisallowedCombinations) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n });\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(toolKey, hotKey) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: toolKey\n }, React.createElement(\"td\", {\n className: \"text-right p-r-1\"\n }, hotKey.label), React.createElement(\"td\", {\n width: \"200\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel \".concat(this.state.errorMessages[toolKey] !== undefined ? 'state-error' : '', \" \"),\n ref: function ref(input) {\n return _this4[toolKey] = input;\n },\n \"data-key\": \"defaultTool\"\n }, React.createElement(\"input\", {\n readOnly: true,\n type: \"text\",\n value: hotKey.command,\n vali: \"true\",\n className: \"form-control hotkey text-center\",\n onKeyDown: function onKeyDown(event) {\n return _this4.onInputKeyDown(event, toolKey);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.onChange(event, toolKey);\n }\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }), React.createElement(\"span\", {\n className: \"errorMessage\"\n }, this.state.errorMessages[toolKey]))));\n }\n }, {\n key: \"renderColumn\",\n value: function renderColumn(columnIndex, hotkeysColumn) {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n key: columnIndex,\n className: this.columnClass\n }, React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"text-right p-r-1\"\n }, \"Function\"), React.createElement(\"th\", {\n className: \"text-center\"\n }, \"Shortcut\"))), React.createElement(\"tbody\", null, hotkeysColumn.map(function (keyTool) {\n return _this5.renderRow(keyTool, _this5.state.hotKeys[keyTool]);\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return React.createElement(\"div\", {\n className: \"row\"\n }, Object.keys(this.columns).sort().map(function (columnIndex) {\n return _this6.renderColumn(columnIndex, _this6.columns[columnIndex]);\n }));\n }\n }]);\n\n return HotKeysPreferences;\n}(Component);\n\n_defineProperty(HotKeysPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$m = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n.presetIndex {\\n padding: 0px 10px 0px 10px;\\n}\\n\";\nstyleInject(css$m);\n\nvar WindowLevelPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(WindowLevelPreferences, _Component);\n\n function WindowLevelPreferences(props) {\n var _this;\n\n _classCallCheck(this, WindowLevelPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WindowLevelPreferences).call(this, props));\n _this.state = {\n data: _this.props.windowLevelData\n };\n return _this;\n }\n\n _createClass(WindowLevelPreferences, [{\n key: \"onChange\",\n value: function onChange(event, key, field) {\n var data = this.state.data;\n var entry = data[key];\n entry[field] = event.target.value;\n this.setState({\n data: data\n });\n\n if (this.props.onChange) {\n this.props.onChange(data);\n }\n }\n }, {\n key: \"getWLPreferencesRows\",\n value: function getWLPreferencesRows(key) {\n var _this2 = this;\n\n var entry = this.state.data[key];\n return React.createElement(\"tr\", {\n key: key\n }, React.createElement(\"td\", {\n className: \"p-r-1 text-center\"\n }, key), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.description,\n type: \"text\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'description');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.window,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'window');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.level,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'level');\n }\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"p-x-1 text-center presetIndex\"\n }, \"Preset\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Description\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Window\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Level\"))), React.createElement(\"tbody\", null, Object.keys(this.state.data).map(function (key) {\n return _this3.getWLPreferencesRows(key);\n })));\n }\n }]);\n\n return WindowLevelPreferences;\n}(Component);\n\n_defineProperty(WindowLevelPreferences, \"propTypes\", {\n windowLevelData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$n = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n\";\nstyleInject(css$n);\n\nvar UserPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferences, _Component);\n\n function UserPreferences() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, UserPreferences);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(UserPreferences)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n tabIndex: 0\n });\n\n return _this;\n }\n\n _createClass(UserPreferences, [{\n key: \"tabClick\",\n value: function tabClick(tabIndex) {\n this.setState({\n tabIndex: tabIndex\n });\n }\n }, {\n key: \"renderHotkeysTab\",\n value: function renderHotkeysTab() {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(HotKeysPreferences, {\n hotKeysData: this.props.hotKeysData\n })));\n }\n }, {\n key: \"renderWindowLevelTab\",\n value: function renderWindowLevelTab() {\n if (this.props.windowLevelData) {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(WindowLevelPreferences, {\n windowLevelData: this.props.windowLevelData\n })));\n }\n }\n }, {\n key: \"renderTabs\",\n value: function renderTabs(tabIndex) {\n if (tabIndex === 0) {\n return this.renderHotkeysTab();\n } else {\n return this.renderWindowLevelTab();\n }\n }\n }, {\n key: \"getTabClass\",\n value: function getTabClass(tabIndex) {\n return tabIndex === this.state.tabIndex ? 'nav-link active' : 'nav-link';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"dialog-separator-after\"\n }, React.createElement(\"ul\", {\n className: \"nav nav-tabs\"\n }, React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(0);\n },\n className: this.getTabClass(0)\n }, React.createElement(\"button\", null, \"Hotkeys\")), React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(1);\n },\n className: this.getTabClass(1)\n }, React.createElement(\"button\", null, \"Window Level\")))), this.renderTabs(this.state.tabIndex));\n }\n }]);\n\n return UserPreferences;\n}(Component);\n\n_defineProperty(UserPreferences, \"defaultProps\", {\n hotKeysData: {},\n windowLevelData: {}\n});\n\n_defineProperty(UserPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n windowLevelData: propTypes.object.isRequired\n});\n\nvar createChainableTypeChecker_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(createChainableTypeChecker_1);\n\nvar componentOrElement = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(componentOrElement);\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar ownerDocument_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(ownerDocument_1);\n\nvar activeElement_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = interopRequireDefault(ownerDocument_1);\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(activeElement_1);\n\nvar inDOM = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(inDOM);\n\nvar contains = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(contains);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning$1 = function() {};\n\nif (__DEV__) {\n warning$1 = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nvar warning_1 = warning$1;\n\nvar deprecated_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecated;\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] != null) {\n var messageKey = componentName + '.' + propName;\n\n (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n warned[messageKey] = true;\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(deprecated_1);\n\nvar elementType_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(elementType_1);\n\nvar hasClass_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hasClass_1);\n\nvar addClass_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(addClass_1);\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nvar removeClass = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\nvar _class = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = interopRequireDefault(addClass_1);\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = interopRequireDefault(removeClass);\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;\n});\n\nunwrapExports(_class);\nvar _class_1 = _class.addClass;\nvar _class_2 = _class.removeClass;\nvar _class_3 = _class.hasClass;\n\nvar camelize_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelize_1);\n\nvar camelizeStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = interopRequireDefault(camelize_1);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelizeStyle);\n\nvar hyphenate_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenate_1);\n\nvar hyphenateStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = interopRequireDefault(hyphenate_1);\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenateStyle);\n\nvar getComputedStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(getComputedStyle);\n\nvar removeStyle_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(removeStyle_1);\n\nvar properties = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}\n});\n\nunwrapExports(properties);\nvar properties_1 = properties.animationEnd;\nvar properties_2 = properties.animationDelay;\nvar properties_3 = properties.animationTiming;\nvar properties_4 = properties.animationDuration;\nvar properties_5 = properties.animationName;\nvar properties_6 = properties.transitionEnd;\nvar properties_7 = properties.transitionDuration;\nvar properties_8 = properties.transitionDelay;\nvar properties_9 = properties.transitionTiming;\nvar properties_10 = properties.transitionProperty;\nvar properties_11 = properties.transform;\n\nvar isTransform_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isTransform_1);\n\nvar style_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar _hyphenateStyle = interopRequireDefault(hyphenateStyle);\n\nvar _getComputedStyle2 = interopRequireDefault(getComputedStyle);\n\nvar _removeStyle = interopRequireDefault(removeStyle_1);\n\n\n\nvar _isTransform = interopRequireDefault(isTransform_1);\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(style_1);\n\nvar scrollbarSize_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(scrollbarSize_1);\n\nvar isWindow = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isWindow);\n\nvar isOverflowing_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\n\n\nvar _isWindow2 = _interopRequireDefault(isWindow);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument2.default)(node);\n var win = (0, _isWindow2.default)(doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow2.default)(container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isOverflowing_1);\n\nvar manageAriaHidden = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n});\n\nunwrapExports(manageAriaHidden);\nvar manageAriaHidden_1 = manageAriaHidden.ariaHidden;\nvar manageAriaHidden_2 = manageAriaHidden.hideSiblings;\nvar manageAriaHidden_3 = manageAriaHidden.showSiblings;\n\nvar ModalManager_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _class2 = _interopRequireDefault(_class);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\nfunction setContainerStyle(state, container) {\n var style = { overflow: 'hidden' };\n\n // we are only interested in the actual `style` here\n // becasue we will override it\n state.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (state.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n }\n\n (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n var style = _ref.style;\n\n\n Object.keys(style).forEach(function (key) {\n return container.style[key] = style[key];\n });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n var _this = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n _ref2$handleContainer = _ref2.handleContainerOverflow,\n handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n _classCallCheck(this, ModalManager);\n\n this.add = function (modal, container, className) {\n var modalIdx = _this.modals.indexOf(modal);\n var containerIdx = _this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = _this.modals.length;\n _this.modals.push(modal);\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.hideSiblings)(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n _this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n\n overflowing: (0, _isOverflowing2.default)(container)\n };\n\n if (_this.handleContainerOverflow) {\n setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n _this.containers.push(container);\n _this.data.push(data);\n\n return modalIdx;\n };\n\n this.remove = function (modal) {\n var modalIdx = _this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(_this.data, modal);\n var data = _this.data[containerIdx];\n var container = _this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n _this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (data.modals.length === 0) {\n data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n if (_this.handleContainerOverflow) {\n removeContainerStyle(data, container);\n }\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.showSiblings)(container, modal.mountNode);\n }\n _this.containers.splice(containerIdx, 1);\n _this.data.splice(containerIdx, 1);\n } else if (_this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n (0, manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n this.isTopModal = function (modal) {\n return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n };\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ModalManager_1);\n\nvar getContainer_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getContainer;\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(getContainer_1);\n\nvar ownerDocument$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ownerDocument$1);\n\nvar LegacyPortal = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(LegacyPortal);\n\nvar Portal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\n\n\nvar _LegacyPortal2 = _interopRequireDefault(LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Portal_1);\n\nvar RefHolder_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes$$1 = {\n children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n _inherits(RefHolder, _React$Component);\n\n function RefHolder() {\n _classCallCheck(this, RefHolder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n RefHolder.prototype.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes$$1;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(RefHolder_1);\n\nvar on_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(on_1);\n\nvar off_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(off_1);\n\nvar addEventListener = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\n\n\nvar _on2 = _interopRequireDefault(on_1);\n\n\n\nvar _off2 = _interopRequireDefault(off_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addEventListener);\n\nvar addFocusListener_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = void 0;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function remove() {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function remove() {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addFocusListener_1);\n\nvar Modal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _activeElement2 = _interopRequireDefault(activeElement_1);\n\n\n\nvar _contains2 = _interopRequireDefault(contains);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _deprecated2 = _interopRequireDefault(deprecated_1);\n\n\n\nvar _elementType2 = _interopRequireDefault(elementType_1);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\n\n\nvar _ModalManager2 = _interopRequireDefault(ModalManager_1);\n\n\n\nvar _Portal2 = _interopRequireDefault(Portal_1);\n\n\n\nvar _RefHolder2 = _interopRequireDefault(RefHolder_1);\n\n\n\nvar _addEventListener2 = _interopRequireDefault(addEventListener);\n\n\n\nvar _addFocusListener2 = _interopRequireDefault(addFocusListener_1);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n function Modal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Modal.prototype.omitProps = function omitProps(props, propTypes$$1) {\n\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes$$1, prop)) {\n newProps[prop] = props[prop];\n }\n });\n\n return newProps;\n };\n\n Modal.prototype.render = function render() {\n var _props = this.props,\n show = _props.show,\n container = _props.container,\n children = _props.children,\n Transition = _props.transition,\n backdrop = _props.backdrop,\n className = _props.className,\n style = _props.style,\n onExit = _props.onExit,\n onExiting = _props.onExiting,\n onEnter = _props.onEnter,\n onEntering = _props.onEntering,\n onEntered = _props.onEntered;\n\n\n var dialog = _react2.default.Children.only(children);\n var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n var mountModal = show || Transition && !this.state.exited;\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props,\n role = _dialog$props.role,\n tabIndex = _dialog$props.tabIndex;\n\n\n if (role === undefined || tabIndex === undefined) {\n dialog = (0, React.cloneElement)(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2.default.createElement(\n Transition,\n {\n appear: true,\n unmountOnExit: true,\n 'in': show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2.default.createElement(\n _Portal2.default,\n {\n ref: this.setMountNode,\n container: container,\n onRendered: this.onPortalRendered\n },\n _react2.default.createElement(\n 'div',\n _extends({\n ref: this.setModalNodeRef,\n role: role || 'dialog'\n }, filteredProps, {\n style: style,\n className: className\n }),\n backdrop && this.renderBackdrop(),\n _react2.default.createElement(\n _RefHolder2.default,\n { ref: this.setDialogRef },\n dialog\n )\n )\n );\n };\n\n Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n if (!this.props.show && nextProps.show) {\n this.checkForFocus();\n }\n };\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n show = _props2.show,\n transition = _props2.transition;\n\n\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n Modal.prototype.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) {\n return;\n }\n\n var dialogElement = this.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n\n if (!dialogElement.hasAttribute('tabIndex')) {\n (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n dialogElement.setAttribute('tabIndex', -1);\n }\n\n dialogElement.focus();\n }\n };\n\n Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n Modal.prototype.getDialogElement = function getDialogElement() {\n return _reactDom2.default.findDOMNode(this.dialog);\n };\n\n Modal.prototype.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes2.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes2.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes2.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => }\n * ```\n */\n renderBackdrop: _propTypes2.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes2.default.func,\n\n /**\n * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n * @deprecated\n */\n onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes2.default.func,\n\n /**\n * A style object for the backdrop component.\n */\n backdropStyle: _propTypes2.default.object,\n\n /**\n * A css class or classes for the backdrop component.\n */\n backdropClassName: _propTypes2.default.string,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes2.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes2.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the dialog component.\n */\n transition: _elementType2.default,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType2.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes2.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes2.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react2.default.createElement('div', props);\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = { exited: !this.props.show };\n\n this.renderBackdrop = function () {\n var _props3 = _this2.props,\n backdropStyle = _props3.backdropStyle,\n backdropClassName = _props3.backdropClassName,\n renderBackdrop = _props3.renderBackdrop,\n Transition = _props3.backdropTransition;\n\n\n var backdropRef = function backdropRef(ref) {\n return _this2.backdrop = ref;\n };\n\n var backdrop = renderBackdrop({\n ref: backdropRef,\n style: backdropStyle,\n className: backdropClassName,\n onClick: _this2.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2.default.createElement(\n Transition,\n {\n appear: true,\n 'in': _this2.props.show\n },\n backdrop\n );\n }\n\n return backdrop;\n };\n\n this.onPortalRendered = function () {\n _this2.autoFocus();\n\n if (_this2.props.onShow) {\n _this2.props.onShow();\n }\n };\n\n this.onShow = function () {\n var doc = (0, _ownerDocument2.default)(_this2);\n var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n };\n\n this.onHide = function () {\n _this2.props.manager.remove(_this2);\n\n _this2._onDocumentKeydownListener.remove();\n\n _this2._onDocumentKeyupListener.remove();\n\n _this2._onFocusinListener.remove();\n\n if (_this2.props.restoreFocus) {\n _this2.restoreLastFocus();\n }\n };\n\n this.setMountNode = function (ref) {\n _this2.mountNode = ref ? ref.getMountNode() : ref;\n };\n\n this.setModalNodeRef = function (ref) {\n _this2.modalNode = ref;\n };\n\n this.setDialogRef = function (ref) {\n _this2.dialog = ref;\n };\n\n this.handleHidden = function () {\n _this2.setState({ exited: true });\n _this2.onHide();\n\n if (_this2.props.onExited) {\n var _props4;\n\n (_props4 = _this2.props).onExited.apply(_props4, arguments);\n }\n };\n\n this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this2.props.onBackdropClick) {\n _this2.props.onBackdropClick(e);\n }\n\n if (_this2.props.backdrop === true) {\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyDown = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyDown) {\n _this2.props.onEscapeKeyDown(e);\n }\n\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyUp = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyUp) {\n _this2.props.onEscapeKeyUp(e);\n }\n }\n };\n\n this.checkForFocus = function () {\n if (_inDOM2.default) {\n _this2.lastFocus = (0, _activeElement2.default)();\n }\n };\n\n this.enforceFocus = function () {\n if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n return;\n }\n\n var dialogElement = _this2.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n dialogElement.focus();\n }\n };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Modal_1);\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({\n polyfill: polyfill\n});\n\nvar PropTypes = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.'); // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]);\n\nexports.classNamesShape = classNamesShape;\n});\n\nunwrapExports(PropTypes);\nvar PropTypes_1 = PropTypes.transitionTimeout;\nvar PropTypes_2 = PropTypes.classNamesShape;\nvar PropTypes_3 = PropTypes.timeoutsShape;\n\nvar Transition_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes$$1 = _interopRequireWildcard(propTypes);\n\nvar _react = _interopRequireDefault(React);\n\nvar _reactDom = _interopRequireDefault(reactDom);\n\n\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {(state) => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n * this.setState({ in: true });\n * }\n *\n * render() {\n * return (\n *
\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter;\n appear = timeout.appear;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n _this2.onTransitionEnd(node, timeouts.enter, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes$$1.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element.\n * This function is called with the current transition status\n * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n * to apply context specific props to a component.\n *\n * ```jsx\n * \n * {(status) => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes$$1.oneOfType([PropTypes$$1.func.isRequired, PropTypes$$1.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes$$1.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes$$1.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes$$1.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes$$1.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes$$1.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes$$1.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided\n *\n * You may specify a single timeout for all transitions like: `timeout={500}`,\n * or individually like:\n *\n * ```jsx\n * timeout={{\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * @type {number | { enter?: number, exit?: number }}\n */\n timeout: function timeout(props) {\n var pt = process.env.NODE_ENV !== \"production\" ? PropTypes.timeoutsShape : {}; if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes$$1.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, reactLifecyclesCompat_es.polyfill)(Transition);\n\nexports.default = _default;\n});\n\nunwrapExports(Transition_1);\nvar Transition_2 = Transition_1.EXITING;\nvar Transition_3 = Transition_1.ENTERED;\nvar Transition_4 = Transition_1.ENTERING;\nvar Transition_5 = Transition_1.EXITED;\nvar Transition_6 = Transition_1.UNMOUNTED;\n\nvar Fade_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _fadeStyles;\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _Transition2 = _interopRequireDefault(Transition_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[Transition_1.ENTERING] = 'in', _fadeStyles[Transition_1.ENTERED] = 'in', _fadeStyles);\n\nvar Fade = function (_React$Component) {\n _inherits(Fade, _React$Component);\n\n function Fade(props, context) {\n _classCallCheck(this, Fade);\n\n return _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n }\n\n Fade.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['className', 'children']);\n\n return _react2.default.createElement(\n _Transition2.default,\n props,\n function (status, innerProps) {\n return _react2.default.cloneElement(children, _extends({}, innerProps, {\n className: (0, _classnames2.default)('fade', className, children.props.className, fadeStyles[status])\n }));\n }\n );\n };\n\n return Fade;\n}(_react2.default.Component);\n\nexports.default = Fade;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Fade_1);\n\nvar Body = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalBody = function (_React$Component) {\n _inherits(ModalBody, _React$Component);\n\n function ModalBody() {\n _classCallCheck(this, ModalBody);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalBody.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalBody.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalBody.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-body') }),\n children\n );\n };\n\n return ModalBody;\n}(_react2.default.Component);\n\nModalBody.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalBody;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Body);\n\nvar Dismiss_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar chain = function chain(a, b) {\n return function () {\n a && a.apply(undefined, arguments);\n b && b.apply(undefined, arguments);\n };\n};\n\nvar Dismiss = function (_React$Component) {\n _inherits(Dismiss, _React$Component);\n\n function Dismiss() {\n _classCallCheck(this, Dismiss);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Dismiss.prototype.render = function render() {\n var _props = this.props,\n Tag = _props.component,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['component', 'children']);\n\n return _react2.default.createElement(\n Tag,\n _extends({}, props, {\n onClick: chain(props.onClick, this.context.onModalHide)\n }),\n children\n );\n };\n\n return Dismiss;\n}(_react2.default.Component);\n\nDismiss.propTypes = {\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n};\nDismiss.defaultProps = {\n component: 'button'\n};\nDismiss.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = Dismiss;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Dismiss_1);\n\nvar Header = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalHeader = function (_React$Component) {\n _inherits(ModalHeader, _React$Component);\n\n function ModalHeader() {\n _classCallCheck(this, ModalHeader);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalHeader.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalHeader.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n closeButton = _props.closeButton,\n children = _props.children,\n className = _props.className,\n label = _props['aria-label'],\n props = _objectWithoutProperties(_props, ['modalPrefix', 'closeButton', 'children', 'className', 'aria-label']);\n\n var prefix = modalPrefix || ModalHeader.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-header')\n }),\n closeButton && _react2.default.createElement(\n _Dismiss2.default,\n {\n className: 'close',\n 'aria-label': label\n },\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n )\n ),\n children\n );\n };\n\n return ModalHeader;\n}(_react2.default.Component);\n\nModalHeader._isModalHeader = true;\nModalHeader.propTypes = {\n closeButton: _propTypes2.default.bool,\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string,\n\n 'aria-label': _propTypes2.default.string\n};\nModalHeader.defaultProps = {\n closeButton: false,\n 'aria-label': 'Close Modal'\n};\nModalHeader.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = ModalHeader;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Header);\n\nvar Title = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalTitle = function (_React$Component) {\n _inherits(ModalTitle, _React$Component);\n\n function ModalTitle() {\n _classCallCheck(this, ModalTitle);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalTitle.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalTitle.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'className']);\n\n var prefix = modalPrefix || ModalTitle.getDefaultPrefix();\n\n return _react2.default.createElement('h4', _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-title')\n }));\n };\n\n return ModalTitle;\n}(_react2.default.Component);\n\nModalTitle.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\nexports.default = ModalTitle;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Title);\n\nvar Footer = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalFooter = function (_React$Component) {\n _inherits(ModalFooter, _React$Component);\n\n function ModalFooter() {\n _classCallCheck(this, ModalFooter);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalFooter.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalFooter.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalFooter.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-footer') }),\n children\n );\n };\n\n return ModalFooter;\n}(_react2.default.Component);\n\nModalFooter.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalFooter;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Footer);\n\nvar Modal_1$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\n\n\nvar _Modal2 = _interopRequireDefault(Modal_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nvar _Fade2 = _interopRequireDefault(Fade_1);\n\n\n\nvar _Body2 = _interopRequireDefault(Body);\n\n\n\nvar _Header2 = _interopRequireDefault(Header);\n\n\n\nvar _Title2 = _interopRequireDefault(Title);\n\n\n\nvar _Footer2 = _interopRequireDefault(Footer);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar baseIndex = {};\nvar PREFIX = 'modal';\n\nvar getZIndex = void 0;\n\nvar omit = function omit(obj, keys) {\n return Object.keys(obj).reduce(function (o, key) {\n if (keys.indexOf(key) === -1) o[key] = obj[key];\n return o;\n }, {});\n};\n\nfunction DialogTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.TRANSITION_DURATION }));\n}\nfunction BackdropTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));\n}\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n Modal.getDefaultPrefix = function getDefaultPrefix() {\n return PREFIX;\n };\n\n Modal.prototype.getChildContext = function getChildContext() {\n return this._context || (this._context = { onModalHide: this.props.onHide });\n };\n\n function Modal() {\n _classCallCheck(this, Modal);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n _this.handleEntering = _this.handleEntering.bind(_this);\n _this.handleExiting = _this.handleExiting.bind(_this);\n\n _this.state = {\n classes: ''\n };\n return _this;\n }\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n getZIndex = getZIndex || function () {\n var modal = document.createElement('div'),\n backdrop = document.createElement('div'),\n zIndexFactor = void 0;\n\n modal.className = 'modal hide';\n backdrop.className = 'modal-backdrop hide';\n\n document.body.appendChild(modal);\n document.body.appendChild(backdrop);\n\n baseIndex.modal = +(0, _style2.default)(modal, 'z-index');\n baseIndex.backdrop = +(0, _style2.default)(backdrop, 'z-index');\n zIndexFactor = baseIndex.modal - baseIndex.backdrop;\n\n document.body.removeChild(modal);\n document.body.removeChild(backdrop);\n\n return function (type) {\n return baseIndex[type] + zIndexFactor * (_this2.props.manager.modals.length - 1);\n };\n }();\n };\n\n Modal.prototype.handleEntering = function handleEntering() {\n this._show.apply(this, arguments);\n\n if (this.props.onEntering) {\n this.props.onEntering();\n }\n };\n\n Modal.prototype.handleExiting = function handleExiting() {\n this._removeAttentionClasses();\n if (this.props.onExiting) {\n this.props.onExiting();\n }\n };\n\n Modal.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n keyboard = _props.keyboard,\n transition = _props.transition,\n modalPrefix = _props.modalPrefix,\n dialogClassName = _props.dialogClassName,\n container = _props.container,\n onEnter = _props.onEnter,\n onEntered = _props.onEntered,\n onExit = _props.onExit,\n onExited = _props.onExited,\n props = _objectWithoutProperties(_props, ['className', 'children', 'keyboard', 'transition', 'modalPrefix', 'dialogClassName', 'container', 'onEnter', 'onEntered', 'onExit', 'onExited']);\n\n var _state = this.state,\n dialog = _state.dialog,\n classes = _state.classes,\n backdrop = _state.backdrop;\n\n\n delete props.manager;\n var elementProps = omit(props, Object.keys(Modal.propTypes));\n\n var prefix = modalPrefix || Modal.getDefaultPrefix();\n\n if (transition === true) transition = DialogTransition;\n\n var modal = _react2.default.createElement(\n 'div',\n _extends({}, elementProps, {\n ref: function ref(r) {\n return _this3.dialog = r;\n },\n style: dialog,\n className: (0, _classnames2.default)(className, prefix, { in: props.show && !transition }),\n onClick: this.props.backdrop ? function (e) {\n return _this3.handleBackdropClick(e);\n } : null\n }),\n _react2.default.createElement(\n 'div',\n {\n key: 'modal',\n ref: function ref(r) {\n return _this3.innerRef = r;\n },\n className: (0, _classnames2.default)(prefix + '-dialog', dialogClassName, classes, (props.small || props.sm) && prefix + '-sm', (props.large || props.lg) && prefix + '-lg')\n },\n _react2.default.createElement(\n 'div',\n { className: prefix + '-content' },\n children\n )\n )\n );\n\n return _react2.default.createElement(\n _Modal2.default,\n {\n keyboard: keyboard,\n ref: function ref(_ref) {\n _this3.modal = _ref && _ref.modal;\n _this3.backdrop = _ref && _ref.backdrop;\n },\n container: container,\n backdrop: props.backdrop,\n show: props.show,\n backdropStyle: backdrop,\n backdropClassName: prefix + '-backdrop',\n containerClassName: prefix + '-open',\n transition: transition || undefined,\n backdropTransition: transition ? BackdropTransition : undefined,\n onHide: this.props.onHide,\n onEnter: onEnter,\n onEntering: this.handleEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: this.handleExiting,\n onExited: onExited\n },\n modal\n );\n };\n\n Modal.prototype.attention = function attention() {\n var _this4 = this;\n\n var attentionClass = this.props.attentionClass;\n\n\n if (attentionClass) this.setState({ classes: '' }, function () {\n if (_this4.props.show) {\n // eslint-disable-next-line no-unused-expressions\n _this4.innerRef.offsetWidth;\n _this4.setState({\n classes: attentionClass + ' animated'\n });\n }\n });\n };\n\n Modal.prototype.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) return;\n if (this.props.backdrop === 'static') return this.attention();\n\n this.props.onHide();\n };\n\n Modal.prototype._show = function _show() {\n if (this.props.show) this.setState(this._getStyles());\n };\n\n Modal.prototype._getStyles = function _getStyles() {\n if (!_inDOM2.default) return {};\n\n var node = (0, reactDom.findDOMNode)(this.dialog),\n doc = (0, _ownerDocument2.default)(node),\n scrollHt = node.scrollHeight,\n bodyIsOverflowing = (0, _isOverflowing2.default)(this.props.container || doc.body),\n modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;\n\n return {\n dialog: {\n zIndex: getZIndex('modal'),\n paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0,\n paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0\n },\n backdrop: {\n zIndex: getZIndex('backdrop')\n }\n };\n };\n\n Modal.prototype._removeAttentionClasses = function _removeAttentionClasses() {\n this.setState({ classes: '' });\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = {\n show: _propTypes2.default.bool,\n\n /** sizes **/\n small: _propTypes2.default.bool,\n sm: _propTypes2.default.bool,\n large: _propTypes2.default.bool,\n lg: _propTypes2.default.bool,\n /** --- **/\n\n backdrop: _propTypes2.default.oneOf(['static', true, false]),\n keyboard: _propTypes2.default.bool,\n animate: _propTypes2.default.bool,\n transition: _propTypes2.default.any,\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onHide: _propTypes2.default.func,\n onEnter: _propTypes2.default.func,\n onEntering: _propTypes2.default.func,\n onEntered: _propTypes2.default.func,\n onExit: _propTypes2.default.func,\n onExiting: _propTypes2.default.func,\n onExited: _propTypes2.default.func,\n\n modalPrefix: _propTypes2.default.string,\n dialogClassName: _propTypes2.default.string,\n attentionClass: _propTypes2.default.string\n};\nModal.defaultProps = {\n backdrop: true,\n keyboard: true,\n animate: true,\n transition: true,\n container: _inDOM2.default ? document.body : null,\n attentionClass: 'shake',\n manager: (_Modal2.default.getDefaultProps ? _Modal2.default.getDefaultProps() : _Modal2.default.defaultProps).manager\n};\nModal.childContextTypes = {\n onModalHide: _propTypes2.default.func\n};\n\n\nModal.injectCSSPrefix = function (prefix) {\n PREFIX = prefix;\n};\n\nfunction getDefaultPrefix() {\n return PREFIX;\n}\n\n_Body2.default.getDefaultPrefix = getDefaultPrefix;\n_Header2.default.getDefaultPrefix = getDefaultPrefix;\n_Title2.default.getDefaultPrefix = getDefaultPrefix;\n_Footer2.default.getDefaultPrefix = getDefaultPrefix;\n\nModal.Body = _Body2.default;\nModal.Header = _Header2.default;\nModal.Title = _Title2.default;\nModal.Footer = _Footer2.default;\nModal.Dismiss = _Dismiss2.default;\n\nModal.BaseModal = Modal;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nvar Modal$1 = unwrapExports(Modal_1$1);\n\nvar css$o = \"/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/*\\nAnimate.css - http://daneden.me/animate\\nLicensed under the ☺ license (http://licence.visualidiot.com/)\\nCopyright (c) 2012 Dan Eden*/\\n.animated {\\n -webkit-animation-duration: 1s;\\n -moz-animation-duration: 1s;\\n -o-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n@-webkit-keyframes shake {\\n 0%,\\n 100% {\\n -webkit-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -webkit-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -webkit-transform: translateX(10px);\\n }\\n}\\n@-moz-keyframes shake {\\n 0%,\\n 100% {\\n -moz-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -moz-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -moz-transform: translateX(10px);\\n }\\n}\\n@-o-keyframes shake {\\n 0%,\\n 100% {\\n -o-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -o-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -o-transform: translateX(10px);\\n }\\n}\\n@keyframes shake {\\n 0%,\\n 100% {\\n transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n transform: translateX(10px);\\n }\\n}\\n.shake {\\n -webkit-animation-name: shake;\\n -moz-animation-name: shake;\\n -o-animation-name: shake;\\n animation-name: shake;\\n}\\n.modal {\\n display: block;\\n}\\n.modal-content > .close {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n}\\n@media (min-width: 768px) {\\n .modal-sm > .modal-dialog {\\n width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg > .modal-dialog {\\n width: 900px;\\n }\\n}\\n\";\nstyleInject(css$o);\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\nvar css$p = \":root {\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --ui-border-color: #44626f;\\n}\\n.modal-dialog .modal-content {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-border-color);\\n color: var(--text-secondary-color);\\n border: 0;\\n}\\n.modal-dialog .modal-content .modal-header,\\n.modal-dialog .modal-content .modal-footer {\\n border-color: var(--ui-border-color);\\n}\\n.modal-dialog .modal-content .dialog-separator,\\n.modal-dialog .modal-content .dialog-separator-before,\\n.modal-dialog .modal-content .dialog-separator-after {\\n position: relative;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-before:before,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n background-color: #000;\\n content: ' ';\\n display: block;\\n height: 3px;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator-before:before {\\n top: -3px;\\n}\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n bottom: -3px;\\n}\\n.modal-dialog .modal-content .modal-body {\\n color: var(--text-primary-color);\\n padding: 16px 22px 0px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar {\\n width: 6px;\\n background-color: var(--ui-gray-dark);\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar-thumb {\\n background-color: var(--ui-gray-light);\\n border-radius: 5px;\\n}\\n.modal-dialog .modal-content .modal-header {\\n border-bottom-width: 3px;\\n border-bottom-style: solid;\\n border-bottom-color: #000;\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-header h4 {\\n color: var(--text-secondary-color);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 24px;\\n padding-right: 24px;\\n}\\n.modal-dialog .modal-content .modal-footer {\\n border-top: 0;\\n padding-top: 0;\\n}\\n.modal-dialog .card-round {\\n background-color: var(--ui-gray-dark);\\n padding: 10px;\\n}\\n.modal-dialog .modal-header {\\n position: relative;\\n}\\n.button-close,\\n.modal-dialog button.close {\\n color: var(--text-secondary-color);\\n height: 25px;\\n opacity: 1;\\n overflow: hidden;\\n text-align: center;\\n text-shadow: none;\\n width: 25px;\\n font-size: 25px;\\n font-weight: lighter;\\n}\\n\";\nstyleInject(css$p);\n\nvar UserPreferencesModal =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferencesModal, _Component);\n\n // TODO: Make this component more generic to allow things other than W/L and hotkeys...\n function UserPreferencesModal(props) {\n var _this;\n\n _classCallCheck(this, UserPreferencesModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UserPreferencesModal).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"save\", function () {\n _this.props.onSave({\n windowLevelData: _this.state.windowLevelData,\n hotKeysData: _this.state.hotKeysData\n });\n });\n\n _this.state = {\n windowLevelData: lodash_clonedeep(props.windowLevelData),\n hotKeysData: lodash_clonedeep(props.hotKeysData)\n };\n return _this;\n }\n\n _createClass(UserPreferencesModal, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prev, next) {\n var newStateData = {};\n\n if (!lodash_isequal(prev.windowLevelData, next.windowLevelData)) {\n newStateData.windowLevelData = prev.windowLevelData;\n }\n\n if (!lodash_isequal(prev.hotKeysData, next.hotKeysData)) {\n newStateData.hotKeysData = prev.hotKeysData;\n }\n\n if (newStateData.hotKeysData || newStateData.windowLevelData) {\n this.setState(newStateData);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Modal$1, {\n show: this.props.isOpen,\n onHide: this.props.onCancel,\n \"aria-labelledby\": \"ModalHeader\",\n className: \"modal fade themed in\",\n backdrop: false,\n large: true,\n keyboard: false\n }, React.createElement(Modal$1.Header, {\n closeButton: true\n }, React.createElement(Modal$1.Title, null, \"User Preferences\")), React.createElement(Modal$1.Body, null, React.createElement(UserPreferences, {\n windowLevelData: this.state.windowLevelData,\n hotKeysData: this.state.hotKeysData\n })), React.createElement(Modal$1.Footer, null, React.createElement(\"button\", {\n className: \"btn btn-danger pull-left\",\n onClick: this.props.onResetToDefaults\n }, \"Reset to Defaults\"), React.createElement(Modal$1.Dismiss, {\n className: \"btn btn-default\"\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.save\n }, \"Save\")));\n }\n }]);\n\n return UserPreferencesModal;\n}(Component);\n\n_defineProperty(UserPreferencesModal, \"propTypes\", {\n isOpen: propTypes.bool.isRequired,\n onCancel: propTypes.func,\n onSave: propTypes.func,\n onResetToDefaults: propTypes.func,\n windowLevelData: propTypes.object,\n hotKeysData: propTypes.object\n});\n\n_defineProperty(UserPreferencesModal, \"defaultProps\", {\n isOpen: false\n});\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = _baseRest(function(arrays) {\n return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));\n});\n\nvar union_1 = union;\n\nvar EnterLeaveCounter_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = union_1(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without_1(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n});\n\nunwrapExports(EnterLeaveCounter_1);\n\nvar BrowserDetector = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.isFirefox = memoize_1(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = memoize_1(function () { return Boolean(window.safari); });\n});\n\nunwrapExports(BrowserDetector);\nvar BrowserDetector_1 = BrowserDetector.isFirefox;\nvar BrowserDetector_2 = BrowserDetector.isSafari;\n\nvar MonotonicInterpolant_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n});\n\nunwrapExports(MonotonicInterpolant_1);\n\nvar OffsetUtils = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n});\n\nunwrapExports(OffsetUtils);\nvar OffsetUtils_1 = OffsetUtils.getNodeClientOffset;\nvar OffsetUtils_2 = OffsetUtils.getEventClientOffset;\nvar OffsetUtils_3 = OffsetUtils.getDragPreviewOffset;\n\nvar NativeTypes = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n});\n\nunwrapExports(NativeTypes);\nvar NativeTypes_1 = NativeTypes.FILE;\nvar NativeTypes_2 = NativeTypes.URL;\nvar NativeTypes_3 = NativeTypes.TEXT;\n\nvar NativeDragSources = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, null);\n return result != null ? result : defaultValue;\n}\nvar nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n },\n _a[NativeTypes.URL] = {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n _a[NativeTypes.TEXT] = {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n _a);\nfunction createNativeDragSource(type) {\n var _a = nativeTypesConfig[type], exposeProperty = _a.exposeProperty, matchesTypes = _a.matchesTypes, getData = _a.getData;\n return /** @class */ (function () {\n function NativeDragSource() {\n var _a;\n this.item = (_a = {},\n Object.defineProperty(_a, exposeProperty, {\n get: function () {\n // tslint:disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + exposeProperty + \"\\\" until the drop event.\");\n return null;\n },\n enumerable: true,\n configurable: true\n }),\n _a);\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n }());\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n});\n\nunwrapExports(NativeDragSources);\nvar NativeDragSources_1 = NativeDragSources.createNativeDragSource;\nvar NativeDragSources_2 = NativeDragSources.matchNativeItemType;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$a.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq_1(value, objectProto$a[key]) && !hasOwnProperty$9.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nvar defaults_1 = defaults;\n\nvar HTML5Backend_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return ((!!document && document.body.contains(node)) ||\n (!!_this.window && _this.window.document.body.contains(node)));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (!dataTransfer.types &&\n (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n else {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.context = manager.getContext();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n if (this.context && this.context.window) {\n return this.context.window;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return defaults_1(sourceNodeOptions || {}, {\n dropEffect: this.altKeyPressed ? 'copy' : 'move',\n });\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return defaults_1(sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false,\n });\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n var SourceType = NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n});\n\nunwrapExports(HTML5Backend_1);\n\nvar getEmptyImage_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.default = getEmptyImage;\n});\n\nunwrapExports(getEmptyImage_1);\n\nvar lib$2 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nexports.getEmptyImage = getEmptyImage_1.default;\n\nexports.NativeTypes = NativeTypes;\nfunction createHTML5Backend(manager) {\n return new HTML5Backend_1.default(manager);\n}\nexports.default = createHTML5Backend;\n});\n\nvar HTML5Backend$1 = unwrapExports(lib$2);\nvar lib_1$1 = lib$2.getEmptyImage;\nvar lib_2$1 = lib$2.NativeTypes;\n\n// TODO: Find a way for this context to be used in the parent application as well.\n\nfunction ViewerbaseDragDropContext(DecoratedClass) {\n return lib_1(HTML5Backend$1, null, true)(DecoratedClass);\n}\n\nexport { CineDialog, ExampleDropTarget$1 as ExampleDropTarget, LayoutButton, LayoutChooser, LayoutManager, LayoutPanelDropTarget$1 as LayoutPanelDropTarget, MeasurementTable, MeasurementTableItem, PlayClipButton, RoundedButtonGroup, ScrollableArea, SelectTree, SimpleDialog, StudyBrowser, StudyList, TableList, TableListItem, ThumbnailEntry, Toolbar, ToolbarSection, UserPreferences, UserPreferencesModal, ViewerbaseDragDropContext, Dropdown };\n//# sourceMappingURL=index.es.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport { Dropdown } from \"react-viewerbase\";\nimport './Header.css';\nimport list from './HeaderMenuList.json';\n//import Icons from \"../../images/icons.svg\";\n\nconst Icons = '/icons.svg';\n\nfunction Header({ home, location }) {\n const { state } = location\n\n return (\n
\n
\n {\n state && state.studyLink &&\n \n Back to Viewer\n \n }\n\n \n \n \n \n
Open Health Imaging Foundation
\n
\n\n {!home &&\n Study list\n }\n
\n\n\n
\n \n INVESTIGATIONAL USE ONLY\n \n \n
\n\n
\n )\n}\n\nHeader.propTypes = {\n home: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired\n};\n\nHeader.defaultProps = {\n home: true\n};\n\nexport default withRouter(Header)\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","import { connect } from 'react-redux';\nimport { StudyBrowser } from 'react-viewerbase';\nimport cloneDeep from 'lodash.clonedeep';\n\n// TODO\n// - Determine in which display set is active from Redux (activeViewportIndex and layout viewportData)\n// - Pass in errors and stack loading progress from Redux\nconst mapStateToProps = (state, ownProps) => {\n // If we know that the stack loading progress details have changed,\n // we can try to update the component state so that the thumbnail\n // progress bar is updated\n const stackLoadingProgressMap = state.loading.progress;\n const studiesWithLoadingData = cloneDeep(ownProps.studies);\n\n studiesWithLoadingData.forEach(study => {\n study.thumbnails.forEach(data => {\n const { displaySetInstanceUid } = data\n const stackId = `StackProgress:${displaySetInstanceUid}`;\n const stackProgressData = stackLoadingProgressMap[stackId];\n\n let stackPercentComplete = 0;\n if (stackProgressData) {\n stackPercentComplete = stackProgressData.percentComplete;\n }\n\n data.stackPercentComplete = stackPercentComplete;\n })\n });\n\n return {\n studies: studiesWithLoadingData\n };\n};\n\nconst ConnectedStudyBrowser = connect(\n mapStateToProps,\n null\n)(StudyBrowser);\n\nexport default ConnectedStudyBrowser;\n","import { connect } from 'react-redux';\nimport { LayoutManager } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\n\nconst mapStateToProps = state => {\n const viewportPluginIds = state.plugins.availablePlugins.filter(plugin => plugin.type === OHIF.plugins.PLUGIN_TYPES.VIEWPORT).map(plugin => plugin.id);\n const availablePlugins = {}\n viewportPluginIds.forEach(id => {\n const plugin = OHIF.plugins.availablePlugins.find(plugin => plugin.id === id);\n if (plugin) {\n availablePlugins[id] = plugin.component;\n }\n });\n\n // TODO Use something like state.plugins.defaultPlugin[OHIF.plugins.PLUGIN_TYPES.VIEWPORT]\n let defaultPlugin;\n if (viewportPluginIds && viewportPluginIds.length) {\n defaultPlugin = viewportPluginIds[0];\n }\n\n return {\n layout: state.viewports.layout,\n activeViewportIndex: state.viewports.activeViewportIndex,\n availablePlugins,\n defaultPlugin\n };\n};\n\nconst ConnectedLayoutManager = connect(\n mapStateToProps,\n null\n)(LayoutManager);\n\nexport default ConnectedLayoutManager;\n","import { Component } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport cornerstoneMath from \"cornerstone-math\";\nimport { OHIF } from 'ohif-core';\nimport ConnectedLayoutManager from './ConnectedLayoutManager.js';\nimport './ViewerMain.css';\n\n// Attempt to fix weird undefined dep issue\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\n\nclass ViewerMain extends Component {\n state = {\n viewportData: [],\n };\n\n static propTypes = {\n studies: PropTypes.array.isRequired\n };\n\n getDisplaySetsWithImages(studies) {\n const displaySets = [];\n studies.forEach((study) => {\n study.displaySets.forEach(dSet => {\n if (dSet.images.length) {\n displaySets.push(dSet);\n }\n });\n });\n\n return displaySets;\n }\n\n findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {\n const study = studies.find(study => {\n return study.studyInstanceUid === studyInstanceUid;\n });\n\n if (!study) {\n return;\n }\n\n return study.displaySets.find(displaySet => {\n return displaySet.displaySetInstanceUid === displaySetInstanceUid;\n });\n }\n\n componentDidMount() {\n // Add beforeUnload event handler to check for unsaved changes\n //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Get all the display sets for the viewer studies\n const displaySets = this.getDisplaySetsWithImages(this.props.studies);\n\n this.setState({\n viewportData: displaySets\n });\n }\n\n setViewportData = ({viewportIndex, item}) => {\n // TODO: Replace this with mapDispatchToProps call\n // if we decide to put viewport info into redux\n\n // Note: Use Slice because React does a shallow equality check. Mutating the array\n // would not trigger a re-render. We have to create a copy.\n debugger;\n console.warn(item);\n const updatedViewportData = this.state.viewportData.slice(0);\n\n const displaySet = this.findDisplaySet(this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid);\n\n console.warn(displaySet);\n\n updatedViewportData[viewportIndex] = Object.assign({}, displaySet);\n\n this.setState({\n viewportData: updatedViewportData\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n\n componentWillUnmount() {\n // Remove beforeUnload event handler...\n //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Destroy the synchronizer used to update reference lines\n OHIF.viewer.updateImageSynchronizer.destroy();\n\n // TODO: Instruct all plugins to clean up themselves\n //\n // Clear references to all stacks in the StackManager\n //StackManager.clearStacks();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n }\n}\n\nexport default ViewerMain;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedStudyBrowser from './ConnectedStudyBrowser.js';\nimport ViewerMain from './ViewerMain.js';\nimport './FlexboxLayout.css';\n\nclass FlexboxLayout extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n studiesForBrowser: []\n };\n\n componentDidMount() {\n const studiesForBrowser = this.getStudiesForBrowser();\n\n this.setState({\n studiesForBrowser\n });\n }\n\n getStudiesForBrowser = () => {\n const { studies } = this.props;\n\n // TODO[react]:\n // - Add sorting of display sets\n // - Add useMiddleSeriesInstanceAsThumbnail\n // - Add showStackLoadingProgressBar option\n return studies.map((study) => {\n const { studyInstanceUid } = study;\n\n const thumbnails = study.displaySets.map((displaySet) => {\n const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet;\n const imageId = displaySet.images[0].getImageId();\n\n return {\n imageId,\n displaySetInstanceUid,\n seriesDescription,\n seriesNumber,\n instanceNumber,\n numImageFrames,\n };\n });\n\n return {\n studyInstanceUid,\n thumbnails\n };\n });\n }\n\n render() {\n let mainContentClassName = \"main-content\"\n if (this.props.leftSidebarOpen) {\n mainContentClassName += ' sidebar-left-open';\n }\n\n if (this.props.rightSidebarOpen) {\n mainContentClassName += ' sidebar-right-open';\n }\n\n // TODO[react]: Add measurementLightTable\n return (\n
\n
\n \n
\n
\n \n
\n {/*
\n {{> measurementLightTable (clone this)}}\n
*/}\n
\n );\n }\n}\n\nexport default FlexboxLayout;\n","import { connect } from 'react-redux';\nimport FlexboxLayout from './FlexboxLayout';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen,\n };\n};\n\nconst ConnectedFlexboxLayout = connect(\n mapStateToProps,\n null\n)(FlexboxLayout);\n\nexport default ConnectedFlexboxLayout;\n","import { connect } from 'react-redux';\nimport { ToolbarSection } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setToolActive } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n return {\n buttons: state.tools.buttons,\n activeCommand: activeButton && activeButton.command\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n setToolActive: tool => {\n dispatch(setToolActive(tool.command))\n }\n };\n};\n\nconst ConnectedToolbarSection = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarSection);\n\nexport default ConnectedToolbarSection;\n","import { connect } from 'react-redux';\nimport { LayoutButton } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setLayout } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n return {\n currentLayout: state.viewports.layout,\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n // TODO: Change if layout switched becomes more complex\n onChange: selectedCell => {\n let viewports = [];\n const rows = selectedCell.row + 1;\n const columns = selectedCell.col + 1;\n const numViewports = rows * columns;\n for (let i = 0; i < numViewports; i++) {\n viewports.push({\n height: `${100 / rows}%`,\n width: `${100 / columns}%`\n });\n }\n const layout = {\n viewports\n };\n\n dispatch(setLayout(layout))\n }\n };\n};\n\nconst ConnectedLayoutButton = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutButton);\n\nexport default ConnectedLayoutButton;\n","import { connect } from 'react-redux';\nimport { CineDialog } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\nimport cloneDeep from 'lodash.clonedeep';\n\nconst { setViewportSpecificData } = OHIF.redux.actions;\n\n// TODO: I'm guessing this function will be used in other connect locations\n// so we might want to put it somewhere shared\nfunction getActiveViewportSpecificData(state) {\n const { viewportSpecificData, activeViewportIndex } = state.viewports;\n return viewportSpecificData[activeViewportIndex];\n}\n\nconst mapStateToProps = state => {\n // TODO:\n // - Test if including CineDialog in the toolbarRow will prevent it\n // from hovering over the rest of the UI when visible.\n //\n // - Create custom ToolbarButton which just shows Play state\n // - Connect this ToolbarButton to Redux\n const activeViewportSpecificData = getActiveViewportSpecificData(state);\n\n let stack = {\n imageIds: [],\n currentImageIdIndex: 0\n };\n if (activeViewportSpecificData && activeViewportSpecificData.stack) {\n stack = activeViewportSpecificData.stack\n }\n\n let cine = {\n isPlaying: false,\n cineFrameRate: 24\n };\n if (activeViewportSpecificData && activeViewportSpecificData.cine) {\n cine = activeViewportSpecificData.cine\n }\n\n\n // TODO: activeViewportStackData won't currently change anything on\n // CornerstoneViewport. The updates are too frequent and it's killing\n // performance. Need to revisit how we can do this.\n return {\n activeViewportStackData: stack,\n activeViewportCineData: cine,\n activeViewportIndex: state.viewports.activeViewportIndex\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n dispatchSetViewportSpecificData: (viewportIndex, data) => {\n dispatch(setViewportSpecificData(viewportIndex, data));\n },\n };\n};\n\nconst mergeProps = (propsFromState, propsFromDispatch, ownProps) => {\n const { activeViewportStackData, activeViewportCineData, activeViewportIndex } = propsFromState;\n\n return {\n cineFrameRate: activeViewportCineData.cineFrameRate,\n isPlaying: activeViewportCineData.isPlaying,\n onPlayPauseChanged: isPlaying => {\n const cine = cloneDeep(activeViewportCineData);\n cine.isPlaying = !cine.isPlaying;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onFrameRateChanged: frameRate => {\n const cine = cloneDeep(activeViewportCineData);\n cine.cineFrameRate = frameRate;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onClickNextButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n const largestPossibleIndex = stack.imageIds.length - 1;\n stack.currentImageIdIndex = Math.min(stack.currentImageIdIndex + 1, largestPossibleIndex)\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickBackButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = Math.max(stack.currentImageIdIndex - 1, 0);\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToStart: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = 0;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToEnd: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = stack.imageIds.length;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n }\n };\n};\n\nconst ConnectedCineDialog = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(CineDialog);\n\nexport default ConnectedCineDialog;\n","import React, { Component } from \"react\";\nimport ConnectedToolbarSection from './ConnectedToolbarSection';\nimport ConnectedLayoutButton from './ConnectedLayoutButton';\nimport ConnectedCineDialog from './ConnectedCineDialog.js';\nimport PropTypes from 'prop-types';\nimport { RoundedButtonGroup } from 'react-viewerbase';\nimport './ToolbarRow.css';\n//import Icons from \"../images/icons.svg\"\n\nconst Icons = '/icons.svg';\n\nclass ToolbarRow extends Component {\n static propTypes = {\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n setLeftSidebarOpen: PropTypes.func,\n setRightSidebarOpen: PropTypes.func\n };\n\n static defaultProps = {\n leftSidebarOpen: false,\n rightSidebarOpen: false\n };\n\n onLeftSidebarValueChanged = (value) => {\n this.props.setLeftSidebarOpen(!!value);\n }\n\n render() {\n const leftSidebarToggle = [{\n value: 'studies',\n svgLink: `${Icons}#icon-studies`,\n svgWidth: 15,\n svgHeight: 13,\n bottomLabel: 'Series',\n }];\n\n const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null;\n\n return (
\n
\n \n
\n \n \n {/* TODO: Putting cine dialog here for now */}\n
\n \n
\n
\n {/* > roundedButtonGroup rightSidebarToggleButtonData */}\n
\n
\n );\n }\n}\n\nexport default ToolbarRow;\n","export const setLeftSidebarOpen = state => ({\n type: 'SET_LEFT_SIDEBAR_OPEN',\n state\n});\n\nexport const setRightSidebarOpen = state => ({\n type: 'SET_RIGHT_SIDEBAR_OPEN',\n state\n});\n\nconst actions = {\n setLeftSidebarOpen,\n setRightSidebarOpen\n};\n\nexport default actions;\n","import { connect } from 'react-redux';\nimport ToolbarRow from './ToolbarRow';\nimport { setLeftSidebarOpen, setRightSidebarOpen } from '../redux/actions.js';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen\n };\n};\n\n\nconst mapDispatchToProps = dispatch => {\n return {\n setLeftSidebarOpen: state => {\n dispatch(setLeftSidebarOpen(state))\n },\n setRightSidebarOpen: state => {\n dispatch(setRightSidebarOpen(state))\n }\n };\n};\n\nconst ConnectedToolbarRow = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarRow);\n\nexport default ConnectedToolbarRow;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nclass StudyLoadingMonitor extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n setStudyLoadingProgress: PropTypes.func.isRequired,\n clearStudyLoadingProgress: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n // TODO: This is pretty ugly. The thing is that the StudyLoadingListener\n // needs to update the Redux store, but shouldn't know that it exists.\n // I am therefore passing in some functions to update the store instead,\n // but this should definitely be cleaned up somehow.\n const options = {\n _setProgressData: (progressId, progressData) => {\n this.props.setStudyLoadingProgress(progressId, progressData)\n },\n _clearProgressById: (progressId) => {\n this.props.clearStudyLoadingProgress(progressId)\n }\n }\n\n const { StudyLoadingListener } = OHIF.classes;\n this.studyLoadingListener = StudyLoadingListener.getInstance(options);\n this.studyLoadingListener.clear();\n this.studyLoadingListener.addStudies(this.props.studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Destroy stack loading listeners when we close the viewer\n this.studyLoadingListener.clear();\n }\n}\n\n\nexport default StudyLoadingMonitor;\n","import { connect } from 'react-redux';\nimport StudyLoadingMonitor from '../components/StudyLoadingMonitor.js';\nimport OHIF from 'ohif-core'\n\nconst { setStudyLoadingProgress, clearStudyLoadingProgress } = OHIF.redux.actions;\n\nconst mapDispatchToProps = dispatch => {\n return {\n setStudyLoadingProgress: (progressId, progressData) => {\n dispatch(setStudyLoadingProgress(progressId, progressData))\n },\n clearStudyLoadingProgress: progressId => {\n dispatch(clearStudyLoadingProgress(progressId))\n }\n };\n};\n\nconst ConnectedStudyLoadingMonitor = connect(\n null,\n mapDispatchToProps\n)(StudyLoadingMonitor);\n\nexport default ConnectedStudyLoadingMonitor;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nconst { StudyPrefetcher } = OHIF.classes;\n\nclass StudyPrefetcherComponent extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n componentDidMount() {\n const { studies } = this.props;\n\n this.studyPrefetcher = StudyPrefetcher.getInstance();\n this.studyPrefetcher.setStudies(studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Stop prefetching when we close the viewer\n this.studyPrefetcher.destroy();\n }\n}\n\n\nexport default StudyPrefetcherComponent;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport OHIF from 'ohif-core';\n//import { CineDialog } from 'react-viewerbase';\n\nimport Header from '../components/Header'\nimport ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';\nimport ConnectedToolbarRow from \"./ConnectedToolbarRow\";\nimport ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js';\nimport StudyPrefetcher from '../components/StudyPrefetcher.js';\nimport './Viewer.css';\n\nconst { StackManager } = OHIF.utils;\n\n/**\n * Inits OHIF Hanging Protocol's onReady.\n * It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine\n * Hanging Protocol will use OHIF LayoutManager to render viewports properly\n */\n/*const initHangingProtocol = () => {\n // When Hanging Protocol is ready\n HP.ProtocolStore.onReady(() => {\n\n // Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata\n const studyMetadataList = OHIF.viewer.StudyMetadataList.all();\n\n // Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata\n const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();\n\n // Get prior studies map\n const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);\n\n // Creates Protocol Engine object with required arguments\n const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);\n\n // Sets up Hanging Protocol engine\n HP.setEngine(ProtocolEngine);\n });\n};*/\n\n\nOHIF.viewer.defaultTool = {\n left: 'wwwc',\n right: 'zoom',\n middle: 'pan'\n};\n\nOHIF.viewer.refLinesEnabled = true;\n\n/*const viewportUtils = OHIF.viewerbase.viewportUtils;\n\nOHIF.viewer.functionList = {\n toggleCineDialog: viewportUtils.toggleCineDialog,\n toggleCinePlay: viewportUtils.toggleCinePlay,\n clearTools: viewportUtils.clearTools,\n resetViewport: viewportUtils.resetViewport,\n invert: viewportUtils.invert\n};*/\n\n// Create the synchronizer used to update reference lines\nOHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);\n\n// Metadata configuration\nconst metadataProvider = new OHIF.cornerstone.MetadataProvider();\ncornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));\n\nStackManager.setMetadataProvider(metadataProvider);\n\nclass Viewer extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n render() {\n return (<>\n
\n
\n {/**/}\n
\n
\n \n \n \n \n
\n \n );\n }\n}\n\n\nexport default Viewer;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport Viewer from \"./Viewer.js\";\n\nconst { createDisplaySets } = OHIF.utils;\n\nclass ViewerRetrieveStudyData extends Component {\n static propTypes = {\n studyInstanceUids: PropTypes.array.isRequired,\n seriesInstanceUids: PropTypes.array,\n server: PropTypes.object\n };\n\n state = {\n studies: null,\n error: null\n }\n\n componentDidMount() {\n // TODO: Avoid using timepoints here\n //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };\n const { studyInstanceUids, seriesInstanceUids, server } = this.props;\n const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)\n\n // Render the viewer when the data is ready\n promise.then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({\n studies: updatedStudies,\n });\n }).catch(error => {\n this.setState({\n error: true,\n });\n\n throw new Error(error);\n });\n\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default ViewerRetrieveStudyData;\n","import { connect } from 'react-redux';\nimport ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';\n\nconst isActive = (a) => a.active === true;\n\nconst mapStateToProps = state => {\n const activeServer = state.servers.servers.find(isActive);\n\n return {\n server: activeServer,\n };\n};\n\nconst ConnectedViewerRetrieveStudyData = connect(\n mapStateToProps,\n null\n)(ViewerRetrieveStudyData);\n\nexport default ConnectedViewerRetrieveStudyData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ConnectedViewerRetrieveStudyData from \"../connectedComponents/ConnectedViewerRetrieveStudyData\";\n\nfunction ViewerRouting({ match }) {\n const { studyInstanceUids, seriesInstanceUids } = match.params;\n\n let studyUIDs;\n let seriesUIDs;\n\n if (studyInstanceUids && !seriesInstanceUids) {\n studyUIDs = studyInstanceUids.split(';');\n } else if (studyInstanceUids && seriesInstanceUids) {\n studyUIDs = [match.params.studyInstanceUid];\n seriesUIDs = match.params.seriesInstanceUids.split(';');\n }\n\n return (\n \n );\n}\n\nViewerRouting.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n studyInstanceUids: PropTypes.string.isRequired,\n seriesInstanceUids: PropTypes.string\n })\n })\n};\n\nexport default ViewerRouting;\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport qs from 'query-string'\nimport Viewer from \"../connectedComponents/Viewer\";\nimport OHIF from 'ohif-core';\n\nconst { createDisplaySets } = OHIF.utils;\n\nfunction parseQueryAndFetchStudies(query) {\n return new Promise((resolve, reject) => {\n const url = query.url;\n\n if (!url) {\n reject(new Error('No URL was specified. Use ?url=$yourURL'));\n }\n\n // Define a request to the server to retrieve the study data\n // as JSON, given a URL that was in the Route\n const oReq = new XMLHttpRequest();\n\n // Add event listeners for request failure\n oReq.addEventListener('error', (error) => {\n OHIF.log.warn('An error occurred while retrieving the JSON data');\n reject(error)\n });\n\n // When the JSON has been returned, parse it into a JavaScript Object\n // and render the OHIF Viewer with this data\n oReq.addEventListener('load', () => {\n // Parse the response content\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText\n if (!oReq.responseText) {\n OHIF.log.warn('Response was undefined');\n reject(new Error('Response was undefined'));\n }\n\n OHIF.log.info(JSON.stringify(oReq.responseText, null, 2));\n\n const data = JSON.parse(oReq.responseText);\n if (data.servers && query.studyInstanceUids) {\n const server = data.servers.dicomWeb[0];\n server.type = 'dicomWeb';\n\n const studyInstanceUids = query.studyInstanceUids.split(';');\n const seriesInstanceUids = [];\n\n OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => {\n resolve(studies);\n }, error => {\n reject(error);\n });\n } else {\n resolve(data.studies);\n }\n });\n\n // Open the Request to the server for the JSON data\n // In this case we have a server-side route called /api/\n // which responds to GET requests with the study data\n OHIF.log.info(`Sending Request to: ${url}`);\n oReq.open('GET', url);\n oReq.setRequestHeader('Accept', 'application/json')\n\n // Fire the request to the server\n oReq.send();\n });\n}\n\nclass StandaloneRouting extends Component {\n state = {\n studies: null,\n error: null\n }\n\n static propTypes = {\n location: PropTypes.object,\n store: PropTypes.object\n };\n\n componentDidMount() {\n const query = qs.parse(this.props.location.search);\n parseQueryAndFetchStudies(query).then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({ studies: updatedStudies });\n }, error => {\n this.setState({ error });\n });\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default StandaloneRouting;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ViewerRetrieveStudyData from \"../connectedComponents/ViewerRetrieveStudyData.js\";\n\nfunction IHEInvokeImageDisplay({ match }) {\n const requestType = match.params.query.requestType;\n let studyInstanceUids;\n //let patientUids;\n let displayStudyList = false;\n\n if (requestType === \"STUDY\") {\n studyInstanceUids = match.params.query.studyUID.split(';');\n } else if (requestType === \"STUDYBASE64\") {\n const uids = this.params.query.studyUID;\n const decodedData = window.atob(uids);\n studyInstanceUids = decodedData.split(';');\n } else if (requestType === \"PATIENT\") {\n //patientUidspatientUids = this.params.query.patientID.split(';');\n displayStudyList = true\n } else {\n displayStudyList = true\n }\n\n if (displayStudyList) {\n return ('')//);\n }\n\n return (\n \n );\n}\n\nIHEInvokeImageDisplay.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n query: PropTypes.shape({\n requestType: PropTypes.string.isRequired,\n studyUID: PropTypes.string,\n patientID: PropTypes.string\n })\n })\n })\n};\n\nexport default IHEInvokeImageDisplay;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { ViewerbaseDragDropContext } from 'react-viewerbase';\nimport ViewerRouting from \"./routes/ViewerRouting.js\";\nimport StandaloneRouting from './routes/StandaloneRouting.js';\nimport IHEInvokeImageDisplay from './routes/IHEInvokeImageDisplay.js';\n//import CallbackPage from './CallbackPage.js';\n//import userManager from \"./userManager.js\";\nimport './OHIFStandaloneViewer.css';\nimport './variables.css';\nimport './theme-tide.css';\n\nconst reload = () => window.location.reload();\n\n/*function LoadingUser() {\n return (
Loading user...
);\n}*/\n\nclass App extends Component {\n static propTypes = {\n history: PropTypes.object.isRequired,\n user: PropTypes.object\n }\n\n componentDidMount() {\n this.unlisten = this.props.history.listen((location, action) => {\n if (this.props.setContext) {\n this.props.setContext(window.location.pathname);\n }\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n render() {\n const user = this.props.user;\n\n /*if (!user || user.expired) {\n // TODO: redirect to OAuth page if necessary\n return \n \n {\n userManager.signinRedirect();\n }}/>\n \n ;\n }*/\n\n return (\n \n \n \n \n \n \n\n \n \n {/* {\n userManager.signinRedirect();\n }}\n />*/\n /**/}\n \n
Sorry, this page does not exist.
}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {};\n /*return {\n user: state.oidc.user,\n };*/\n};\n\nconst ConnectedApp = connect(\n mapStateToProps,\n null\n)(App);\n\nexport default ViewerbaseDragDropContext(withRouter(ConnectedApp));\n","import React, { PureComponent, Component } from 'react';\n\n/*function metaDataProvider(type, imageId) {\n const metaData = cornerstoneWADOImageLoader.wadors.metaDataManager.get(\n imageId\n );\n\n if (!metaData) {\n return;\n }\n\n if (\n metaData[type] !== undefined &&\n metaData[type].Value !== undefined &&\n metaData[type].Value.length\n ) {\n return metaData[type].Value[0];\n }\n\n if (type === 'instance') {\n return metaData;\n }\n}\n\ncornerstone.metaData.addProvider(metaDataProvider);*/\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".scroll {\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scroll .scroll-holder {\\n height: calc(100% - 20px);\\n margin-top: 5px;\\n position: relative;\\n width: 12px;\\n}\\n.scroll .scroll-holder .imageSlider {\\n height: 12px;\\n left: 12px;\\n padding: 0;\\n position: absolute;\\n top: 0;\\n transform: rotate(90deg);\\n transform-origin: top left;\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider:focus {\\n outline: none;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-focus-outer {\\n border: none;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-runnable-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 5px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 2px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-track {\\n animate: 0.2s;\\n background: transparent;\\n border: none;\\n border-width: 15px 0;\\n color: rgba(0,0,0,0);\\n cursor: pointer;\\n height: 12px;\\n width: 100%;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-lower {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-upper {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb {\\n -webkit-appearance: none !important;\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -webkit-grab;\\n height: 12px;\\n margin-top: -4px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb:active {\\n background-color: #20a5d6;\\n cursor: -webkit-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -moz-grab;\\n height: 12px;\\n width: 39px;\\n z-index: 7;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb:active {\\n background-color: #20a5d6;\\n cursor: -moz-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: ns-resize;\\n height: 12px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb:active {\\n background-color: #20a5d6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-tooltip {\\n display: none;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .imageSlider {\\n left: 50px;\\n }\\n}\\n\";\nstyleInject(css);\n\nvar ImageScrollbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageScrollbar, _PureComponent);\n\n function ImageScrollbar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ImageScrollbar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ImageScrollbar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (event) {\n var intValue = parseInt(event.target.value, 10);\n\n _this.props.onInputCallback(intValue);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n // We don't allow direct keyboard up/down input on the\n // image sliders since the natural direction is reversed (0 is at the top)\n // Store the KeyCodes in an object for readability\n var keys = {\n DOWN: 40,\n UP: 38\n }; // TODO: Enable scroll down / scroll up without depending on ohif-core\n\n if (event.which === keys.DOWN) {\n //OHIF.commands.run('scrollDown');\n event.preventDefault();\n } else if (event.which === keys.UP) {\n //OHIF.commands.run('scrollUp');\n event.preventDefault();\n }\n });\n\n return _this;\n }\n\n _createClass(ImageScrollbar, [{\n key: \"render\",\n value: function render() {\n if (this.props.max === 0) {\n return null;\n }\n\n this.style = {\n width: \"\".concat(this.props.height)\n };\n return React.createElement(\"div\", {\n className: \"scroll\"\n }, React.createElement(\"div\", {\n className: \"scroll-holder\"\n }, React.createElement(\"input\", {\n className: \"imageSlider\",\n style: this.style,\n type: \"range\",\n min: \"0\",\n max: this.props.max,\n step: \"1\",\n value: this.props.value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown\n })));\n }\n }]);\n\n return ImageScrollbar;\n}(PureComponent);\n\n_defineProperty(ImageScrollbar, \"propTypes\", {\n value: propTypes.number.isRequired,\n max: propTypes.number.isRequired,\n height: propTypes.string.isRequired,\n onInputCallback: propTypes.func.isRequired\n});\n\n/**\n * Formats a patient name for display purposes\n */\nfunction formatPN(name) {\n if (!name) {\n return;\n } // Convert the first ^ to a ', '. String.replace() only affects\n // the first appearance of the character.\n\n\n var commaBetweenFirstAndLast = name.replace('^', ', '); // Replace any remaining '^' characters with spaces\n\n var cleaned = commaBetweenFirstAndLast.replace(/\\^/g, ' '); // Trim any extraneous whitespace\n\n return cleaned.trim();\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory();\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && ('object' !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.23.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n});\n\nfunction formatDA(date) {\n var strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';\n\n if (!date) {\n return;\n }\n\n var dateAsMoment = moment(date, 'YYYYMMDD');\n return dateAsMoment.format(strFormat);\n}\n\nfunction formatTM(time) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';\n\n if (!time) {\n return;\n } // DICOM Time is stored as HHmmss.SSS, where:\n // HH 24 hour time:\n // m mm 0..59 Minutes\n // s ss 0..59 Seconds\n // S SS SSS 0..999 Fractional seconds\n //\n // See MomentJS: http://momentjs.com/docs/#/parsing/string-format/\n\n\n var dateTime = moment(time, 'HHmmss.SSS');\n return dateTime.format(format);\n}\n\nfunction formatNumberPrecision(number, precision) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\nfunction isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar helpers = {\n formatPN: formatPN,\n formatDA: formatDA,\n formatTM: formatTM,\n formatNumberPrecision: formatNumberPrecision,\n isValidNumber: isValidNumber\n};\n\nvar css$1 = \".imageViewerViewport.empty ~ .ViewportOverlay {\\n display: none;\\n}\\n.ViewportOverlay {\\n color: #9ccef9;\\n}\\n.ViewportOverlay .overlay-element {\\n position: absolute;\\n font-weight: 400;\\n text-shadow: 1px 1px #000;\\n pointer-events: none;\\n}\\n.ViewportOverlay .top-left {\\n top: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .top-center {\\n top: 20px;\\n padding-top: 20px;\\n width: 100%;\\n text-align: center;\\n}\\n.ViewportOverlay .top-right {\\n top: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay .bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .bottom-right {\\n bottom: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay.controlsVisible .topright,\\n.ViewportOverlay.controlsVisible .bottomright {\\n right: calc(20px + 19px);\\n}\\n.ViewportOverlay svg {\\n color: #9ccef9;\\n fill: #9ccef9;\\n stroke: #9ccef9;\\n background-color: transparent;\\n margin: 2px;\\n width: 18px;\\n height: 18px;\\n}\\n\";\nstyleInject(css$1);\n\nvar formatPN$1 = helpers.formatPN,\n formatDA$1 = helpers.formatDA,\n formatNumberPrecision$1 = helpers.formatNumberPrecision,\n formatTM$1 = helpers.formatTM,\n isValidNumber$1 = helpers.isValidNumber;\n/*function getCompression(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n if (\n instance.lossyImageCompression === '01' &&\n instance.lossyImageCompressionRatio !== ''\n ) {\n const compressionMethod = instance.lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n instance.lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n\nfunction getImageDimensions(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n return `${instance.columns} x ${instance.rows}`;\n}*/\n\nvar ViewportOverlay =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOverlay, _PureComponent);\n\n function ViewportOverlay() {\n _classCallCheck(this, ViewportOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOverlay).apply(this, arguments));\n }\n\n _createClass(ViewportOverlay, [{\n key: \"render\",\n value: function render() {\n var zoom = this.props.viewport.scale * 100;\n var imageId = this.props.imageId; //const patientMetadata = cornerstone.metaData.get('patient', imageId);\n //const studyMetadata = cornerstone.metaData.get('study', imageId);\n //const seriesMetadata = cornerstone.metaData.get('generalSeriesModule', imageId);\n //const instanceMetadata = cornerstone.metaData.get('instance', imageId);\n\n var patientName = ''; //patientMetadata.name;\n\n var patientId = ''; //patientMetadata.id;\n\n /*const { studyDate, studyTime, studyDescription } = studyMetadata;\n const { seriesNumber, seriesDescription } = seriesMetadata;\n const { instanceNumber, frameTime, thickness, spacingBetweenSlices, sliceLocation } = instanceMetadata;*/\n //const frameRate = formatNumberPrecision(1000 / frameTime, 1);\n //const compression = getCompression(imageId);\n\n var windowWidth = this.props.viewport.voi.windowWidth || 0;\n var windowCenter = this.props.viewport.voi.windowCenter || 0;\n var wwwc = \"W: \".concat(windowWidth.toFixed(0), \" L: \").concat(windowCenter.toFixed(0));\n var imageIndex = this.props.stack.imageIds.indexOf(this.props.imageId) + 1;\n var numImages = this.props.stack.imageIds.length; //const imageDimensions = getImageDimensions(imageId);\n\n var studyDescription = '';\n var studyDate = null;\n var studyTime = null;\n var compression = null;\n var seriesNumber = null;\n var instanceNumber = null;\n var frameRate = null;\n var imageDimensions = null;\n var sliceLocation = null;\n var seriesDescription = null;\n var normal = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId)), React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Zoom: \", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\"), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, React.createElement(\"span\", null, isValidNumber$1(sliceLocation) ? \"Loc: \".concat(formatNumberPrecision$1(sliceLocation, 2), \" mm\") : ''), React.createElement(\"span\", null, ''), React.createElement(\"span\", null, '')), React.createElement(\"div\", null, seriesDescription))));\n var rightOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n var leftOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n return React.createElement(\"div\", {\n className: \"ViewportOverlay\"\n }, normal);\n }\n }]);\n\n return ViewportOverlay;\n}(PureComponent);\n\nViewportOverlay.propTypes = {\n viewport: propTypes.object.isRequired,\n imageId: propTypes.string.isRequired,\n stack: propTypes.object.isRequired\n};\n\nvar css$2 = \".imageViewerLoadingIndicator {\\n color: #91b9cd;\\n}\\n.faded {\\n opacity: 0.5;\\n}\\n.imageViewerErrorLoadingIndicator {\\n color: #e29e4a;\\n}\\n.imageViewerErrorLoadingIndicator p,\\n.imageViewerErrorLoadingIndicator h4 {\\n padding: 4px 0;\\n text-align: center;\\n word-wrap: break-word;\\n}\\n.imageViewerErrorLoadingIndicator p {\\n font-size: 11pt;\\n}\\n.loadingIndicator {\\n background-color: rgba(0,0,0,0.75);\\n font-size: 18px;\\n height: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index: 1;\\n}\\n.loadingIndicator .indicatorContents {\\n font-size: 30px;\\n font-weight: 300;\\n position: absolute;\\n text-align: center;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 100%;\\n}\\n\";\nstyleInject(css$2);\n\nvar LoadingIndicator =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LoadingIndicator, _PureComponent);\n\n function LoadingIndicator() {\n _classCallCheck(this, LoadingIndicator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LoadingIndicator).apply(this, arguments));\n }\n\n _createClass(LoadingIndicator, [{\n key: \"render\",\n value: function render() {\n // TODO[react]: Pass this in as a prop reactively\n //const percentComplete = Session.get('CornerstoneLoadProgress' + this.viewportIndex);\n var percComplete;\n\n if (this.props.percentComplete && this.props.percentComplete !== 100) {\n percComplete = \"\".concat(this.props.percentComplete, \"%\");\n }\n\n return React.createElement(React.Fragment, null, this.props.error ? React.createElement(\"div\", {\n className: \"imageViewerErrorLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"h4\", null, \"Error Loading Image\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, this.props.error.message))) : React.createElement(\"div\", {\n className: \"imageViewerLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"p\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spin fa-circle-o-notch fa-fw\"\n }), ' ', percComplete))));\n }\n }]);\n\n return LoadingIndicator;\n}(PureComponent);\n\n_defineProperty(LoadingIndicator, \"propTypes\", {\n percentComplete: propTypes.number,\n error: propTypes.object\n});\n\n_defineProperty(LoadingIndicator, \"defaultProps\", {\n percentComplete: 0,\n error: null\n});\n\nvar css$3 = \".ViewportOrientationMarkers {\\n pointer-events: none;\\n font-size: 15px;\\n color: #ccc;\\n line-height: 18px;\\n}\\n.ViewportOrientationMarkers .orientation-marker {\\n position: absolute;\\n}\\n.ViewportOrientationMarkers .top-mid {\\n top: 5px;\\n left: 50%;\\n}\\n.ViewportOrientationMarkers .left-mid {\\n top: 47%;\\n left: 5px;\\n}\\n\";\nstyleInject(css$3);\n\n/**\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param imageId The Cornerstone ImageId\n * @param viewport The current viewport\n */\n\nfunction getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools) {\n var imagePlane = cornerstone.metaData.get('imagePlane', imageId);\n\n if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {\n return;\n }\n\n var rowString = cornerstoneTools.orientation.getOrientationString(imagePlane.rowCosines);\n var columnString = cornerstoneTools.orientation.getOrientationString(imagePlane.columnCosines);\n var oppositeRowString = cornerstoneTools.orientation.invertOrientationString(rowString);\n var oppositeColumnString = cornerstoneTools.orientation.invertOrientationString(columnString);\n var markers = {\n top: oppositeColumnString,\n left: oppositeRowString\n }; // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n\n if (viewport.vflip) {\n markers.top = cornerstoneTools.orientation.invertOrientationString(markers.top);\n }\n\n if (viewport.hflip) {\n markers.left = cornerstoneTools.orientation.invertOrientationString(markers.left);\n } // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n\n\n if (viewport.rotation === 90 || viewport.rotation === -270) {\n return {\n top: markers.left,\n left: cornerstoneTools.orientation.invertOrientationString(markers.top)\n };\n } else if (viewport.rotation === -90 || viewport.rotation === 270) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.left),\n left: markers.top\n };\n } else if (viewport.rotation === 180 || viewport.rotation === -180) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.top),\n left: cornerstoneTools.orientation.invertOrientationString(markers.left)\n };\n }\n\n return markers;\n}\n\nvar ViewportOrientationMarkers =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOrientationMarkers, _PureComponent);\n\n function ViewportOrientationMarkers() {\n _classCallCheck(this, ViewportOrientationMarkers);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOrientationMarkers).apply(this, arguments));\n }\n\n _createClass(ViewportOrientationMarkers, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageId = _this$props.imageId,\n viewport = _this$props.viewport,\n cornerstone = _this$props.cornerstone,\n cornerstoneTools = _this$props.cornerstoneTools;\n var markers = getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools);\n\n if (!markers) {\n return '';\n }\n\n return React.createElement(\"div\", {\n className: \"ViewportOrientationMarkers noselect\"\n }, React.createElement(\"div\", {\n className: \"top-mid orientation-marker\"\n }, markers.top), React.createElement(\"div\", {\n className: \"left-mid orientation-marker\"\n }, markers.left));\n }\n }]);\n\n return ViewportOrientationMarkers;\n}(PureComponent);\n\nViewportOrientationMarkers.propTypes = {\n imageId: propTypes.string.isRequired,\n viewport: propTypes.object.isRequired\n};\n\nvar css$4 = \".CornerstoneViewport {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n\\n.viewport-element {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n background-color: black;\\n\\n /* Prevent the blue outline in Chrome when a viewport is selected */\\n outline: 0 !important;\\n\\n /* Prevents the entire page from getting larger\\n when the magnify tool is near the sides/corners of the page */\\n overflow: hidden;\\n}\\n\\n.viewportInstructions {\\n display: block;\\n font-size: 13px;\\n /*theme('color', '$textSecondaryColor')*/\\n color: #91b9cd;\\n line-height: 18px;\\n pointer-events: none; /* Necessary for drag/drop through to cornerstone element below */\\n text-align: center;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n margin: auto;\\n height: 20px;\\n}\\n\\n/* These are some good CSS settings for a circular magnifying glass\\n Try removing the border-radius to make a square magnifying glass */\\n.magnifyTool {\\n border: 4px white solid;\\n box-shadow: 2px 2px 10px #1e1e1e;\\n border-radius: 50%;\\n display: none;\\n cursor: none;\\n}\\n\";\nstyleInject(css$4);\n\nvar EVENT_RESIZE = 'resize';\n\nfunction setToolsPassive(cornerstoneTools, tools) {\n tools.forEach(function (tool) {\n cornerstoneTools.setToolPassive(tool);\n });\n}\n\nfunction initializeTools(cornerstoneTools, tools) {\n Array.from(tools).forEach(function (tool) {\n var apiTool = cornerstoneTools[\"\".concat(tool.name, \"Tool\")];\n\n if (apiTool) {\n cornerstoneTools.addTool(apiTool, tool.configuration);\n } else {\n throw new Error(\"Tool not found: \".concat(tool.name, \"Tool\"));\n }\n });\n}\n\nvar CornerstoneViewport =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CornerstoneViewport, _Component);\n\n function CornerstoneViewport(props) {\n var _this;\n\n _classCallCheck(this, CornerstoneViewport);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CornerstoneViewport).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onContextMenu\", function (event) {\n // Preventing the default behaviour for right-click is essential to\n // allow right-click tools to work.\n event.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWindowResize\", function () {\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageRendered\", function () {\n var viewport = _this.cornerstone.getViewport(_this.element);\n\n _this.setState({\n viewport: viewport\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onNewImage\", function () {\n var image = _this.cornerstone.getImage(_this.element);\n\n _this.setState({\n imageId: image.imageId\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setActiveTool\", function (activeTool) {\n // TODO: allow this config as props\n var leftMouseTools = ['Bidirectional', 'Wwwc', 'Length', 'Angle', 'StackScroll'];\n setToolsPassive(_this.cornerstoneTools, leftMouseTools); // pan is the default tool for middle mouse button\n\n var isPanToolActive = activeTool === 'Pan';\n var panOptions = {\n mouseButtonMask: isPanToolActive ? [1, 4] : [4],\n isTouchActive: isPanToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Pan', panOptions); // zoom is the default tool for right mouse button\n\n\n var isZoomToolActive = activeTool === 'Zoom';\n var zoomOptions = {\n mouseButtonMask: isZoomToolActive ? [1, 2] : [2],\n isTouchActive: isZoomToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Zoom', zoomOptions);\n\n _this.cornerstoneTools.setToolActive(activeTool, {\n mouseButtonMask: 1,\n isTouchActive: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onStackScroll\", function (event) {\n _this.setViewportActive();\n\n var element = event.currentTarget;\n\n var stackData = _this.cornerstoneTools.getToolState(element, 'stack');\n\n var stack = stackData.data[0];\n\n _this.hideExtraButtons();\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageLoaded\", function () {\n _this.setState({\n numImagesLoaded: _this.state.numImagesLoaded + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"startLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n _this.loadHandlerTimeout = setTimeout(function () {\n _this.setState({\n isLoading: true\n });\n }, CornerstoneViewport.loadIndicatorDelay);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"doneLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n\n _this.setState({\n isLoading: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMeasurementAddedOrRemoved\", function () {\n console.log('onMeasurementAddedOrRemoved');\n /* const { toolType, measurementData } = event.detail;\n // TODO: Pass in as prop?\n const toolsOfInterest = ['Bidirectional'];\n this.hideExtraButtons();\n if (toolsOfInterest.includes(toolType)) {\n const image = cornerstone.getImage(this.element);\n const viewport = cornerstone.getViewport(this.element);\n const type = {\n cornerstonetoolsmeasurementadded: 'added',\n cornerstonetoolsmeasurementremoved: 'removed'\n };\n const action = type[event.type];\n if (action === 'added') {\n measurementData._id = guid();\n measurementData.viewport = cloneDeep(viewport);\n }\n this.props.measurementsAddedOrRemoved(\n action,\n image.imageId,\n toolType,\n measurementData\n );\n }*/\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setViewportActive\", function () {\n if (!_this.props.isActive && _this.props.setViewportActive) {\n _this.props.setViewportActive();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMouseClick\", function (event) {\n _this.setViewportActive();\n\n if (event.detail.event.which === 3) {\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: false\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchPress\", function (event) {\n _this.setViewportActive();\n\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: true\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function () {\n _this.setViewportActive();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCloseToolContextMenu\", function () {\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"imageSliderOnInputCallback\", function (value) {\n _this.setViewportActive();\n\n var stack = _this.state.stack;\n stack.currentImageIdIndex = value;\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n // TODO: For some reason this isn't working?\n\n\n _this.scrollToIndex(_this.element, value);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hideExtraButtons\", function () {\n if (_this.state.bidirectionalAddLabelShow === true) {\n _this.setState({\n bidirectionalAddLabelShow: false\n });\n }\n\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _this.cornerstone = props.cornerstone;\n _this.cornerstoneTools = props.cornerstoneTools;\n _this.scrollToIndex = _this.cornerstoneTools.import('util/scrollToIndex'); // TODO: Allow viewport as a prop\n\n var _stack = props.viewportData.stack;\n _this.state = {\n stack: _stack,\n displaySetInstanceUid: props.viewportData.displaySetInstanceUid,\n imageId: _stack.imageIds[0],\n viewportHeight: '100%',\n isLoading: false,\n numImagesLoaded: 0,\n error: null,\n viewport: _this.cornerstone.getDefaultViewport(null, undefined)\n };\n var loadHandlerManager = _this.cornerstoneTools.loadHandlerManager;\n loadHandlerManager.setStartLoadHandler(_this.startLoadingHandler);\n loadHandlerManager.setEndLoadHandler(_this.doneLoadingHandler);\n _this.debouncedResize = lodash_debounce(function () {\n try {\n _this.cornerstone.getEnabledElement(_this.element);\n } catch (error) {\n console.error(error);\n return;\n }\n\n _this.cornerstone.resize(_this.element, true);\n\n _this.setState({\n viewportHeight: \"\".concat(_this.element.clientHeight - 20, \"px\")\n });\n }, 300);\n return _this;\n }\n\n _createClass(CornerstoneViewport, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var isLoading = this.state.isLoading || this.state.numImagesLoaded < 1;\n var displayLoadingIndicator = isLoading || this.state.error;\n var className = 'CornerstoneViewport';\n\n if (this.props.isActive) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"viewport-element\",\n onContextMenu: this.onContextMenu,\n ref: function ref(input) {\n _this2.element = input;\n }\n }, displayLoadingIndicator && React.createElement(LoadingIndicator, {\n error: this.state.error\n }), React.createElement(\"canvas\", {\n className: \"cornerstone-canvas\"\n }), React.createElement(ViewportOverlay, {\n stack: this.state.stack,\n viewport: this.state.viewport,\n imageId: this.state.imageId,\n numImagesLoaded: this.state.numImagesLoaded\n }), React.createElement(ViewportOrientationMarkers, {\n imageId: this.state.imageId,\n viewport: this.state.viewport,\n cornerstone: this.props.cornerstone,\n cornerstoneTools: this.props.cornerstoneTools\n })), React.createElement(ImageScrollbar, {\n onInputCallback: this.imageSliderOnInputCallback,\n max: this.state.stack.imageIds.length - 1,\n value: this.state.stack.currentImageIdIndex,\n height: this.state.viewportHeight\n }), this.props.children);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this3 = this;\n\n var element = this.element;\n this.eventHandlerData = [{\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.IMAGE_RENDERED,\n handler: this.onImageRendered\n }, {\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.NEW_IMAGE,\n handler: this.onNewImage\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.STACK_SCROLL,\n handler: this.onStackScroll\n },\n /*{\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_ADDED,\n handler: this.onMeasurementAddedOrRemoved\n },\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_REMOVED,\n handler: this.onMeasurementAddedOrRemoved\n },*/\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_CLICK,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_DOWN,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_PRESS,\n handler: this.onTouchPress\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_START,\n handler: this.onTouchStart\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_CLICK,\n handler: this.onDoubleClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_TAP,\n handler: this.onDoubleClick\n }, {\n eventTarget: window,\n eventType: EVENT_RESIZE,\n handler: this.onWindowResize\n }, {\n eventTarget: this.cornerstone.events,\n eventType: this.cornerstone.EVENTS.IMAGE_LOADED,\n handler: this.onImageLoaded\n }]; // Enable the DOM Element for use with Cornerstone\n\n this.cornerstone.enable(element, this.props.cornerstoneOptions); // Handle the case where the imageId isn't loaded correctly and the\n // imagePromise returns undefined\n // To test, uncomment the next line\n //let imageId = 'AfileThatDoesntWork'; // For testing only!\n\n var imageId = this.state.imageId;\n var imagePromise;\n\n try {\n imagePromise = this.cornerstone.loadAndCacheImage(imageId);\n } catch (error) {\n console.error(error);\n\n if (!imagePromise) {\n this.setState({\n error: error\n });\n return;\n }\n } // Load the first image in the stack\n\n\n imagePromise.then(function (image) {\n try {\n _this3.cornerstone.getEnabledElement(element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n } // Set Soft Tissue preset for all images by default\n\n\n var viewport = _this3.cornerstone.getDefaultViewportForImage(element, image);\n\n viewport.voi = {\n windowWidth: 400,\n windowCenter: 40\n }; // Display the first image\n\n _this3.cornerstone.displayImage(element, image, viewport); // Clear any previous tool state\n\n\n _this3.cornerstoneTools.clearToolState(_this3.element, 'stack');\n /* Add the stack tool state to the enabled element, and\n add stack state managers for the stack tool, CINE tool, and reference lines\n */\n\n\n var stack = _this3.state.stack;\n\n _this3.cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);\n\n _this3.cornerstoneTools.addToolState(element, 'stack', stack);\n\n if (_this3.props.enableStackPrefetch) {\n _this3.cornerstoneTools.stackPrefetch.enable(_this3.element);\n }\n\n var tools = [{\n name: 'Bidirectional',\n configuration: {\n getMeasurementLocationCallback: _this3.bidirectionalToolLabellingCallback,\n shadow: true,\n drawHandlesOnHover: true\n }\n }, {\n name: 'Wwwc'\n }, {\n name: 'Zoom',\n configuration: {\n minScale: 0.3,\n maxScale: 25,\n preventZoomOutsideImage: true\n }\n }, {\n name: 'Length'\n }, {\n name: 'Angle'\n }, {\n name: 'Pan'\n }, {\n name: 'StackScroll'\n }, {\n name: 'PanMultiTouch'\n }, {\n name: 'ZoomTouchPinch'\n }, {\n name: 'StackScrollMouseWheel'\n }, {\n name: 'StackScrollMultiTouch'\n }];\n initializeTools(_this3.cornerstoneTools, tools);\n\n _this3.setActiveTool(_this3.props.activeTool);\n /* For touch devices, by default we activate:\n - Pinch to zoom\n - Two-finger Pan\n - Three (or more) finger Stack Scroll\n */\n\n\n _this3.cornerstoneTools.setToolActive('PanMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('ZoomTouchPinch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('StackScrollMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n }); // TODO: We should probably configure this somewhere else\n\n\n _this3.cornerstoneTools.stackPrefetch.setConfiguration({\n maxImagesToPrefetch: Infinity,\n preserveExistingPool: false,\n maxSimultaneousRequests: 6\n });\n /* For mouse devices, by default we turn on:\n - Stack scrolling by mouse wheel\n - Stack scrolling by keyboard up / down arrow keys\n - Pan with middle click\n - Zoom with right click\n */\n\n\n _this3.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.addEventListener(eventType, handler);\n });\n\n _this3.setState({\n viewportHeight: \"\".concat(_this3.element.clientHeight - 20, \"px\")\n });\n }, function (error) {\n console.error(error);\n\n _this3.setState({\n error: error\n });\n });\n }\n }, {\n key: \"onDoubleClick\",\n value: function onDoubleClick() {\n console.log('onDoubleClick');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.removeEventListener(eventType, handler);\n });\n var element = this.element; // Remove all tools for the destroyed element\n // TODO[cornerstoneTools]: Make this happen internally\n // toolManager.removeToolsForElement(element);\n // Clear the stack prefetch data\n // TODO[cornerstoneTools]: Make this happen internally\n\n this.cornerstoneTools.clearToolState(element, 'stackPrefetch'); // Disable the viewport element with Cornerstone\n // This also triggers the removal of the element from all available\n // synchronizers, such as the one used for reference lines.\n\n this.cornerstone.disable(element); // Try to stop any currently playing clips\n // Otherwise the interval will continuously throw errors\n // TODO[cornerstoneTools]: Make this happen internally\n\n try {\n var enabledElement = this.cornerstone.getEnabledElement(element);\n\n if (enabledElement) {\n this.cornerstoneTools.stopClip(element);\n }\n } catch (error) {//console.warn(error);\n }\n\n if (this.props.clearViewportSpecificData) {\n this.props.clearViewportSpecificData();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n // TODO: Add a real object shallow comparison here?\n if (this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid) {\n var _this$props$viewportD = this.props.viewportData,\n displaySetInstanceUid = _this$props$viewportD.displaySetInstanceUid,\n studyInstanceUid = _this$props$viewportD.studyInstanceUid;\n var currentImageIdIndex = this.props.viewportData.stack.currentImageIdIndex; // Create shortcut to displaySet\n\n /*const study = OHIF.viewer.Studies.findBy({\n studyInstanceUid,\n });\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });*/\n\n var stack = this.props.viewportData.stack;\n var stackData = this.cornerstoneTools.getToolState(this.element, 'stack');\n var currentStack = stackData && stackData.data[0];\n\n if (!currentStack) {\n currentStack = {\n currentImageIdIndex: currentImageIdIndex,\n imageIds: stack.imageIds\n };\n this.cornerstoneTools.addStackStateManager(this.element, ['stack']);\n this.cornerstoneTools.addToolState(this.element, 'stack', currentStack);\n } else {\n // TODO: we should make something like setToolState by an ID\n currentStack.currentImageIdIndex = currentImageIdIndex;\n currentStack.imageIds = stack.imageIds;\n }\n\n var imageId = currentStack.imageIds[currentImageIdIndex];\n var viewportSpecificData = {\n displaySetInstanceUid: displaySetInstanceUid,\n studyInstanceUid: studyInstanceUid,\n stack: stack,\n imageId: imageId\n };\n this.setState(viewportSpecificData);\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData(viewportSpecificData);\n }*/\n\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n this.cornerstone.loadAndCacheImage(imageId).then(function (image) {\n try {\n _this4.cornerstone.getEnabledElement(_this4.element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n }\n\n var viewport = _this4.cornerstone.getDefaultViewportForImage(_this4.element, image); // Workaround for Cornerstone issue #304\n\n\n viewport.displayedArea.brhc = {\n x: image.width,\n y: image.height\n };\n\n _this4.cornerstone.displayImage(_this4.element, image, viewport);\n\n _this4.cornerstoneTools.stackPrefetch.enable(_this4.element);\n });\n }\n\n if (this.props.activeTool !== prevProps.activeTool) {\n this.setActiveTool(this.props.activeTool); // TODO: Why do we need to do this in v3?\n\n this.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.debouncedResize();\n }\n\n if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === true) {\n this.cornerstoneTools.stackPrefetch.enable(this.element);\n } else if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === false) {\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n }\n\n if (this.props.cineToolData.isPlaying !== prevProps.cineToolData.isPlaying) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element);\n } else {\n this.cornerstoneTools.stopClip(this.element);\n }\n }\n\n if (this.props.cineToolData.cineFrameRate !== prevProps.cineToolData.cineFrameRate) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element, this.props.cineToolData.cineFrameRate);\n } else {\n this.cornerstoneTools.stopClip(this.element, this.props.cineToolData.cineFrameRate);\n }\n }\n }\n }]);\n\n return CornerstoneViewport;\n}(Component);\n\n_defineProperty(CornerstoneViewport, \"defaultProps\", {\n activeTool: 'Wwwc',\n viewportData: {\n stack: {\n imageIds: [],\n currentImageIdIndex: 0\n }\n },\n isActive: false,\n cornerstoneOptions: {},\n enableStackPrefetch: true,\n cineToolData: {\n isPlaying: false,\n cineFrameRate: 24\n }\n});\n\n_defineProperty(CornerstoneViewport, \"propTypes\", {\n cornerstone: propTypes.object.isRequired,\n cornerstoneTools: propTypes.object.isRequired,\n children: propTypes.node,\n activeTool: propTypes.string,\n viewportData: propTypes.object.isRequired,\n measurementsAddedOrRemoved: propTypes.func,\n measurementsChanged: propTypes.func,\n isActive: propTypes.bool.isRequired,\n cornerstoneOptions: propTypes.object,\n setViewportActive: propTypes.func,\n setViewportSpecificData: propTypes.func,\n clearViewportSpecificData: propTypes.func,\n layout: propTypes.object,\n cineToolData: propTypes.object\n});\n\n_defineProperty(CornerstoneViewport, \"loadIndicatorDelay\", 45);\n\nexport default CornerstoneViewport;\n//# sourceMappingURL=index.es.js.map\n","import { connect } from 'react-redux';\nimport CornerstoneViewport from 'react-cornerstone-viewport';\nimport OHIF from 'ohif-core'\nimport cornerstone from \"cornerstone-core\";\nimport cornerstoneTools from \"cornerstone-tools\";\n\nconst { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;\n\nconst mapStateToProps = (state, ownProps) => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n // If this is the active viewport, enable prefetching.\n const { viewportIndex } = ownProps;//.viewportData;\n const isActive = viewportIndex === state.viewports.activeViewportIndex;\n const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {};\n\n return {\n layout: state.viewports.layout,\n isActive,\n activeTool: activeButton && activeButton.command,\n enableStackPrefetch: isActive,\n //stack: viewportSpecificData.stack,\n cineToolData: viewportSpecificData.cine,\n cornerstone,\n cornerstoneTools\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n const { viewportIndex } = ownProps;\n\n return {\n setViewportActive: () => {\n dispatch(setViewportActive(viewportIndex))\n },\n\n setViewportSpecificData: (data) => {\n dispatch(setViewportSpecificData(viewportIndex, data))\n },\n\n clearViewportSpecificData: () => {\n dispatch(clearViewportSpecificData(viewportIndex));\n }\n };\n};\n\nconst ConnectedCornerstoneViewport = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CornerstoneViewport);\n\nexport default ConnectedCornerstoneViewport;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction OHIFComponentPlugin(props) {\n return ({props.children});\n}\n\nOHIFComponentPlugin.propTypes = {\n id: PropTypes.string.isRequired,\n init: PropTypes.func.isRequired,\n destroy: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default OHIFComponentPlugin;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';\nimport OHIFComponentPlugin from './OHIFComponentPlugin.js';\n\nconst { StackManager } = OHIF.utils;\n\nclass OHIFCornerstoneViewportPlugin extends Component {\n static propTypes = {\n studies: PropTypes.object,\n displaySet: PropTypes.object,\n viewportIndex: PropTypes.number,\n };\n\n static id = 'CornerstoneViewportPlugin';\n\n static init() {\n console.log('CornerstoneViewportPlugin init()');\n }\n\n static destroy() {\n console.log('CornerstoneViewportPlugin destroy()');\n StackManager.clearStacks();\n }\n\n static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {\n // Create shortcut to displaySet\n const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);\n\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });\n\n // Get stack from Stack Manager\n return StackManager.findOrCreateStack(study, displaySet);\n }\n\n static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {\n const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);\n\n // Clone the stack here so we don't mutate it later\n const stack = Object.assign({}, currentStack);\n stack.currentImageIdIndex = 0;\n\n return stack;\n }\n\n render() {\n const { viewportIndex } = this.props;\n const { studies, displaySet } = this.props.viewportData;\n const { studyInstanceUid, displaySetInstanceUid } = displaySet;\n const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);\n const viewportData = {\n studyInstanceUid,\n displaySetInstanceUid,\n stack\n };\n\n const { id, init, destroy } = OHIFCornerstoneViewportPlugin;\n const pluginProps = { id, init, destroy };\n\n return (\n \n \n \n );\n }\n}\n\n\nexport default OHIFCornerstoneViewportPlugin;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers } from 'redux';\nimport PropTypes from 'prop-types';\nimport OHIF from 'ohif-core';\nimport './config';\nimport ui from './redux/ui.js'\nimport OHIFStandaloneViewer from './OHIFStandaloneViewer';\nimport OHIFCornerstoneViewportPlugin from './connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js';\n//import { loadUser, reducer as oidcReducer, OidcProvider} from 'redux-oidc';\n//import userManager from './userManager.js';\n//import Icons from \"./images/icons.svg\"\n\nconst Icons = 'icons.svg';\n\nconst reducers = OHIF.redux.reducers;\nreducers.ui = ui;\n//reducers.oidc = oidcReducer;\n\nconst combined = combineReducers(reducers)\n\nconst store = createStore(combined);\n//loadUser(store, userManager);\n\nconst defaultButtons = [\n {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: `${Icons}#icon-tools-stack-scroll`,\n active: false\n },\n {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: `${Icons}#icon-tools-zoom`,\n active: false\n },\n {\n command: 'Wwwc',\n type: 'tool',\n text: 'Levels',\n svgUrl: `${Icons}#icon-tools-levels`,\n active: true\n },\n {\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: `${Icons}#icon-tools-pan`,\n active: false\n },\n {\n command: 'Length',\n type: 'tool',\n text: 'Length',\n svgUrl: `${Icons}#icon-tools-measure-temp`,\n active: false\n },\n /*{\n command: 'Annotate',\n type: 'tool',\n text: 'Annotate',\n svgUrl: `${Icons}#icon-tools-measure-non-target`,\n active: false\n },*/\n {\n command: 'Angle',\n type: 'tool',\n text: 'Angle',\n iconClasses: 'fa fa-angle-left',\n active: false\n },\n {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: `${Icons}#icon-tools-measure-target`,\n active: false\n },\n {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: `${Icons}#icon-tools-reset`,\n active: false\n },\n];\n\nconst buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);\n\nstore.dispatch(buttonsAction);\n\nconst pluginAction = OHIF.redux.actions.addPlugin({\n id: 'cornerstone',\n type: 'viewport',\n component: OHIFCornerstoneViewportPlugin\n});\n\nstore.dispatch(pluginAction);\n\nconst servers = {\n dicomWeb: [\n {\n \"name\": \"DCM4CHEE\",\n //\"wadoUriRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoUriRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoUriRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado\",\n \"qidoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"qidoSupportsIncludeField\": true,\n \"imageRendering\": \"wadors\",\n \"thumbnailRendering\": \"wadors\",\n \"requestOptions\": {\n \"requestFromBrowser\": true,\n \"logRequests\": true,\n \"logResponses\": false,\n \"logTiming\": true,\n //\"auth\": \"admin:admin\"\n //\"auth\": \"cloud:healthcare\"\n }\n }\n ]\n};\n\nOHIF.utils.addServers(servers, store);\n\n// TODO[react] Use a provider when the whole tree is React\nwindow.store = store;\n\nclass App extends Component {\n static propTypes = {\n routerBasename: PropTypes.string\n }\n\n render() {\n return (\n \n {/**/}\n \n \n \n {/**/}\n \n );\n }\n}\n\nexport default App;\n"],"names":["_typeof","printWarning","ReactPropTypesSecret","require$$0","assign","checkPropTypes","require$$1","__DEV__","warning","_extends","invariant","HashChangeEvent","_classCallCheck","_possibleConstructorReturn","_inherits","React","PropTypes","createHistory","pathToRegexp","_objectWithoutProperties","patternCache","cacheLimit","cacheCount","addLeadingSlash","stripBasename","defineProperty","getOwnPropertySymbols","getPrototypeOf","hoistStatics","Component","_assertThisInitialized","REACT_STATICS","KNOWN_STATICS","ReactIs","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","isValidElementType","PureComponent","ponyfill","$$observable","isPlainObject","defaultSelectorFactory","cornerstone","window","cornerstoneTools","cornerstoneWADOImageLoader","cornerstoneMath","external","this","define","info","homepage","Hammer","init","dicomParser","OHIF","ROOT_URL","location","pathname","includes","origin","config","maxWebWorkers","Math","max","navigator","hardwareConcurrency","startWebWorkersOnDemand","webWorkerPath","taskConfiguration","decodeTask","loadCodecsOnStartup","initializeCodecsOnStartup","codecsPath","usePDFJS","strict","webWorkerManager","initialize","user","getAccessToken","state","store","getState","oidc","access_token","configure","beforeSend","xhr","headers","DICOMWeb","getAuthorizationHeader","Authorization","setRequestHeader","fontFamily","textStyle","setFont","toolStyle","setToolWidth","toolColors","setToolColor","setActiveColor","touchProximity","defaultState","leftSidebarOpen","rightSidebarOpen","ui","action","type","Object","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","objectAssign","styleInject","Icons","Header","home","studyLink","list","propTypes","bool","isRequired","object","defaultProps","withRouter","global","mapStateToProps","ownProps","stackLoadingProgressMap","loading","progress","studiesWithLoadingData","cloneDeep","studies","forEach","study","thumbnails","data","displaySetInstanceUid","stackId","stackProgressData","stackPercentComplete","percentComplete","ConnectedStudyBrowser","connect","StudyBrowser","viewportPluginIds","plugins","availablePlugins","filter","plugin","PLUGIN_TYPES","VIEWPORT","map","id","find","component","defaultPlugin","length","layout","viewports","activeViewportIndex","ConnectedLayoutManager","LayoutManager","ViewerMain","viewportData","viewportIndex","item","console","warn","updatedViewportData","slice","displaySet","findDisplaySet","props","studyInstanceUid","setState","displaySets","dSet","images","push","getDisplaySetsWithImages","setViewportData","viewer","updateImageSynchronizer","destroy","array","FlexboxLayout","studiesForBrowser","seriesDescription","seriesNumber","instanceNumber","numImageFrames","imageId","getImageId","getStudiesForBrowser","mainContentClassName","ConnectedFlexboxLayout","setToolActive","redux","actions","activeButton","tools","buttons","tool","active","activeCommand","command","mapDispatchToProps","dispatch","ConnectedToolbarSection","ToolbarSection","setLayout","currentLayout","onChange","selectedCell","rows","row","columns","col","numViewports","i","height","width","ConnectedLayoutButton","LayoutButton","setViewportSpecificData","getActiveViewportSpecificData","viewportSpecificData","activeViewportSpecificData","stack","imageIds","currentImageIdIndex","cine","isPlaying","cineFrameRate","activeViewportStackData","activeViewportCineData","dispatchSetViewportSpecificData","mergeProps","propsFromState","propsFromDispatch","onPlayPauseChanged","onFrameRateChanged","frameRate","onClickNextButton","largestPossibleIndex","min","onClickBackButton","onClickSkipToStart","onClickSkipToEnd","ConnectedCineDialog","CineDialog","ToolbarRow","value","setLeftSidebarOpen","leftSidebarToggle","svgLink","svgWidth","svgHeight","bottomLabel","leftSidebarValue","padding","onLeftSidebarValueChanged","marginLeft","display","func","setRightSidebarOpen","ConnectedToolbarRow","StudyLoadingMonitor","options","_setProgressData","progressId","progressData","setStudyLoadingProgress","_clearProgressById","clearStudyLoadingProgress","StudyLoadingListener","classes","studyLoadingListener","getInstance","clear","addStudies","ConnectedStudyLoadingMonitor","StudyPrefetcher","StudyPrefetcherComponent","studyPrefetcher","setStudies","StackManager","utils","defaultTool","left","right","middle","refLinesEnabled","Synchronizer","metadataProvider","MetadataProvider","metaData","addProvider","provider","bind","setMetadataProvider","Viewer","createDisplaySets","ViewerRetrieveStudyData","error","studyInstanceUids","seriesInstanceUids","server","promise","retrieveStudiesMetadata","then","updatedStudies","catch","Error","JSON","stringify","isActive","a","activeServer","servers","ConnectedViewerRetrieveStudyData","ViewerRouting","match","params","studyUIDs","seriesUIDs","split","shape","string","parseQueryAndFetchStudies","query","Promise","resolve","reject","url","oReq","XMLHttpRequest","addEventListener","log","responseText","parse","dicomWeb","open","send","StandaloneRouting","qs","search","IHEInvokeImageDisplay","requestType","displayStudyList","studyUID","uids","decodedData","atob","patientID","reload","App","unlisten","history","listen","setContext","ConnectedApp","ViewerbaseDragDropContext","setViewportActive","clearViewportSpecificData","activeTool","enableStackPrefetch","cineToolData","ConnectedCornerstoneViewport","CornerstoneViewport","OHIFComponentPlugin","children","node","OHIFCornerstoneViewportPlugin","getPluginViewportData","pluginProps","clearStacks","set","findOrCreateStack","number","currentStack","getCornerstoneStack","reducers","combined","combineReducers","createStore","defaultButtons","text","svgUrl","iconClasses","buttonsAction","setAvailableButtons","pluginAction","addPlugin","addServers","routerBasename"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CA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,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM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S,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAA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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CA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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAA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AAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,C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EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CA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E,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,E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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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AC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CA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CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAA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EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC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AC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACjwJ;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GAC9jK;EACD,YAAY,EAAE;IACZ,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACh3J;EACD,SAAS,EAAE;IACT,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,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E,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MACjZ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC5X;GACF;EACD,QAAQ,EAAE;IACR,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,CAAC;IACR,aAAa,EAAE;MACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;MACppC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;MAC5pC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,W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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC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AC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,C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,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,6DAA6D,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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C,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,C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AAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,C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,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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AAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,I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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BCM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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router-dom/node_modules/warning/warning.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/warning/warning.js","../node_modules/invariant/invariant.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/history/es/PathUtils.js","../node_modules/history/es/LocationUtils.js","../node_modules/history/es/createTransitionManager.js","../node_modules/history/es/DOMUtils.js","../node_modules/history/es/createBrowserHistory.js","../node_modules/history/es/createHashHistory.js","../node_modules/history/es/createMemoryHistory.js","../node_modules/react-router/node_modules/warning/warning.js","../node_modules/react-router/es/Router.js","../node_modules/react-router-dom/es/Router.js","../node_modules/react-router-dom/es/BrowserRouter.js","../node_modules/react-router-dom/es/HashRouter.js","../node_modules/react-router-dom/es/Link.js","../node_modules/react-router/es/MemoryRouter.js","../node_modules/react-router-dom/es/MemoryRouter.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/path-to-regexp/index.js","../node_modules/react-router/es/matchPath.js","../node_modules/react-router/es/Route.js","../node_modules/react-router-dom/es/Route.js","../node_modules/react-router-dom/es/NavLink.js","../node_modules/react-router/es/Prompt.js","../node_modules/react-router-dom/es/Prompt.js","../node_modules/react-router/es/generatePath.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router-dom/es/Redirect.js","../node_modules/react-router/es/StaticRouter.js","../node_modules/react-router-dom/es/StaticRouter.js","../node_modules/react-router/es/Switch.js","../node_modules/react-router-dom/es/Switch.js","../node_modules/react-router-dom/es/generatePath.js","../node_modules/react-router-dom/es/matchPath.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router-dom/es/withRouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/utils/isPlainObject.js","../node_modules/react-redux/es/utils/warning.js","../node_modules/react-redux/es/utils/verifyPlainObject.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/verifySubselectors.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../../ohif-core/dist/index.es.js","../node_modules/dicom-parser/dist/dicomParser.min.js","../node_modules/cornerstone-core/dist/cornerstone.js","../node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js","../node_modules/cornerstone-math/dist/cornerstoneMath.min.js","../node_modules/cornerstone-tools/dist/cornerstoneTools.min.js","../node_modules/hammerjs/hammer.js","../src/config.js","../src/redux/ui.js","../../react-viewerbase/dist/index.es.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/Header/Header.js","../node_modules/lodash.clonedeep/index.js","../src/connectedComponents/ConnectedStudyBrowser.js","../src/connectedComponents/ConnectedLayoutManager.js","../src/connectedComponents/ViewerMain.js","../src/connectedComponents/FlexboxLayout.js","../src/connectedComponents/ConnectedFlexboxLayout.js","../src/connectedComponents/ConnectedToolbarSection.js","../src/connectedComponents/ConnectedLayoutButton.js","../src/connectedComponents/ConnectedCineDialog.js","../src/connectedComponents/ToolbarRow.js","../src/redux/actions.js","../src/connectedComponents/ConnectedToolbarRow.js","../src/components/StudyLoadingMonitor.js","../src/connectedComponents/ConnectedStudyLoadingMonitor.js","../src/components/StudyPrefetcher.js","../src/connectedComponents/Viewer.js","../src/connectedComponents/ViewerRetrieveStudyData.js","../src/connectedComponents/ConnectedViewerRetrieveStudyData.js","../src/routes/ViewerRouting.js","../node_modules/strict-uri-encode/index.js","../node_modules/query-string/index.js","../src/routes/StandaloneRouting.js","../src/routes/IHEInvokeImageDisplay.js","../src/OHIFStandaloneViewer.js","../../react-cornerstone-viewport/dist/index.es.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/ConnectedCornerstoneViewport.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFComponentPlugin.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js","../src/App.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createHashHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n _inherits(HashRouter, _React$Component);\n\n function HashRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, HashRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n HashRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\");\n };\n\n HashRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n basename: PropTypes.string,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"]),\n children: PropTypes.node\n};\n\n\nexport default HashRouter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware .\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use outside a \");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n _inherits(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MemoryRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\");\n };\n\n MemoryRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default MemoryRouter;","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from \"react-router/es/MemoryRouter\";\n\nexport default MemoryRouter;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // already computed the match for us\n\n invariant(router, \"You should not use or withRouter() outside a \");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from \n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n _inherits(Prompt, _React$Component);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Prompt.prototype.enable = function enable(message) {\n if (this.unblock) this.unblock();\n\n this.unblock = this.context.router.history.block(message);\n };\n\n Prompt.prototype.disable = function disable() {\n if (this.unblock) {\n this.unblock();\n this.unblock = null;\n }\n };\n\n Prompt.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.props.when) this.enable(this.props.message);\n };\n\n Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.when) {\n if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n } else {\n this.disable();\n }\n };\n\n Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n this.disable();\n };\n\n Prompt.prototype.render = function render() {\n return null;\n };\n\n return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n when: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n when: true\n};\nPrompt.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n block: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Prompt;","// Written in this round about way for babel-transform-imports\nimport Prompt from \"react-router/es/Prompt\";\n\nexport default Prompt;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var compiledGenerator = pathToRegexp.compile(pattern);\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n\n this.perform();\n };\n\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n\n return to;\n };\n\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n\n var to = this.computeTo(this.props);\n\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n\n Redirect.prototype.render = function render() {\n return null;\n };\n\n return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n computedMatch: PropTypes.object, // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport Router from \"./Router\";\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n};\n\nvar addBasename = function addBasename(basename, location) {\n if (!basename) return location;\n\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n if (!basename) return location;\n\n var base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n};\n\nvar createURL = function createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n return function () {\n invariant(false, \"You cannot %s with \", methodName);\n };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = function (_React$Component) {\n _inherits(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, StaticRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n return addLeadingSlash(_this.props.basename + createURL(path));\n }, _this.handlePush = function (location) {\n var _this$props = _this.props,\n basename = _this$props.basename,\n context = _this$props.context;\n\n context.action = \"PUSH\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleReplace = function (location) {\n var _this$props2 = _this.props,\n basename = _this$props2.basename,\n context = _this$props2.context;\n\n context.action = \"REPLACE\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleListen = function () {\n return noop;\n }, _this.handleBlock = function () {\n return noop;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n StaticRouter.prototype.getChildContext = function getChildContext() {\n return {\n router: {\n staticContext: this.props.context\n }\n };\n };\n\n StaticRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\");\n };\n\n StaticRouter.prototype.render = function render() {\n var _props = this.props,\n basename = _props.basename,\n context = _props.context,\n location = _props.location,\n props = _objectWithoutProperties(_props, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: this.createHref,\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return React.createElement(Router, _extends({}, props, { history: history }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object.isRequired,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n basename: \"\",\n location: \"/\"\n};\nStaticRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;","// Written in this round about way for babel-transform-imports\nimport StaticRouter from \"react-router/es/StaticRouter\";\n\nexport default StaticRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport generatePath from \"react-router/es/generatePath\";\n\nexport default generatePath;","// Written in this round about way for babel-transform-imports\nimport matchPath from \"react-router/es/matchPath\";\n\nexport default matchPath;","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.state = {\n storeState: store.getState(),\n store: store\n };\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.subscribe();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n if (this.unsubscribe) this.unsubscribe();\n this.subscribe();\n }\n };\n\n _proto.subscribe = function subscribe() {\n var _this2 = this;\n\n var store = this.props.store;\n this.unsubscribe = store.subscribe(function () {\n var newStoreState = store.getState();\n\n if (!_this2._isMounted) {\n return;\n }\n\n _this2.setState(function (providerState) {\n // If the value is the same, skip the unnecessary state update.\n if (providerState.storeState === newStoreState) {\n return null;\n }\n\n return {\n storeState: newStoreState\n };\n });\n }); // Actions might have been dispatched between render and mount - handle those\n\n var postMountStoreState = store.getState();\n\n if (postMountStoreState !== this.state.storeState) {\n this.setState({\n storeState: postMountStoreState\n });\n }\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.7.0\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, PureComponent } from 'react';\nimport { isValidElementType } from 'react-is';\nimport { ReactReduxContext } from './Context';\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React-Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n var OuterBaseComponent = Component;\n var FinalWrappedComponent = WrappedComponent;\n\n if (pure) {\n OuterBaseComponent = PureComponent;\n }\n\n function makeDerivedPropsSelector() {\n var lastProps;\n var lastState;\n var lastDerivedProps;\n var lastStore;\n var sourceSelector;\n return function selectDerivedProps(state, props, store) {\n if (pure && lastProps === props && lastState === state) {\n return lastDerivedProps;\n }\n\n if (store !== lastStore) {\n lastStore = store;\n sourceSelector = selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n\n lastProps = props;\n lastState = state;\n var nextProps = sourceSelector(state, props);\n\n if (lastDerivedProps === nextProps) {\n return lastDerivedProps;\n }\n\n lastDerivedProps = nextProps;\n return lastDerivedProps;\n };\n }\n\n function makeChildElementSelector() {\n var lastChildProps, lastForwardRef, lastChildElement;\n return function selectChildElement(childProps, forwardRef) {\n if (childProps !== lastChildProps || forwardRef !== lastForwardRef) {\n lastChildProps = childProps;\n lastForwardRef = forwardRef;\n lastChildElement = React.createElement(FinalWrappedComponent, _extends({}, childProps, {\n ref: forwardRef\n }));\n }\n\n return lastChildElement;\n };\n }\n\n var Connect =\n /*#__PURE__*/\n function (_OuterBaseComponent) {\n _inheritsLoose(Connect, _OuterBaseComponent);\n\n function Connect(props) {\n var _this;\n\n _this = _OuterBaseComponent.call(this, props) || this;\n invariant(forwardRef ? !props.wrapperProps[storeKey] : !props[storeKey], 'Passing redux store in props has been removed and does not do anything. ' + customStoreWarningMessage);\n _this.selectDerivedProps = makeDerivedPropsSelector();\n _this.selectChildElement = makeChildElementSelector();\n _this.renderWrappedComponent = _this.renderWrappedComponent.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.renderWrappedComponent = function renderWrappedComponent(value) {\n invariant(value, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var storeState = value.storeState,\n store = value.store;\n var wrapperProps = this.props;\n var forwardedRef;\n\n if (forwardRef) {\n wrapperProps = this.props.wrapperProps;\n forwardedRef = this.props.forwardedRef;\n }\n\n var derivedProps = this.selectDerivedProps(storeState, wrapperProps, store);\n return this.selectChildElement(derivedProps, forwardedRef);\n };\n\n _proto.render = function render() {\n var ContextToUse = this.props.context || Context;\n return React.createElement(ContextToUse.Consumer, null, this.renderWrappedComponent);\n };\n\n return Connect;\n }(OuterBaseComponent);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, {\n wrapperProps: props,\n forwardedRef: ref\n });\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar cornerstone = window.cornerstone;\nvar cornerstoneTools = window.cornerstoneTools;\nvar cornerstoneWADOImageLoader = window.cornerstoneWADOImageLoader;\nvar cornerstoneMath = window.cornerstoneMath;\nvar external = {\n set cornerstone(cs) {\n cornerstone = cs;\n },\n\n get cornerstone() {\n return cornerstone;\n },\n\n set cornerstoneTools(tools) {\n cornerstoneTools = tools;\n },\n\n get cornerstoneTools() {\n return cornerstoneTools;\n },\n\n set cornerstoneWADOImageLoader(wado) {\n cornerstoneWADOImageLoader = wado;\n },\n\n get cornerstoneWADOImageLoader() {\n return cornerstoneWADOImageLoader;\n },\n\n set cornerstoneMath(math) {\n cornerstoneMath = math;\n },\n\n get cornerstoneMath() {\n return cornerstoneMath;\n }\n\n};\n\nfunction getBoundingBox(context, textLines, x, y, options) {\n var cornerstoneTools = external.cornerstoneTools;\n\n if (Object.prototype.toString.call(textLines) !== '[object Array]') {\n textLines = [textLines];\n }\n\n var padding = 5;\n var font = cornerstoneTools.textStyle.getFont();\n var fontSize = cornerstoneTools.textStyle.getFontSize();\n context.save();\n context.font = font;\n context.textBaseline = 'top'; // Find the longest text width in the array of text data\n\n var maxWidth = 0;\n textLines.forEach(function (text) {\n // Get the text width in the current font\n var width = context.measureText(text).width; // Find the maximum with for all the text rows;\n\n maxWidth = Math.max(maxWidth, width);\n }); // Calculate the bounding box for this text box\n\n var boundingBox = {\n width: maxWidth + padding * 2,\n height: padding + textLines.length * (fontSize + padding)\n };\n\n if (options && options.centering && options.centering.x === true) {\n x -= boundingBox.width / 2;\n }\n\n if (options && options.centering && options.centering.y === true) {\n y -= boundingBox.height / 2;\n }\n\n boundingBox.left = x;\n boundingBox.top = y;\n context.restore(); // Return the bounding box so it can be used for pointNearHandle\n\n return boundingBox;\n}\n\nfunction pixelToPage(element, position) {\n var cornerstone = external.cornerstone;\n var enabledElement = cornerstone.getEnabledElement(element);\n var result = {\n x: 0,\n y: 0\n }; // Stop here if the cornerstone element is not enabled or position is not an object\n\n if (!enabledElement || _typeof(position) !== 'object') {\n return result;\n }\n\n var canvas = enabledElement.canvas;\n var canvasOffset = $(canvas).offset();\n result.x += canvasOffset.left;\n result.y += canvasOffset.top;\n var canvasPosition = cornerstone.pixelToCanvas(element, position);\n result.x += canvasPosition.x;\n result.y += canvasPosition.y;\n return result;\n}\n\nfunction repositionTextBox(eventData, measurementData, config) {\n var cornerstone = external.cornerstone; // Stop here if it's not a measurement creating\n\n if (!measurementData.isCreating) {\n return;\n }\n\n var element = eventData.element;\n var enabledElement = cornerstone.getEnabledElement(element);\n var image = enabledElement.image;\n var allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;\n var allow = {\n T: !allowedBorders || allowedBorders.includes('T'),\n R: !allowedBorders || allowedBorders.includes('R'),\n B: !allowedBorders || allowedBorders.includes('B'),\n L: !allowedBorders || allowedBorders.includes('L')\n };\n\n var getAvailableBlankAreas = function getAvailableBlankAreas(enabledElement, labelWidth, labelHeight) {\n var element = enabledElement.element,\n canvas = enabledElement.canvas,\n image = enabledElement.image;\n var topLeft = cornerstone.pixelToCanvas(element, {\n x: 0,\n y: 0\n });\n var bottomRight = cornerstone.pixelToCanvas(element, {\n x: image.width,\n y: image.height\n });\n var $canvas = $(canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var result = {};\n result['x-1'] = allow.L && topLeft.x > labelWidth;\n result['y-1'] = allow.T && topLeft.y > labelHeight;\n result.x1 = allow.R && canvasWidth - bottomRight.x > labelWidth;\n result.y1 = allow.B && canvasHeight - bottomRight.y > labelHeight;\n return result;\n };\n\n var getRenderingInformation = function getRenderingInformation(limits, tool) {\n var mid = {};\n mid.x = limits.x / 2;\n mid.y = limits.y / 2;\n var directions = {};\n directions.x = tool.x < mid.x ? -1 : 1;\n directions.y = tool.y < mid.y ? -1 : 1;\n var diffX = directions.x < 0 ? tool.x : limits.x - tool.x;\n var diffY = directions.y < 0 ? tool.y : limits.y - tool.y;\n var cornerAxis = diffY < diffX ? 'y' : 'x';\n var map = {\n 'x-1': 'L',\n 'y-1': 'T',\n x1: 'R',\n y1: 'B'\n };\n var current = 0;\n\n while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {\n // Invert the direction for the next iteration\n directions[cornerAxis] *= -1; // Invert the tempCornerAxis\n\n cornerAxis = cornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n return {\n directions: directions,\n cornerAxis: cornerAxis\n };\n };\n\n var calculateAxisCenter = function calculateAxisCenter(axis, start, end) {\n var a = start[axis];\n var b = end[axis];\n var lowest = Math.min(a, b);\n var highest = Math.max(a, b);\n return lowest + (highest - lowest) / 2;\n };\n\n var getTextBoxSizeInPixels = function getTextBoxSizeInPixels(element, bounds) {\n var topLeft = cornerstone.pageToPixel(element, 0, 0);\n var bottomRight = cornerstone.pageToPixel(element, bounds.x, bounds.y);\n return {\n x: bottomRight.x - topLeft.x,\n y: bottomRight.y - topLeft.y\n };\n };\n\n function getTextBoxOffset(config, cornerAxis, toolAxis, boxSize) {\n config = config || {};\n var centering = config.centering || {};\n var centerX = !!centering.x;\n var centerY = !!centering.y;\n var halfBoxSizeX = boxSize.x / 2;\n var halfBoxSizeY = boxSize.y / 2;\n var offset = {\n x: [],\n y: []\n };\n\n if (cornerAxis === 'x') {\n var offsetY = centerY ? 0 : halfBoxSizeY;\n offset.x[-1] = centerX ? halfBoxSizeX : 0;\n offset.x[1] = centerX ? -halfBoxSizeX : -boxSize.x;\n offset.y[-1] = offsetY;\n offset.y[1] = offsetY;\n } else {\n var offsetX = centerX ? 0 : halfBoxSizeX;\n offset.x[-1] = offsetX;\n offset.x[1] = offsetX;\n offset.y[-1] = centerY ? halfBoxSizeY : 0;\n offset.y[1] = centerY ? -halfBoxSizeY : -boxSize.y;\n }\n\n return offset;\n }\n\n var handles = measurementData.handles;\n var textBox = handles.textBox;\n var $canvas = $(enabledElement.canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var offset = $canvas.offset();\n var canvasDimensions = {\n x: canvasWidth,\n y: canvasHeight\n };\n var bounds = {};\n bounds.x = textBox.boundingBox.width;\n bounds.y = textBox.boundingBox.height;\n\n var getHandlePosition = function getHandlePosition(key) {\n var _handles$key = handles[key],\n x = _handles$key.x,\n y = _handles$key.y;\n return {\n x: x,\n y: y\n };\n };\n\n var start = getHandlePosition('start');\n var end = getHandlePosition('end');\n var tool = {};\n tool.x = calculateAxisCenter('x', start, end);\n tool.y = calculateAxisCenter('y', start, end);\n var limits = {};\n limits.x = image.width;\n limits.y = image.height;\n\n var _getRenderingInformat = getRenderingInformation(limits, tool),\n directions = _getRenderingInformat.directions,\n cornerAxis = _getRenderingInformat.cornerAxis;\n\n var availableAreas = getAvailableBlankAreas(enabledElement, bounds.x, bounds.y);\n var tempDirections = Object.assign({}, directions);\n var tempCornerAxis = cornerAxis;\n var foundPlace = false;\n var current = 0;\n\n while (current < 4) {\n if (availableAreas[tempCornerAxis + tempDirections[tempCornerAxis]]) {\n foundPlace = true;\n break;\n } // Invert the direction for the next iteration\n\n\n tempDirections[tempCornerAxis] *= -1; // Invert the tempCornerAxis\n\n tempCornerAxis = tempCornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n var cornerAxisPosition;\n\n if (foundPlace) {\n directions = Object.assign({}, directions, tempDirections);\n cornerAxis = tempCornerAxis;\n cornerAxisPosition = directions[cornerAxis] < 0 ? 0 : limits[cornerAxis];\n } else {\n limits = Object.assign({}, limits, canvasDimensions);\n var toolPositionOnCanvas = cornerstone.pixelToCanvas(element, tool);\n var renderingInformation = getRenderingInformation(limits, toolPositionOnCanvas);\n directions = renderingInformation.directions;\n cornerAxis = renderingInformation.cornerAxis;\n var position = {\n x: directions.x < 0 ? offset.left : offset.left + canvasWidth,\n y: directions.y < 0 ? offset.top : offset.top + canvasHeight\n };\n var pixelPosition = cornerstone.pageToPixel(element, position.x, position.y);\n cornerAxisPosition = pixelPosition[cornerAxis];\n }\n\n var toolAxis = cornerAxis === 'x' ? 'y' : 'x';\n var boxSize = getTextBoxSizeInPixels(element, bounds);\n textBox[cornerAxis] = cornerAxisPosition;\n textBox[toolAxis] = tool[toolAxis]; // Adjust the text box position reducing its size from the corner axis\n\n var textBoxOffset = getTextBoxOffset(config, cornerAxis, toolAxis, boxSize);\n textBox[cornerAxis] += textBoxOffset[cornerAxis][directions[cornerAxis]]; // Preventing the text box from partially going outside the canvas area\n\n var topLeft = cornerstone.pixelToCanvas(element, textBox);\n var bottomRight = {\n x: topLeft.x + bounds.x,\n y: topLeft.y + bounds.y\n };\n var canvasBorders = {\n x0: offset.left,\n y0: offset.top,\n x1: offset.left + canvasWidth,\n y1: offset.top + canvasHeight\n };\n\n if (topLeft[toolAxis] < 0) {\n var x = canvasBorders.x0;\n var y = canvasBorders.y0;\n\n var _pixelPosition = cornerstone.pageToPixel(element, x, y);\n\n textBox[toolAxis] = _pixelPosition[toolAxis];\n } else if (bottomRight[toolAxis] > canvasDimensions[toolAxis]) {\n var _x = canvasBorders.x1 - bounds.x;\n\n var _y = canvasBorders.y1 - bounds.y;\n\n var _pixelPosition2 = cornerstone.pageToPixel(element, _x, _y);\n\n textBox[toolAxis] = _pixelPosition2[toolAxis];\n }\n}\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar REGEX_TAG = /^x[0-9a-fx]{8}$/;\nvar DICOMTagDescriptions = Object.create(Object.prototype, {\n _descriptions: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n },\n tagNumberToString: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function tagNumberToString(tag) {\n var string; // by default, undefined is returned...\n\n if (this.isValidTagNumber(tag)) {\n // if it's a number, build its hexadecimal representation...\n string = 'x' + ('00000000' + tag.toString(16)).substr(-8);\n }\n\n return string;\n }\n },\n isValidTagNumber: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTagNumber(tag) {\n return _typeof(tag) === NUMBER && tag >= 0 && tag <= 0xffffffff;\n }\n },\n isValidTag: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTag(tag) {\n return _typeof(tag) === STRING ? REGEX_TAG.test(tag) : this.isValidTagNumber(tag);\n }\n },\n find: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function find(name) {\n var description; // by default, undefined is returned...\n\n if (_typeof(name) !== STRING) {\n // if it's a number, a tag string will be returned...\n name = this.tagNumberToString(name);\n }\n\n if (_typeof(name) === STRING) {\n description = this._descriptions[name];\n }\n\n return description;\n }\n },\n init: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function init(descriptionMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _descriptions = this._descriptions;\n\n for (var tag in descriptionMap) {\n if (_hasOwn.call(descriptionMap, tag)) {\n if (!this.isValidTag(tag)) {\n // Skip in case tag is not valid...\n console.info(\"DICOMTagDescriptions: Invalid tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n }\n\n if (tag in _descriptions) {\n // Skip in case the tag is duplicated...\n console.info(\"DICOMTagDescriptions: Duplicated tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n } // Save keyword...\n\n\n var keyword = descriptionMap[tag]; // Create a description entry and freeze it...\n\n var entry = Object.create(null);\n entry.tag = tag;\n entry.keyword = keyword;\n Object.freeze(entry); // Add tag references to entry...\n\n _descriptions[tag] = entry; // Add keyword references to entry (if not present already)...\n\n if (keyword in _descriptions) {\n var currentEntry = _descriptions[keyword];\n console.info(\"DICOMTagDescriptions: Using <\".concat(currentEntry.tag, \",\").concat(currentEntry.keyword, \"> instead of <\").concat(entry.tag, \",\").concat(entry.keyword, \"> for keyword \\\"\").concat(keyword, \"\\\"...\"));\n } else {\n _descriptions[keyword] = entry;\n }\n }\n } // Freeze internal description map...\n\n\n Object.freeze(_descriptions); // Freeze itself...\n\n Object.freeze(this);\n }\n }\n});\n/**\n * Map with DICOM Tag Descriptions\n */\n\nvar initialTagDescriptionMap = {\n x00020000: 'FileMetaInfoGroupLength',\n x00020001: 'FileMetaInfoVersion',\n x00020002: 'MediaStorageSOPClassUID',\n x00020003: 'MediaStorageSOPInstanceUID',\n x00020010: 'TransferSyntaxUID',\n x00020012: 'ImplementationClassUID',\n x00020013: 'ImplementationVersionName',\n x00020016: 'SourceApplicationEntityTitle',\n x00020100: 'PrivateInformationCreatorUID',\n x00020102: 'PrivateInformation',\n x00041130: 'FileSetID',\n x00041141: 'FileSetDescriptorFileID',\n x00041142: 'SpecificCharacterSetOfFile',\n x00041200: 'FirstDirectoryRecordOffset',\n x00041202: 'LastDirectoryRecordOffset',\n x00041212: 'FileSetConsistencyFlag',\n x00041220: 'DirectoryRecordSequence',\n x00041400: 'OffsetOfNextDirectoryRecord',\n x00041410: 'RecordInUseFlag',\n x00041420: 'LowerLevelDirectoryEntityOffset',\n x00041430: 'DirectoryRecordType',\n x00041432: 'PrivateRecordUID',\n x00041500: 'ReferencedFileID',\n x00041504: 'MRDRDirectoryRecordOffset',\n x00041510: 'ReferencedSOPClassUIDInFile',\n x00041511: 'ReferencedSOPInstanceUIDInFile',\n x00041512: 'ReferencedTransferSyntaxUIDInFile',\n x0004151a: 'ReferencedRelatedSOPClassUIDInFile',\n x00041600: 'NumberOfReferences',\n x00080000: 'IdentifyingGroupLength',\n x00080001: 'LengthToEnd',\n x00080005: 'SpecificCharacterSet',\n x00080006: 'LanguageCodeSequence',\n x00080008: 'ImageType',\n x00080010: 'RecognitionCode',\n x00080012: 'InstanceCreationDate',\n x00080013: 'InstanceCreationTime',\n x00080014: 'InstanceCreatorUID',\n x00080016: 'SOPClassUID',\n x00080018: 'SOPInstanceUID',\n x0008001a: 'RelatedGeneralSOPClassUID',\n x0008001b: 'OriginalSpecializedSOPClassUID',\n x00080020: 'StudyDate',\n x00080021: 'SeriesDate',\n x00080022: 'AcquisitionDate',\n x00080023: 'ContentDate',\n x00080024: 'OverlayDate',\n x00080025: 'CurveDate',\n x0008002a: 'AcquisitionDateTime',\n x00080030: 'StudyTime',\n x00080031: 'SeriesTime',\n x00080032: 'AcquisitionTime',\n x00080033: 'ContentTime',\n x00080034: 'OverlayTime',\n x00080035: 'CurveTime',\n x00080040: 'DataSetType',\n x00080041: 'DataSetSubtype',\n x00080042: 'NuclearMedicineSeriesType',\n x00080050: 'AccessionNumber',\n x00080052: 'QueryRetrieveLevel',\n x00080054: 'RetrieveAETitle',\n x00080056: 'InstanceAvailability',\n x00080058: 'FailedSOPInstanceUIDList',\n x00080060: 'Modality',\n x00080061: 'ModalitiesInStudy',\n x00080062: 'SOPClassesInStudy',\n x00080064: 'ConversionType',\n x00080068: 'PresentationIntentType',\n x00080070: 'Manufacturer',\n x00080080: 'InstitutionName',\n x00080081: 'InstitutionAddress',\n x00080082: 'InstitutionCodeSequence',\n x00080090: 'ReferringPhysicianName',\n x00080092: 'ReferringPhysicianAddress',\n x00080094: 'ReferringPhysicianTelephoneNumber',\n x00080096: 'ReferringPhysicianIDSequence',\n x00080100: 'CodeValue',\n x00080102: 'CodingSchemeDesignator',\n x00080103: 'CodingSchemeVersion',\n x00080104: 'CodeMeaning',\n x00080105: 'MappingResource',\n x00080106: 'ContextGroupVersion',\n x00080107: 'ContextGroupLocalVersion',\n x0008010b: 'ContextGroupExtensionFlag',\n x0008010c: 'CodingSchemeUID',\n x0008010d: 'ContextGroupExtensionCreatorUID',\n x0008010f: 'ContextIdentifier',\n x00080110: 'CodingSchemeIDSequence',\n x00080112: 'CodingSchemeRegistry',\n x00080114: 'CodingSchemeExternalID',\n x00080115: 'CodingSchemeName',\n x00080116: 'CodingSchemeResponsibleOrganization',\n x00080117: 'ContextUID',\n x00080201: 'TimezoneOffsetFromUTC',\n x00081000: 'NetworkID',\n x00081010: 'StationName',\n x00081030: 'StudyDescription',\n x00081032: 'ProcedureCodeSequence',\n x0008103e: 'SeriesDescription',\n x00081040: 'InstitutionalDepartmentName',\n x00081048: 'PhysiciansOfRecord',\n x00081049: 'PhysiciansOfRecordIDSequence',\n x00081050: 'PerformingPhysicianName',\n x00081052: 'PerformingPhysicianIDSequence',\n x00081060: 'NameOfPhysicianReadingStudy',\n x00081062: 'PhysicianReadingStudyIDSequence',\n x00081070: 'OperatorsName',\n x00081072: 'OperatorIDSequence',\n x00081080: 'AdmittingDiagnosesDescription',\n x00081084: 'AdmittingDiagnosesCodeSequence',\n x00081090: 'ManufacturersModelName',\n x00081100: 'ReferencedResultsSequence',\n x00081110: 'ReferencedStudySequence',\n x00081111: 'ReferencedPerformedProcedureStepSequence',\n x00081115: 'ReferencedSeriesSequence',\n x00081120: 'ReferencedPatientSequence',\n x00081125: 'ReferencedVisitSequence',\n x00081130: 'ReferencedOverlaySequence',\n x0008113a: 'ReferencedWaveformSequence',\n x00081140: 'ReferencedImageSequence',\n x00081145: 'ReferencedCurveSequence',\n x0008114a: 'ReferencedInstanceSequence',\n x00081150: 'ReferencedSOPClassUID',\n x00081155: 'ReferencedSOPInstanceUID',\n x0008115a: 'SOPClassesSupported',\n x00081160: 'ReferencedFrameNumber',\n x00081161: 'SimpleFrameList',\n x00081162: 'CalculatedFrameList',\n x00081163: 'TimeRange',\n x00081164: 'FrameExtractionSequence',\n x00081195: 'TransactionUID',\n x00081197: 'FailureReason',\n x00081198: 'FailedSOPSequence',\n x00081199: 'ReferencedSOPSequence',\n x00081200: 'OtherReferencedStudiesSequence',\n x00081250: 'RelatedSeriesSequence',\n x00082110: 'LossyImageCompressionRetired',\n x00082111: 'DerivationDescription',\n x00082112: 'SourceImageSequence',\n x00082120: 'StageName',\n x00082122: 'StageNumber',\n x00082124: 'NumberOfStages',\n x00082127: 'ViewName',\n x00082128: 'ViewNumber',\n x00082129: 'NumberOfEventTimers',\n x0008212a: 'NumberOfViewsInStage',\n x00082130: 'EventElapsedTimes',\n x00082132: 'EventTimerNames',\n x00082133: 'EventTimerSequence',\n x00082134: 'EventTimeOffset',\n x00082135: 'EventCodeSequence',\n x00082142: 'StartTrim',\n x00082143: 'StopTrim',\n x00082144: 'RecommendedDisplayFrameRate',\n x00082200: 'TransducerPosition',\n x00082204: 'TransducerOrientation',\n x00082208: 'AnatomicStructure',\n x00082218: 'AnatomicRegionSequence',\n x00082220: 'AnatomicRegionModifierSequence',\n x00082228: 'PrimaryAnatomicStructureSequence',\n x00082229: 'AnatomicStructureOrRegionSequence',\n x00082230: 'AnatomicStructureModifierSequence',\n x00082240: 'TransducerPositionSequence',\n x00082242: 'TransducerPositionModifierSequence',\n x00082244: 'TransducerOrientationSequence',\n x00082246: 'TransducerOrientationModifierSeq',\n x00082253: 'AnatomicEntrancePortalCodeSeqTrial',\n x00082255: 'AnatomicApproachDirCodeSeqTrial',\n x00082256: 'AnatomicPerspectiveDescrTrial',\n x00082257: 'AnatomicPerspectiveCodeSeqTrial',\n x00083001: 'AlternateRepresentationSequence',\n x00083010: 'IrradiationEventUID',\n x00084000: 'IdentifyingComments',\n x00089007: 'FrameType',\n x00089092: 'ReferencedImageEvidenceSequence',\n x00089121: 'ReferencedRawDataSequence',\n x00089123: 'CreatorVersionUID',\n x00089124: 'DerivationImageSequence',\n x00089154: 'SourceImageEvidenceSequence',\n x00089205: 'PixelPresentation',\n x00089206: 'VolumetricProperties',\n x00089207: 'VolumeBasedCalculationTechnique',\n x00089208: 'ComplexImageComponent',\n x00089209: 'AcquisitionContrast',\n x00089215: 'DerivationCodeSequence',\n x00089237: 'GrayscalePresentationStateSequence',\n x00089410: 'ReferencedOtherPlaneSequence',\n x00089458: 'FrameDisplaySequence',\n x00089459: 'RecommendedDisplayFrameRateInFloat',\n x00089460: 'SkipFrameRangeFlag',\n // x00091001: 'FullFidelity',\n // x00091002: 'SuiteID',\n // x00091004: 'ProductID',\n // x00091027: 'ImageActualDate',\n // x00091030: 'ServiceID',\n // x00091031: 'MobileLocationNumber',\n // x000910e3: 'EquipmentUID',\n // x000910e6: 'GenesisVersionNow',\n // x000910e7: 'ExamRecordChecksum',\n // x000910e9: 'ActualSeriesDataTimeStamp',\n x00100000: 'PatientGroupLength',\n x00100010: 'PatientName',\n x00100020: 'PatientID',\n x00100021: 'IssuerOfPatientID',\n x00100022: 'TypeOfPatientID',\n x00100030: 'PatientBirthDate',\n x00100032: 'PatientBirthTime',\n x00100040: 'PatientSex',\n x00100050: 'PatientInsurancePlanCodeSequence',\n x00100101: 'PatientPrimaryLanguageCodeSeq',\n x00100102: 'PatientPrimaryLanguageCodeModSeq',\n x00101000: 'OtherPatientIDs',\n x00101001: 'OtherPatientNames',\n x00101002: 'OtherPatientIDsSequence',\n x00101005: 'PatientBirthName',\n x00101010: 'PatientAge',\n x00101020: 'PatientSize',\n x00101030: 'PatientWeight',\n x00101040: 'PatientAddress',\n x00101050: 'InsurancePlanIdentification',\n x00101060: 'PatientMotherBirthName',\n x00101080: 'MilitaryRank',\n x00101081: 'BranchOfService',\n x00101090: 'MedicalRecordLocator',\n x00102000: 'MedicalAlerts',\n x00102110: 'Allergies',\n x00102150: 'CountryOfResidence',\n x00102152: 'RegionOfResidence',\n x00102154: 'PatientTelephoneNumbers',\n x00102160: 'EthnicGroup',\n x00102180: 'Occupation',\n x001021a0: 'SmokingStatus',\n x001021b0: 'AdditionalPatientHistory',\n x001021c0: 'PregnancyStatus',\n x001021d0: 'LastMenstrualDate',\n x001021f0: 'PatientReligiousPreference',\n x00102201: 'PatientSpeciesDescription',\n x00102202: 'PatientSpeciesCodeSequence',\n x00102203: 'PatientSexNeutered',\n x00102210: 'AnatomicalOrientationType',\n x00102292: 'PatientBreedDescription',\n x00102293: 'PatientBreedCodeSequence',\n x00102294: 'BreedRegistrationSequence',\n x00102295: 'BreedRegistrationNumber',\n x00102296: 'BreedRegistryCodeSequence',\n x00102297: 'ResponsiblePerson',\n x00102298: 'ResponsiblePersonRole',\n x00102299: 'ResponsibleOrganization',\n x00104000: 'PatientComments',\n x00109431: 'ExaminedBodyThickness',\n x00111010: 'PatientStatus',\n x00120010: 'ClinicalTrialSponsorName',\n x00120020: 'ClinicalTrialProtocolID',\n x00120021: 'ClinicalTrialProtocolName',\n x00120030: 'ClinicalTrialSiteID',\n x00120031: 'ClinicalTrialSiteName',\n x00120040: 'ClinicalTrialSubjectID',\n x00120042: 'ClinicalTrialSubjectReadingID',\n x00120050: 'ClinicalTrialTimePointID',\n x00120051: 'ClinicalTrialTimePointDescription',\n x00120060: 'ClinicalTrialCoordinatingCenter',\n x00120062: 'PatientIdentityRemoved',\n x00120063: 'DeidentificationMethod',\n x00120064: 'DeidentificationMethodCodeSequence',\n x00120071: 'ClinicalTrialSeriesID',\n x00120072: 'ClinicalTrialSeriesDescription',\n x00120084: 'DistributionType',\n x00120085: 'ConsentForDistributionFlag',\n x00180000: 'AcquisitionGroupLength',\n x00180010: 'ContrastBolusAgent',\n x00180012: 'ContrastBolusAgentSequence',\n x00180014: 'ContrastBolusAdministrationRoute',\n x00180015: 'BodyPartExamined',\n x00180020: 'ScanningSequence',\n x00180021: 'SequenceVariant',\n x00180022: 'ScanOptions',\n x00180023: 'MRAcquisitionType',\n x00180024: 'SequenceName',\n x00180025: 'AngioFlag',\n x00180026: 'InterventionDrugInformationSeq',\n x00180027: 'InterventionDrugStopTime',\n x00180028: 'InterventionDrugDose',\n x00180029: 'InterventionDrugSequence',\n x0018002a: 'AdditionalDrugSequence',\n x00180030: 'Radionuclide',\n x00180031: 'Radiopharmaceutical',\n x00180032: 'EnergyWindowCenterline',\n x00180033: 'EnergyWindowTotalWidth',\n x00180034: 'InterventionDrugName',\n x00180035: 'InterventionDrugStartTime',\n x00180036: 'InterventionSequence',\n x00180037: 'TherapyType',\n x00180038: 'InterventionStatus',\n x00180039: 'TherapyDescription',\n x0018003a: 'InterventionDescription',\n x00180040: 'CineRate',\n x00180042: 'InitialCineRunState',\n x00180050: 'SliceThickness',\n x00180060: 'KVP',\n x00180070: 'CountsAccumulated',\n x00180071: 'AcquisitionTerminationCondition',\n x00180072: 'EffectiveDuration',\n x00180073: 'AcquisitionStartCondition',\n x00180074: 'AcquisitionStartConditionData',\n x00180075: 'AcquisitionEndConditionData',\n x00180080: 'RepetitionTime',\n x00180081: 'EchoTime',\n x00180082: 'InversionTime',\n x00180083: 'NumberOfAverages',\n x00180084: 'ImagingFrequency',\n x00180085: 'ImagedNucleus',\n x00180086: 'EchoNumber',\n x00180087: 'MagneticFieldStrength',\n x00180088: 'SpacingBetweenSlices',\n x00180089: 'NumberOfPhaseEncodingSteps',\n x00180090: 'DataCollectionDiameter',\n x00180091: 'EchoTrainLength',\n x00180093: 'PercentSampling',\n x00180094: 'PercentPhaseFieldOfView',\n x00180095: 'PixelBandwidth',\n x00181000: 'DeviceSerialNumber',\n x00181002: 'DeviceUID',\n x00181003: 'DeviceID',\n x00181004: 'PlateID',\n x00181005: 'GeneratorID',\n x00181006: 'GridID',\n x00181007: 'CassetteID',\n x00181008: 'GantryID',\n x00181010: 'SecondaryCaptureDeviceID',\n x00181011: 'HardcopyCreationDeviceID',\n x00181012: 'DateOfSecondaryCapture',\n x00181014: 'TimeOfSecondaryCapture',\n x00181016: 'SecondaryCaptureDeviceManufacturer',\n x00181017: 'HardcopyDeviceManufacturer',\n x00181018: 'SecondaryCaptureDeviceModelName',\n x00181019: 'SecondaryCaptureDeviceSoftwareVers',\n x0018101a: 'HardcopyDeviceSoftwareVersion',\n x0018101b: 'HardcopyDeviceModelName',\n x00181020: 'SoftwareVersion',\n x00181022: 'VideoImageFormatAcquired',\n x00181023: 'DigitalImageFormatAcquired',\n x00181030: 'ProtocolName',\n x00181040: 'ContrastBolusRoute',\n x00181041: 'ContrastBolusVolume',\n x00181042: 'ContrastBolusStartTime',\n x00181043: 'ContrastBolusStopTime',\n x00181044: 'ContrastBolusTotalDose',\n x00181045: 'SyringeCounts',\n x00181046: 'ContrastFlowRate',\n x00181047: 'ContrastFlowDuration',\n x00181048: 'ContrastBolusIngredient',\n x00181049: 'ContrastBolusConcentration',\n x00181050: 'SpatialResolution',\n x00181060: 'TriggerTime',\n x00181061: 'TriggerSourceOrType',\n x00181062: 'NominalInterval',\n x00181063: 'FrameTime',\n x00181064: 'CardiacFramingType',\n x00181065: 'FrameTimeVector',\n x00181066: 'FrameDelay',\n x00181067: 'ImageTriggerDelay',\n x00181068: 'MultiplexGroupTimeOffset',\n x00181069: 'TriggerTimeOffset',\n x0018106a: 'SynchronizationTrigger',\n x0018106c: 'SynchronizationChannel',\n x0018106e: 'TriggerSamplePosition',\n x00181070: 'RadiopharmaceuticalRoute',\n x00181071: 'RadiopharmaceuticalVolume',\n x00181072: 'RadiopharmaceuticalStartTime',\n x00181073: 'RadiopharmaceuticalStopTime',\n x00181074: 'RadionuclideTotalDose',\n x00181075: 'RadionuclideHalfLife',\n x00181076: 'RadionuclidePositronFraction',\n x00181077: 'RadiopharmaceuticalSpecActivity',\n x00181078: 'RadiopharmaceuticalStartDateTime',\n x00181079: 'RadiopharmaceuticalStopDateTime',\n x00181080: 'BeatRejectionFlag',\n x00181081: 'LowRRValue',\n x00181082: 'HighRRValue',\n x00181083: 'IntervalsAcquired',\n x00181084: 'IntervalsRejected',\n x00181085: 'PVCRejection',\n x00181086: 'SkipBeats',\n x00181088: 'HeartRate',\n x00181090: 'CardiacNumberOfImages',\n x00181094: 'TriggerWindow',\n x00181100: 'ReconstructionDiameter',\n x00181110: 'DistanceSourceToDetector',\n x00181111: 'DistanceSourceToPatient',\n x00181114: 'EstimatedRadiographicMagnification',\n x00181120: 'GantryDetectorTilt',\n x00181121: 'GantryDetectorSlew',\n x00181130: 'TableHeight',\n x00181131: 'TableTraverse',\n x00181134: 'TableMotion',\n x00181135: 'TableVerticalIncrement',\n x00181136: 'TableLateralIncrement',\n x00181137: 'TableLongitudinalIncrement',\n x00181138: 'TableAngle',\n x0018113a: 'TableType',\n x00181140: 'RotationDirection',\n x00181141: 'AngularPosition',\n x00181142: 'RadialPosition',\n x00181143: 'ScanArc',\n x00181144: 'AngularStep',\n x00181145: 'CenterOfRotationOffset',\n x00181146: 'RotationOffset',\n x00181147: 'FieldOfViewShape',\n x00181149: 'FieldOfViewDimensions',\n x00181150: 'ExposureTime',\n x00181151: 'XRayTubeCurrent',\n x00181152: 'Exposure',\n x00181153: 'ExposureInMicroAmpSec',\n x00181154: 'AveragePulseWidth',\n x00181155: 'RadiationSetting',\n x00181156: 'RectificationType',\n x0018115a: 'RadiationMode',\n x0018115e: 'ImageAreaDoseProduct',\n x00181160: 'FilterType',\n x00181161: 'TypeOfFilters',\n x00181162: 'IntensifierSize',\n x00181164: 'ImagerPixelSpacing',\n x00181166: 'Grid',\n x00181170: 'GeneratorPower',\n x00181180: 'CollimatorGridName',\n x00181181: 'CollimatorType',\n x00181182: 'FocalDistance',\n x00181183: 'XFocusCenter',\n x00181184: 'YFocusCenter',\n x00181190: 'FocalSpots',\n x00181191: 'AnodeTargetMaterial',\n x001811a0: 'BodyPartThickness',\n x001811a2: 'CompressionForce',\n x00181200: 'DateOfLastCalibration',\n x00181201: 'TimeOfLastCalibration',\n x00181210: 'ConvolutionKernel',\n x00181240: 'UpperLowerPixelValues',\n x00181242: 'ActualFrameDuration',\n x00181243: 'CountRate',\n x00181244: 'PreferredPlaybackSequencing',\n x00181250: 'ReceiveCoilName',\n x00181251: 'TransmitCoilName',\n x00181260: 'PlateType',\n x00181261: 'PhosphorType',\n x00181300: 'ScanVelocity',\n x00181301: 'WholeBodyTechnique',\n x00181302: 'ScanLength',\n x00181310: 'AcquisitionMatrix',\n x00181312: 'InPlanePhaseEncodingDirection',\n x00181314: 'FlipAngle',\n x00181315: 'VariableFlipAngleFlag',\n x00181316: 'SAR',\n x00181318: 'DB-Dt',\n x00181400: 'AcquisitionDeviceProcessingDescr',\n x00181401: 'AcquisitionDeviceProcessingCode',\n x00181402: 'CassetteOrientation',\n x00181403: 'CassetteSize',\n x00181404: 'ExposuresOnPlate',\n x00181405: 'RelativeXRayExposure',\n x00181450: 'ColumnAngulation',\n x00181460: 'TomoLayerHeight',\n x00181470: 'TomoAngle',\n x00181480: 'TomoTime',\n x00181490: 'TomoType',\n x00181491: 'TomoClass',\n x00181495: 'NumberOfTomosynthesisSourceImages',\n x00181500: 'PositionerMotion',\n x00181508: 'PositionerType',\n x00181510: 'PositionerPrimaryAngle',\n x00181511: 'PositionerSecondaryAngle',\n x00181520: 'PositionerPrimaryAngleIncrement',\n x00181521: 'PositionerSecondaryAngleIncrement',\n x00181530: 'DetectorPrimaryAngle',\n x00181531: 'DetectorSecondaryAngle',\n x00181600: 'ShutterShape',\n x00181602: 'ShutterLeftVerticalEdge',\n x00181604: 'ShutterRightVerticalEdge',\n x00181606: 'ShutterUpperHorizontalEdge',\n x00181608: 'ShutterLowerHorizontalEdge',\n x00181610: 'CenterOfCircularShutter',\n x00181612: 'RadiusOfCircularShutter',\n x00181620: 'VerticesOfPolygonalShutter',\n x00181622: 'ShutterPresentationValue',\n x00181623: 'ShutterOverlayGroup',\n x00181624: 'ShutterPresentationColorCIELabVal',\n x00181700: 'CollimatorShape',\n x00181702: 'CollimatorLeftVerticalEdge',\n x00181704: 'CollimatorRightVerticalEdge',\n x00181706: 'CollimatorUpperHorizontalEdge',\n x00181708: 'CollimatorLowerHorizontalEdge',\n x00181710: 'CenterOfCircularCollimator',\n x00181712: 'RadiusOfCircularCollimator',\n x00181720: 'VerticesOfPolygonalCollimator',\n x00181800: 'AcquisitionTimeSynchronized',\n x00181801: 'TimeSource',\n x00181802: 'TimeDistributionProtocol',\n x00181803: 'NTPSourceAddress',\n x00182001: 'PageNumberVector',\n x00182002: 'FrameLabelVector',\n x00182003: 'FramePrimaryAngleVector',\n x00182004: 'FrameSecondaryAngleVector',\n x00182005: 'SliceLocationVector',\n x00182006: 'DisplayWindowLabelVector',\n x00182010: 'NominalScannedPixelSpacing',\n x00182020: 'DigitizingDeviceTransportDirection',\n x00182030: 'RotationOfScannedFilm',\n x00183100: 'IVUSAcquisition',\n x00183101: 'IVUSPullbackRate',\n x00183102: 'IVUSGatedRate',\n x00183103: 'IVUSPullbackStartFrameNumber',\n x00183104: 'IVUSPullbackStopFrameNumber',\n x00183105: 'LesionNumber',\n x00184000: 'AcquisitionComments',\n x00185000: 'OutputPower',\n x00185010: 'TransducerData',\n x00185012: 'FocusDepth',\n x00185020: 'ProcessingFunction',\n x00185021: 'PostprocessingFunction',\n x00185022: 'MechanicalIndex',\n x00185024: 'BoneThermalIndex',\n x00185026: 'CranialThermalIndex',\n x00185027: 'SoftTissueThermalIndex',\n x00185028: 'SoftTissueFocusThermalIndex',\n x00185029: 'SoftTissueSurfaceThermalIndex',\n x00185030: 'DynamicRange',\n x00185040: 'TotalGain',\n x00185050: 'DepthOfScanField',\n x00185100: 'PatientPosition',\n x00185101: 'ViewPosition',\n x00185104: 'ProjectionEponymousNameCodeSeq',\n x00185210: 'ImageTransformationMatrix',\n x00185212: 'ImageTranslationVector',\n x00186000: 'Sensitivity',\n x00186011: 'SequenceOfUltrasoundRegions',\n x00186012: 'RegionSpatialFormat',\n x00186014: 'RegionDataType',\n x00186016: 'RegionFlags',\n x00186018: 'RegionLocationMinX0',\n x0018601a: 'RegionLocationMinY0',\n x0018601c: 'RegionLocationMaxX1',\n x0018601e: 'RegionLocationMaxY1',\n x00186020: 'ReferencePixelX0',\n x00186022: 'ReferencePixelY0',\n x00186024: 'PhysicalUnitsXDirection',\n x00186026: 'PhysicalUnitsYDirection',\n x00186028: 'ReferencePixelPhysicalValueX',\n x0018602a: 'ReferencePixelPhysicalValueY',\n x0018602c: 'PhysicalDeltaX',\n x0018602e: 'PhysicalDeltaY',\n x00186030: 'TransducerFrequency',\n x00186031: 'TransducerType',\n x00186032: 'PulseRepetitionFrequency',\n x00186034: 'DopplerCorrectionAngle',\n x00186036: 'SteeringAngle',\n x00186038: 'DopplerSampleVolumeXPosRetired',\n x00186039: 'DopplerSampleVolumeXPosition',\n x0018603a: 'DopplerSampleVolumeYPosRetired',\n x0018603b: 'DopplerSampleVolumeYPosition',\n x0018603c: 'TMLinePositionX0Retired',\n x0018603d: 'TMLinePositionX0',\n x0018603e: 'TMLinePositionY0Retired',\n x0018603f: 'TMLinePositionY0',\n x00186040: 'TMLinePositionX1Retired',\n x00186041: 'TMLinePositionX1',\n x00186042: 'TMLinePositionY1Retired',\n x00186043: 'TMLinePositionY1',\n x00186044: 'PixelComponentOrganization',\n x00186046: 'PixelComponentMask',\n x00186048: 'PixelComponentRangeStart',\n x0018604a: 'PixelComponentRangeStop',\n x0018604c: 'PixelComponentPhysicalUnits',\n x0018604e: 'PixelComponentDataType',\n x00186050: 'NumberOfTableBreakPoints',\n x00186052: 'TableOfXBreakPoints',\n x00186054: 'TableOfYBreakPoints',\n x00186056: 'NumberOfTableEntries',\n x00186058: 'TableOfPixelValues',\n x0018605a: 'TableOfParameterValues',\n x00186060: 'RWaveTimeVector',\n x00187000: 'DetectorConditionsNominalFlag',\n x00187001: 'DetectorTemperature',\n x00187004: 'DetectorType',\n x00187005: 'DetectorConfiguration',\n x00187006: 'DetectorDescription',\n x00187008: 'DetectorMode',\n x0018700a: 'DetectorID',\n x0018700c: 'DateOfLastDetectorCalibration',\n x0018700e: 'TimeOfLastDetectorCalibration',\n x00187010: 'DetectorExposuresSinceCalibration',\n x00187011: 'DetectorExposuresSinceManufactured',\n x00187012: 'DetectorTimeSinceLastExposure',\n x00187014: 'DetectorActiveTime',\n x00187016: 'DetectorActiveOffsetFromExposure',\n x0018701a: 'DetectorBinning',\n x00187020: 'DetectorElementPhysicalSize',\n x00187022: 'DetectorElementSpacing',\n x00187024: 'DetectorActiveShape',\n x00187026: 'DetectorActiveDimensions',\n x00187028: 'DetectorActiveOrigin',\n x0018702a: 'DetectorManufacturerName',\n x0018702b: 'DetectorManufacturersModelName',\n x00187030: 'FieldOfViewOrigin',\n x00187032: 'FieldOfViewRotation',\n x00187034: 'FieldOfViewHorizontalFlip',\n x00187040: 'GridAbsorbingMaterial',\n x00187041: 'GridSpacingMaterial',\n x00187042: 'GridThickness',\n x00187044: 'GridPitch',\n x00187046: 'GridAspectRatio',\n x00187048: 'GridPeriod',\n x0018704c: 'GridFocalDistance',\n x00187050: 'FilterMaterial',\n x00187052: 'FilterThicknessMinimum',\n x00187054: 'FilterThicknessMaximum',\n x00187060: 'ExposureControlMode',\n x00187062: 'ExposureControlModeDescription',\n x00187064: 'ExposureStatus',\n x00187065: 'PhototimerSetting',\n x00188150: 'ExposureTimeInMicroSec',\n x00188151: 'XRayTubeCurrentInMicroAmps',\n x00189004: 'ContentQualification',\n x00189005: 'PulseSequenceName',\n x00189006: 'MRImagingModifierSequence',\n x00189008: 'EchoPulseSequence',\n x00189009: 'InversionRecovery',\n x00189010: 'FlowCompensation',\n x00189011: 'MultipleSpinEcho',\n x00189012: 'MultiPlanarExcitation',\n x00189014: 'PhaseContrast',\n x00189015: 'TimeOfFlightContrast',\n x00189016: 'Spoiling',\n x00189017: 'SteadyStatePulseSequence',\n x00189018: 'EchoPlanarPulseSequence',\n x00189019: 'TagAngleFirstAxis',\n x00189020: 'MagnetizationTransfer',\n x00189021: 'T2Preparation',\n x00189022: 'BloodSignalNulling',\n x00189024: 'SaturationRecovery',\n x00189025: 'SpectrallySelectedSuppression',\n x00189026: 'SpectrallySelectedExcitation',\n x00189027: 'SpatialPresaturation',\n x00189028: 'Tagging',\n x00189029: 'OversamplingPhase',\n x00189030: 'TagSpacingFirstDimension',\n x00189032: 'GeometryOfKSpaceTraversal',\n x00189033: 'SegmentedKSpaceTraversal',\n x00189034: 'RectilinearPhaseEncodeReordering',\n x00189035: 'TagThickness',\n x00189036: 'PartialFourierDirection',\n x00189037: 'CardiacSynchronizationTechnique',\n x00189041: 'ReceiveCoilManufacturerName',\n x00189042: 'MRReceiveCoilSequence',\n x00189043: 'ReceiveCoilType',\n x00189044: 'QuadratureReceiveCoil',\n x00189045: 'MultiCoilDefinitionSequence',\n x00189046: 'MultiCoilConfiguration',\n x00189047: 'MultiCoilElementName',\n x00189048: 'MultiCoilElementUsed',\n x00189049: 'MRTransmitCoilSequence',\n x00189050: 'TransmitCoilManufacturerName',\n x00189051: 'TransmitCoilType',\n x00189052: 'SpectralWidth',\n x00189053: 'ChemicalShiftReference',\n x00189054: 'VolumeLocalizationTechnique',\n x00189058: 'MRAcquisitionFrequencyEncodeSteps',\n x00189059: 'Decoupling',\n x00189060: 'DecoupledNucleus',\n x00189061: 'DecouplingFrequency',\n x00189062: 'DecouplingMethod',\n x00189063: 'DecouplingChemicalShiftReference',\n x00189064: 'KSpaceFiltering',\n x00189065: 'TimeDomainFiltering',\n x00189066: 'NumberOfZeroFills',\n x00189067: 'BaselineCorrection',\n x00189069: 'ParallelReductionFactorInPlane',\n x00189070: 'CardiacRRIntervalSpecified',\n x00189073: 'AcquisitionDuration',\n x00189074: 'FrameAcquisitionDateTime',\n x00189075: 'DiffusionDirectionality',\n x00189076: 'DiffusionGradientDirectionSequence',\n x00189077: 'ParallelAcquisition',\n x00189078: 'ParallelAcquisitionTechnique',\n x00189079: 'InversionTimes',\n x00189080: 'MetaboliteMapDescription',\n x00189081: 'PartialFourier',\n x00189082: 'EffectiveEchoTime',\n x00189083: 'MetaboliteMapCodeSequence',\n x00189084: 'ChemicalShiftSequence',\n x00189085: 'CardiacSignalSource',\n x00189087: 'DiffusionBValue',\n x00189089: 'DiffusionGradientOrientation',\n x00189090: 'VelocityEncodingDirection',\n x00189091: 'VelocityEncodingMinimumValue',\n x00189093: 'NumberOfKSpaceTrajectories',\n x00189094: 'CoverageOfKSpace',\n x00189095: 'SpectroscopyAcquisitionPhaseRows',\n x00189096: 'ParallelReductFactorInPlaneRetired',\n x00189098: 'TransmitterFrequency',\n x00189100: 'ResonantNucleus',\n x00189101: 'FrequencyCorrection',\n x00189103: 'MRSpectroscopyFOV-GeometrySequence',\n x00189104: 'SlabThickness',\n x00189105: 'SlabOrientation',\n x00189106: 'MidSlabPosition',\n x00189107: 'MRSpatialSaturationSequence',\n x00189112: 'MRTimingAndRelatedParametersSeq',\n x00189114: 'MREchoSequence',\n x00189115: 'MRModifierSequence',\n x00189117: 'MRDiffusionSequence',\n x00189118: 'CardiacTriggerSequence',\n x00189119: 'MRAveragesSequence',\n x00189125: 'MRFOV-GeometrySequence',\n x00189126: 'VolumeLocalizationSequence',\n x00189127: 'SpectroscopyAcquisitionDataColumns',\n x00189147: 'DiffusionAnisotropyType',\n x00189151: 'FrameReferenceDateTime',\n x00189152: 'MRMetaboliteMapSequence',\n x00189155: 'ParallelReductionFactorOutOfPlane',\n x00189159: 'SpectroscopyOutOfPlanePhaseSteps',\n x00189166: 'BulkMotionStatus',\n x00189168: 'ParallelReductionFactSecondInPlane',\n x00189169: 'CardiacBeatRejectionTechnique',\n x00189170: 'RespiratoryMotionCompTechnique',\n x00189171: 'RespiratorySignalSource',\n x00189172: 'BulkMotionCompensationTechnique',\n x00189173: 'BulkMotionSignalSource',\n x00189174: 'ApplicableSafetyStandardAgency',\n x00189175: 'ApplicableSafetyStandardDescr',\n x00189176: 'OperatingModeSequence',\n x00189177: 'OperatingModeType',\n x00189178: 'OperatingMode',\n x00189179: 'SpecificAbsorptionRateDefinition',\n x00189180: 'GradientOutputType',\n x00189181: 'SpecificAbsorptionRateValue',\n x00189182: 'GradientOutput',\n x00189183: 'FlowCompensationDirection',\n x00189184: 'TaggingDelay',\n x00189185: 'RespiratoryMotionCompTechDescr',\n x00189186: 'RespiratorySignalSourceID',\n x00189195: 'ChemicalShiftsMinIntegrateLimitHz',\n x00189196: 'ChemicalShiftsMaxIntegrateLimitHz',\n x00189197: 'MRVelocityEncodingSequence',\n x00189198: 'FirstOrderPhaseCorrection',\n x00189199: 'WaterReferencedPhaseCorrection',\n x00189200: 'MRSpectroscopyAcquisitionType',\n x00189214: 'RespiratoryCyclePosition',\n x00189217: 'VelocityEncodingMaximumValue',\n x00189218: 'TagSpacingSecondDimension',\n x00189219: 'TagAngleSecondAxis',\n x00189220: 'FrameAcquisitionDuration',\n x00189226: 'MRImageFrameTypeSequence',\n x00189227: 'MRSpectroscopyFrameTypeSequence',\n x00189231: 'MRAcqPhaseEncodingStepsInPlane',\n x00189232: 'MRAcqPhaseEncodingStepsOutOfPlane',\n x00189234: 'SpectroscopyAcqPhaseColumns',\n x00189236: 'CardiacCyclePosition',\n x00189239: 'SpecificAbsorptionRateSequence',\n x00189240: 'RFEchoTrainLength',\n x00189241: 'GradientEchoTrainLength',\n x00189295: 'ChemicalShiftsMinIntegrateLimitPPM',\n x00189296: 'ChemicalShiftsMaxIntegrateLimitPPM',\n x00189301: 'CTAcquisitionTypeSequence',\n x00189302: 'AcquisitionType',\n x00189303: 'TubeAngle',\n x00189304: 'CTAcquisitionDetailsSequence',\n x00189305: 'RevolutionTime',\n x00189306: 'SingleCollimationWidth',\n x00189307: 'TotalCollimationWidth',\n x00189308: 'CTTableDynamicsSequence',\n x00189309: 'TableSpeed',\n x00189310: 'TableFeedPerRotation',\n x00189311: 'SpiralPitchFactor',\n x00189312: 'CTGeometrySequence',\n x00189313: 'DataCollectionCenterPatient',\n x00189314: 'CTReconstructionSequence',\n x00189315: 'ReconstructionAlgorithm',\n x00189316: 'ConvolutionKernelGroup',\n x00189317: 'ReconstructionFieldOfView',\n x00189318: 'ReconstructionTargetCenterPatient',\n x00189319: 'ReconstructionAngle',\n x00189320: 'ImageFilter',\n x00189321: 'CTExposureSequence',\n x00189322: 'ReconstructionPixelSpacing',\n x00189323: 'ExposureModulationType',\n x00189324: 'EstimatedDoseSaving',\n x00189325: 'CTXRayDetailsSequence',\n x00189326: 'CTPositionSequence',\n x00189327: 'TablePosition',\n x00189328: 'ExposureTimeInMilliSec',\n x00189329: 'CTImageFrameTypeSequence',\n x00189330: 'XRayTubeCurrentInMilliAmps',\n x00189332: 'ExposureInMilliAmpSec',\n x00189333: 'ConstantVolumeFlag',\n x00189334: 'FluoroscopyFlag',\n x00189335: 'SourceToDataCollectionCenterDist',\n x00189337: 'ContrastBolusAgentNumber',\n x00189338: 'ContrastBolusIngredientCodeSeq',\n x00189340: 'ContrastAdministrationProfileSeq',\n x00189341: 'ContrastBolusUsageSequence',\n x00189342: 'ContrastBolusAgentAdministered',\n x00189343: 'ContrastBolusAgentDetected',\n x00189344: 'ContrastBolusAgentPhase',\n x00189345: 'CTDIvol',\n x00189346: 'CTDIPhantomTypeCodeSequence',\n x00189351: 'CalciumScoringMassFactorPatient',\n x00189352: 'CalciumScoringMassFactorDevice',\n x00189353: 'EnergyWeightingFactor',\n x00189360: 'CTAdditionalXRaySourceSequence',\n x00189401: 'ProjectionPixelCalibrationSequence',\n x00189402: 'DistanceSourceToIsocenter',\n x00189403: 'DistanceObjectToTableTop',\n x00189404: 'ObjectPixelSpacingInCenterOfBeam',\n x00189405: 'PositionerPositionSequence',\n x00189406: 'TablePositionSequence',\n x00189407: 'CollimatorShapeSequence',\n x00189412: 'XA-XRFFrameCharacteristicsSequence',\n x00189417: 'FrameAcquisitionSequence',\n x00189420: 'XRayReceptorType',\n x00189423: 'AcquisitionProtocolName',\n x00189424: 'AcquisitionProtocolDescription',\n x00189425: 'ContrastBolusIngredientOpaque',\n x00189426: 'DistanceReceptorPlaneToDetHousing',\n x00189427: 'IntensifierActiveShape',\n x00189428: 'IntensifierActiveDimensions',\n x00189429: 'PhysicalDetectorSize',\n x00189430: 'PositionOfIsocenterProjection',\n x00189432: 'FieldOfViewSequence',\n x00189433: 'FieldOfViewDescription',\n x00189434: 'ExposureControlSensingRegionsSeq',\n x00189435: 'ExposureControlSensingRegionShape',\n x00189436: 'ExposureControlSensRegionLeftEdge',\n x00189437: 'ExposureControlSensRegionRightEdge',\n x00189440: 'CenterOfCircExposControlSensRegion',\n x00189441: 'RadiusOfCircExposControlSensRegion',\n x00189447: 'ColumnAngulationPatient',\n x00189449: 'BeamAngle',\n x00189451: 'FrameDetectorParametersSequence',\n x00189452: 'CalculatedAnatomyThickness',\n x00189455: 'CalibrationSequence',\n x00189456: 'ObjectThicknessSequence',\n x00189457: 'PlaneIdentification',\n x00189461: 'FieldOfViewDimensionsInFloat',\n x00189462: 'IsocenterReferenceSystemSequence',\n x00189463: 'PositionerIsocenterPrimaryAngle',\n x00189464: 'PositionerIsocenterSecondaryAngle',\n x00189465: 'PositionerIsocenterDetRotAngle',\n x00189466: 'TableXPositionToIsocenter',\n x00189467: 'TableYPositionToIsocenter',\n x00189468: 'TableZPositionToIsocenter',\n x00189469: 'TableHorizontalRotationAngle',\n x00189470: 'TableHeadTiltAngle',\n x00189471: 'TableCradleTiltAngle',\n x00189472: 'FrameDisplayShutterSequence',\n x00189473: 'AcquiredImageAreaDoseProduct',\n x00189474: 'CArmPositionerTabletopRelationship',\n x00189476: 'XRayGeometrySequence',\n x00189477: 'IrradiationEventIDSequence',\n x00189504: 'XRay3DFrameTypeSequence',\n x00189506: 'ContributingSourcesSequence',\n x00189507: 'XRay3DAcquisitionSequence',\n x00189508: 'PrimaryPositionerScanArc',\n x00189509: 'SecondaryPositionerScanArc',\n x00189510: 'PrimaryPositionerScanStartAngle',\n x00189511: 'SecondaryPositionerScanStartAngle',\n x00189514: 'PrimaryPositionerIncrement',\n x00189515: 'SecondaryPositionerIncrement',\n x00189516: 'StartAcquisitionDateTime',\n x00189517: 'EndAcquisitionDateTime',\n x00189524: 'ApplicationName',\n x00189525: 'ApplicationVersion',\n x00189526: 'ApplicationManufacturer',\n x00189527: 'AlgorithmType',\n x00189528: 'AlgorithmDescription',\n x00189530: 'XRay3DReconstructionSequence',\n x00189531: 'ReconstructionDescription',\n x00189538: 'PerProjectionAcquisitionSequence',\n x00189601: 'DiffusionBMatrixSequence',\n x00189602: 'DiffusionBValueXX',\n x00189603: 'DiffusionBValueXY',\n x00189604: 'DiffusionBValueXZ',\n x00189605: 'DiffusionBValueYY',\n x00189606: 'DiffusionBValueYZ',\n x00189607: 'DiffusionBValueZZ',\n x00189701: 'DecayCorrectionDateTime',\n x00189715: 'StartDensityThreshold',\n x00189722: 'TerminationTimeThreshold',\n x00189725: 'DetectorGeometry',\n x00189727: 'AxialDetectorDimension',\n x00189735: 'PETPositionSequence',\n x00189739: 'NumberOfIterations',\n x00189740: 'NumberOfSubsets',\n x00189751: 'PETFrameTypeSequence',\n x00189756: 'ReconstructionType',\n x00189758: 'DecayCorrected',\n x00189759: 'AttenuationCorrected',\n x00189760: 'ScatterCorrected',\n x00189761: 'DeadTimeCorrected',\n x00189762: 'GantryMotionCorrected',\n x00189763: 'PatientMotionCorrected',\n x00189765: 'RandomsCorrected',\n x00189767: 'SensitivityCalibrated',\n x00189801: 'DepthsOfFocus',\n x00189804: 'ExclusionStartDatetime',\n x00189805: 'ExclusionDuration',\n x00189807: 'ImageDataTypeSequence',\n x00189808: 'DataType',\n x0018980b: 'AliasedDataType',\n x0018a001: 'ContributingEquipmentSequence',\n x0018a002: 'ContributionDateTime',\n x0018a003: 'ContributionDescription',\n // x00191002: 'NumberOfCellsIInDetector',\n // x00191003: 'CellNumberAtTheta',\n // x00191004: 'CellSpacing',\n // x0019100f: 'HorizFrameOfRef',\n // x00191011: 'SeriesContrast',\n // x00191012: 'LastPseq',\n // x00191013: 'StartNumberForBaseline',\n // x00191014: 'EndNumberForBaseline',\n // x00191015: 'StartNumberForEnhancedScans',\n // x00191016: 'EndNumberForEnhancedScans',\n // x00191017: 'SeriesPlane',\n // x00191018: 'FirstScanRas',\n // x00191019: 'FirstScanLocation',\n // x0019101a: 'LastScanRas',\n // x0019101b: 'LastScanLoc',\n // x0019101e: 'DisplayFieldOfView',\n // x00191023: 'TableSpeed',\n // x00191024: 'MidScanTime',\n // x00191025: 'MidScanFlag',\n // x00191026: 'DegreesOfAzimuth',\n // x00191027: 'GantryPeriod',\n // x0019102a: 'XRayOnPosition',\n // x0019102b: 'XRayOffPosition',\n // x0019102c: 'NumberOfTriggers',\n // x0019102e: 'AngleOfFirstView',\n // x0019102f: 'TriggerFrequency',\n // x00191039: 'ScanFOVType',\n // x00191040: 'StatReconFlag',\n // x00191041: 'ComputeType',\n // x00191042: 'SegmentNumber',\n // x00191043: 'TotalSegmentsRequested',\n // x00191044: 'InterscanDelay',\n // x00191047: 'ViewCompressionFactor',\n // x0019104a: 'TotalNoOfRefChannels',\n // x0019104b: 'DataSizeForScanData',\n // x00191052: 'ReconPostProcflag',\n // x00191057: 'CTWaterNumber',\n // x00191058: 'CTBoneNumber',\n // x0019105a: 'AcquisitionDuration',\n // x0019105e: 'NumberOfChannels',\n // x0019105f: 'IncrementBetweenChannels',\n // x00191060: 'StartingView',\n // x00191061: 'NumberOfViews',\n // x00191062: 'IncrementBetweenViews',\n // x0019106a: 'DependantOnNoViewsProcessed',\n // x0019106b: 'FieldOfViewInDetectorCells',\n // x00191070: 'ValueOfBackProjectionButton',\n // x00191071: 'SetIfFatqEstimatesWereUsed',\n // x00191072: 'ZChanAvgOverViews',\n // x00191073: 'AvgOfLeftRefChansOverViews',\n // x00191074: 'MaxLeftChanOverViews',\n // x00191075: 'AvgOfRightRefChansOverViews',\n // x00191076: 'MaxRightChanOverViews',\n // x0019107d: 'SecondEcho',\n // x0019107e: 'NumberOfEchoes',\n // x0019107f: 'TableDelta',\n // x00191081: 'Contiguous',\n // x00191084: 'PeakSAR',\n // x00191085: 'MonitorSAR',\n // x00191087: 'CardiacRepetitionTime',\n // x00191088: 'ImagesPerCardiacCycle',\n // x0019108a: 'ActualReceiveGainAnalog',\n // x0019108b: 'ActualReceiveGainDigital',\n // x0019108d: 'DelayAfterTrigger',\n // x0019108f: 'Swappf',\n // x00191090: 'PauseInterval',\n // x00191091: 'PulseTime',\n // x00191092: 'SliceOffsetOnFreqAxis',\n // x00191093: 'CenterFrequency',\n // x00191094: 'TransmitGain',\n // x00191095: 'AnalogReceiverGain',\n // x00191096: 'DigitalReceiverGain',\n // x00191097: 'BitmapDefiningCVs',\n // x00191098: 'CenterFreqMethod',\n // x0019109b: 'PulseSeqMode',\n // x0019109c: 'PulseSeqName',\n // x0019109d: 'PulseSeqDate',\n // x0019109e: 'InternalPulseSeqName',\n // x0019109f: 'TransmittingCoil',\n // x001910a0: 'SurfaceCoilType',\n // x001910a1: 'ExtremityCoilFlag',\n // x001910a2: 'RawDataRunNumber',\n // x001910a3: 'CalibratedFieldStrength',\n // x001910a4: 'SATFatWaterBone',\n // x001910a5: 'ReceiveBandwidth',\n // x001910a7: 'UserData01',\n // x001910a8: 'UserData02',\n // x001910a9: 'UserData03',\n // x001910aa: 'UserData04',\n // x001910ab: 'UserData05',\n // x001910ac: 'UserData06',\n // x001910ad: 'UserData07',\n // x001910ae: 'UserData08',\n // x001910af: 'UserData09',\n // x001910b0: 'UserData10',\n // x001910b1: 'UserData11',\n // x001910b2: 'UserData12',\n // x001910b3: 'UserData13',\n // x001910b4: 'UserData14',\n // x001910b5: 'UserData15',\n // x001910b6: 'UserData16',\n // x001910b7: 'UserData17',\n // x001910b8: 'UserData18',\n // x001910b9: 'UserData19',\n // x001910ba: 'UserData20',\n // x001910bb: 'UserData21',\n // x001910bc: 'UserData22',\n // x001910bd: 'UserData23',\n // x001910be: 'ProjectionAngle',\n // x001910c0: 'SaturationPlanes',\n // x001910c1: 'SurfaceCoilIntensity',\n // x001910c2: 'SATLocationR',\n // x001910c3: 'SATLocationL',\n // x001910c4: 'SATLocationA',\n // x001910c5: 'SATLocationP',\n // x001910c6: 'SATLocationH',\n // x001910c7: 'SATLocationF',\n // x001910c8: 'SATThicknessR-L',\n // x001910c9: 'SATThicknessA-P',\n // x001910ca: 'SATThicknessH-F',\n // x001910cb: 'PrescribedFlowAxis',\n // x001910cc: 'VelocityEncoding',\n // x001910cd: 'ThicknessDisclaimer',\n // x001910ce: 'PrescanType',\n // x001910cf: 'PrescanStatus',\n // x001910d0: 'RawDataType',\n // x001910d2: 'ProjectionAlgorithm',\n // x001910d3: 'ProjectionAlgorithm',\n // x001910d5: 'FractionalEcho',\n // x001910d6: 'PrepPulse',\n // x001910d7: 'CardiacPhases',\n // x001910d8: 'VariableEchoflag',\n // x001910d9: 'ConcatenatedSAT',\n // x001910da: 'ReferenceChannelUsed',\n // x001910db: 'BackProjectorCoefficient',\n // x001910dc: 'PrimarySpeedCorrectionUsed',\n // x001910dd: 'OverrangeCorrectionUsed',\n // x001910de: 'DynamicZAlphaValue',\n // x001910df: 'UserData',\n // x001910e0: 'UserData',\n // x001910e2: 'VelocityEncodeScale',\n // x001910f2: 'FastPhases',\n // x001910f9: 'TransmissionGain',\n x00200000: 'RelationshipGroupLength',\n x0020000d: 'StudyInstanceUID',\n x0020000e: 'SeriesInstanceUID',\n x00200010: 'StudyID',\n x00200011: 'SeriesNumber',\n x00200012: 'AcquisitionNumber',\n x00200013: 'InstanceNumber',\n x00200014: 'IsotopeNumber',\n x00200015: 'PhaseNumber',\n x00200016: 'IntervalNumber',\n x00200017: 'TimeSlotNumber',\n x00200018: 'AngleNumber',\n x00200019: 'ItemNumber',\n x00200020: 'PatientOrientation',\n x00200022: 'OverlayNumber',\n x00200024: 'CurveNumber',\n x00200026: 'LookupTableNumber',\n x00200030: 'ImagePosition',\n x00200032: 'ImagePositionPatient',\n x00200035: 'ImageOrientation',\n x00200037: 'ImageOrientationPatient',\n x00200050: 'Location',\n x00200052: 'FrameOfReferenceUID',\n x00200060: 'Laterality',\n x00200062: 'ImageLaterality',\n x00200070: 'ImageGeometryType',\n x00200080: 'MaskingImage',\n x00200100: 'TemporalPositionIdentifier',\n x00200105: 'NumberOfTemporalPositions',\n x00200110: 'TemporalResolution',\n x00200200: 'SynchronizationFrameOfReferenceUID',\n x00201000: 'SeriesInStudy',\n x00201001: 'AcquisitionsInSeries',\n x00201002: 'ImagesInAcquisition',\n x00201003: 'ImagesInSeries',\n x00201004: 'AcquisitionsInStudy',\n x00201005: 'ImagesInStudy',\n x00201020: 'Reference',\n x00201040: 'PositionReferenceIndicator',\n x00201041: 'SliceLocation',\n x00201070: 'OtherStudyNumbers',\n x00201200: 'NumberOfPatientRelatedStudies',\n x00201202: 'NumberOfPatientRelatedSeries',\n x00201204: 'NumberOfPatientRelatedInstances',\n x00201206: 'NumberOfStudyRelatedSeries',\n x00201208: 'NumberOfStudyRelatedInstances',\n x00201209: 'NumberOfSeriesRelatedInstances',\n x002031xx: 'SourceImageIDs',\n x00203401: 'ModifyingDeviceID',\n x00203402: 'ModifiedImageID',\n x00203403: 'ModifiedImageDate',\n x00203404: 'ModifyingDeviceManufacturer',\n x00203405: 'ModifiedImageTime',\n x00203406: 'ModifiedImageDescription',\n x00204000: 'ImageComments',\n x00205000: 'OriginalImageIdentification',\n x00205002: 'OriginalImageIdentNomenclature',\n x00209056: 'StackID',\n x00209057: 'InStackPositionNumber',\n x00209071: 'FrameAnatomySequence',\n x00209072: 'FrameLaterality',\n x00209111: 'FrameContentSequence',\n x00209113: 'PlanePositionSequence',\n x00209116: 'PlaneOrientationSequence',\n x00209128: 'TemporalPositionIndex',\n x00209153: 'TriggerDelayTime',\n x00209156: 'FrameAcquisitionNumber',\n x00209157: 'DimensionIndexValues',\n x00209158: 'FrameComments',\n x00209161: 'ConcatenationUID',\n x00209162: 'InConcatenationNumber',\n x00209163: 'InConcatenationTotalNumber',\n x00209164: 'DimensionOrganizationUID',\n x00209165: 'DimensionIndexPointer',\n x00209167: 'FunctionalGroupPointer',\n x00209213: 'DimensionIndexPrivateCreator',\n x00209221: 'DimensionOrganizationSequence',\n x00209222: 'DimensionIndexSequence',\n x00209228: 'ConcatenationFrameOffsetNumber',\n x00209238: 'FunctionalGroupPrivateCreator',\n x00209241: 'NominalPercentageOfCardiacPhase',\n x00209245: 'NominalPercentOfRespiratoryPhase',\n x00209246: 'StartingRespiratoryAmplitude',\n x00209247: 'StartingRespiratoryPhase',\n x00209248: 'EndingRespiratoryAmplitude',\n x00209249: 'EndingRespiratoryPhase',\n x00209250: 'RespiratoryTriggerType',\n x00209251: 'RRIntervalTimeNominal',\n x00209252: 'ActualCardiacTriggerDelayTime',\n x00209253: 'RespiratorySynchronizationSequence',\n x00209254: 'RespiratoryIntervalTime',\n x00209255: 'NominalRespiratoryTriggerDelayTime',\n x00209256: 'RespiratoryTriggerDelayThreshold',\n x00209257: 'ActualRespiratoryTriggerDelayTime',\n x00209301: 'ImagePositionVolume',\n x00209302: 'ImageOrientationVolume',\n x00209308: 'ApexPosition',\n x00209421: 'DimensionDescriptionLabel',\n x00209450: 'PatientOrientationInFrameSequence',\n x00209453: 'FrameLabel',\n x00209518: 'AcquisitionIndex',\n x00209529: 'ContributingSOPInstancesRefSeq',\n x00209536: 'ReconstructionIndex',\n // x00211003: 'SeriesFromWhichPrescribed',\n // x00211005: 'GenesisVersionNow',\n // x00211007: 'SeriesRecordChecksum',\n // x00211018: 'GenesisVersionNow',\n // x00211019: 'AcqreconRecordChecksum',\n // x00211020: 'TableStartLocation',\n // x00211035: 'SeriesFromWhichPrescribed',\n // x00211036: 'ImageFromWhichPrescribed',\n // x00211037: 'ScreenFormat',\n // x0021104a: 'AnatomicalReferenceForScout',\n // x0021104f: 'LocationsInAcquisition',\n // x00211050: 'GraphicallyPrescribed',\n // x00211051: 'RotationFromSourceXRot',\n // x00211052: 'RotationFromSourceYRot',\n // x00211053: 'RotationFromSourceZRot',\n // x00211054: 'ImagePosition',\n // x00211055: 'ImageOrientation',\n // x00211056: 'IntegerSlop',\n // x00211057: 'IntegerSlop',\n // x00211058: 'IntegerSlop',\n // x00211059: 'IntegerSlop',\n // x0021105a: 'IntegerSlop',\n // x0021105b: 'FloatSlop',\n // x0021105c: 'FloatSlop',\n // x0021105d: 'FloatSlop',\n // x0021105e: 'FloatSlop',\n // x0021105f: 'FloatSlop',\n // x00211081: 'AutoWindowLevelAlpha',\n // x00211082: 'AutoWindowLevelBeta',\n // x00211083: 'AutoWindowLevelWindow',\n // x00211084: 'ToWindowLevelLevel',\n // x00211090: 'TubeFocalSpotPosition',\n // x00211091: 'BiopsyPosition',\n // x00211092: 'BiopsyTLocation',\n // x00211093: 'BiopsyRefLocation',\n x00220001: 'LightPathFilterPassThroughWavelen',\n x00220002: 'LightPathFilterPassBand',\n x00220003: 'ImagePathFilterPassThroughWavelen',\n x00220004: 'ImagePathFilterPassBand',\n x00220005: 'PatientEyeMovementCommanded',\n x00220006: 'PatientEyeMovementCommandCodeSeq',\n x00220007: 'SphericalLensPower',\n x00220008: 'CylinderLensPower',\n x00220009: 'CylinderAxis',\n x0022000a: 'EmmetropicMagnification',\n x0022000b: 'IntraOcularPressure',\n x0022000c: 'HorizontalFieldOfView',\n x0022000d: 'PupilDilated',\n x0022000e: 'DegreeOfDilation',\n x00220010: 'StereoBaselineAngle',\n x00220011: 'StereoBaselineDisplacement',\n x00220012: 'StereoHorizontalPixelOffset',\n x00220013: 'StereoVerticalPixelOffset',\n x00220014: 'StereoRotation',\n x00220015: 'AcquisitionDeviceTypeCodeSequence',\n x00220016: 'IlluminationTypeCodeSequence',\n x00220017: 'LightPathFilterTypeStackCodeSeq',\n x00220018: 'ImagePathFilterTypeStackCodeSeq',\n x00220019: 'LensesCodeSequence',\n x0022001a: 'ChannelDescriptionCodeSequence',\n x0022001b: 'RefractiveStateSequence',\n x0022001c: 'MydriaticAgentCodeSequence',\n x0022001d: 'RelativeImagePositionCodeSequence',\n x00220020: 'StereoPairsSequence',\n x00220021: 'LeftImageSequence',\n x00220022: 'RightImageSequence',\n x00220030: 'AxialLengthOfTheEye',\n x00220031: 'OphthalmicFrameLocationSequence',\n x00220032: 'ReferenceCoordinates',\n x00220035: 'DepthSpatialResolution',\n x00220036: 'MaximumDepthDistortion',\n x00220037: 'AlongScanSpatialResolution',\n x00220038: 'MaximumAlongScanDistortion',\n x00220039: 'OphthalmicImageOrientation',\n x00220041: 'DepthOfTransverseImage',\n x00220042: 'MydriaticAgentConcUnitsSeq',\n x00220048: 'AcrossScanSpatialResolution',\n x00220049: 'MaximumAcrossScanDistortion',\n x0022004e: 'MydriaticAgentConcentration',\n x00220055: 'IlluminationWaveLength',\n x00220056: 'IlluminationPower',\n x00220057: 'IlluminationBandwidth',\n x00220058: 'MydriaticAgentSequence',\n // x00231001: 'NumberOfSeriesInStudy',\n // x00231002: 'NumberOfUnarchivedSeries',\n // x00231010: 'ReferenceImageField',\n // x00231050: 'SummaryImage',\n // x00231070: 'StartTimeSecsInFirstAxial',\n // x00231074: 'NoofUpdatesToHeader',\n // x0023107d: 'IndicatesIfTheStudyHasCompleteInfo',\n // x00251006: 'LastPulseSequenceUsed',\n // x00251007: 'ImagesInSeries',\n // x00251010: 'LandmarkCounter',\n // x00251011: 'NumberOfAcquisitions',\n // x00251014: 'IndicatesNoofUpdatesToHeader',\n // x00251017: 'SeriesCompleteFlag',\n // x00251018: 'NumberOfImagesArchived',\n // x00251019: 'LastImageNumberUsed',\n // x0025101a: 'PrimaryReceiverSuiteAndHost',\n // x00271006: 'ImageArchiveFlag',\n // x00271010: 'ScoutType',\n // x0027101c: 'VmaMamp',\n // x0027101d: 'VmaPhase',\n // x0027101e: 'VmaMod',\n // x0027101f: 'VmaClip',\n // x00271020: 'SmartScanOnOffFlag',\n // x00271030: 'ForeignImageRevision',\n // x00271031: 'ImagingMode',\n // x00271032: 'PulseSequence',\n // x00271033: 'ImagingOptions',\n // x00271035: 'PlaneType',\n // x00271036: 'ObliquePlane',\n // x00271040: 'RASLetterOfImageLocation',\n // x00271041: 'ImageLocation',\n // x00271042: 'CenterRCoordOfPlaneImage',\n // x00271043: 'CenterACoordOfPlaneImage',\n // x00271044: 'CenterSCoordOfPlaneImage',\n // x00271045: 'NormalRCoord',\n // x00271046: 'NormalACoord',\n // x00271047: 'NormalSCoord',\n // x00271048: 'RCoordOfTopRightCorner',\n // x00271049: 'ACoordOfTopRightCorner',\n // x0027104a: 'SCoordOfTopRightCorner',\n // x0027104b: 'RCoordOfBottomRightCorner',\n // x0027104c: 'ACoordOfBottomRightCorner',\n // x0027104d: 'SCoordOfBottomRightCorner',\n // x00271050: 'TableStartLocation',\n // x00271051: 'TableEndLocation',\n // x00271052: 'RASLetterForSideOfImage',\n // x00271053: 'RASLetterForAnteriorPosterior',\n // x00271054: 'RASLetterForScoutStartLoc',\n // x00271055: 'RASLetterForScoutEndLoc',\n // x00271060: 'ImageDimensionX',\n // x00271061: 'ImageDimensionY',\n // x00271062: 'NumberOfExcitations',\n x00280000: 'ImagePresentationGroupLength',\n x00280002: 'SamplesPerPixel',\n x00280003: 'SamplesPerPixelUsed',\n x00280004: 'PhotometricInterpretation',\n x00280005: 'ImageDimensions',\n x00280006: 'PlanarConfiguration',\n x00280008: 'NumberOfFrames',\n x00280009: 'FrameIncrementPointer',\n x0028000a: 'FrameDimensionPointer',\n x00280010: 'Rows',\n x00280011: 'Columns',\n x00280012: 'Planes',\n x00280014: 'UltrasoundColorDataPresent',\n x00280030: 'PixelSpacing',\n x00280031: 'ZoomFactor',\n x00280032: 'ZoomCenter',\n x00280034: 'PixelAspectRatio',\n x00280040: 'ImageFormat',\n x00280050: 'ManipulatedImage',\n x00280051: 'CorrectedImage',\n x0028005f: 'CompressionRecognitionCode',\n x00280060: 'CompressionCode',\n x00280061: 'CompressionOriginator',\n x00280062: 'CompressionLabel',\n x00280063: 'CompressionDescription',\n x00280065: 'CompressionSequence',\n x00280066: 'CompressionStepPointers',\n x00280068: 'RepeatInterval',\n x00280069: 'BitsGrouped',\n x00280070: 'PerimeterTable',\n x00280071: 'PerimeterValue',\n x00280080: 'PredictorRows',\n x00280081: 'PredictorColumns',\n x00280082: 'PredictorConstants',\n x00280090: 'BlockedPixels',\n x00280091: 'BlockRows',\n x00280092: 'BlockColumns',\n x00280093: 'RowOverlap',\n x00280094: 'ColumnOverlap',\n x00280100: 'BitsAllocated',\n x00280101: 'BitsStored',\n x00280102: 'HighBit',\n x00280103: 'PixelRepresentation',\n x00280104: 'SmallestValidPixelValue',\n x00280105: 'LargestValidPixelValue',\n x00280106: 'SmallestImagePixelValue',\n x00280107: 'LargestImagePixelValue',\n x00280108: 'SmallestPixelValueInSeries',\n x00280109: 'LargestPixelValueInSeries',\n x00280110: 'SmallestImagePixelValueInPlane',\n x00280111: 'LargestImagePixelValueInPlane',\n x00280120: 'PixelPaddingValue',\n x00280121: 'PixelPaddingRangeLimit',\n x00280200: 'ImageLocation',\n x00280300: 'QualityControlImage',\n x00280301: 'BurnedInAnnotation',\n x00280400: 'TransformLabel',\n x00280401: 'TransformVersionNumber',\n x00280402: 'NumberOfTransformSteps',\n x00280403: 'SequenceOfCompressedData',\n x00280404: 'DetailsOfCoefficients',\n x002804x2: 'CoefficientCoding',\n x002804x3: 'CoefficientCodingPointers',\n x00280700: 'DCTLabel',\n x00280701: 'DataBlockDescription',\n x00280702: 'DataBlock',\n x00280710: 'NormalizationFactorFormat',\n x00280720: 'ZonalMapNumberFormat',\n x00280721: 'ZonalMapLocation',\n x00280722: 'ZonalMapFormat',\n x00280730: 'AdaptiveMapFormat',\n x00280740: 'CodeNumberFormat',\n x002808x0: 'CodeLabel',\n x002808x2: 'NumberOfTables',\n x002808x3: 'CodeTableLocation',\n x002808x4: 'BitsForCodeWord',\n x002808x8: 'ImageDataLocation',\n x00280a02: 'PixelSpacingCalibrationType',\n x00280a04: 'PixelSpacingCalibrationDescription',\n x00281040: 'PixelIntensityRelationship',\n x00281041: 'PixelIntensityRelationshipSign',\n x00281050: 'WindowCenter',\n x00281051: 'WindowWidth',\n x00281052: 'RescaleIntercept',\n x00281053: 'RescaleSlope',\n x00281054: 'RescaleType',\n x00281055: 'WindowCenterAndWidthExplanation',\n x00281056: 'VOI_LUTFunction',\n x00281080: 'GrayScale',\n x00281090: 'RecommendedViewingMode',\n x00281100: 'GrayLookupTableDescriptor',\n x00281101: 'RedPaletteColorTableDescriptor',\n x00281102: 'GreenPaletteColorTableDescriptor',\n x00281103: 'BluePaletteColorTableDescriptor',\n x00281111: 'LargeRedPaletteColorTableDescr',\n x00281112: 'LargeGreenPaletteColorTableDescr',\n x00281113: 'LargeBluePaletteColorTableDescr',\n x00281199: 'PaletteColorTableUID',\n x00281200: 'GrayLookupTableData',\n x00281201: 'RedPaletteColorTableData',\n x00281202: 'GreenPaletteColorTableData',\n x00281203: 'BluePaletteColorTableData',\n x00281211: 'LargeRedPaletteColorTableData',\n x00281212: 'LargeGreenPaletteColorTableData',\n x00281213: 'LargeBluePaletteColorTableData',\n x00281214: 'LargePaletteColorLookupTableUID',\n x00281221: 'SegmentedRedColorTableData',\n x00281222: 'SegmentedGreenColorTableData',\n x00281223: 'SegmentedBlueColorTableData',\n x00281300: 'BreastImplantPresent',\n x00281350: 'PartialView',\n x00281351: 'PartialViewDescription',\n x00281352: 'PartialViewCodeSequence',\n x0028135a: 'SpatialLocationsPreserved',\n x00281402: 'DataPathAssignment',\n x00281404: 'BlendingLUT1Sequence',\n x00281406: 'BlendingWeightConstant',\n x00281408: 'BlendingLookupTableData',\n x0028140c: 'BlendingLUT2Sequence',\n x0028140e: 'DataPathID',\n x0028140f: 'RGBLUTTransferFunction',\n x00281410: 'AlphaLUTTransferFunction',\n x00282000: 'ICCProfile',\n x00282110: 'LossyImageCompression',\n x00282112: 'LossyImageCompressionRatio',\n x00282114: 'LossyImageCompressionMethod',\n x00283000: 'ModalityLUTSequence',\n x00283002: 'LUTDescriptor',\n x00283003: 'LUTExplanation',\n x00283004: 'ModalityLUTType',\n x00283006: 'LUTData',\n x00283010: 'VOILUTSequence',\n x00283110: 'SoftcopyVOILUTSequence',\n x00284000: 'ImagePresentationComments',\n x00285000: 'BiPlaneAcquisitionSequence',\n x00286010: 'RepresentativeFrameNumber',\n x00286020: 'FrameNumbersOfInterest',\n x00286022: 'FrameOfInterestDescription',\n x00286023: 'FrameOfInterestType',\n x00286030: 'MaskPointers',\n x00286040: 'RWavePointer',\n x00286100: 'MaskSubtractionSequence',\n x00286101: 'MaskOperation',\n x00286102: 'ApplicableFrameRange',\n x00286110: 'MaskFrameNumbers',\n x00286112: 'ContrastFrameAveraging',\n x00286114: 'MaskSubPixelShift',\n x00286120: 'TIDOffset',\n x00286190: 'MaskOperationExplanation',\n x00287fe0: 'PixelDataProviderURL',\n x00289001: 'DataPointRows',\n x00289002: 'DataPointColumns',\n x00289003: 'SignalDomainColumns',\n x00289099: 'LargestMonochromePixelValue',\n x00289108: 'DataRepresentation',\n x00289110: 'PixelMeasuresSequence',\n x00289132: 'FrameVOILUTSequence',\n x00289145: 'PixelValueTransformationSequence',\n x00289235: 'SignalDomainRows',\n x00289411: 'DisplayFilterPercentage',\n x00289415: 'FramePixelShiftSequence',\n x00289416: 'SubtractionItemID',\n x00289422: 'PixelIntensityRelationshipLUTSeq',\n x00289443: 'FramePixelDataPropertiesSequence',\n x00289444: 'GeometricalProperties',\n x00289445: 'GeometricMaximumDistortion',\n x00289446: 'ImageProcessingApplied',\n x00289454: 'MaskSelectionMode',\n x00289474: 'LUTFunction',\n x00289478: 'MaskVisibilityPercentage',\n x00289501: 'PixelShiftSequence',\n x00289502: 'RegionPixelShiftSequence',\n x00289503: 'VerticesOfTheRegion',\n x00289506: 'PixelShiftFrameRange',\n x00289507: 'LUTFrameRange',\n x00289520: 'ImageToEquipmentMappingMatrix',\n x00289537: 'EquipmentCoordinateSystemID',\n // x00291004: 'LowerRangeOfPixels1a',\n // x00291005: 'LowerRangeOfPixels1b',\n // x00291006: 'LowerRangeOfPixels1c',\n // x00291007: 'LowerRangeOfPixels1d',\n // x00291008: 'LowerRangeOfPixels1e',\n // x00291009: 'LowerRangeOfPixels1f',\n // x0029100a: 'LowerRangeOfPixels1g',\n // x00291015: 'LowerRangeOfPixels1h',\n // x00291016: 'LowerRangeOfPixels1i',\n // x00291017: 'LowerRangeOfPixels2',\n // x00291018: 'UpperRangeOfPixels2',\n // x0029101a: 'LenOfTotHdrInBytes',\n // x00291026: 'VersionOfTheHdrStruct',\n // x00291034: 'AdvantageCompOverflow',\n // x00291035: 'AdvantageCompUnderflow',\n x00320000: 'StudyGroupLength',\n x0032000a: 'StudyStatusID',\n x0032000c: 'StudyPriorityID',\n x00320012: 'StudyIDIssuer',\n x00320032: 'StudyVerifiedDate',\n x00320033: 'StudyVerifiedTime',\n x00320034: 'StudyReadDate',\n x00320035: 'StudyReadTime',\n x00321000: 'ScheduledStudyStartDate',\n x00321001: 'ScheduledStudyStartTime',\n x00321010: 'ScheduledStudyStopDate',\n x00321011: 'ScheduledStudyStopTime',\n x00321020: 'ScheduledStudyLocation',\n x00321021: 'ScheduledStudyLocationAETitle',\n x00321030: 'ReasonForStudy',\n x00321031: 'RequestingPhysicianIDSequence',\n x00321032: 'RequestingPhysician',\n x00321033: 'RequestingService',\n x00321040: 'StudyArrivalDate',\n x00321041: 'StudyArrivalTime',\n x00321050: 'StudyCompletionDate',\n x00321051: 'StudyCompletionTime',\n x00321055: 'StudyComponentStatusID',\n x00321060: 'RequestedProcedureDescription',\n x00321064: 'RequestedProcedureCodeSequence',\n x00321070: 'RequestedContrastAgent',\n x00324000: 'StudyComments',\n x00380004: 'ReferencedPatientAliasSequence',\n x00380008: 'VisitStatusID',\n x00380010: 'AdmissionID',\n x00380011: 'IssuerOfAdmissionID',\n x00380016: 'RouteOfAdmissions',\n x0038001a: 'ScheduledAdmissionDate',\n x0038001b: 'ScheduledAdmissionTime',\n x0038001c: 'ScheduledDischargeDate',\n x0038001d: 'ScheduledDischargeTime',\n x0038001e: 'ScheduledPatientInstitResidence',\n x00380020: 'AdmittingDate',\n x00380021: 'AdmittingTime',\n x00380030: 'DischargeDate',\n x00380032: 'DischargeTime',\n x00380040: 'DischargeDiagnosisDescription',\n x00380044: 'DischargeDiagnosisCodeSequence',\n x00380050: 'SpecialNeeds',\n x00380060: 'ServiceEpisodeID',\n x00380061: 'IssuerOfServiceEpisodeID',\n x00380062: 'ServiceEpisodeDescription',\n x00380100: 'PertinentDocumentsSequence',\n x00380300: 'CurrentPatientLocation',\n x00380400: 'PatientInstitutionResidence',\n x00380500: 'PatientState',\n x00380502: 'PatientClinicalTrialParticipSeq',\n x00384000: 'VisitComments',\n x003a0004: 'WaveformOriginality',\n x003a0005: 'NumberOfWaveformChannels',\n x003a0010: 'NumberOfWaveformSamples',\n x003a001a: 'SamplingFrequency',\n x003a0020: 'MultiplexGroupLabel',\n x003a0200: 'ChannelDefinitionSequence',\n x003a0202: 'WaveformChannelNumber',\n x003a0203: 'ChannelLabel',\n x003a0205: 'ChannelStatus',\n x003a0208: 'ChannelSourceSequence',\n x003a0209: 'ChannelSourceModifiersSequence',\n x003a020a: 'SourceWaveformSequence',\n x003a020c: 'ChannelDerivationDescription',\n x003a0210: 'ChannelSensitivity',\n x003a0211: 'ChannelSensitivityUnitsSequence',\n x003a0212: 'ChannelSensitivityCorrectionFactor',\n x003a0213: 'ChannelBaseline',\n x003a0214: 'ChannelTimeSkew',\n x003a0215: 'ChannelSampleSkew',\n x003a0218: 'ChannelOffset',\n x003a021a: 'WaveformBitsStored',\n x003a0220: 'FilterLowFrequency',\n x003a0221: 'FilterHighFrequency',\n x003a0222: 'NotchFilterFrequency',\n x003a0223: 'NotchFilterBandwidth',\n x003a0230: 'WaveformDataDisplayScale',\n x003a0231: 'WaveformDisplayBkgCIELabValue',\n x003a0240: 'WaveformPresentationGroupSequence',\n x003a0241: 'PresentationGroupNumber',\n x003a0242: 'ChannelDisplaySequence',\n x003a0244: 'ChannelRecommendDisplayCIELabValue',\n x003a0245: 'ChannelPosition',\n x003a0246: 'DisplayShadingFlag',\n x003a0247: 'FractionalChannelDisplayScale',\n x003a0248: 'AbsoluteChannelDisplayScale',\n x003a0300: 'MultiplexAudioChannelsDescrCodeSeq',\n x003a0301: 'ChannelIdentificationCode',\n x003a0302: 'ChannelMode',\n x00400001: 'ScheduledStationAETitle',\n x00400002: 'ScheduledProcedureStepStartDate',\n x00400003: 'ScheduledProcedureStepStartTime',\n x00400004: 'ScheduledProcedureStepEndDate',\n x00400005: 'ScheduledProcedureStepEndTime',\n x00400006: 'ScheduledPerformingPhysiciansName',\n x00400007: 'ScheduledProcedureStepDescription',\n x00400008: 'ScheduledProtocolCodeSequence',\n x00400009: 'ScheduledProcedureStepID',\n x0040000a: 'StageCodeSequence',\n x0040000b: 'ScheduledPerformingPhysicianIDSeq',\n x00400010: 'ScheduledStationName',\n x00400011: 'ScheduledProcedureStepLocation',\n x00400012: 'PreMedication',\n x00400020: 'ScheduledProcedureStepStatus',\n x00400031: 'LocalNamespaceEntityID',\n x00400032: 'UniversalEntityID',\n x00400033: 'UniversalEntityIDType',\n x00400035: 'IdentifierTypeCode',\n x00400036: 'AssigningFacilitySequence',\n x00400100: 'ScheduledProcedureStepSequence',\n x00400220: 'ReferencedNonImageCompositeSOPSeq',\n x00400241: 'PerformedStationAETitle',\n x00400242: 'PerformedStationName',\n x00400243: 'PerformedLocation',\n x00400244: 'PerformedProcedureStepStartDate',\n x00400245: 'PerformedProcedureStepStartTime',\n x00400250: 'PerformedProcedureStepEndDate',\n x00400251: 'PerformedProcedureStepEndTime',\n x00400252: 'PerformedProcedureStepStatus',\n x00400253: 'PerformedProcedureStepID',\n x00400254: 'PerformedProcedureStepDescription',\n x00400255: 'PerformedProcedureTypeDescription',\n x00400260: 'PerformedProtocolCodeSequence',\n x00400261: 'PerformedProtocolType',\n x00400270: 'ScheduledStepAttributesSequence',\n x00400275: 'RequestAttributesSequence',\n x00400280: 'CommentsOnPerformedProcedureStep',\n x00400281: 'ProcStepDiscontinueReasonCodeSeq',\n x00400293: 'QuantitySequence',\n x00400294: 'Quantity',\n x00400295: 'MeasuringUnitsSequence',\n x00400296: 'BillingItemSequence',\n x00400300: 'TotalTimeOfFluoroscopy',\n x00400301: 'TotalNumberOfExposures',\n x00400302: 'EntranceDose',\n x00400303: 'ExposedArea',\n x00400306: 'DistanceSourceToEntrance',\n x00400307: 'DistanceSourceToSupport',\n x0040030e: 'ExposureDoseSequence',\n x00400310: 'CommentsOnRadiationDose',\n x00400312: 'XRayOutput',\n x00400314: 'HalfValueLayer',\n x00400316: 'OrganDose',\n x00400318: 'OrganExposed',\n x00400320: 'BillingProcedureStepSequence',\n x00400321: 'FilmConsumptionSequence',\n x00400324: 'BillingSuppliesAndDevicesSequence',\n x00400330: 'ReferencedProcedureStepSequence',\n x00400340: 'PerformedSeriesSequence',\n x00400400: 'CommentsOnScheduledProcedureStep',\n x00400440: 'ProtocolContextSequence',\n x00400441: 'ContentItemModifierSequence',\n x0040050a: 'SpecimenAccessionNumber',\n x00400512: 'ContainerIdentifier',\n x0040051a: 'ContainerDescription',\n x00400550: 'SpecimenSequence',\n x00400551: 'SpecimenIdentifier',\n x00400552: 'SpecimenDescriptionSequenceTrial',\n x00400553: 'SpecimenDescriptionTrial',\n x00400554: 'SpecimenUID',\n x00400555: 'AcquisitionContextSequence',\n x00400556: 'AcquisitionContextDescription',\n x0040059a: 'SpecimenTypeCodeSequence',\n x00400600: 'SpecimenShortDescription',\n x004006fa: 'SlideIdentifier',\n x0040071a: 'ImageCenterPointCoordinatesSeq',\n x0040072a: 'XOffsetInSlideCoordinateSystem',\n x0040073a: 'YOffsetInSlideCoordinateSystem',\n x0040074a: 'ZOffsetInSlideCoordinateSystem',\n x004008d8: 'PixelSpacingSequence',\n x004008da: 'CoordinateSystemAxisCodeSequence',\n x004008ea: 'MeasurementUnitsCodeSequence',\n x004009f8: 'VitalStainCodeSequenceTrial',\n x00401001: 'RequestedProcedureID',\n x00401002: 'ReasonForRequestedProcedure',\n x00401003: 'RequestedProcedurePriority',\n x00401004: 'PatientTransportArrangements',\n x00401005: 'RequestedProcedureLocation',\n x00401006: 'PlacerOrderNumber-Procedure',\n x00401007: 'FillerOrderNumber-Procedure',\n x00401008: 'ConfidentialityCode',\n x00401009: 'ReportingPriority',\n x0040100a: 'ReasonForRequestedProcedureCodeSeq',\n x00401010: 'NamesOfIntendedRecipientsOfResults',\n x00401011: 'IntendedRecipientsOfResultsIDSeq',\n x00401101: 'PersonIdentificationCodeSequence',\n x00401102: 'PersonAddress',\n x00401103: 'PersonTelephoneNumbers',\n x00401400: 'RequestedProcedureComments',\n x00402001: 'ReasonForImagingServiceRequest',\n x00402004: 'IssueDateOfImagingServiceRequest',\n x00402005: 'IssueTimeOfImagingServiceRequest',\n x00402006: 'PlacerOrderNumberImagingServiceRequestRetired',\n x00402007: 'FillerOrderNumberImagingServiceRequestRetired',\n x00402008: 'OrderEnteredBy',\n x00402009: 'OrderEntererLocation',\n x00402010: 'OrderCallbackPhoneNumber',\n x00402016: 'PlacerOrderNum-ImagingServiceReq',\n x00402017: 'FillerOrderNum-ImagingServiceReq',\n x00402400: 'ImagingServiceRequestComments',\n x00403001: 'ConfidentialityOnPatientDataDescr',\n x00404001: 'GenPurposeScheduledProcStepStatus',\n x00404002: 'GenPurposePerformedProcStepStatus',\n x00404003: 'GenPurposeSchedProcStepPriority',\n x00404004: 'SchedProcessingApplicationsCodeSeq',\n x00404005: 'SchedProcedureStepStartDateAndTime',\n x00404006: 'MultipleCopiesFlag',\n x00404007: 'PerformedProcessingAppsCodeSeq',\n x00404009: 'HumanPerformerCodeSequence',\n x00404010: 'SchedProcStepModificationDateTime',\n x00404011: 'ExpectedCompletionDateAndTime',\n x00404015: 'ResultingGenPurposePerfProcStepSeq',\n x00404016: 'RefGenPurposeSchedProcStepSeq',\n x00404018: 'ScheduledWorkitemCodeSequence',\n x00404019: 'PerformedWorkitemCodeSequence',\n x00404020: 'InputAvailabilityFlag',\n x00404021: 'InputInformationSequence',\n x00404022: 'RelevantInformationSequence',\n x00404023: 'RefGenPurSchedProcStepTransUID',\n x00404025: 'ScheduledStationNameCodeSequence',\n x00404026: 'ScheduledStationClassCodeSequence',\n x00404027: 'SchedStationGeographicLocCodeSeq',\n x00404028: 'PerformedStationNameCodeSequence',\n x00404029: 'PerformedStationClassCodeSequence',\n x00404030: 'PerformedStationGeogLocCodeSeq',\n x00404031: 'RequestedSubsequentWorkItemCodeSeq',\n x00404032: 'NonDICOMOutputCodeSequence',\n x00404033: 'OutputInformationSequence',\n x00404034: 'ScheduledHumanPerformersSequence',\n x00404035: 'ActualHumanPerformersSequence',\n x00404036: 'HumanPerformersOrganization',\n x00404037: 'HumanPerformerName',\n x00404040: 'RawDataHandling',\n x00408302: 'EntranceDoseInMilliGy',\n x00409094: 'RefImageRealWorldValueMappingSeq',\n x00409096: 'RealWorldValueMappingSequence',\n x00409098: 'PixelValueMappingCodeSequence',\n x00409210: 'LUTLabel',\n x00409211: 'RealWorldValueLastValueMapped',\n x00409212: 'RealWorldValueLUTData',\n x00409216: 'RealWorldValueFirstValueMapped',\n x00409224: 'RealWorldValueIntercept',\n x00409225: 'RealWorldValueSlope',\n x0040a010: 'RelationshipType',\n x0040a027: 'VerifyingOrganization',\n x0040a030: 'VerificationDateTime',\n x0040a032: 'ObservationDateTime',\n x0040a040: 'ValueType',\n x0040a043: 'ConceptNameCodeSequence',\n x0040a050: 'ContinuityOfContent',\n x0040a073: 'VerifyingObserverSequence',\n x0040a075: 'VerifyingObserverName',\n x0040a078: 'AuthorObserverSequence',\n x0040a07a: 'ParticipantSequence',\n x0040a07c: 'CustodialOrganizationSequence',\n x0040a080: 'ParticipationType',\n x0040a082: 'ParticipationDateTime',\n x0040a084: 'ObserverType',\n x0040a088: 'VerifyingObserverIdentCodeSequence',\n x0040a090: 'EquivalentCDADocumentSequence',\n x0040a0b0: 'ReferencedWaveformChannels',\n x0040a120: 'DateTime',\n x0040a121: 'Date',\n x0040a122: 'Time',\n x0040a123: 'PersonName',\n x0040a124: 'UID',\n x0040a130: 'TemporalRangeType',\n x0040a132: 'ReferencedSamplePositions',\n x0040a136: 'ReferencedFrameNumbers',\n x0040a138: 'ReferencedTimeOffsets',\n x0040a13a: 'ReferencedDateTime',\n x0040a160: 'TextValue',\n x0040a168: 'ConceptCodeSequence',\n x0040a170: 'PurposeOfReferenceCodeSequence',\n x0040a180: 'AnnotationGroupNumber',\n x0040a195: 'ModifierCodeSequence',\n x0040a300: 'MeasuredValueSequence',\n x0040a301: 'NumericValueQualifierCodeSequence',\n x0040a30a: 'NumericValue',\n x0040a353: 'AddressTrial',\n x0040a354: 'TelephoneNumberTrial',\n x0040a360: 'PredecessorDocumentsSequence',\n x0040a370: 'ReferencedRequestSequence',\n x0040a372: 'PerformedProcedureCodeSequence',\n x0040a375: 'CurrentRequestedProcEvidenceSeq',\n x0040a385: 'PertinentOtherEvidenceSequence',\n x0040a390: 'HL7StructuredDocumentRefSeq',\n x0040a491: 'CompletionFlag',\n x0040a492: 'CompletionFlagDescription',\n x0040a493: 'VerificationFlag',\n x0040a494: 'ArchiveRequested',\n x0040a496: 'PreliminaryFlag',\n x0040a504: 'ContentTemplateSequence',\n x0040a525: 'IdenticalDocumentsSequence',\n x0040a730: 'ContentSequence',\n x0040b020: 'AnnotationSequence',\n x0040db00: 'TemplateIdentifier',\n x0040db06: 'TemplateVersion',\n x0040db07: 'TemplateLocalVersion',\n x0040db0b: 'TemplateExtensionFlag',\n x0040db0c: 'TemplateExtensionOrganizationUID',\n x0040db0d: 'TemplateExtensionCreatorUID',\n x0040db73: 'ReferencedContentItemIdentifier',\n x0040e001: 'HL7InstanceIdentifier',\n x0040e004: 'HL7DocumentEffectiveTime',\n x0040e006: 'HL7DocumentTypeCodeSequence',\n x0040e010: 'RetrieveURI',\n x0040e011: 'RetrieveLocationUID',\n x00420010: 'DocumentTitle',\n x00420011: 'EncapsulatedDocument',\n x00420012: 'MIMETypeOfEncapsulatedDocument',\n x00420013: 'SourceInstanceSequence',\n x00420014: 'ListOfMIMETypes',\n // x00431001: 'BitmapOfPrescanOptions',\n // x00431002: 'GradientOffsetInX',\n // x00431003: 'GradientOffsetInY',\n // x00431004: 'GradientOffsetInZ',\n // x00431005: 'ImgIsOriginalOrUnoriginal',\n // x00431006: 'NumberOfEPIShots',\n // x00431007: 'ViewsPerSegment',\n // x00431008: 'RespiratoryRateBpm',\n // x00431009: 'RespiratoryTriggerPoint',\n // x0043100a: 'TypeOfReceiverUsed',\n // x0043100b: 'PeakRateOfChangeOfGradientField',\n // x0043100c: 'LimitsInUnitsOfPercent',\n // x0043100d: 'PSDEstimatedLimit',\n // x0043100e: 'PSDEstimatedLimitInTeslaPerSecond',\n // x0043100f: 'Saravghead',\n // x00431010: 'WindowValue',\n // x00431011: 'TotalInputViews',\n // x00431012: 'X-RayChain',\n // x00431013: 'DeconKernelParameters',\n // x00431014: 'CalibrationParameters',\n // x00431015: 'TotalOutputViews',\n // x00431016: 'NumberOfOverranges',\n // x00431017: 'IBHImageScaleFactors',\n // x00431018: 'BBHCoefficients',\n // x00431019: 'NumberOfBBHChainsToBlend',\n // x0043101a: 'StartingChannelNumber',\n // x0043101b: 'PpscanParameters',\n // x0043101c: 'GEImageIntegrity',\n // x0043101d: 'LevelValue',\n // x0043101e: 'DeltaStartTime',\n // x0043101f: 'MaxOverrangesInAView',\n // x00431020: 'AvgOverrangesAllViews',\n // x00431021: 'CorrectedAfterGlowTerms',\n // x00431025: 'ReferenceChannels',\n // x00431026: 'NoViewsRefChansBlocked',\n // x00431027: 'ScanPitchRatio',\n // x00431028: 'UniqueImageIden',\n // x00431029: 'HistogramTables',\n // x0043102a: 'UserDefinedData',\n // x0043102b: 'PrivateScanOptions',\n // x0043102c: 'EffectiveEchoSpacing',\n // x0043102d: 'StringSlopField1',\n // x0043102e: 'StringSlopField2',\n // x0043102f: 'RawDataType',\n // x00431030: 'RawDataType',\n // x00431031: 'RACordOfTargetReconCenter',\n // x00431032: 'RawDataType',\n // x00431033: 'NegScanspacing',\n // x00431034: 'OffsetFrequency',\n // x00431035: 'UserUsageTag',\n // x00431036: 'UserFillMapMSW',\n // x00431037: 'UserFillMapLSW',\n // x00431038: 'User25-48',\n // x00431039: 'SlopInt6-9',\n // x00431040: 'TriggerOnPosition',\n // x00431041: 'DegreeOfRotation',\n // x00431042: 'DASTriggerSource',\n // x00431043: 'DASFpaGain',\n // x00431044: 'DASOutputSource',\n // x00431045: 'DASAdInput',\n // x00431046: 'DASCalMode',\n // x00431047: 'DASCalFrequency',\n // x00431048: 'DASRegXm',\n // x00431049: 'DASAutoZero',\n // x0043104a: 'StartingChannelOfView',\n // x0043104b: 'DASXmPattern',\n // x0043104c: 'TGGCTriggerMode',\n // x0043104d: 'StartScanToXrayOnDelay',\n // x0043104e: 'DurationOfXrayOn',\n // x00431060: 'SlopInt10-17',\n // x00431061: 'ScannerStudyEntityUID',\n // x00431062: 'ScannerStudyID',\n // x0043106f: 'ScannerTableEntry',\n x00440001: 'ProductPackageIdentifier',\n x00440002: 'SubstanceAdministrationApproval',\n x00440003: 'ApprovalStatusFurtherDescription',\n x00440004: 'ApprovalStatusDateTime',\n x00440007: 'ProductTypeCodeSequence',\n x00440008: 'ProductName',\n x00440009: 'ProductDescription',\n x0044000a: 'ProductLotIdentifier',\n x0044000b: 'ProductExpirationDateTime',\n x00440010: 'SubstanceAdministrationDateTime',\n x00440011: 'SubstanceAdministrationNotes',\n x00440012: 'SubstanceAdministrationDeviceID',\n x00440013: 'ProductParameterSequence',\n x00440019: 'SubstanceAdminParameterSeq',\n // x00451001: 'NumberOfMacroRowsInDetector',\n // x00451002: 'MacroWidthAtISOCenter',\n // x00451003: 'DASType',\n // x00451004: 'DASGain',\n // x00451005: 'DASTemperature',\n // x00451006: 'TableDirectionInOrOut',\n // x00451007: 'ZSmoothingFactor',\n // x00451008: 'ViewWeightingMode',\n // x00451009: 'SigmaRowNumberWhichRowsWereUsed',\n // x0045100a: 'MinimumDasValueFoundInTheScanData',\n // x0045100b: 'MaximumOffsetShiftValueUsed',\n // x0045100c: 'NumberOfViewsShifted',\n // x0045100d: 'ZTrackingFlag',\n // x0045100e: 'MeanZError',\n // x0045100f: 'ZTrackingMaximumError',\n // x00451010: 'StartingViewForRow2a',\n // x00451011: 'NumberOfViewsInRow2a',\n // x00451012: 'StartingViewForRow1a',\n // x00451013: 'SigmaMode',\n // x00451014: 'NumberOfViewsInRow1a',\n // x00451015: 'StartingViewForRow2b',\n // x00451016: 'NumberOfViewsInRow2b',\n // x00451017: 'StartingViewForRow1b',\n // x00451018: 'NumberOfViewsInRow1b',\n // x00451019: 'AirFilterCalibrationDate',\n // x0045101a: 'AirFilterCalibrationTime',\n // x0045101b: 'PhantomCalibrationDate',\n // x0045101c: 'PhantomCalibrationTime',\n // x0045101d: 'ZSlopeCalibrationDate',\n // x0045101e: 'ZSlopeCalibrationTime',\n // x0045101f: 'CrosstalkCalibrationDate',\n // x00451020: 'CrosstalkCalibrationTime',\n // x00451021: 'IterboneOptionFlag',\n // x00451022: 'PeristalticFlagOption',\n x00460012: 'LensDescription',\n x00460014: 'RightLensSequence',\n x00460015: 'LeftLensSequence',\n x00460018: 'CylinderSequence',\n x00460028: 'PrismSequence',\n x00460030: 'HorizontalPrismPower',\n x00460032: 'HorizontalPrismBase',\n x00460034: 'VerticalPrismPower',\n x00460036: 'VerticalPrismBase',\n x00460038: 'LensSegmentType',\n x00460040: 'OpticalTransmittance',\n x00460042: 'ChannelWidth',\n x00460044: 'PupilSize',\n x00460046: 'CornealSize',\n x00460060: 'DistancePupillaryDistance',\n x00460062: 'NearPupillaryDistance',\n x00460064: 'OtherPupillaryDistance',\n x00460075: 'RadiusOfCurvature',\n x00460076: 'KeratometricPower',\n x00460077: 'KeratometricAxis',\n x00460092: 'BackgroundColor',\n x00460094: 'Optotype',\n x00460095: 'OptotypePresentation',\n x00460100: 'AddNearSequence',\n x00460101: 'AddIntermediateSequence',\n x00460102: 'AddOtherSequence',\n x00460104: 'AddPower',\n x00460106: 'ViewingDistance',\n x00460125: 'ViewingDistanceType',\n x00460135: 'VisualAcuityModifiers',\n x00460137: 'DecimalVisualAcuity',\n x00460139: 'OptotypeDetailedDefinition',\n x00460146: 'SpherePower',\n x00460147: 'CylinderPower',\n x00500004: 'CalibrationImage',\n x00500010: 'DeviceSequence',\n x00500014: 'DeviceLength',\n x00500015: 'ContainerComponentWidth',\n x00500016: 'DeviceDiameter',\n x00500017: 'DeviceDiameterUnits',\n x00500018: 'DeviceVolume',\n x00500019: 'InterMarkerDistance',\n x0050001b: 'ContainerComponentID',\n x00500020: 'DeviceDescription',\n x00540010: 'EnergyWindowVector',\n x00540011: 'NumberOfEnergyWindows',\n x00540012: 'EnergyWindowInformationSequence',\n x00540013: 'EnergyWindowRangeSequence',\n x00540014: 'EnergyWindowLowerLimit',\n x00540015: 'EnergyWindowUpperLimit',\n x00540016: 'RadiopharmaceuticalInformationSeq',\n x00540017: 'ResidualSyringeCounts',\n x00540018: 'EnergyWindowName',\n x00540020: 'DetectorVector',\n x00540021: 'NumberOfDetectors',\n x00540022: 'DetectorInformationSequence',\n x00540030: 'PhaseVector',\n x00540031: 'NumberOfPhases',\n x00540032: 'PhaseInformationSequence',\n x00540033: 'NumberOfFramesInPhase',\n x00540036: 'PhaseDelay',\n x00540038: 'PauseBetweenFrames',\n x00540039: 'PhaseDescription',\n x00540050: 'RotationVector',\n x00540051: 'NumberOfRotations',\n x00540052: 'RotationInformationSequence',\n x00540053: 'NumberOfFramesInRotation',\n x00540060: 'RRIntervalVector',\n x00540061: 'NumberOfRRIntervals',\n x00540062: 'GatedInformationSequence',\n x00540063: 'DataInformationSequence',\n x00540070: 'TimeSlotVector',\n x00540071: 'NumberOfTimeSlots',\n x00540072: 'TimeSlotInformationSequence',\n x00540073: 'TimeSlotTime',\n x00540080: 'SliceVector',\n x00540081: 'NumberOfSlices',\n x00540090: 'AngularViewVector',\n x00540100: 'TimeSliceVector',\n x00540101: 'NumberOfTimeSlices',\n x00540200: 'StartAngle',\n x00540202: 'TypeOfDetectorMotion',\n x00540210: 'TriggerVector',\n x00540211: 'NumberOfTriggersInPhase',\n x00540220: 'ViewCodeSequence',\n x00540222: 'ViewModifierCodeSequence',\n x00540300: 'RadionuclideCodeSequence',\n x00540302: 'AdministrationRouteCodeSequence',\n x00540304: 'RadiopharmaceuticalCodeSequence',\n x00540306: 'CalibrationDataSequence',\n x00540308: 'EnergyWindowNumber',\n x00540400: 'ImageID',\n x00540410: 'PatientOrientationCodeSequence',\n x00540412: 'PatientOrientationModifierCodeSeq',\n x00540414: 'PatientGantryRelationshipCodeSeq',\n x00540500: 'SliceProgressionDirection',\n x00541000: 'SeriesType',\n x00541001: 'Units',\n x00541002: 'CountsSource',\n x00541004: 'ReprojectionMethod',\n x00541100: 'RandomsCorrectionMethod',\n x00541101: 'AttenuationCorrectionMethod',\n x00541102: 'DecayCorrection',\n x00541103: 'ReconstructionMethod',\n x00541104: 'DetectorLinesOfResponseUsed',\n x00541105: 'ScatterCorrectionMethod',\n x00541200: 'AxialAcceptance',\n x00541201: 'AxialMash',\n x00541202: 'TransverseMash',\n x00541203: 'DetectorElementSize',\n x00541210: 'CoincidenceWindowWidth',\n x00541220: 'SecondaryCountsType',\n x00541300: 'FrameReferenceTime',\n x00541310: 'PrimaryCountsAccumulated',\n x00541311: 'SecondaryCountsAccumulated',\n x00541320: 'SliceSensitivityFactor',\n x00541321: 'DecayFactor',\n x00541322: 'DoseCalibrationFactor',\n x00541323: 'ScatterFractionFactor',\n x00541324: 'DeadTimeFactor',\n x00541330: 'ImageIndex',\n x00541400: 'CountsIncluded',\n x00541401: 'DeadTimeCorrectionFlag',\n x00603000: 'HistogramSequence',\n x00603002: 'HistogramNumberOfBins',\n x00603004: 'HistogramFirstBinValue',\n x00603006: 'HistogramLastBinValue',\n x00603008: 'HistogramBinWidth',\n x00603010: 'HistogramExplanation',\n x00603020: 'HistogramData',\n x00620001: 'SegmentationType',\n x00620002: 'SegmentSequence',\n x00620003: 'SegmentedPropertyCategoryCodeSeq',\n x00620004: 'SegmentNumber',\n x00620005: 'SegmentLabel',\n x00620006: 'SegmentDescription',\n x00620008: 'SegmentAlgorithmType',\n x00620009: 'SegmentAlgorithmName',\n x0062000a: 'SegmentIdentificationSequence',\n x0062000b: 'ReferencedSegmentNumber',\n x0062000c: 'RecommendedDisplayGrayscaleValue',\n x0062000d: 'RecommendedDisplayCIELabValue',\n x0062000e: 'MaximumFractionalValue',\n x0062000f: 'SegmentedPropertyTypeCodeSequence',\n x00620010: 'SegmentationFractionalType',\n x00640002: 'DeformableRegistrationSequence',\n x00640003: 'SourceFrameOfReferenceUID',\n x00640005: 'DeformableRegistrationGridSequence',\n x00640007: 'GridDimensions',\n x00640008: 'GridResolution',\n x00640009: 'VectorGridData',\n x0064000f: 'PreDeformationMatrixRegistSeq',\n x00640010: 'PostDeformationMatrixRegistSeq',\n x00660001: 'NumberOfSurfaces',\n x00660002: 'SurfaceSequence',\n x00660003: 'SurfaceNumber',\n x00660004: 'SurfaceComments',\n x00660009: 'SurfaceProcessing',\n x0066000a: 'SurfaceProcessingRatio',\n x0066000e: 'FiniteVolume',\n x00660010: 'Manifold',\n x00660011: 'SurfacePointsSequence',\n x00660015: 'NumberOfSurfacePoints',\n x00660016: 'PointCoordinatesData',\n x00660017: 'PointPositionAccuracy',\n x00660018: 'MeanPointDistance',\n x00660019: 'MaximumPointDistance',\n x0066001b: 'AxisOfRotation',\n x0066001c: 'CenterOfRotation',\n x0066001e: 'NumberOfVectors',\n x0066001f: 'VectorDimensionality',\n x00660020: 'VectorAccuracy',\n x00660021: 'VectorCoordinateData',\n x00660023: 'TrianglePointIndexList',\n x00660024: 'EdgePointIndexList',\n x00660025: 'VertexPointIndexList',\n x00660026: 'TriangleStripSequence',\n x00660027: 'TriangleFanSequence',\n x00660028: 'LineSequence',\n x00660029: 'PrimitivePointIndexList',\n x0066002a: 'SurfaceCount',\n x0066002f: 'AlgorithmFamilyCodeSequ',\n x00660031: 'AlgorithmVersion',\n x00660032: 'AlgorithmParameters',\n x00660034: 'FacetSequence',\n x00660036: 'AlgorithmName',\n x00700001: 'GraphicAnnotationSequence',\n x00700002: 'GraphicLayer',\n x00700003: 'BoundingBoxAnnotationUnits',\n x00700004: 'AnchorPointAnnotationUnits',\n x00700005: 'GraphicAnnotationUnits',\n x00700006: 'UnformattedTextValue',\n x00700008: 'TextObjectSequence',\n x00700009: 'GraphicObjectSequence',\n x00700010: 'BoundingBoxTopLeftHandCorner',\n x00700011: 'BoundingBoxBottomRightHandCorner',\n x00700012: 'BoundingBoxTextHorizJustification',\n x00700014: 'AnchorPoint',\n x00700015: 'AnchorPointVisibility',\n x00700020: 'GraphicDimensions',\n x00700021: 'NumberOfGraphicPoints',\n x00700022: 'GraphicData',\n x00700023: 'GraphicType',\n x00700024: 'GraphicFilled',\n x00700040: 'ImageRotationRetired',\n x00700041: 'ImageHorizontalFlip',\n x00700042: 'ImageRotation',\n x00700050: 'DisplayedAreaTopLeftTrial',\n x00700051: 'DisplayedAreaBottomRightTrial',\n x00700052: 'DisplayedAreaTopLeft',\n x00700053: 'DisplayedAreaBottomRight',\n x0070005a: 'DisplayedAreaSelectionSequence',\n x00700060: 'GraphicLayerSequence',\n x00700062: 'GraphicLayerOrder',\n x00700066: 'GraphicLayerRecDisplayGraysclValue',\n x00700067: 'GraphicLayerRecDisplayRGBValue',\n x00700068: 'GraphicLayerDescription',\n x00700080: 'ContentLabel',\n x00700081: 'ContentDescription',\n x00700082: 'PresentationCreationDate',\n x00700083: 'PresentationCreationTime',\n x00700084: 'ContentCreatorName',\n x00700086: 'ContentCreatorIDCodeSequence',\n x00700100: 'PresentationSizeMode',\n x00700101: 'PresentationPixelSpacing',\n x00700102: 'PresentationPixelAspectRatio',\n x00700103: 'PresentationPixelMagRatio',\n x00700306: 'ShapeType',\n x00700308: 'RegistrationSequence',\n x00700309: 'MatrixRegistrationSequence',\n x0070030a: 'MatrixSequence',\n x0070030c: 'FrameOfRefTransformationMatrixType',\n x0070030d: 'RegistrationTypeCodeSequence',\n x0070030f: 'FiducialDescription',\n x00700310: 'FiducialIdentifier',\n x00700311: 'FiducialIdentifierCodeSequence',\n x00700312: 'ContourUncertaintyRadius',\n x00700314: 'UsedFiducialsSequence',\n x00700318: 'GraphicCoordinatesDataSequence',\n x0070031a: 'FiducialUID',\n x0070031c: 'FiducialSetSequence',\n x0070031e: 'FiducialSequence',\n x00700401: 'GraphicLayerRecomDisplayCIELabVal',\n x00700402: 'BlendingSequence',\n x00700403: 'RelativeOpacity',\n x00700404: 'ReferencedSpatialRegistrationSeq',\n x00700405: 'BlendingPosition',\n x00720002: 'HangingProtocolName',\n x00720004: 'HangingProtocolDescription',\n x00720006: 'HangingProtocolLevel',\n x00720008: 'HangingProtocolCreator',\n x0072000a: 'HangingProtocolCreationDateTime',\n x0072000c: 'HangingProtocolDefinitionSequence',\n x0072000e: 'HangingProtocolUserIDCodeSequence',\n x00720010: 'HangingProtocolUserGroupName',\n x00720012: 'SourceHangingProtocolSequence',\n x00720014: 'NumberOfPriorsReferenced',\n x00720020: 'ImageSetsSequence',\n x00720022: 'ImageSetSelectorSequence',\n x00720024: 'ImageSetSelectorUsageFlag',\n x00720026: 'SelectorAttribute',\n x00720028: 'SelectorValueNumber',\n x00720030: 'TimeBasedImageSetsSequence',\n x00720032: 'ImageSetNumber',\n x00720034: 'ImageSetSelectorCategory',\n x00720038: 'RelativeTime',\n x0072003a: 'RelativeTimeUnits',\n x0072003c: 'AbstractPriorValue',\n x0072003e: 'AbstractPriorCodeSequence',\n x00720040: 'ImageSetLabel',\n x00720050: 'SelectorAttributeVR',\n x00720052: 'SelectorSequencePointer',\n x00720054: 'SelectorSeqPointerPrivateCreator',\n x00720056: 'SelectorAttributePrivateCreator',\n x00720060: 'SelectorATValue',\n x00720062: 'SelectorCSValue',\n x00720064: 'SelectorISValue',\n x00720066: 'SelectorLOValue',\n x00720068: 'SelectorLTValue',\n x0072006a: 'SelectorPNValue',\n x0072006c: 'SelectorSHValue',\n x0072006e: 'SelectorSTValue',\n x00720070: 'SelectorUTValue',\n x00720072: 'SelectorDSValue',\n x00720074: 'SelectorFDValue',\n x00720076: 'SelectorFLValue',\n x00720078: 'SelectorULValue',\n x0072007a: 'SelectorUSValue',\n x0072007c: 'SelectorSLValue',\n x0072007e: 'SelectorSSValue',\n x00720080: 'SelectorCodeSequenceValue',\n x00720100: 'NumberOfScreens',\n x00720102: 'NominalScreenDefinitionSequence',\n x00720104: 'NumberOfVerticalPixels',\n x00720106: 'NumberOfHorizontalPixels',\n x00720108: 'DisplayEnvironmentSpatialPosition',\n x0072010a: 'ScreenMinimumGrayscaleBitDepth',\n x0072010c: 'ScreenMinimumColorBitDepth',\n x0072010e: 'ApplicationMaximumRepaintTime',\n x00720200: 'DisplaySetsSequence',\n x00720202: 'DisplaySetNumber',\n x00720203: 'DisplaySetLabel',\n x00720204: 'DisplaySetPresentationGroup',\n x00720206: 'DisplaySetPresentationGroupDescr',\n x00720208: 'PartialDataDisplayHandling',\n x00720210: 'SynchronizedScrollingSequence',\n x00720212: 'DisplaySetScrollingGroup',\n x00720214: 'NavigationIndicatorSequence',\n x00720216: 'NavigationDisplaySet',\n x00720218: 'ReferenceDisplaySets',\n x00720300: 'ImageBoxesSequence',\n x00720302: 'ImageBoxNumber',\n x00720304: 'ImageBoxLayoutType',\n x00720306: 'ImageBoxTileHorizontalDimension',\n x00720308: 'ImageBoxTileVerticalDimension',\n x00720310: 'ImageBoxScrollDirection',\n x00720312: 'ImageBoxSmallScrollType',\n x00720314: 'ImageBoxSmallScrollAmount',\n x00720316: 'ImageBoxLargeScrollType',\n x00720318: 'ImageBoxLargeScrollAmount',\n x00720320: 'ImageBoxOverlapPriority',\n x00720330: 'CineRelativeToRealTime',\n x00720400: 'FilterOperationsSequence',\n x00720402: 'FilterByCategory',\n x00720404: 'FilterByAttributePresence',\n x00720406: 'FilterByOperator',\n x00720432: 'SynchronizedImageBoxList',\n x00720434: 'TypeOfSynchronization',\n x00720500: 'BlendingOperationType',\n x00720510: 'ReformattingOperationType',\n x00720512: 'ReformattingThickness',\n x00720514: 'ReformattingInterval',\n x00720516: 'ReformattingOpInitialViewDir',\n x00720520: 'RenderingType3D',\n x00720600: 'SortingOperationsSequence',\n x00720602: 'SortByCategory',\n x00720604: 'SortingDirection',\n x00720700: 'DisplaySetPatientOrientation',\n x00720702: 'VOIType',\n x00720704: 'PseudoColorType',\n x00720706: 'ShowGrayscaleInverted',\n x00720710: 'ShowImageTrueSizeFlag',\n x00720712: 'ShowGraphicAnnotationFlag',\n x00720714: 'ShowPatientDemographicsFlag',\n x00720716: 'ShowAcquisitionTechniquesFlag',\n x00720717: 'DisplaySetHorizontalJustification',\n x00720718: 'DisplaySetVerticalJustification',\n x00741000: 'UnifiedProcedureStepState',\n x00741002: 'UPSProgressInformationSequence',\n x00741004: 'UnifiedProcedureStepProgress',\n x00741006: 'UnifiedProcedureStepProgressDescr',\n x00741008: 'UnifiedProcedureStepComURISeq',\n x0074100a: 'ContactURI',\n x0074100c: 'ContactDisplayName',\n x00741020: 'BeamTaskSequence',\n x00741022: 'BeamTaskType',\n x00741024: 'BeamOrderIndex',\n x00741030: 'DeliveryVerificationImageSequence',\n x00741032: 'VerificationImageTiming',\n x00741034: 'DoubleExposureFlag',\n x00741036: 'DoubleExposureOrdering',\n x00741038: 'DoubleExposureMeterset',\n x0074103a: 'DoubleExposureFieldDelta',\n x00741040: 'RelatedReferenceRTImageSequence',\n x00741042: 'GeneralMachineVerificationSequence',\n x00741044: 'ConventionalMachineVerificationSeq',\n x00741046: 'IonMachineVerificationSequence',\n x00741048: 'FailedAttributesSequence',\n x0074104a: 'OverriddenAttributesSequence',\n x0074104c: 'ConventionalControlPointVerifySeq',\n x0074104e: 'IonControlPointVerificationSeq',\n x00741050: 'AttributeOccurrenceSequence',\n x00741052: 'AttributeOccurrencePointer',\n x00741054: 'AttributeItemSelector',\n x00741056: 'AttributeOccurrencePrivateCreator',\n x00741200: 'ScheduledProcedureStepPriority',\n x00741202: 'StudyListLabel',\n x00741204: 'ProcedureStepLabel',\n x00741210: 'ScheduledProcessingParametersSeq',\n x00741212: 'PerformedProcessingParametersSeq',\n x00741216: 'UPSPerformedProcedureSequence',\n x00741220: 'RelatedProcedureStepSequence',\n x00741222: 'ProcedureStepRelationshipType',\n x00741230: 'DeletionLock',\n x00741234: 'ReceivingAE',\n x00741236: 'RequestingAE',\n x00741238: 'ReasonForCancellation',\n x00741242: 'SCPStatus',\n x00741244: 'SubscriptionListStatus',\n x00741246: 'UPSListStatus',\n x00880130: 'StorageMediaFileSetID',\n x00880140: 'StorageMediaFileSetUID',\n x00880200: 'IconImageSequence',\n x00880904: 'TopicTitle',\n x00880906: 'TopicSubject',\n x00880910: 'TopicAuthor',\n x00880912: 'TopicKeywords',\n x01000410: 'SOPInstanceStatus',\n x01000420: 'SOPAuthorizationDateAndTime',\n x01000424: 'SOPAuthorizationComment',\n x01000426: 'AuthorizationEquipmentCertNumber',\n x04000005: 'MACIDNumber',\n x04000010: 'MACCalculationTransferSyntaxUID',\n x04000015: 'MACAlgorithm',\n x04000020: 'DataElementsSigned',\n x04000100: 'DigitalSignatureUID',\n x04000105: 'DigitalSignatureDateTime',\n x04000110: 'CertificateType',\n x04000115: 'CertificateOfSigner',\n x04000120: 'Signature',\n x04000305: 'CertifiedTimestampType',\n x04000310: 'CertifiedTimestamp',\n x04000401: 'DigitalSignaturePurposeCodeSeq',\n x04000402: 'ReferencedDigitalSignatureSeq',\n x04000403: 'ReferencedSOPInstanceMACSeq',\n x04000404: 'MAC',\n x04000500: 'EncryptedAttributesSequence',\n x04000510: 'EncryptedContentTransferSyntaxUID',\n x04000520: 'EncryptedContent',\n x04000550: 'ModifiedAttributesSequence',\n x04000561: 'OriginalAttributesSequence',\n x04000562: 'AttributeModificationDateTime',\n x04000563: 'ModifyingSystem',\n x04000564: 'SourceOfPreviousValues',\n x04000565: 'ReasonForTheAttributeModification',\n x1000xxx0: 'EscapeTriplet',\n x1000xxx1: 'RunLengthTriplet',\n x1000xxx2: 'HuffmanTableSize',\n x1000xxx3: 'HuffmanTableTriplet',\n x1000xxx4: 'ShiftTableSize',\n x1000xxx5: 'ShiftTableTriplet',\n x1010xxxx: 'ZonalMap',\n x20000010: 'NumberOfCopies',\n x2000001e: 'PrinterConfigurationSequence',\n x20000020: 'PrintPriority',\n x20000030: 'MediumType',\n x20000040: 'FilmDestination',\n x20000050: 'FilmSessionLabel',\n x20000060: 'MemoryAllocation',\n x20000061: 'MaximumMemoryAllocation',\n x20000062: 'ColorImagePrintingFlag',\n x20000063: 'CollationFlag',\n x20000065: 'AnnotationFlag',\n x20000067: 'ImageOverlayFlag',\n x20000069: 'PresentationLUTFlag',\n x2000006a: 'ImageBoxPresentationLUTFlag',\n x200000a0: 'MemoryBitDepth',\n x200000a1: 'PrintingBitDepth',\n x200000a2: 'MediaInstalledSequence',\n x200000a4: 'OtherMediaAvailableSequence',\n x200000a8: 'SupportedImageDisplayFormatSeq',\n x20000500: 'ReferencedFilmBoxSequence',\n x20000510: 'ReferencedStoredPrintSequence',\n x20100010: 'ImageDisplayFormat',\n x20100030: 'AnnotationDisplayFormatID',\n x20100040: 'FilmOrientation',\n x20100050: 'FilmSizeID',\n x20100052: 'PrinterResolutionID',\n x20100054: 'DefaultPrinterResolutionID',\n x20100060: 'MagnificationType',\n x20100080: 'SmoothingType',\n x201000a6: 'DefaultMagnificationType',\n x201000a7: 'OtherMagnificationTypesAvailable',\n x201000a8: 'DefaultSmoothingType',\n x201000a9: 'OtherSmoothingTypesAvailable',\n x20100100: 'BorderDensity',\n x20100110: 'EmptyImageDensity',\n x20100120: 'MinDensity',\n x20100130: 'MaxDensity',\n x20100140: 'Trim',\n x20100150: 'ConfigurationInformation',\n x20100152: 'ConfigurationInformationDescr',\n x20100154: 'MaximumCollatedFilms',\n x2010015e: 'Illumination',\n x20100160: 'ReflectedAmbientLight',\n x20100376: 'PrinterPixelSpacing',\n x20100500: 'ReferencedFilmSessionSequence',\n x20100510: 'ReferencedImageBoxSequence',\n x20100520: 'ReferencedBasicAnnotationBoxSeq',\n x20200010: 'ImageBoxPosition',\n x20200020: 'Polarity',\n x20200030: 'RequestedImageSize',\n x20200040: 'RequestedDecimate-CropBehavior',\n x20200050: 'RequestedResolutionID',\n x202000a0: 'RequestedImageSizeFlag',\n x202000a2: 'DecimateCropResult',\n x20200110: 'BasicGrayscaleImageSequence',\n x20200111: 'BasicColorImageSequence',\n x20200130: 'ReferencedImageOverlayBoxSequence',\n x20200140: 'ReferencedVOILUTBoxSequence',\n x20300010: 'AnnotationPosition',\n x20300020: 'TextString',\n x20400010: 'ReferencedOverlayPlaneSequence',\n x20400011: 'ReferencedOverlayPlaneGroups',\n x20400020: 'OverlayPixelDataSequence',\n x20400060: 'OverlayMagnificationType',\n x20400070: 'OverlaySmoothingType',\n x20400072: 'OverlayOrImageMagnification',\n x20400074: 'MagnifyToNumberOfColumns',\n x20400080: 'OverlayForegroundDensity',\n x20400082: 'OverlayBackgroundDensity',\n x20400090: 'OverlayMode',\n x20400100: 'ThresholdDensity',\n x20400500: 'ReferencedImageBoxSequenceRetired',\n x20500010: 'PresentationLUTSequence',\n x20500020: 'PresentationLUTShape',\n x20500500: 'ReferencedPresentationLUTSequence',\n x21000010: 'PrintJobID',\n x21000020: 'ExecutionStatus',\n x21000030: 'ExecutionStatusInfo',\n x21000040: 'CreationDate',\n x21000050: 'CreationTime',\n x21000070: 'Originator',\n x21000140: 'DestinationAE',\n x21000160: 'OwnerID',\n x21000170: 'NumberOfFilms',\n x21000500: 'ReferencedPrintJobSequencePullStoredPrint',\n x21100010: 'PrinterStatus',\n x21100020: 'PrinterStatusInfo',\n x21100030: 'PrinterName',\n x21100099: 'PrintQueueID',\n x21200010: 'QueueStatus',\n x21200050: 'PrintJobDescriptionSequence',\n x21200070: 'ReferencedPrintJobSequence',\n x21300010: 'PrintManagementCapabilitiesSeq',\n x21300015: 'PrinterCharacteristicsSequence',\n x21300030: 'FilmBoxContentSequence',\n x21300040: 'ImageBoxContentSequence',\n x21300050: 'AnnotationContentSequence',\n x21300060: 'ImageOverlayBoxContentSequence',\n x21300080: 'PresentationLUTContentSequence',\n x213000a0: 'ProposedStudySequence',\n x213000c0: 'OriginalImageSequence',\n x22000001: 'LabelFromInfoExtractedFromInstance',\n x22000002: 'LabelText',\n x22000003: 'LabelStyleSelection',\n x22000004: 'MediaDisposition',\n x22000005: 'BarcodeValue',\n x22000006: 'BarcodeSymbology',\n x22000007: 'AllowMediaSplitting',\n x22000008: 'IncludeNonDICOMObjects',\n x22000009: 'IncludeDisplayApplication',\n x2200000a: 'SaveCompInstancesAfterMediaCreate',\n x2200000b: 'TotalNumberMediaPiecesCreated',\n x2200000c: 'RequestedMediaApplicationProfile',\n x2200000d: 'ReferencedStorageMediaSequence',\n x2200000e: 'FailureAttributes',\n x2200000f: 'AllowLossyCompression',\n x22000020: 'RequestPriority',\n x30020002: 'RTImageLabel',\n x30020003: 'RTImageName',\n x30020004: 'RTImageDescription',\n x3002000a: 'ReportedValuesOrigin',\n x3002000c: 'RTImagePlane',\n x3002000d: 'XRayImageReceptorTranslation',\n x3002000e: 'XRayImageReceptorAngle',\n x30020010: 'RTImageOrientation',\n x30020011: 'ImagePlanePixelSpacing',\n x30020012: 'RTImagePosition',\n x30020020: 'RadiationMachineName',\n x30020022: 'RadiationMachineSAD',\n x30020024: 'RadiationMachineSSD',\n x30020026: 'RTImageSID',\n x30020028: 'SourceToReferenceObjectDistance',\n x30020029: 'FractionNumber',\n x30020030: 'ExposureSequence',\n x30020032: 'MetersetExposure',\n x30020034: 'DiaphragmPosition',\n x30020040: 'FluenceMapSequence',\n x30020041: 'FluenceDataSource',\n x30020042: 'FluenceDataScale',\n x30020051: 'FluenceMode',\n x30020052: 'FluenceModeID',\n x30040001: 'DVHType',\n x30040002: 'DoseUnits',\n x30040004: 'DoseType',\n x30040006: 'DoseComment',\n x30040008: 'NormalizationPoint',\n x3004000a: 'DoseSummationType',\n x3004000c: 'GridFrameOffsetVector',\n x3004000e: 'DoseGridScaling',\n x30040010: 'RTDoseROISequence',\n x30040012: 'DoseValue',\n x30040014: 'TissueHeterogeneityCorrection',\n x30040040: 'DVHNormalizationPoint',\n x30040042: 'DVHNormalizationDoseValue',\n x30040050: 'DVHSequence',\n x30040052: 'DVHDoseScaling',\n x30040054: 'DVHVolumeUnits',\n x30040056: 'DVHNumberOfBins',\n x30040058: 'DVHData',\n x30040060: 'DVHReferencedROISequence',\n x30040062: 'DVHROIContributionType',\n x30040070: 'DVHMinimumDose',\n x30040072: 'DVHMaximumDose',\n x30040074: 'DVHMeanDose',\n x30060002: 'StructureSetLabel',\n x30060004: 'StructureSetName',\n x30060006: 'StructureSetDescription',\n x30060008: 'StructureSetDate',\n x30060009: 'StructureSetTime',\n x30060010: 'ReferencedFrameOfReferenceSequence',\n x30060012: 'RTReferencedStudySequence',\n x30060014: 'RTReferencedSeriesSequence',\n x30060016: 'ContourImageSequence',\n x30060020: 'StructureSetROISequence',\n x30060022: 'ROINumber',\n x30060024: 'ReferencedFrameOfReferenceUID',\n x30060026: 'ROIName',\n x30060028: 'ROIDescription',\n x3006002a: 'ROIDisplayColor',\n x3006002c: 'ROIVolume',\n x30060030: 'RTRelatedROISequence',\n x30060033: 'RTROIRelationship',\n x30060036: 'ROIGenerationAlgorithm',\n x30060038: 'ROIGenerationDescription',\n x30060039: 'ROIContourSequence',\n x30060040: 'ContourSequence',\n x30060042: 'ContourGeometricType',\n x30060044: 'ContourSlabThickness',\n x30060045: 'ContourOffsetVector',\n x30060046: 'NumberOfContourPoints',\n x30060048: 'ContourNumber',\n x30060049: 'AttachedContours',\n x30060050: 'ContourData',\n x30060080: 'RTROIObservationsSequence',\n x30060082: 'ObservationNumber',\n x30060084: 'ReferencedROINumber',\n x30060085: 'ROIObservationLabel',\n x30060086: 'RTROIIdentificationCodeSequence',\n x30060088: 'ROIObservationDescription',\n x300600a0: 'RelatedRTROIObservationsSequence',\n x300600a4: 'RTROIInterpretedType',\n x300600a6: 'ROIInterpreter',\n x300600b0: 'ROIPhysicalPropertiesSequence',\n x300600b2: 'ROIPhysicalProperty',\n x300600b4: 'ROIPhysicalPropertyValue',\n x300600b6: 'ROIElementalCompositionSequence',\n x300600b7: 'ROIElementalCompAtomicNumber',\n x300600b8: 'ROIElementalCompAtomicMassFraction',\n x300600c0: 'FrameOfReferenceRelationshipSeq',\n x300600c2: 'RelatedFrameOfReferenceUID',\n x300600c4: 'FrameOfReferenceTransformType',\n x300600c6: 'FrameOfReferenceTransformMatrix',\n x300600c8: 'FrameOfReferenceTransformComment',\n x30080010: 'MeasuredDoseReferenceSequence',\n x30080012: 'MeasuredDoseDescription',\n x30080014: 'MeasuredDoseType',\n x30080016: 'MeasuredDoseValue',\n x30080020: 'TreatmentSessionBeamSequence',\n x30080021: 'TreatmentSessionIonBeamSequence',\n x30080022: 'CurrentFractionNumber',\n x30080024: 'TreatmentControlPointDate',\n x30080025: 'TreatmentControlPointTime',\n x3008002a: 'TreatmentTerminationStatus',\n x3008002b: 'TreatmentTerminationCode',\n x3008002c: 'TreatmentVerificationStatus',\n x30080030: 'ReferencedTreatmentRecordSequence',\n x30080032: 'SpecifiedPrimaryMeterset',\n x30080033: 'SpecifiedSecondaryMeterset',\n x30080036: 'DeliveredPrimaryMeterset',\n x30080037: 'DeliveredSecondaryMeterset',\n x3008003a: 'SpecifiedTreatmentTime',\n x3008003b: 'DeliveredTreatmentTime',\n x30080040: 'ControlPointDeliverySequence',\n x30080041: 'IonControlPointDeliverySequence',\n x30080042: 'SpecifiedMeterset',\n x30080044: 'DeliveredMeterset',\n x30080045: 'MetersetRateSet',\n x30080046: 'MetersetRateDelivered',\n x30080047: 'ScanSpotMetersetsDelivered',\n x30080048: 'DoseRateDelivered',\n x30080050: 'TreatmentSummaryCalcDoseRefSeq',\n x30080052: 'CumulativeDoseToDoseReference',\n x30080054: 'FirstTreatmentDate',\n x30080056: 'MostRecentTreatmentDate',\n x3008005a: 'NumberOfFractionsDelivered',\n x30080060: 'OverrideSequence',\n x30080061: 'ParameterSequencePointer',\n x30080062: 'OverrideParameterPointer',\n x30080063: 'ParameterItemIndex',\n x30080064: 'MeasuredDoseReferenceNumber',\n x30080065: 'ParameterPointer',\n x30080066: 'OverrideReason',\n x30080068: 'CorrectedParameterSequence',\n x3008006a: 'CorrectionValue',\n x30080070: 'CalculatedDoseReferenceSequence',\n x30080072: 'CalculatedDoseReferenceNumber',\n x30080074: 'CalculatedDoseReferenceDescription',\n x30080076: 'CalculatedDoseReferenceDoseValue',\n x30080078: 'StartMeterset',\n x3008007a: 'EndMeterset',\n x30080080: 'ReferencedMeasuredDoseReferenceSeq',\n x30080082: 'ReferencedMeasuredDoseReferenceNum',\n x30080090: 'ReferencedCalculatedDoseRefSeq',\n x30080092: 'ReferencedCalculatedDoseRefNumber',\n x300800a0: 'BeamLimitingDeviceLeafPairsSeq',\n x300800b0: 'RecordedWedgeSequence',\n x300800c0: 'RecordedCompensatorSequence',\n x300800d0: 'RecordedBlockSequence',\n x300800e0: 'TreatmentSummaryMeasuredDoseRefSeq',\n x300800f0: 'RecordedSnoutSequence',\n x300800f2: 'RecordedRangeShifterSequence',\n x300800f4: 'RecordedLateralSpreadingDeviceSeq',\n x300800f6: 'RecordedRangeModulatorSequence',\n x30080100: 'RecordedSourceSequence',\n x30080105: 'SourceSerialNumber',\n x30080110: 'TreatmentSessionAppSetupSeq',\n x30080116: 'ApplicationSetupCheck',\n x30080120: 'RecordedBrachyAccessoryDeviceSeq',\n x30080122: 'ReferencedBrachyAccessoryDeviceNum',\n x30080130: 'RecordedChannelSequence',\n x30080132: 'SpecifiedChannelTotalTime',\n x30080134: 'DeliveredChannelTotalTime',\n x30080136: 'SpecifiedNumberOfPulses',\n x30080138: 'DeliveredNumberOfPulses',\n x3008013a: 'SpecifiedPulseRepetitionInterval',\n x3008013c: 'DeliveredPulseRepetitionInterval',\n x30080140: 'RecordedSourceApplicatorSequence',\n x30080142: 'ReferencedSourceApplicatorNumber',\n x30080150: 'RecordedChannelShieldSequence',\n x30080152: 'ReferencedChannelShieldNumber',\n x30080160: 'BrachyControlPointDeliveredSeq',\n x30080162: 'SafePositionExitDate',\n x30080164: 'SafePositionExitTime',\n x30080166: 'SafePositionReturnDate',\n x30080168: 'SafePositionReturnTime',\n x30080200: 'CurrentTreatmentStatus',\n x30080202: 'TreatmentStatusComment',\n x30080220: 'FractionGroupSummarySequence',\n x30080223: 'ReferencedFractionNumber',\n x30080224: 'FractionGroupType',\n x30080230: 'BeamStopperPosition',\n x30080240: 'FractionStatusSummarySequence',\n x30080250: 'TreatmentDate',\n x30080251: 'TreatmentTime',\n x300a0002: 'RTPlanLabel',\n x300a0003: 'RTPlanName',\n x300a0004: 'RTPlanDescription',\n x300a0006: 'RTPlanDate',\n x300a0007: 'RTPlanTime',\n x300a0009: 'TreatmentProtocols',\n x300a000a: 'PlanIntent',\n x300a000b: 'TreatmentSites',\n x300a000c: 'RTPlanGeometry',\n x300a000e: 'PrescriptionDescription',\n x300a0010: 'DoseReferenceSequence',\n x300a0012: 'DoseReferenceNumber',\n x300a0013: 'DoseReferenceUID',\n x300a0014: 'DoseReferenceStructureType',\n x300a0015: 'NominalBeamEnergyUnit',\n x300a0016: 'DoseReferenceDescription',\n x300a0018: 'DoseReferencePointCoordinates',\n x300a001a: 'NominalPriorDose',\n x300a0020: 'DoseReferenceType',\n x300a0021: 'ConstraintWeight',\n x300a0022: 'DeliveryWarningDose',\n x300a0023: 'DeliveryMaximumDose',\n x300a0025: 'TargetMinimumDose',\n x300a0026: 'TargetPrescriptionDose',\n x300a0027: 'TargetMaximumDose',\n x300a0028: 'TargetUnderdoseVolumeFraction',\n x300a002a: 'OrganAtRiskFullVolumeDose',\n x300a002b: 'OrganAtRiskLimitDose',\n x300a002c: 'OrganAtRiskMaximumDose',\n x300a002d: 'OrganAtRiskOverdoseVolumeFraction',\n x300a0040: 'ToleranceTableSequence',\n x300a0042: 'ToleranceTableNumber',\n x300a0043: 'ToleranceTableLabel',\n x300a0044: 'GantryAngleTolerance',\n x300a0046: 'BeamLimitingDeviceAngleTolerance',\n x300a0048: 'BeamLimitingDeviceToleranceSeq',\n x300a004a: 'BeamLimitingDevicePositionTol',\n x300a004b: 'SnoutPositionTolerance',\n x300a004c: 'PatientSupportAngleTolerance',\n x300a004e: 'TableTopEccentricAngleTolerance',\n x300a004f: 'TableTopPitchAngleTolerance',\n x300a0050: 'TableTopRollAngleTolerance',\n x300a0051: 'TableTopVerticalPositionTolerance',\n x300a0052: 'TableTopLongitudinalPositionTol',\n x300a0053: 'TableTopLateralPositionTolerance',\n x300a0055: 'RTPlanRelationship',\n x300a0070: 'FractionGroupSequence',\n x300a0071: 'FractionGroupNumber',\n x300a0072: 'FractionGroupDescription',\n x300a0078: 'NumberOfFractionsPlanned',\n x300a0079: 'NumberFractionPatternDigitsPerDay',\n x300a007a: 'RepeatFractionCycleLength',\n x300a007b: 'FractionPattern',\n x300a0080: 'NumberOfBeams',\n x300a0082: 'BeamDoseSpecificationPoint',\n x300a0084: 'BeamDose',\n x300a0086: 'BeamMeterset',\n x300a0088: 'BeamDosePointDepth',\n x300a0089: 'BeamDosePointEquivalentDepth',\n x300a008a: 'BeamDosePointSSD',\n x300a00a0: 'NumberOfBrachyApplicationSetups',\n x300a00a2: 'BrachyAppSetupDoseSpecPoint',\n x300a00a4: 'BrachyApplicationSetupDose',\n x300a00b0: 'BeamSequence',\n x300a00b2: 'TreatmentMachineName',\n x300a00b3: 'PrimaryDosimeterUnit',\n x300a00b4: 'SourceAxisDistance',\n x300a00b6: 'BeamLimitingDeviceSequence',\n x300a00b8: 'RTBeamLimitingDeviceType',\n x300a00ba: 'SourceToBeamLimitingDeviceDistance',\n x300a00bb: 'IsocenterToBeamLimitingDeviceDist',\n x300a00bc: 'NumberOfLeafJawPairs',\n x300a00be: 'LeafPositionBoundaries',\n x300a00c0: 'BeamNumber',\n x300a00c2: 'BeamName',\n x300a00c3: 'BeamDescription',\n x300a00c4: 'BeamType',\n x300a00c6: 'RadiationType',\n x300a00c7: 'HighDoseTechniqueType',\n x300a00c8: 'ReferenceImageNumber',\n x300a00ca: 'PlannedVerificationImageSequence',\n x300a00cc: 'ImagingDeviceSpecificAcqParams',\n x300a00ce: 'TreatmentDeliveryType',\n x300a00d0: 'NumberOfWedges',\n x300a00d1: 'WedgeSequence',\n x300a00d2: 'WedgeNumber',\n x300a00d3: 'WedgeType',\n x300a00d4: 'WedgeID',\n x300a00d5: 'WedgeAngle',\n x300a00d6: 'WedgeFactor',\n x300a00d7: 'TotalWedgeTrayWaterEquivThickness',\n x300a00d8: 'WedgeOrientation',\n x300a00d9: 'IsocenterToWedgeTrayDistance',\n x300a00da: 'SourceToWedgeTrayDistance',\n x300a00db: 'WedgeThinEdgePosition',\n x300a00dc: 'BolusID',\n x300a00dd: 'BolusDescription',\n x300a00e0: 'NumberOfCompensators',\n x300a00e1: 'MaterialID',\n x300a00e2: 'TotalCompensatorTrayFactor',\n x300a00e3: 'CompensatorSequence',\n x300a00e4: 'CompensatorNumber',\n x300a00e5: 'CompensatorID',\n x300a00e6: 'SourceToCompensatorTrayDistance',\n x300a00e7: 'CompensatorRows',\n x300a00e8: 'CompensatorColumns',\n x300a00e9: 'CompensatorPixelSpacing',\n x300a00ea: 'CompensatorPosition',\n x300a00eb: 'CompensatorTransmissionData',\n x300a00ec: 'CompensatorThicknessData',\n x300a00ed: 'NumberOfBoli',\n x300a00ee: 'CompensatorType',\n x300a00f0: 'NumberOfBlocks',\n x300a00f2: 'TotalBlockTrayFactor',\n x300a00f3: 'TotalBlockTrayWaterEquivThickness',\n x300a00f4: 'BlockSequence',\n x300a00f5: 'BlockTrayID',\n x300a00f6: 'SourceToBlockTrayDistance',\n x300a00f7: 'IsocenterToBlockTrayDistance',\n x300a00f8: 'BlockType',\n x300a00f9: 'AccessoryCode',\n x300a00fa: 'BlockDivergence',\n x300a00fb: 'BlockMountingPosition',\n x300a00fc: 'BlockNumber',\n x300a00fe: 'BlockName',\n x300a0100: 'BlockThickness',\n x300a0102: 'BlockTransmission',\n x300a0104: 'BlockNumberOfPoints',\n x300a0106: 'BlockData',\n x300a0107: 'ApplicatorSequence',\n x300a0108: 'ApplicatorID',\n x300a0109: 'ApplicatorType',\n x300a010a: 'ApplicatorDescription',\n x300a010c: 'CumulativeDoseReferenceCoefficient',\n x300a010e: 'FinalCumulativeMetersetWeight',\n x300a0110: 'NumberOfControlPoints',\n x300a0111: 'ControlPointSequence',\n x300a0112: 'ControlPointIndex',\n x300a0114: 'NominalBeamEnergy',\n x300a0115: 'DoseRateSet',\n x300a0116: 'WedgePositionSequence',\n x300a0118: 'WedgePosition',\n x300a011a: 'BeamLimitingDevicePositionSequence',\n x300a011c: 'LeafJawPositions',\n x300a011e: 'GantryAngle',\n x300a011f: 'GantryRotationDirection',\n x300a0120: 'BeamLimitingDeviceAngle',\n x300a0121: 'BeamLimitingDeviceRotateDirection',\n x300a0122: 'PatientSupportAngle',\n x300a0123: 'PatientSupportRotationDirection',\n x300a0124: 'TableTopEccentricAxisDistance',\n x300a0125: 'TableTopEccentricAngle',\n x300a0126: 'TableTopEccentricRotateDirection',\n x300a0128: 'TableTopVerticalPosition',\n x300a0129: 'TableTopLongitudinalPosition',\n x300a012a: 'TableTopLateralPosition',\n x300a012c: 'IsocenterPosition',\n x300a012e: 'SurfaceEntryPoint',\n x300a0130: 'SourceToSurfaceDistance',\n x300a0134: 'CumulativeMetersetWeight',\n x300a0140: 'TableTopPitchAngle',\n x300a0142: 'TableTopPitchRotationDirection',\n x300a0144: 'TableTopRollAngle',\n x300a0146: 'TableTopRollRotationDirection',\n x300a0148: 'HeadFixationAngle',\n x300a014a: 'GantryPitchAngle',\n x300a014c: 'GantryPitchRotationDirection',\n x300a014e: 'GantryPitchAngleTolerance',\n x300a0180: 'PatientSetupSequence',\n x300a0182: 'PatientSetupNumber',\n x300a0183: 'PatientSetupLabel',\n x300a0184: 'PatientAdditionalPosition',\n x300a0190: 'FixationDeviceSequence',\n x300a0192: 'FixationDeviceType',\n x300a0194: 'FixationDeviceLabel',\n x300a0196: 'FixationDeviceDescription',\n x300a0198: 'FixationDevicePosition',\n x300a0199: 'FixationDevicePitchAngle',\n x300a019a: 'FixationDeviceRollAngle',\n x300a01a0: 'ShieldingDeviceSequence',\n x300a01a2: 'ShieldingDeviceType',\n x300a01a4: 'ShieldingDeviceLabel',\n x300a01a6: 'ShieldingDeviceDescription',\n x300a01a8: 'ShieldingDevicePosition',\n x300a01b0: 'SetupTechnique',\n x300a01b2: 'SetupTechniqueDescription',\n x300a01b4: 'SetupDeviceSequence',\n x300a01b6: 'SetupDeviceType',\n x300a01b8: 'SetupDeviceLabel',\n x300a01ba: 'SetupDeviceDescription',\n x300a01bc: 'SetupDeviceParameter',\n x300a01d0: 'SetupReferenceDescription',\n x300a01d2: 'TableTopVerticalSetupDisplacement',\n x300a01d4: 'TableTopLongitudinalSetupDisplace',\n x300a01d6: 'TableTopLateralSetupDisplacement',\n x300a0200: 'BrachyTreatmentTechnique',\n x300a0202: 'BrachyTreatmentType',\n x300a0206: 'TreatmentMachineSequence',\n x300a0210: 'SourceSequence',\n x300a0212: 'SourceNumber',\n x300a0214: 'SourceType',\n x300a0216: 'SourceManufacturer',\n x300a0218: 'ActiveSourceDiameter',\n x300a021a: 'ActiveSourceLength',\n x300a0222: 'SourceEncapsulationNomThickness',\n x300a0224: 'SourceEncapsulationNomTransmission',\n x300a0226: 'SourceIsotopeName',\n x300a0228: 'SourceIsotopeHalfLife',\n x300a0229: 'SourceStrengthUnits',\n x300a022a: 'ReferenceAirKermaRate',\n x300a022b: 'SourceStrength',\n x300a022c: 'SourceStrengthReferenceDate',\n x300a022e: 'SourceStrengthReferenceTime',\n x300a0230: 'ApplicationSetupSequence',\n x300a0232: 'ApplicationSetupType',\n x300a0234: 'ApplicationSetupNumber',\n x300a0236: 'ApplicationSetupName',\n x300a0238: 'ApplicationSetupManufacturer',\n x300a0240: 'TemplateNumber',\n x300a0242: 'TemplateType',\n x300a0244: 'TemplateName',\n x300a0250: 'TotalReferenceAirKerma',\n x300a0260: 'BrachyAccessoryDeviceSequence',\n x300a0262: 'BrachyAccessoryDeviceNumber',\n x300a0263: 'BrachyAccessoryDeviceID',\n x300a0264: 'BrachyAccessoryDeviceType',\n x300a0266: 'BrachyAccessoryDeviceName',\n x300a026a: 'BrachyAccessoryDeviceNomThickness',\n x300a026c: 'BrachyAccessoryDevNomTransmission',\n x300a0280: 'ChannelSequence',\n x300a0282: 'ChannelNumber',\n x300a0284: 'ChannelLength',\n x300a0286: 'ChannelTotalTime',\n x300a0288: 'SourceMovementType',\n x300a028a: 'NumberOfPulses',\n x300a028c: 'PulseRepetitionInterval',\n x300a0290: 'SourceApplicatorNumber',\n x300a0291: 'SourceApplicatorID',\n x300a0292: 'SourceApplicatorType',\n x300a0294: 'SourceApplicatorName',\n x300a0296: 'SourceApplicatorLength',\n x300a0298: 'SourceApplicatorManufacturer',\n x300a029c: 'SourceApplicatorWallNomThickness',\n x300a029e: 'SourceApplicatorWallNomTrans',\n x300a02a0: 'SourceApplicatorStepSize',\n x300a02a2: 'TransferTubeNumber',\n x300a02a4: 'TransferTubeLength',\n x300a02b0: 'ChannelShieldSequence',\n x300a02b2: 'ChannelShieldNumber',\n x300a02b3: 'ChannelShieldID',\n x300a02b4: 'ChannelShieldName',\n x300a02b8: 'ChannelShieldNominalThickness',\n x300a02ba: 'ChannelShieldNominalTransmission',\n x300a02c8: 'FinalCumulativeTimeWeight',\n x300a02d0: 'BrachyControlPointSequence',\n x300a02d2: 'ControlPointRelativePosition',\n x300a02d4: 'ControlPoint3DPosition',\n x300a02d6: 'CumulativeTimeWeight',\n x300a02e0: 'CompensatorDivergence',\n x300a02e1: 'CompensatorMountingPosition',\n x300a02e2: 'SourceToCompensatorDistance',\n x300a02e3: 'TotalCompTrayWaterEquivThickness',\n x300a02e4: 'IsocenterToCompensatorTrayDistance',\n x300a02e5: 'CompensatorColumnOffset',\n x300a02e6: 'IsocenterToCompensatorDistances',\n x300a02e7: 'CompensatorRelStoppingPowerRatio',\n x300a02e8: 'CompensatorMillingToolDiameter',\n x300a02ea: 'IonRangeCompensatorSequence',\n x300a02eb: 'CompensatorDescription',\n x300a0302: 'RadiationMassNumber',\n x300a0304: 'RadiationAtomicNumber',\n x300a0306: 'RadiationChargeState',\n x300a0308: 'ScanMode',\n x300a030a: 'VirtualSourceAxisDistances',\n x300a030c: 'SnoutSequence',\n x300a030d: 'SnoutPosition',\n x300a030f: 'SnoutID',\n x300a0312: 'NumberOfRangeShifters',\n x300a0314: 'RangeShifterSequence',\n x300a0316: 'RangeShifterNumber',\n x300a0318: 'RangeShifterID',\n x300a0320: 'RangeShifterType',\n x300a0322: 'RangeShifterDescription',\n x300a0330: 'NumberOfLateralSpreadingDevices',\n x300a0332: 'LateralSpreadingDeviceSequence',\n x300a0334: 'LateralSpreadingDeviceNumber',\n x300a0336: 'LateralSpreadingDeviceID',\n x300a0338: 'LateralSpreadingDeviceType',\n x300a033a: 'LateralSpreadingDeviceDescription',\n x300a033c: 'LateralSpreadingDevWaterEquivThick',\n x300a0340: 'NumberOfRangeModulators',\n x300a0342: 'RangeModulatorSequence',\n x300a0344: 'RangeModulatorNumber',\n x300a0346: 'RangeModulatorID',\n x300a0348: 'RangeModulatorType',\n x300a034a: 'RangeModulatorDescription',\n x300a034c: 'BeamCurrentModulationID',\n x300a0350: 'PatientSupportType',\n x300a0352: 'PatientSupportID',\n x300a0354: 'PatientSupportAccessoryCode',\n x300a0356: 'FixationLightAzimuthalAngle',\n x300a0358: 'FixationLightPolarAngle',\n x300a035a: 'MetersetRate',\n x300a0360: 'RangeShifterSettingsSequence',\n x300a0362: 'RangeShifterSetting',\n x300a0364: 'IsocenterToRangeShifterDistance',\n x300a0366: 'RangeShifterWaterEquivThickness',\n x300a0370: 'LateralSpreadingDeviceSettingsSeq',\n x300a0372: 'LateralSpreadingDeviceSetting',\n x300a0374: 'IsocenterToLateralSpreadingDevDist',\n x300a0380: 'RangeModulatorSettingsSequence',\n x300a0382: 'RangeModulatorGatingStartValue',\n x300a0384: 'RangeModulatorGatingStopValue',\n x300a038a: 'IsocenterToRangeModulatorDistance',\n x300a0390: 'ScanSpotTuneID',\n x300a0392: 'NumberOfScanSpotPositions',\n x300a0394: 'ScanSpotPositionMap',\n x300a0396: 'ScanSpotMetersetWeights',\n x300a0398: 'ScanningSpotSize',\n x300a039a: 'NumberOfPaintings',\n x300a03a0: 'IonToleranceTableSequence',\n x300a03a2: 'IonBeamSequence',\n x300a03a4: 'IonBeamLimitingDeviceSequence',\n x300a03a6: 'IonBlockSequence',\n x300a03a8: 'IonControlPointSequence',\n x300a03aa: 'IonWedgeSequence',\n x300a03ac: 'IonWedgePositionSequence',\n x300a0401: 'ReferencedSetupImageSequence',\n x300a0402: 'SetupImageComment',\n x300a0410: 'MotionSynchronizationSequence',\n x300a0412: 'ControlPointOrientation',\n x300a0420: 'GeneralAccessorySequence',\n x300a0421: 'GeneralAccessoryID',\n x300a0422: 'GeneralAccessoryDescription',\n x300a0423: 'GeneralAccessoryType',\n x300a0424: 'GeneralAccessoryNumber',\n x300c0002: 'ReferencedRTPlanSequence',\n x300c0004: 'ReferencedBeamSequence',\n x300c0006: 'ReferencedBeamNumber',\n x300c0007: 'ReferencedReferenceImageNumber',\n x300c0008: 'StartCumulativeMetersetWeight',\n x300c0009: 'EndCumulativeMetersetWeight',\n x300c000a: 'ReferencedBrachyAppSetupSeq',\n x300c000c: 'ReferencedBrachyAppSetupNumber',\n x300c000e: 'ReferencedSourceNumber',\n x300c0020: 'ReferencedFractionGroupSequence',\n x300c0022: 'ReferencedFractionGroupNumber',\n x300c0040: 'ReferencedVerificationImageSeq',\n x300c0042: 'ReferencedReferenceImageSequence',\n x300c0050: 'ReferencedDoseReferenceSequence',\n x300c0051: 'ReferencedDoseReferenceNumber',\n x300c0055: 'BrachyReferencedDoseReferenceSeq',\n x300c0060: 'ReferencedStructureSetSequence',\n x300c006a: 'ReferencedPatientSetupNumber',\n x300c0080: 'ReferencedDoseSequence',\n x300c00a0: 'ReferencedToleranceTableNumber',\n x300c00b0: 'ReferencedBolusSequence',\n x300c00c0: 'ReferencedWedgeNumber',\n x300c00d0: 'ReferencedCompensatorNumber',\n x300c00e0: 'ReferencedBlockNumber',\n x300c00f0: 'ReferencedControlPointIndex',\n x300c00f2: 'ReferencedControlPointSequence',\n x300c00f4: 'ReferencedStartControlPointIndex',\n x300c00f6: 'ReferencedStopControlPointIndex',\n x300c0100: 'ReferencedRangeShifterNumber',\n x300c0102: 'ReferencedLateralSpreadingDevNum',\n x300c0104: 'ReferencedRangeModulatorNumber',\n x300e0002: 'ApprovalStatus',\n x300e0004: 'ReviewDate',\n x300e0005: 'ReviewTime',\n x300e0008: 'ReviewerName',\n x40000000: 'TextGroupLength',\n x40000010: 'Arbitrary',\n x40004000: 'TextComments',\n x40080040: 'ResultsID',\n x40080042: 'ResultsIDIssuer',\n x40080050: 'ReferencedInterpretationSequence',\n x40080100: 'InterpretationRecordedDate',\n x40080101: 'InterpretationRecordedTime',\n x40080102: 'InterpretationRecorder',\n x40080103: 'ReferenceToRecordedSound',\n x40080108: 'InterpretationTranscriptionDate',\n x40080109: 'InterpretationTranscriptionTime',\n x4008010a: 'InterpretationTranscriber',\n x4008010b: 'InterpretationText',\n x4008010c: 'InterpretationAuthor',\n x40080111: 'InterpretationApproverSequence',\n x40080112: 'InterpretationApprovalDate',\n x40080113: 'InterpretationApprovalTime',\n x40080114: 'PhysicianApprovingInterpretation',\n x40080115: 'InterpretationDiagnosisDescription',\n x40080117: 'InterpretationDiagnosisCodeSeq',\n x40080118: 'ResultsDistributionListSequence',\n x40080119: 'DistributionName',\n x4008011a: 'DistributionAddress',\n x40080200: 'InterpretationID',\n x40080202: 'InterpretationIDIssuer',\n x40080210: 'InterpretationTypeID',\n x40080212: 'InterpretationStatusID',\n x40080300: 'Impressions',\n x40084000: 'ResultsComments',\n x4ffe0001: 'MACParametersSequence',\n x50xx0005: 'CurveDimensions',\n x50xx0010: 'NumberOfPoints',\n x50xx0020: 'TypeOfData',\n x50xx0022: 'CurveDescription',\n x50xx0030: 'AxisUnits',\n x50xx0040: 'AxisLabels',\n x50xx0103: 'DataValueRepresentation',\n x50xx0104: 'MinimumCoordinateValue',\n x50xx0105: 'MaximumCoordinateValue',\n x50xx0106: 'CurveRange',\n x50xx0110: 'CurveDataDescriptor',\n x50xx0112: 'CoordinateStartValue',\n x50xx0114: 'CoordinateStepValue',\n x50xx1001: 'CurveActivationLayer',\n x50xx2000: 'AudioType',\n x50xx2002: 'AudioSampleFormat',\n x50xx2004: 'NumberOfChannels',\n x50xx2006: 'NumberOfSamples',\n x50xx2008: 'SampleRate',\n x50xx200a: 'TotalTime',\n x50xx200c: 'AudioSampleData',\n x50xx200e: 'AudioComments',\n x50xx2500: 'CurveLabel',\n x50xx2600: 'CurveReferencedOverlaySequence',\n x50xx2610: 'ReferencedOverlayGroup',\n x50xx3000: 'CurveData',\n x52009229: 'SharedFunctionalGroupsSequence',\n x52009230: 'PerFrameFunctionalGroupsSequence',\n x54000100: 'WaveformSequence',\n x54000110: 'ChannelMinimumValue',\n x54000112: 'ChannelMaximumValue',\n x54001004: 'WaveformBitsAllocated',\n x54001006: 'WaveformSampleInterpretation',\n x5400100a: 'WaveformPaddingValue',\n x54001010: 'WaveformData',\n x56000010: 'FirstOrderPhaseCorrectionAngle',\n x56000020: 'SpectroscopyData',\n x60000000: 'OverlayGroupLength',\n x60xx0010: 'OverlayRows',\n x60xx0011: 'OverlayColumns',\n x60xx0012: 'OverlayPlanes',\n x60xx0015: 'NumberOfFramesInOverlay',\n x60xx0022: 'OverlayDescription',\n x60xx0040: 'OverlayType',\n x60xx0045: 'OverlaySubtype',\n x60xx0050: 'OverlayOrigin',\n x60xx0051: 'ImageFrameOrigin',\n x60xx0052: 'OverlayPlaneOrigin',\n x60xx0060: 'OverlayCompressionCode',\n x60xx0061: 'OverlayCompressionOriginator',\n x60xx0062: 'OverlayCompressionLabel',\n x60xx0063: 'OverlayCompressionDescription',\n x60xx0066: 'OverlayCompressionStepPointers',\n x60xx0068: 'OverlayRepeatInterval',\n x60xx0069: 'OverlayBitsGrouped',\n x60xx0100: 'OverlayBitsAllocated',\n x60xx0102: 'OverlayBitPosition',\n x60xx0110: 'OverlayFormat',\n x60xx0200: 'OverlayLocation',\n x60xx0800: 'OverlayCodeLabel',\n x60xx0802: 'OverlayNumberOfTables',\n x60xx0803: 'OverlayCodeTableLocation',\n x60xx0804: 'OverlayBitsForCodeWord',\n x60xx1001: 'OverlayActivationLayer',\n x60xx1100: 'OverlayDescriptorGray',\n x60xx1101: 'OverlayDescriptorRed',\n x60xx1102: 'OverlayDescriptorGreen',\n x60xx1103: 'OverlayDescriptorBlue',\n x60xx1200: 'OverlaysGray',\n x60xx1201: 'OverlaysRed',\n x60xx1202: 'OverlaysGreen',\n x60xx1203: 'OverlaysBlue',\n x60xx1301: 'ROIArea',\n x60xx1302: 'ROIMean',\n x60xx1303: 'ROIStandardDeviation',\n x60xx1500: 'OverlayLabel',\n x60xx3000: 'OverlayData',\n x60xx4000: 'OverlayComments',\n x7fxx0000: 'PixelDataGroupLength',\n x7fxx0010: 'PixelData',\n x7fxx0011: 'VariableNextDataGroup',\n x7fxx0020: 'VariableCoefficientsSDVN',\n x7fxx0030: 'VariableCoefficientsSDHN',\n x7fxx0040: 'VariableCoefficientsSDDN',\n xfffafffa: 'DigitalSignaturesSequence',\n xfffcfffc: 'DataSetTrailingPadding',\n xfffee000: 'StartOfItem',\n xfffee00d: 'EndOfItems',\n xfffee0dd: 'EndOfSequence'\n};\nDICOMTagDescriptions.init(initialTagDescriptionMap); // Discard original map...\n\ninitialTagDescriptionMap = null;\n\n/**\n * A small set of utilities to help parsing DICOM element values.\n * In the future the functionality provided by this library might\n * be incorporated into dicomParser library.\n */\n\nvar parsingUtils = {\n /**\n * Check if supplied argument is a valid instance of the dicomParser.DataSet class.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @returns {Boolean} Returns true if data is a valid instance of the dicomParser.DataSet class.\n */\n isValidDataSet: function isValidDataSet(data) {\n var dicomParser = external.dicomParser;\n return data instanceof dicomParser.DataSet;\n },\n\n /**\n * Parses an element tag according to the 'AT' VR definition.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {String} A string representation of a data element tag or null if the field is not present or data is not long enough.\n */\n attributeTag: function attributeTag(data, tag) {\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length === 4) {\n var parser = data.byteArrayParser.readUint16,\n bytes = data.byteArray,\n offset = element.dataOffset;\n return 'x' + ('00000000' + (parser(bytes, offset) * 256 * 256 + parser(bytes, offset + 2)).toString(16)).substr(-8);\n }\n }\n\n return null;\n },\n\n /**\n * Parses the string representation of a multi-valued element into an array of strings. If the parser\n * parameter is passed and is a function, it will be applied to each element of the resulting array.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @param parser {Function} An optional parser function that can be applied to each element of the array.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n multiValue: function multiValue(data, tag, parser) {\n var dicomParser = external.dicomParser;\n\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length > 0) {\n var string = dicomParser.readFixedString(data.byteArray, element.dataOffset, element.length);\n\n if (typeof string === 'string' && string.length > 0) {\n if (typeof parser !== 'function') {\n parser = null;\n }\n\n return string.split('\\\\').map(function (value) {\n value = value.trim();\n return parser !== null ? parser(value) : value;\n });\n }\n }\n }\n\n return null;\n },\n\n /**\n * Parses a string to an array of floats for a multi-valued element.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n floatArray: function floatArray(data, tag) {\n return this.multiValue(data, tag, parseFloat);\n }\n};\n\n/**\n * Returns the specified element as a dicom attribute group/element.\n *\n * @param element - The group/element of the element (e.g. '00280009')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getAttribute(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return convertToInt(element.Value);\n}\n\nfunction convertToInt(input) {\n function padFour(input) {\n var l = input.length;\n if (l == 0) return '0000';\n if (l == 1) return '000' + input;\n if (l == 2) return '00' + input;\n if (l == 3) return '0' + input;\n return input;\n }\n\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n for (var j = 0; j < input[i].length; j++) {\n output += padFour(input[i].charCodeAt(j).toString(16));\n }\n }\n\n return parseInt(output, 16);\n}\n\nvar btoa = function btoa(val) {\n return new Buffer(val).toString('base64');\n};\n\n// These should be overridden by the implementation\nvar user = {\n userLoggedIn: function userLoggedIn() {\n return false;\n },\n getUserId: function getUserId() {\n return null;\n },\n getName: function getName() {\n return null;\n },\n getAccessToken: function getAccessToken() {\n return null;\n },\n login: function login() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n logout: function logout() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n getData: function getData(key) {\n return null;\n },\n setData: function setData(key, value) {\n return null;\n }\n};\n\n/**\n * Returns the Authorization header as part of an Object.\n *\n * @returns {Object}\n */\n\nfunction getAuthorizationHeader(server) {\n var headers = {}; // Check for OHIF.user since this can also be run on the server\n\n var accessToken = user && user.getAccessToken && user.getAccessToken();\n\n if (server && server.requestOptions && server.requestOptions.auth) {\n // HTTP Basic Auth (user:password)\n headers.Authorization = \"Basic \".concat(btoa(server.requestOptions.auth));\n } else if (accessToken) {\n headers.Authorization = \"Bearer \".concat(accessToken);\n }\n\n return headers;\n}\n\nfunction getModalities(modality, modalitiesInStudy) {\n var modalities = {};\n\n if (modality) {\n modalities = modality;\n }\n\n if (modalitiesInStudy) {\n // Find vr in modalities\n if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {\n for (var i = 0; i < modalitiesInStudy.Value.length; i++) {\n var value = modalitiesInStudy.Value[i];\n\n if (modalities.Value.indexOf(value) === -1) {\n modalities.Value.push(value);\n }\n }\n } else {\n modalities = modalitiesInStudy;\n }\n }\n\n return modalities;\n}\n\n/**\n * Returns the Alphabetic version of a PN\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element is not found\n * @returns {*}\n */\nfunction getName(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Return the Alphabetic component group\n\n\n if (element.Value[0].Alphabetic) {\n return element.Value[0].Alphabetic;\n } // Orthanc does not return PN properly so this is a temporary workaround\n\n\n return element.Value[0];\n}\n\n/**\n * Returns the first string value as a Javascript Number\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element does not exist\n * @returns {*}\n */\nfunction getNumber(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return parseFloat(element.Value[0]);\n}\n\n/**\n * Returns the specified element as a string. Multi-valued elements will be separated by a backslash\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getString(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Join the array together separated by backslash\n // NOTE: Orthanc does not correctly split values into an array so the join is a no-op\n\n\n return element.Value.join('\\\\');\n}\n\nvar DICOMWeb = {\n getAttribute: getAttribute,\n getAuthorizationHeader: getAuthorizationHeader,\n getModalities: getModalities,\n getName: getName,\n getNumber: getNumber,\n getString: getString\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar dicomwebClient = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n factory(exports);\n}(commonjsGlobal, (function (exports) {\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Converts a Uint8Array to a String.\n * @param {Uint8Array} array that should be converted\n * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0)\n * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array)\n * @returns {String}\n */\n function uint8ArrayToString(arr, offset, limit) {\n offset = offset || 0;\n limit = limit || arr.length - offset;\n var str = '';\n\n for (var i = offset; i < offset + limit; i++) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n }\n /**\n * Converts a String to a Uint8Array.\n * @param {String} str string that should be converted\n * @returns {Uint8Array}\n */\n\n\n function stringToUint8Array(str) {\n var arr = new Uint8Array(str.length);\n\n for (var i = 0, j = str.length; i < j; i++) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n }\n /**\n * Identifies the boundary in a multipart/related message header.\n * @param {String} header message header\n * @returns {String} boundary\n */\n\n\n function identifyBoundary(header) {\n var parts = header.split('\\r\\n');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].substr(0, 2) === '--') {\n return parts[i];\n }\n }\n }\n /**\n * Checks whether a given token is contained by a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be present\n * @param {String} offset offset in message content from where search should start\n * @returns {Boolean} whether message contains token at offset\n */\n\n\n function containsToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (message + token.length > message.length) {\n return false;\n }\n\n var index = offset;\n\n for (var i = 0; i < token.length; i++) {\n if (token[i] !== message[index++]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Finds a given token in a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be found\n * @param {String} offset message body offset from where search should start\n * @returns {Boolean} whether message has a part at given offset or not\n */\n\n\n function findToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var messageLength = message.length;\n\n for (var i = offset; i < messageLength; i++) {\n // If the first value of the message matches\n // the first value of the token, check if\n // this is the full token.\n if (message[i] === token[0]) {\n if (containsToken(message, token, i)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n /**\n * @typedef {Object} MultipartEncodedData\n * @property {ArrayBuffer} data The encoded Multipart Data\n * @property {String} boundary The boundary used to divide pieces of the encoded data\n */\n\n /**\n * Encode one or more DICOM datasets into a single body so it can be\n * sent using the Multipart Content-Type.\n *\n * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers.\n * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated.\n * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it.\n */\n\n\n function multipartEncode(datasets) {\n var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid();\n var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'application/dicom';\n var contentTypeString = \"Content-Type: \".concat(contentType);\n var header = \"\\r\\n--\".concat(boundary, \"\\r\\n\").concat(contentTypeString, \"\\r\\n\\r\\n\");\n var footer = \"\\r\\n--\".concat(boundary, \"--\");\n var headerArray = stringToUint8Array(header);\n var footerArray = stringToUint8Array(footer);\n var headerLength = headerArray.length;\n var footerLength = footerArray.length;\n var length = 0; // Calculate the total length for the final array\n\n var contentArrays = datasets.map(function (datasetBuffer) {\n var contentArray = new Uint8Array(datasetBuffer);\n var contentLength = contentArray.length;\n length += headerLength + contentLength + footerLength;\n return contentArray;\n }); // Allocate the array\n\n var multipartArray = new Uint8Array(length); // Set the initial header\n\n multipartArray.set(headerArray, 0); // Write each dataset into the multipart array\n\n var position = 0;\n contentArrays.forEach(function (contentArray) {\n var contentLength = contentArray.length;\n multipartArray.set(headerArray, position);\n multipartArray.set(contentArray, position + headerLength);\n position += headerLength + contentArray.length;\n });\n multipartArray.set(footerArray, position);\n return {\n data: multipartArray.buffer,\n boundary: boundary\n };\n }\n /**\n * Decode a Multipart encoded ArrayBuffer and return the components as an Array.\n *\n * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message\n * @returns {Array} The content\n */\n\n function multipartDecode(response) {\n var message = new Uint8Array(response); // First look for the multipart mime header\n\n var separator = stringToUint8Array('\\r\\n\\r\\n');\n var headerIndex = findToken(message, separator);\n\n if (headerIndex === -1) {\n throw new Error('Response message has no multipart mime header');\n }\n\n var header = uint8ArrayToString(message, 0, headerIndex);\n var boundaryString = identifyBoundary(header);\n\n if (!boundaryString) {\n throw new Error('Header of response message does not specify boundary');\n }\n\n var boundary = stringToUint8Array(boundaryString);\n var boundaryLength = boundary.length;\n var components = [];\n var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries\n\n var boundaryIndex;\n\n while (boundaryIndex !== -1) {\n // Search for the next boundary in the message, starting\n // from the current offset position\n boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here.\n\n if (boundaryIndex === -1) {\n break;\n } // Extract data from response message, excluding \"\\r\\n\"\n\n\n var spacingLength = 2;\n var length = boundaryIndex - offset - spacingLength;\n var data = response.slice(offset, offset + length); // Add the data to the array of results\n\n components.push(data); // Move the offset to the end of the current section,\n // plus the identified boundary\n\n offset += length + spacingLength + boundaryLength;\n }\n\n return components;\n }\n /**\n * Create a random GUID\n *\n * @return {string}\n */\n\n\n function guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n function isEmptyObject(obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n }\n\n var getFirstResult = function getFirstResult(result) {\n return result[0];\n };\n\n var MIMETYPES = {\n DICOM: 'application/dicom',\n DICOM_JSON: 'application/dicom+json',\n OCTET_STREAM: 'application/octet-stream',\n JPEG: 'image/jpeg',\n PNG: 'image/png'\n };\n /**\n * Class for interacting with DICOMweb RESTful services.\n */\n\n var DICOMwebClient =\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {Object} options (choices: \"url\", \"username\", \"password\", \"headers\")\n */\n function DICOMwebClient(options) {\n _classCallCheck(this, DICOMwebClient);\n\n this.baseURL = options.url;\n\n if (!this.baseURL) {\n console.error('no DICOMweb base url provided - calls will fail');\n }\n\n if ('username' in options) {\n this.username = options.username;\n\n if (!('password' in options)) {\n console.error('no password provided to authenticate with DICOMweb service');\n }\n\n this.password = options.password;\n }\n\n if ('qidoURLPrefix' in options) {\n console.log(\"use URL prefix for QIDO-RS: \".concat(options.qidoURLPrefix));\n this.qidoURL = this.baseURL + '/' + options.qidoURLPrefix;\n } else {\n this.qidoURL = this.baseURL;\n }\n\n if ('wadoURLPrefix' in options) {\n console.log(\"use URL prefix for WADO-RS: \".concat(options.wadoURLPrefix));\n this.wadoURL = this.baseURL + '/' + options.wadoURLPrefix;\n } else {\n this.wadoURL = this.baseURL;\n }\n\n if ('stowURLPrefix' in options) {\n console.log(\"use URL prefix for STOW-RS: \".concat(options.stowURLPrefix));\n this.stowURL = this.baseURL + '/' + options.stowURLPrefix;\n } else {\n this.stowURL = this.baseURL;\n }\n\n this.headers = options.headers || {};\n }\n\n _createClass(DICOMwebClient, [{\n key: \"_httpRequest\",\n value: function _httpRequest(url, method, headers) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(method, url, true);\n\n if ('responseType' in options) {\n request.responseType = options.responseType;\n }\n\n if (_typeof(headers) === 'object') {\n Object.keys(headers).forEach(function (key) {\n request.setRequestHeader(key, headers[key]);\n });\n } // now add custom headers from the user\n // (e.g. access tokens)\n\n\n var userHeaders = _this.headers;\n Object.keys(userHeaders).forEach(function (key) {\n request.setRequestHeader(key, userHeaders[key]);\n }); // Event triggered when upload starts\n\n request.onloadstart = function (event) {//console.log('upload started: ', url)\n }; // Event triggered when upload ends\n\n\n request.onloadend = function (event) {//console.log('upload finished')\n }; // Handle response message\n\n\n request.onreadystatechange = function (event) {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.response);\n } else if (request.status === 202) {\n console.warn('some resources already existed: ', request);\n resolve(request.response);\n } else if (request.status === 204) {\n console.warn('empty response for request: ', request);\n resolve([]);\n } else {\n console.error('request failed: ', request);\n var error = new Error('request failed');\n error.request = request;\n error.response = request.response;\n error.status = request.status;\n console.error(error);\n console.error(error.response);\n reject(error);\n }\n }\n }; // Event triggered while download progresses\n\n\n if ('progressCallback' in options) {\n if (typeof options.progressCallback === 'function') {\n request.onprogress = options.progressCallback;\n }\n } // request.onprogress = function (event) {\n // const loaded = progress.loaded;\n // let total;\n // let percentComplete;\n // if (progress.lengthComputable) {\n // total = progress.total;\n // percentComplete = Math.round((loaded / total) * 100);\n // j\n // // console.log('download progress: ', percentComplete, ' %');\n // return(percentComplete);\n // };\n\n\n if ('data' in options) {\n request.send(options.data);\n } else {\n request.send();\n }\n });\n }\n }, {\n key: \"_httpGet\",\n value: function _httpGet(url, headers, responseType, progressCallback) {\n return this._httpRequest(url, 'get', headers, {\n responseType: responseType,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpGetApplicationJson\",\n value: function _httpGetApplicationJson(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var progressCallback = arguments.length > 2 ? arguments[2] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': MIMETYPES.DICOM_JSON\n };\n var responseType = 'json';\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpGetByMimeType\",\n value: function _httpGetByMimeType(url, mimeType, params) {\n var responseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'arraybuffer';\n var progressCallback = arguments.length > 4 ? arguments[4] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': \"multipart/related; type=\\\"\".concat(mimeType, \"\\\"\")\n };\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpPost\",\n value: function _httpPost(url, headers, data, progressCallback) {\n return this._httpRequest(url, 'post', headers, {\n data: data,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpPostApplicationJson\",\n value: function _httpPostApplicationJson(url, data, progressCallback) {\n var headers = {\n 'Content-Type': MIMETYPES.DICOM_JSON\n };\n return this._httpPost(url, headers, data, progressCallback);\n }\n /**\n * Searches for DICOM studies.\n * @param {Object} options options object\n * @return {Array} study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2)\n */\n\n }, {\n key: \"searchForStudies\",\n value: function searchForStudies() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.log('search for studies');\n var url = this.qidoURL + '/studies';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM study.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the study\n */\n\n }, {\n key: \"retrieveStudyMetadata\",\n value: function retrieveStudyMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of study metadata');\n }\n\n console.log(\"retrieve metadata of study \".concat(options.studyInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM series.\n * @param {Object} options options object\n * @returns {Array} series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a)\n */\n\n }, {\n key: \"searchForSeries\",\n value: function searchForSeries() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n console.log(\"search series of study \".concat(options.studyInstanceUID));\n url += '/studies/' + options.studyInstanceUID;\n }\n\n url += '/series';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM series.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the series\n */\n\n }, {\n key: \"retrieveSeriesMetadata\",\n value: function retrieveSeriesMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of series metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of series metadata');\n }\n\n console.log(\"retrieve metadata of series \".concat(options.seriesInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM instances.\n * @param {Object} options options object\n * @returns {Array} instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b)\n */\n\n }, {\n key: \"searchForInstances\",\n value: function searchForInstances() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n url += '/studies/' + options.studyInstanceUID;\n\n if ('seriesInstanceUID' in options) {\n console.log(\"search for instances of series \".concat(options.seriesInstanceUID));\n url += '/series/' + options.seriesInstanceUID;\n } else {\n console.log(\"search for instances of study \".concat(options.studyInstanceUID));\n }\n } else {\n console.log('search for instances');\n }\n\n url += '/instances';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /** Returns a WADO-URI URL for an instance\n * @param {Object} options options object\n * @returns {String} WADO-URI URL\n */\n\n }, {\n key: \"buildInstanceWadoURIUrl\",\n value: function buildInstanceWadoURIUrl(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required.');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required.');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required.');\n }\n\n var contentType = options.contentType || MIMETYPES.DICOM;\n var transferSyntax = options.transferSyntax || '*';\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(options.studyInstanceUID));\n params.push(\"seriesUID=\".concat(options.seriesInstanceUID));\n params.push(\"objectUID=\".concat(options.sopInstanceUID));\n params.push(\"contentType=\".concat(contentType));\n params.push(\"transferSyntax=\".concat(transferSyntax));\n var paramString = params.join('&');\n return \"\".concat(this.wadoURL, \"?\").concat(paramString);\n }\n /**\n * Retrieves metadata for a DICOM instance.\n *\n * @param {Object} options object\n * @returns {Object} metadata elements in DICOM JSON format\n */\n\n }, {\n key: \"retrieveInstanceMetadata\",\n value: function retrieveInstanceMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance metadata');\n }\n\n console.log(\"retrieve metadata of instance \".concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFrames\",\n value: function retrieveInstanceFrames(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of instance frames');\n }\n\n console.log(\"retrieve frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString();\n var mimeType = options.mimeType ? \"\".concat(options.mimeType) : MIMETYPES.OCTET_STREAM;\n return this._httpGetByMimeType(url, mimeType).then(multipartDecode);\n }\n /**\n * Retrieves rendered frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFramesRendered\",\n value: function retrieveInstanceFramesRendered(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of rendered instance frames');\n }\n\n console.log(\"retrieve rendered frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString() + '/rendered';\n var headers = {}; // The choice of an acceptable media type depends on a variety of things:\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/chapter_6.html#table_6.1.1-3\n\n if ('mimeType' in options) {\n headers['Accept'] = options.mimeType;\n }\n\n var responseType = 'arraybuffer';\n return this._httpGet(url, headers, responseType);\n }\n /**\n * Retrieves a DICOM instance.\n * @param {Object} options options object\n * @returns {Arraybuffer} DICOM Part 10 file as Arraybuffer\n */\n\n }, {\n key: \"retrieveInstance\",\n value: function retrieveInstance(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Retrieves a set of DICOM instance for a series.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveSeries\",\n value: function retrieveSeries(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves a set of DICOM instance for a study.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveStudy\",\n value: function retrieveStudy(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves and parses BulkData from a BulkDataURI location.\n * Decodes the multipart encoded data and returns the resulting data\n * as an ArrayBuffer.\n *\n * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html\n *\n * @param {Object} options options object\n * @return {Promise}\n */\n\n }, {\n key: \"retrieveBulkData\",\n value: function retrieveBulkData(options) {\n if (!('BulkDataURI' in options)) {\n throw new Error('BulkDataURI is required.');\n }\n\n return this._httpGetByMimeType(options.BulkDataURI, MIMETYPES.OCTET_STREAM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Stores DICOM instances.\n *\n * @param {Object} options options object\n */\n\n }, {\n key: \"storeInstances\",\n value: function storeInstances(options) {\n if (!('datasets' in options)) {\n throw new Error('datasets are required for storing');\n }\n\n var url = \"\".concat(this.stowURL, \"/studies\");\n\n if ('studyInstanceUID' in options) {\n url += \"/\".concat(options.studyInstanceUID);\n }\n\n var _multipartEncode = multipartEncode(options.datasets),\n data = _multipartEncode.data,\n boundary = _multipartEncode.boundary;\n\n var headers = {\n 'Content-Type': \"multipart/related; type=application/dicom; boundary=\".concat(boundary)\n };\n return this._httpPost(url, headers, data, options.progressCallback);\n }\n }], [{\n key: \"_parseQueryParameters\",\n value: function _parseQueryParameters() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var queryString = '?';\n Object.keys(params).forEach(function (key, index) {\n if (index !== 0) {\n queryString += '&';\n }\n\n queryString += key + '=' + encodeURIComponent(params[key]);\n });\n return queryString;\n }\n }]);\n\n return DICOMwebClient;\n }();\n\n function findSubstring(str, before, after) {\n var beforeIndex = str.lastIndexOf(before) + before.length;\n\n if (beforeIndex < before.length) {\n return null;\n }\n\n if (after !== undefined) {\n var afterIndex = str.lastIndexOf(after);\n\n if (afterIndex < 0) {\n return null;\n } else {\n return str.substring(beforeIndex, afterIndex);\n }\n }\n\n return str.substring(beforeIndex);\n }\n\n function getStudyInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"studies/\", \"/series\");\n\n if (!uid) {\n uid = findSubstring(uri, \"studies/\");\n }\n\n if (!uid) {\n console.debug('Study Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSeriesInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"series/\", \"/instances\");\n\n if (!uid) {\n uid = findSubstring(uri, \"series/\");\n }\n\n if (!uid) {\n console.debug('Series Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSOPInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"/instances/\", \"/frames\");\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\", \"/metadata\");\n }\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\");\n }\n\n if (!uid) {\n console.debug('SOP Instance UID could not be dertermined from URI\"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getFrameNumbersFromUri(uri) {\n var numbers = findSubstring(uri, \"/frames/\", \"/rendered\");\n\n if (!numbers) {\n numbers = findSubstring(uri, \"/frames/\");\n }\n\n if (numbers === undefined) {\n console.debug('Frames Numbers could not be dertermined from URI\"' + uri + '\"');\n }\n\n return numbers.split(',');\n }\n\n var version = '0.3.2';\n\n var api = {\n DICOMwebClient: DICOMwebClient\n };\n var utils = {\n getStudyInstanceUIDFromUri: getStudyInstanceUIDFromUri,\n getSeriesInstanceUIDFromUri: getSeriesInstanceUIDFromUri,\n getSOPInstanceUIDFromUri: getSOPInstanceUIDFromUri,\n getFrameNumbersFromUri: getFrameNumbersFromUri\n };\n\n exports.api = api;\n exports.utils = utils;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n});\n\nvar DICOMwebClient = unwrapExports(dicomwebClient);\n\n/**\n * Parses data returned from a QIDO search and transforms it into\n * an array of series that are present in the study\n *\n * @param server The DICOM server\n * @param studyInstanceUid\n * @param resultData\n * @returns {Array} Series List\n */\n\nfunction resultDataToStudyMetadata(server, studyInstanceUid, resultData) {\n var seriesMap = {};\n var seriesList = [];\n resultData.forEach(function (instance) {\n // Use seriesMap to cache series data\n // If the series instance UID has already been used to\n // process series data, continue using that series\n var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n var series = seriesMap[seriesInstanceUid]; // If no series data exists in the seriesMap cache variable,\n // process any available series data\n\n if (!series) {\n series = {\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getString(instance['00200011']),\n instances: []\n }; // Save this data in the seriesMap cache variable\n\n seriesMap[seriesInstanceUid] = series;\n seriesList.push(series);\n } // The uri for the dicomweb\n // NOTE: DCM4CHEE seems to return the data zipped\n // NOTE: Orthanc returns the data with multi-part mime which cornerstoneWADOImageLoader doesn't\n // know how to parse yet\n //var uri = DICOMWeb.getString(instance['00081190']);\n //uri = uri.replace('wado-rs', 'dicom-web');\n // manually create a WADO-URI from the UIDs\n // NOTE: Haven't been able to get Orthanc's WADO-URI to work yet - maybe its not configured?\n\n\n var sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n var uri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom'; // Add this instance to the current series\n\n series.instances.push({\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n sopInstanceUid: sopInstanceUid,\n uri: uri,\n instanceNumber: DICOMWeb.getString(instance['00200013'])\n });\n });\n return seriesList;\n}\n/**\n * Retrieve a set of instances using a QIDO call\n * @param server\n * @param studyInstanceUid\n * @throws ECONNREFUSED\n * @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}\n */\n\n\nfunction Instances(server, studyInstanceUid) {\n // TODO: Are we using this function anywhere?? Can we remove it?\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);\n var options = {\n studyInstanceUID: studyInstanceUid\n };\n return dicomWeb.searchForInstances(options).then(function (result) {\n return {\n wadoUriRoot: server.wadoUriRoot,\n studyInstanceUid: studyInstanceUid,\n seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)\n };\n });\n}\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$1(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString(new Date(filter.studyDateFrom));\n var dateTo = dateToString(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$1(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies);\n}\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar WADOProxy = {\n convertURL: function convertURL(url, server) {\n // TODO: Remove all WADOProxy stuff from this file\n return url;\n }\n};\n\nfunction parseFloatArray(obj) {\n var result = [];\n\n if (!obj) {\n return result;\n }\n\n var objs = obj.split('\\\\');\n\n for (var i = 0; i < objs.length; i++) {\n result.push(parseFloat(objs[i]));\n }\n\n return result;\n}\n/**\n * Simple cache schema for retrieved color palettes.\n */\n\n\nvar paletteColorCache = {\n count: 0,\n maxAge: 24 * 60 * 60 * 1000,\n // 24h cache?\n entries: {},\n isValidUID: function isValidUID(paletteUID) {\n return typeof paletteUID === 'string' && paletteUID.length > 0;\n },\n get: function get(paletteUID) {\n var entry = null;\n\n if (this.entries.hasOwnProperty(paletteUID)) {\n entry = this.entries[paletteUID]; // check how the entry is...\n\n if (Date.now() - entry.time > this.maxAge) {\n // entry is too old... remove entry.\n delete this.entries[paletteUID];\n this.count--;\n entry = null;\n }\n }\n\n return entry;\n },\n add: function add(entry) {\n if (this.isValidUID(entry.uid)) {\n var paletteUID = entry.uid;\n\n if (this.entries.hasOwnProperty(paletteUID) !== true) {\n this.count++; // increment cache entry count...\n }\n\n entry.time = Date.now();\n this.entries[paletteUID] = entry; // @TODO: Add logic to get rid of old entries and reduce memory usage...\n }\n }\n};\n/** Returns a WADO url for an instance\n *\n * @param studyInstanceUid\n * @param seriesInstanceUid\n * @param sopInstanceUid\n * @returns {string}\n */\n\nfunction buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(studyInstanceUid));\n params.push(\"seriesUID=\".concat(seriesInstanceUid));\n params.push(\"objectUID=\".concat(sopInstanceUid));\n params.push('contentType=application/dicom');\n params.push('transferSyntax=*');\n var paramString = params.join('&');\n return \"\".concat(server.wadoUriRoot, \"?\").concat(paramString);\n}\n\nfunction buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n return \"\".concat(server.wadoRoot, \"/studies/\").concat(studyInstanceUid, \"/series/\").concat(seriesInstanceUid, \"/instances/\").concat(sopInstanceUid);\n}\n\nfunction buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {\n var baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n frame = frame != null || 1;\n return \"\".concat(baseWadoRsUri, \"/frames/\").concat(frame);\n}\n/**\n * Parses the SourceImageSequence, if it exists, in order\n * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID\n * is used to refer to this image in any accompanying DICOM-SR documents.\n *\n * @param instance\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getSourceImageInstanceUid(instance) {\n // TODO= Parse the whole Source Image Sequence\n // This is a really poor workaround for now.\n // Later we should probably parse the whole sequence.\n var SourceImageSequence = instance['00082112'];\n\n if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) {\n return SourceImageSequence.Value[0]['00081155'].Value[0];\n }\n}\n\nfunction getPaletteColor(server, instance, tag, lutDescriptor) {\n var numLutEntries = lutDescriptor[0];\n var bits = lutDescriptor[2];\n var uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server); // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning\n // incorrect bulk data URIs\n\n if (server.wadoRoot.indexOf('https') === 0 && !uri.includes('https')) {\n uri = uri.replace('http', 'https');\n }\n\n var config = {\n url: server.wadoRoot,\n //BulkDataURI is absolute, so this isn't used\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var options = {\n BulkDataURI: uri\n };\n\n var readUInt16 = function readUInt16(byteArray, position) {\n return byteArray[position] + byteArray[position + 1] * 256;\n };\n\n var arrayBufferToPaletteColorLUT = function arrayBufferToPaletteColorLUT(arraybuffer) {\n var byteArray = new Uint8Array(arraybuffer);\n var lut = [];\n\n for (var i = 0; i < numLutEntries; i++) {\n if (bits === 16) {\n lut[i] = readUInt16(byteArray, i * 2);\n } else {\n lut[i] = byteArray[i];\n }\n }\n\n return lut;\n };\n\n return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT);\n}\n/**\n * Fetch palette colors for instances with \"PALETTE COLOR\" photometricInterpretation.\n *\n * @param server {Object} Current server;\n * @param instance {Object} The retrieved instance metadata;\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getPaletteColors(_x, _x2, _x3) {\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction _getPaletteColors() {\n _getPaletteColors = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(server, instance, lutDescriptor) {\n var paletteUID;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n paletteUID = DICOMWeb.getString(instance['00281199']);\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (paletteColorCache.isValidUID(paletteUID)) {\n var _entry = paletteColorCache.get(paletteUID);\n\n if (_entry) {\n return resolve(_entry);\n }\n } // no entry in cache... Fetch remote data.\n\n\n var r = getPaletteColor(server, instance, '00281201', lutDescriptor);\n var g = getPaletteColor(server, instance, '00281202', lutDescriptor);\n var b = getPaletteColor(server, instance, '00281203', lutDescriptor);\n var promises = [r, g, b];\n Promise.all(promises).then(function (args) {\n entry = {\n red: args[0],\n green: args[1],\n blue: args[2]\n }; // when paletteUID is present, the entry can be cached...\n\n entry.uid = paletteUID;\n paletteColorCache.add(entry);\n resolve(entry);\n });\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction getFrameIncrementPointer(element) {\n var frameIncrementPointerNames = {\n '00181065': 'frameTimeVector',\n '00181063': 'frameTime'\n };\n\n if (!element || !element.Value || !element.Value.length) {\n return;\n }\n\n var value = element.Value[0];\n return frameIncrementPointerNames[value];\n}\n\nfunction getRadiopharmaceuticalInfo(instance) {\n var modality = DICOMWeb.getString(instance['00080060']);\n\n if (modality !== 'PT') {\n return;\n }\n\n var radiopharmaceuticalInfo = instance['00540016'];\n\n if (radiopharmaceuticalInfo === undefined || !radiopharmaceuticalInfo.Value || !radiopharmaceuticalInfo.Value.length) {\n return;\n }\n\n var firstPetRadiopharmaceuticalInfo = radiopharmaceuticalInfo.Value[0];\n return {\n radiopharmaceuticalStartTime: DICOMWeb.getString(firstPetRadiopharmaceuticalInfo['00181072']),\n radionuclideTotalDose: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181074']),\n radionuclideHalfLife: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181075'])\n };\n}\n/**\n * Parses result data from a WADO search into Study MetaData\n * Returns an object populated with study metadata, including the\n * series list.\n *\n * @param server\n * @param studyInstanceUid\n * @param resultData\n * @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}\n */\n\n\nfunction resultDataToStudyMetadata$1(_x4, _x5, _x6) {\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n/**\n * Retrieve Study MetaData from a DICOM server using a WADO call\n *\n * @param server\n * @param studyInstanceUid\n * @returns {Promise}\n */\n\n\nfunction _resultDataToStudyMetadata() {\n _resultDataToStudyMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee3(server, studyInstanceUid, resultData) {\n var _studyData;\n\n var anInstance, studyData, seriesMap;\n return regenerator.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (resultData.length) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 2:\n anInstance = resultData[0];\n\n if (anInstance) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 5:\n studyData = (_studyData = {\n seriesList: [],\n studyInstanceUid: studyInstanceUid,\n wadoUriRoot: server.wadoUriRoot,\n patientName: DICOMWeb.getName(anInstance['00100010']),\n patientId: DICOMWeb.getString(anInstance['00100020']),\n patientAge: DICOMWeb.getNumber(anInstance['00101010']),\n patientSize: DICOMWeb.getNumber(anInstance['00101020']),\n patientWeight: DICOMWeb.getNumber(anInstance['00101030']),\n accessionNumber: DICOMWeb.getString(anInstance['00080050']),\n studyDate: DICOMWeb.getString(anInstance['00080020']),\n modalities: DICOMWeb.getString(anInstance['00080061']),\n studyDescription: DICOMWeb.getString(anInstance['00081030']),\n imageCount: DICOMWeb.getString(anInstance['00201208'])\n }, _defineProperty(_studyData, \"studyInstanceUid\", DICOMWeb.getString(anInstance['0020000D'])), _defineProperty(_studyData, \"institutionName\", DICOMWeb.getString(anInstance['00080080'])), _studyData);\n seriesMap = {};\n _context3.next = 9;\n return Promise.all(resultData.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2(instance) {\n var seriesInstanceUid, series, sopInstanceUid, wadouri, baseWadoRsUri, wadorsuri, instanceSummary, redPaletteColorLookupTableDescriptor, greenPaletteColorLookupTableDescriptor, bluePaletteColorLookupTableDescriptor, palettes;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n series = seriesMap[seriesInstanceUid];\n\n if (!series) {\n series = {\n seriesDescription: DICOMWeb.getString(instance['0008103E']),\n modality: DICOMWeb.getString(instance['00080060']),\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getNumber(instance['00200011']),\n seriesDate: DICOMWeb.getString(instance['00080021']),\n seriesTime: DICOMWeb.getString(instance['00080031']),\n instances: []\n };\n seriesMap[seriesInstanceUid] = series;\n studyData.seriesList.push(series);\n }\n\n sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n instanceSummary = {\n imageType: DICOMWeb.getString(instance['00080008']),\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n modality: DICOMWeb.getString(instance['00080060']),\n sopInstanceUid: sopInstanceUid,\n instanceNumber: DICOMWeb.getNumber(instance['00200013']),\n imagePositionPatient: DICOMWeb.getString(instance['00200032']),\n imageOrientationPatient: DICOMWeb.getString(instance['00200037']),\n frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),\n sliceLocation: DICOMWeb.getNumber(instance['00201041']),\n samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),\n photometricInterpretation: DICOMWeb.getString(instance['00280004']),\n planarConfiguration: DICOMWeb.getNumber(instance['00280006']),\n rows: DICOMWeb.getNumber(instance['00280010']),\n columns: DICOMWeb.getNumber(instance['00280011']),\n pixelSpacing: DICOMWeb.getString(instance['00280030']),\n pixelAspectRatio: DICOMWeb.getString(instance['00280034']),\n bitsAllocated: DICOMWeb.getNumber(instance['00280100']),\n bitsStored: DICOMWeb.getNumber(instance['00280101']),\n highBit: DICOMWeb.getNumber(instance['00280102']),\n pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),\n smallestPixelValue: DICOMWeb.getNumber(instance['00280106']),\n largestPixelValue: DICOMWeb.getNumber(instance['00280107']),\n windowCenter: DICOMWeb.getString(instance['00281050']),\n windowWidth: DICOMWeb.getString(instance['00281051']),\n rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),\n rescaleSlope: DICOMWeb.getNumber(instance['00281053']),\n rescaleType: DICOMWeb.getNumber(instance['00281054']),\n sourceImageInstanceUid: getSourceImageInstanceUid(instance),\n laterality: DICOMWeb.getString(instance['00200062']),\n viewPosition: DICOMWeb.getString(instance['00185101']),\n acquisitionDateTime: DICOMWeb.getString(instance['0008002A']),\n numberOfFrames: DICOMWeb.getNumber(instance['00280008']),\n frameIncrementPointer: getFrameIncrementPointer(instance['00280009']),\n frameTime: DICOMWeb.getNumber(instance['00181063']),\n frameTimeVector: parseFloatArray(DICOMWeb.getString(instance['00181065'])),\n sliceThickness: DICOMWeb.getNumber(instance['00180050']),\n lossyImageCompression: DICOMWeb.getString(instance['00282110']),\n derivationDescription: DICOMWeb.getString(instance['00282111']),\n lossyImageCompressionRatio: DICOMWeb.getString(instance['00282112']),\n lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),\n echoNumber: DICOMWeb.getString(instance['00180086']),\n contrastBolusAgent: DICOMWeb.getString(instance['00180010']),\n radiopharmaceuticalInfo: getRadiopharmaceuticalInfo(instance),\n baseWadoRsUri: baseWadoRsUri,\n wadouri: WADOProxy.convertURL(wadouri, server),\n wadorsuri: WADOProxy.convertURL(wadorsuri, server),\n imageRendering: server.imageRendering,\n thumbnailRendering: server.thumbnailRendering\n }; // Get additional information if the instance uses \"PALETTE COLOR\" photometric interpretation\n\n if (!(instanceSummary.photometricInterpretation === 'PALETTE COLOR')) {\n _context2.next = 16;\n break;\n }\n\n redPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281101']));\n greenPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281102']));\n bluePaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281103']));\n _context2.next = 14;\n return getPaletteColors(server, instance, redPaletteColorLookupTableDescriptor);\n\n case 14:\n palettes = _context2.sent;\n\n if (palettes) {\n if (palettes.uid) {\n instanceSummary.paletteColorLookupTableUID = palettes.uid;\n }\n\n instanceSummary.redPaletteColorLookupTableData = palettes.red;\n instanceSummary.greenPaletteColorLookupTableData = palettes.green;\n instanceSummary.bluePaletteColorLookupTableData = palettes.blue;\n instanceSummary.redPaletteColorLookupTableDescriptor = redPaletteColorLookupTableDescriptor;\n instanceSummary.greenPaletteColorLookupTableDescriptor = greenPaletteColorLookupTableDescriptor;\n instanceSummary.bluePaletteColorLookupTableDescriptor = bluePaletteColorLookupTableDescriptor;\n }\n\n case 16:\n series.instances.push(instanceSummary);\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x9) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n return _context3.abrupt(\"return\", studyData);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n\nfunction RetrieveMetadata(_x7, _x8) {\n return _RetrieveMetadata.apply(this, arguments);\n}\n\nfunction _RetrieveMetadata() {\n _RetrieveMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee4(server, studyInstanceUid) {\n var config, dicomWeb, options;\n return regenerator.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n config = {\n url: server.wadoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n options = {\n studyInstanceUID: studyInstanceUid\n };\n return _context4.abrupt(\"return\", dicomWeb.retrieveStudyMetadata(options).then(function (result) {\n return resultDataToStudyMetadata$1(server, studyInstanceUid, result);\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n return _RetrieveMetadata.apply(this, arguments);\n}\n\n// DICOMWeb instance, study, and metadata retrieval\nvar WADO = {\n RetrieveMetadata: RetrieveMetadata\n};\nvar QIDO = {\n Studies: Studies,\n Instances: Instances\n};\n\nvar log$1 = {\n error: console.error,\n warn: console.warn,\n info: console.log,\n debug: console.debug,\n time: console.time,\n timeEnd: console.timeEnd\n};\n\n// promises and prevent unnecessary subsequent calls to the server\n\nvar StudyMetaDataPromises = new Map();\n/**\n * Delete the cached study metadata retrieval promise to ensure that the browser will\n * re-retrieve the study metadata when it is next requested\n *\n * @param {String} studyInstanceUid The UID of the Study to be removed from cache\n *\n */\n\nfunction deleteStudyMetadataPromise(studyInstanceUid) {\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n StudyMetaDataPromises.delete(studyInstanceUid);\n }\n}\n/**\n * Retrieves study metadata using a server call\n *\n * @param {String} studyInstanceUid The UID of the Study to be retrieved\n * @returns {Promise} that will be resolved with the metadata or rejected with the error\n */\n\nfunction retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids) {\n // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all\n // and further requests for that metadata will always fail. On failure, we probably need to remove the\n // corresponding promise from the \"StudyMetaDataPromises\" map...\n // If the StudyMetaDataPromises cache already has a pending or resolved promise related to the\n // given studyInstanceUid, then that promise is returned\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n return StudyMetaDataPromises.get(studyInstanceUid);\n }\n\n var seriesKeys = Array.isArray(seriesInstanceUids) ? '|' + seriesInstanceUids.join('|') : '';\n var timingKey = \"retrieveStudyMetadata[\".concat(studyInstanceUid).concat(seriesKeys, \"]\");\n log$1.time(timingKey); // Create a promise to handle the data retrieval\n\n var promise = new Promise(function (resolve, reject) {\n // If no study metadata is in the cache variable, we need to retrieve it from\n // the server with a call.\n if (server.type === 'dicomWeb' && server.requestOptions.requestFromBrowser === true) {\n RetrieveMetadata(server, studyInstanceUid).then(function (data) {\n resolve(data);\n }, reject);\n }\n }); // Store the promise in cache\n\n StudyMetaDataPromises.set(studyInstanceUid, promise);\n return promise;\n}\n\n/**\n * Constants\n */\nvar STRING$1 = 'string';\nvar NUMBER$1 = 'number';\nvar FUNCTION = 'function';\nvar OBJECT = 'object';\n/**\n * Class Definition\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor and Instance Methods\n */\n function Metadata(data, uid) {\n _classCallCheck(this, Metadata);\n\n // Define the main \"_data\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n Object.defineProperty(this, '_data', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: data\n }); // Define the main \"_uid\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_uid', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: uid\n }); // Define \"_custom\" properties as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_custom', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n });\n }\n\n _createClass(Metadata, [{\n key: \"getData\",\n value: function getData() {\n return this._data;\n }\n }, {\n key: \"getDataProperty\",\n value: function getDataProperty(propertyName) {\n var propertyValue;\n var _data = this._data;\n\n if (_data instanceof Object || _typeof(_data) === OBJECT && _data !== null) {\n propertyValue = _data[propertyName];\n }\n\n return propertyValue;\n }\n /**\n * Get unique object ID\n */\n\n }, {\n key: \"getObjectID\",\n value: function getObjectID() {\n return this._uid;\n }\n /**\n * Set custom attribute value\n * @param {String} attribute Custom attribute name\n * @param {Any} value Custom attribute value\n */\n\n }, {\n key: \"setCustomAttribute\",\n value: function setCustomAttribute(attribute, value) {\n this._custom[attribute] = value;\n }\n /**\n * Get custom attribute value\n * @param {String} attribute Custom attribute name\n * @return {Any} Custom attribute value\n */\n\n }, {\n key: \"getCustomAttribute\",\n value: function getCustomAttribute(attribute) {\n return this._custom[attribute];\n }\n /**\n * Check if a custom attribute exists\n * @param {String} attribute Custom attribute name\n * @return {Boolean} True if custom attribute exists or false if not\n */\n\n }, {\n key: \"customAttributeExists\",\n value: function customAttributeExists(attribute) {\n return attribute in this._custom;\n }\n /**\n * Set custom attributes in batch mode.\n * @param {Object} attributeMap An object whose own properties will be used as custom attributes.\n */\n\n }, {\n key: \"setCustomAttributes\",\n value: function setCustomAttributes(attributeMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _custom = this._custom;\n\n for (var attribute in attributeMap) {\n if (_hasOwn.call(attributeMap, attribute)) {\n _custom[attribute] = attributeMap[attribute];\n }\n }\n }\n /**\n * Static Methods\n */\n\n }], [{\n key: \"isValidUID\",\n value: function isValidUID(uid) {\n return _typeof(uid) === STRING$1 && uid.length > 0;\n }\n }, {\n key: \"isValidIndex\",\n value: function isValidIndex(index) {\n return _typeof(index) === NUMBER$1 && index >= 0 && (index | 0) === index;\n }\n }, {\n key: \"isValidCallback\",\n value: function isValidCallback(callback) {\n return _typeof(callback) === FUNCTION;\n }\n }]);\n\n return Metadata;\n}();\n\n// @TODO: improve this object\n\n/**\n * Objects to be used to throw errors\n */\nvar OHIFError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(OHIFError, _Error);\n\n function OHIFError(message) {\n var _this;\n\n _classCallCheck(this, OHIFError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFError).call(this));\n _this.message = message;\n _this.stack = new Error().stack;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return OHIFError;\n}(_wrapNativeSuper(Error));\n\n/**\n * ATTENTION! This class should never depend on StudyMetadata or SeriesMetadata classes as this could\n * possibly cause circular dependency issues.\n */\n\nvar UNDEFINED = 'undefined';\nvar STRING$2 = 'string';\nvar STUDY_INSTANCE_UID = 'x0020000d';\nvar SERIES_INSTANCE_UID = 'x0020000e';\nvar InstanceMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(InstanceMetadata, _Metadata);\n\n function InstanceMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, InstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InstanceMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _sopInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _imageId: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(InstanceMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.sopInstanceUID\n * Same as this.getSOPInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * sopInstanceCollection.findBy({\n * sopInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'sopInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSOPInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the StudyInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this.getTagValue(STUDY_INSTANCE_UID, null);\n }\n /**\n * Returns the SeriesInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this.getTagValue(SERIES_INSTANCE_UID, null);\n }\n /**\n * Returns the SOPInstanceUID of the current instance.\n */\n\n }, {\n key: \"getSOPInstanceUID\",\n value: function getSOPInstanceUID() {\n return this._sopInstanceUID;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getStringValue\",\n value: function getStringValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n\n if (_typeof(value) !== STRING$2 && _typeof(value) !== UNDEFINED) {\n value = value.toString();\n }\n\n return InstanceMetadata.getIndexedValue(value, index, defaultValue);\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getFloatValue\",\n value: function getFloatValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseFloat(value) : value;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getIntValue\",\n value: function getIntValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseInt(value) : value;\n }\n /**\n * @deprecated Please use getTagValue instead.\n */\n\n }, {\n key: \"getRawValue\",\n value: function getRawValue(tagOrProperty, defaultValue) {\n return this.getTagValue(tagOrProperty, defaultValue);\n }\n /**\n * This function should be overriden by specialized classes in order to allow client libraries or viewers to take advantage of the Study Metadata API.\n */\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('InstanceMetadata::getTagValue is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Compares the current instance with another one.\n * @param {InstanceMetadata} instance An instance of the InstanceMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same instance.\n */\n\n }, {\n key: \"equals\",\n value: function equals(instance) {\n var self = this;\n return instance === self || instance instanceof InstanceMetadata && instance.getSOPInstanceUID() === self.getSOPInstanceUID();\n }\n /**\n * Check if the tagOrProperty exists\n * @param {String} tagOrProperty tag or property be checked\n * @return {Boolean} True if the tag or property exists or false if doesn't\n */\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::tagExists is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Get custom image id of a sop instance\n * @return {Any} sop instance image id\n */\n\n }, {\n key: \"getImageId\",\n value: function getImageId(frame) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::getImageId is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Static Methods\n */\n\n /**\n * Get an value based that can be index based. This function is called by all getters. See above functions.\n * - If value is a String and has indexes:\n * - If undefined index: returns an array of the split values.\n * - If defined index:\n * - If invalid: returns defaultValue\n * - If valid: returns the indexed value\n * - If value is not a String, returns default value.\n */\n\n }], [{\n key: \"getIndexedValue\",\n value: function getIndexedValue(value, index, defaultValue) {\n var result = defaultValue;\n\n if (_typeof(value) === STRING$2) {\n var hasIndexValues = value.indexOf('\\\\') !== -1;\n result = value;\n\n if (hasIndexValues) {\n var splitValues = value.split('\\\\');\n\n if (Metadata.isValidIndex(index)) {\n var indexedValue = splitValues[index];\n result = _typeof(indexedValue) !== STRING$2 ? defaultValue : indexedValue;\n } else {\n result = splitValues;\n }\n }\n }\n\n return result;\n }\n }]);\n\n return InstanceMetadata;\n}(Metadata);\n\nvar SeriesMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(SeriesMetadata, _Metadata);\n\n function SeriesMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, SeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SeriesMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _seriesInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _instances: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(SeriesMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.seriesInstanceUID\n * Same as this.getSeriesInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * seriesCollection.findBy({\n * seriesInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSeriesInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the SeriesInstanceUID of the current series.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n /**\n * Append an instance to the current series.\n * @param {InstanceMetadata} instance The instance to be added to the current series.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addInstance\",\n value: function addInstance(instance) {\n var result = false;\n\n if (instance instanceof InstanceMetadata && this.getInstanceByUID(instance.getSOPInstanceUID()) === void 0) {\n this._instances.push(instance);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Get the first instance of the current series retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var found = this.getInstanceByIndex(0);\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n\n return instance;\n }\n /**\n * Find an instance by index.\n * @param {number} index An integer representing a list index.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByIndex\",\n value: function getInstanceByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._instances[index];\n }\n\n return found;\n }\n /**\n * Find an instance by SOPInstanceUID.\n * @param {string} uid An UID string.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByUID\",\n value: function getInstanceByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._instances.find(function (instance) {\n return instance.getSOPInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of instances within the current series.\n * @returns {number} The number of instances in the current series.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._instances.length;\n }\n /**\n * Invokes the supplied callback for each instance in the current series passing\n * two arguments: instance (an InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance in the series.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachInstance\",\n value: function forEachInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._instances.forEach(function (instance, index) {\n callback.call(null, instance, index);\n });\n }\n }\n /**\n * Find the index of an instance inside the series.\n * @param {InstanceMetadata} instance An instance of the SeriesMetadata class.\n * @returns {number} The index of the instance inside the series or -1 if not found.\n */\n\n }, {\n key: \"indexOfInstance\",\n value: function indexOfInstance(instance) {\n return this._instances.indexOf(instance);\n }\n /**\n * Search the associated instances using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._instances.find(function (instance, index) {\n return callback.call(null, instance, index);\n });\n }\n }\n /**\n * Compares the current series with another one.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same series.\n */\n\n }, {\n key: \"equals\",\n value: function equals(series) {\n var self = this;\n return series === self || series instanceof SeriesMetadata && series.getSeriesInstanceUID() === self.getSeriesInstanceUID();\n }\n }]);\n\n return SeriesMetadata;\n}(Metadata);\n\n/**\n * Create a random GUID\n *\n * @return {string}\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nvar OBJECT$1 = 'object';\n/**\n * This class defines an ImageSet object which will be used across the viewer. This object represents\n * a list of images that are associated by any arbitrary criteria being thus content agnostic. Besides the\n * main attributes (images and uid) it allows additional attributes to be appended to it (currently\n * indiscriminately, but this should be changed).\n */\n\nvar ImageSet =\n/*#__PURE__*/\nfunction () {\n function ImageSet(images) {\n _classCallCheck(this, ImageSet);\n\n if (Array.isArray(images) !== true) {\n throw new OHIFError('ImageSet expects an array of images');\n } // @property \"images\"\n\n\n Object.defineProperty(this, 'images', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: images\n }); // @property \"uid\"\n\n Object.defineProperty(this, 'uid', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: guid() // Unique ID of the instance\n\n });\n }\n\n _createClass(ImageSet, [{\n key: \"getUID\",\n value: function getUID() {\n return this.uid;\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this[attribute] = value;\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this[attribute];\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n if (_typeof(attributes) === OBJECT$1 && attributes !== null) {\n var imageSet = this,\n hasOwn = Object.prototype.hasOwnProperty;\n\n for (var attribute in attributes) {\n if (hasOwn.call(attributes, attribute)) {\n imageSet[attribute] = attributes[attribute];\n }\n }\n }\n }\n }, {\n key: \"getImage\",\n value: function getImage(index) {\n return this.images[index];\n }\n }, {\n key: \"sortBy\",\n value: function sortBy(sortingCallback) {\n return this.images.sort(sortingCallback);\n }\n }]);\n\n return ImageSet;\n}();\n\nvar StudyMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(StudyMetadata, _Metadata);\n\n function StudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, StudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _studyInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _displaySets: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstSeries: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(StudyMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.studyInstanceUID\n * Same as this.getStudyInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * studyCollection.findBy({\n * studyInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'studyInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getStudyInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Getter for displaySets\n * @return {Array} Array of display set object\n */\n\n }, {\n key: \"getDisplaySets\",\n value: function getDisplaySets() {\n return this._displaySets.slice();\n }\n /**\n * Set display sets\n * @param {Array} displaySets Array of display sets (ImageSet[])\n */\n\n }, {\n key: \"setDisplaySets\",\n value: function setDisplaySets(displaySets) {\n var _this2 = this;\n\n displaySets.forEach(function (displaySet) {\n return _this2.addDisplaySet(displaySet);\n });\n }\n /**\n * Add a single display set to the list\n * @param {Object} displaySet Display set object\n * @returns {boolean} True on success, false on failure.\n */\n\n }, {\n key: \"addDisplaySet\",\n value: function addDisplaySet(displaySet) {\n if (displaySet instanceof ImageSet) {\n this._displaySets.push(displaySet);\n\n return true;\n }\n\n return false;\n }\n /**\n * Invokes the supplied callback for each display set in the current study passing\n * two arguments: display set (a ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachDisplaySet\",\n value: function forEachDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._displaySets.forEach(function (displaySet, index) {\n callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Search the associated display sets using the supplied callback as criteria. The callback is passed\n * two arguments: display set (an ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"findDisplaySet\",\n value: function findDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._displaySets.find(function (displaySet, index) {\n return callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Retrieve the number of display sets within the current study.\n * @returns {number} The number of display sets in the current study.\n */\n\n }, {\n key: \"getDisplaySetCount\",\n value: function getDisplaySetCount() {\n return this._displaySets.length;\n }\n /**\n * Returns the StudyInstanceUID of the current study.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this._studyInstanceUID;\n }\n /**\n * Getter for series\n * @return {Array} Array of SeriesMetadata object\n */\n\n }, {\n key: \"getSeries\",\n value: function getSeries() {\n return this._series.slice();\n }\n /**\n * Append a series to the current study.\n * @param {SeriesMetadata} series The series to be added to the current study.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addSeries\",\n value: function addSeries(series) {\n var result = false;\n\n if (series instanceof SeriesMetadata && this.getSeriesByUID(series.getSeriesInstanceUID()) === void 0) {\n this._series.push(series);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Find a series by index.\n * @param {number} index An integer representing a list index.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByIndex\",\n value: function getSeriesByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._series[index];\n }\n\n return found;\n }\n /**\n * Find a series by SeriesInstanceUID.\n * @param {string} uid An UID string.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByUID\",\n value: function getSeriesByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._series.find(function (series) {\n return series.getSeriesInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of series within the current study.\n * @returns {number} The number of series in the current study.\n */\n\n }, {\n key: \"getSeriesCount\",\n value: function getSeriesCount() {\n return this._series.length;\n }\n /**\n * Retrieve the number of instances within the current study.\n * @returns {number} The number of instances in the current study.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._series.reduce(function (sum, series) {\n return sum + series.getInstanceCount();\n }, 0);\n }\n /**\n * Invokes the supplied callback for each series in the current study passing\n * two arguments: series (a SeriesMetadata instance) and index (the integer\n * index of the series within the current study)\n * @param {function} callback The callback function which will be invoked for each series instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachSeries\",\n value: function forEachSeries(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._series.forEach(function (series, index) {\n callback.call(null, series, index);\n });\n }\n }\n /**\n * Find the index of a series inside the study.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {number} The index of the series inside the study or -1 if not found.\n */\n\n }, {\n key: \"indexOfSeries\",\n value: function indexOfSeries(series) {\n return this._series.indexOf(series);\n }\n /**\n * It sorts the series based on display sets order. Each series must be an instance\n * of SeriesMetadata and each display sets must be an instance of ImageSet.\n * Useful example of usage:\n * Study data provided by backend does not sort series at all and client-side\n * needs series sorted by the same criteria used for sorting display sets.\n */\n\n }, {\n key: \"sortSeriesByDisplaySets\",\n value: function sortSeriesByDisplaySets() {\n var _this3 = this;\n\n // Object for mapping display sets' index by seriesInstanceUid\n var displaySetsMapping = {}; // Loop through each display set to create the mapping\n\n this.forEachDisplaySet(function (displaySet, index) {\n if (!(displaySet instanceof ImageSet)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets display set at index \".concat(index, \" is not an instance of ImageSet\"));\n } // In case of multiframe studies, just get the first index occurence\n\n\n if (displaySetsMapping[displaySet.seriesInstanceUid] === void 0) {\n displaySetsMapping[displaySet.seriesInstanceUid] = index;\n }\n }); // Clone of actual series\n\n var actualSeries = this.getSeries();\n actualSeries.forEach(function (series, index) {\n if (!(series instanceof SeriesMetadata)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets series at index \".concat(index, \" is not an instance of SeriesMetadata\"));\n } // Get the new series index\n\n\n var seriesIndex = displaySetsMapping[series.getSeriesInstanceUID()]; // Update the series object with the new series position\n\n _this3._series[seriesIndex] = series;\n });\n }\n /**\n * Compares the current study instance with another one.\n * @param {StudyMetadata} study An instance of the StudyMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same study.\n */\n\n }, {\n key: \"equals\",\n value: function equals(study) {\n var self = this;\n return study === self || study instanceof StudyMetadata && study.getStudyInstanceUID() === self.getStudyInstanceUID();\n }\n /**\n * Get the first series of the current study retaining a consistent result across multiple calls.\n * @return {SeriesMetadata} An instance of the SeriesMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstSeries\",\n value: function getFirstSeries() {\n var series = this._firstSeries;\n\n if (!(series instanceof SeriesMetadata)) {\n series = null;\n var found = this.getSeriesByIndex(0);\n\n if (found instanceof SeriesMetadata) {\n this._firstSeries = found;\n series = found;\n }\n }\n\n return series;\n }\n /**\n * Get the first instance of the current study retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var firstSeries = this.getFirstSeries();\n\n if (firstSeries instanceof SeriesMetadata) {\n var found = firstSeries.getFirstInstance();\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n }\n\n return instance;\n }\n /**\n * Search the associated series to find an specific instance using the supplied callback as criteria.\n * The callback is passed two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance instance.\n * @returns {Object} Result object containing series (SeriesMetadata) and instance (InstanceMetadata)\n * objects or an empty object if not found.\n */\n\n }, {\n key: \"findSeriesAndInstanceByInstance\",\n value: function findSeriesAndInstanceByInstance(callback) {\n var result;\n\n if (Metadata.isValidCallback(callback)) {\n var instance;\n\n var series = this._series.find(function (series) {\n instance = series.findInstance(callback);\n return instance instanceof InstanceMetadata;\n }); // No series found\n\n\n if (series instanceof SeriesMetadata) {\n result = {\n series: series,\n instance: instance\n };\n }\n }\n\n return result || {};\n }\n /**\n * Find series by instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {SeriesMetadata|undefined} If a series is found based on callback criteria it\n * returns a SeriesMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findSeriesByInstance\",\n value: function findSeriesByInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.series;\n }\n /**\n * Find an instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.instance;\n }\n }]);\n\n return StudyMetadata;\n}(Metadata);\n\nvar WadoRsMetaDataBuilder =\n/*#__PURE__*/\nfunction () {\n function WadoRsMetaDataBuilder() {\n _classCallCheck(this, WadoRsMetaDataBuilder);\n\n this.tags = {};\n }\n\n _createClass(WadoRsMetaDataBuilder, [{\n key: \"addTag\",\n value: function addTag(tag, value, multi) {\n this.tags[tag] = {\n tag: tag,\n value: value,\n multi: multi\n };\n return this;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var _this = this;\n\n var json = {};\n var keys = Object.keys(this.tags);\n keys.forEach(function (key) {\n if (!_this.tags.hasOwnProperty(key)) {\n return;\n }\n\n var tag = _this.tags[key];\n var multi = !!tag.multi;\n var value = tag.value;\n\n if (value == null || value.length === 1 && value[0] == null) {\n return;\n }\n\n if (typeof value === 'string' && multi) {\n value = value.split('\\\\');\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n json[key] = {\n Value: value\n };\n });\n return json;\n }\n }]);\n\n return WadoRsMetaDataBuilder;\n}();\n\nfunction getWADORSImageUrl(instance, frame) {\n var wadorsuri = instance.wadorsuri;\n\n if (!wadorsuri) {\n return;\n } // We need to sum 1 because WADO-RS frame number is 1-based\n\n\n frame = (frame || 0) + 1; // Replaces /frame/1 by /frame/{frame}\n\n wadorsuri = wadorsuri.replace(/(%2Fframes%2F)(\\d+)/, \"$1\".concat(frame));\n return wadorsuri;\n}\n/**\n * Obtain an imageId for Cornerstone based on the WADO-RS scheme\n *\n * @param {object} instanceMetada metadata object (InstanceMetadata)\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getWADORSImageId(instance, frame) {\n var uri = getWADORSImageUrl(instance, frame);\n\n if (!uri) {\n return;\n }\n\n return \"wadors:\".concat(uri);\n}\n\nfunction getRadiopharmaceuticalInfoMetaData(instance) {\n var radiopharmaceuticalInfo = instance.radiopharmaceuticalInfo;\n\n if (instance.modality !== 'PT' || !radiopharmaceuticalInfo) {\n return;\n }\n\n return new WadoRsMetaDataBuilder().addTag('00181072', radiopharmaceuticalInfo.radiopharmaceuticalStartTime).addTag('00181074', radiopharmaceuticalInfo.radionuclideTotalDose).addTag('00181075', radiopharmaceuticalInfo.radionuclideHalfLife).toJSON();\n}\n\nvar getWadoRsInstanceMetaData = function getWadoRsInstanceMetaData(study, series, instance) {\n return new WadoRsMetaDataBuilder().addTag('00080016', instance.sopClassUid).addTag('00080018', instance.sopInstanceUid).addTag('00080021', series.seriesDate).addTag('00080031', series.seriesTime).addTag('00080060', instance.modality).addTag('00101010', study.patientAge).addTag('00101020', study.patientSize).addTag('00101030', study.patientWeight).addTag('00180050', instance.sliceThickness).addTag('0020000e', series.seriesInstanceUid).addTag('00200011', series.seriesNumber).addTag('0020000d', study.studyInstanceUid).addTag('00200013', instance.instanceNumber).addTag('00200032', instance.imagePositionPatient, true).addTag('00200037', instance.imageOrientationPatient, true).addTag('00200052', instance.frameOfReferenceUID).addTag('00201041', instance.sliceLocation).addTag('00280002', instance.samplesPerPixel).addTag('00280004', instance.photometricInterpretation).addTag('00280006', instance.planarConfiguration).addTag('00280010', instance.rows).addTag('00280011', instance.columns).addTag('00280030', instance.pixelSpacing, true).addTag('00280034', instance.pixelAspectRatio, true).addTag('00280100', instance.bitsAllocated).addTag('00280101', instance.bitsStored).addTag('00280102', instance.highBit).addTag('00280103', instance.pixelRepresentation).addTag('00280106', instance.smallestPixelValue).addTag('00280107', instance.largestPixelValue).addTag('00281050', instance.windowCenter, true).addTag('00281051', instance.windowWidth, true).addTag('00281052', instance.rescaleIntercept).addTag('00281053', instance.rescaleSlope).addTag('00281054', instance.rescaleType).addTag('00281101', instance.redPaletteColorLookupTableDescriptor).addTag('00281102', instance.greenPaletteColorLookupTableDescriptor).addTag('00281103', instance.bluePaletteColorLookupTableDescriptor).addTag('00281201', instance.redPaletteColorLookupTableData).addTag('00281202', instance.greenPaletteColorLookupTableData).addTag('00281203', instance.bluePaletteColorLookupTableData).addTag('00540016', getRadiopharmaceuticalInfoMetaData(instance)).toJSON();\n};\n\nfunction updateMetaDataManager(study) {\n study.seriesList.forEach(function (series) {\n series.instances.forEach(function (instance) {\n // Cache just images that are going to be loaded via WADO-RS\n if (instance.imageRendering !== 'wadors' && instance.thumbnailRendering !== 'wadors') {\n return;\n }\n\n var metaData = getWadoRsInstanceMetaData(study, series, instance);\n var numberOfFrames = instance.numberOfFrames || 1; // We can share the same metaData with all frames because it doesn't have\n // any frame specific data, such as frameNumber, pixelData, offset, etc.\n // WADO-RS frame number is 1-based\n\n for (var frameNumber = 0; frameNumber < numberOfFrames; frameNumber++) {\n var imageId = getWADORSImageId(instance, frameNumber); // TODO Drop dependency on this\n\n external.cornerstoneWADOImageLoader.wadors.metaDataManager.add(imageId, metaData);\n }\n });\n });\n}\n\n/**\n * Retrieves metaData for multiple studies at once.\n *\n * This function calls retrieveStudyMetadata several times, asynchronously,\n * and waits for all of the results to be returned.\n *\n * @param studyInstanceUids The UIDs of the Studies to be retrieved\n * @return Promise\n */\n\nfunction retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids) {\n // Create an empty array to store the Promises for each metaData retrieval call\n var promises = []; // Loop through the array of studyInstanceUids\n\n studyInstanceUids.forEach(function (studyInstanceUid) {\n // Send the call and resolve or reject the related promise based on its outcome\n var promise = retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids); // Add the current promise to the array of promises\n\n promises.push(promise);\n }); // When all of the promises are complete, this callback runs\n\n var promise = Promise.all(promises); // Warn the error on console if some retrieval failed\n\n promise.catch(function (error) {\n return log$1.warn(error);\n });\n return promise;\n}\n\n/**\n * Overridable namespace to allow getting study boxes data externally.\n *\n * The function must handle the first parameter as a studyInformation object containing at least the\n * studyInstanceUid attribute.\n *\n * Shall return a promise that will be resolved with an object containing those attributes:\n * - studyInstanceUid {String}: copy of studyInformation.studyInstanceUid\n * - modalities {String}: 2 uppercase letters for each modality split by any non-alphabetical char(s)\n * - studyDate {String}: date formatted as YYYYMMDD\n * - studyDescription {String}: study description string\n */\n// TODO: What is this for?\nvar getStudyBoxData = false;\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString$1(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$2(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString$1(new Date(filter.studyDateFrom));\n var dateTo = dateToString$1(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies$1(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies$1(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$2(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies$1);\n}\n\nvar studySearchPromises = new Map();\n/**\n * Search for studies information by the given filter\n *\n * @param {Object} filter Filter that will be used on search\n * @returns {Promise} resolved with an array of studies information or rejected with an error\n */\n\nfunction searchStudies(server, filter) {\n var promiseKey = JSON.stringify(filter);\n\n if (studySearchPromises.has(promiseKey)) {\n return studySearchPromises.get(promiseKey);\n } else {\n var promise = Studies$1(server, filter);\n studySearchPromises.set(promiseKey, promise);\n return promise;\n }\n}\n\nvar studies = {\n services: {\n QIDO: QIDO,\n WADO: WADO\n },\n loadingDict: {},\n retrieveStudyMetadata: retrieveStudyMetadata,\n deleteStudyMetadataPromise: deleteStudyMetadataPromise,\n retrieveStudiesMetadata: retrieveStudiesMetadata,\n getStudyBoxData: getStudyBoxData,\n searchStudies: searchStudies\n};\n\nfunction isFunction(subject) {\n return typeof subject === 'function';\n}\n\nvar CommandsManager =\n/*#__PURE__*/\nfunction () {\n function CommandsManager() {\n _classCallCheck(this, CommandsManager);\n\n this.contexts = {}; // Enable reactivity by storing the last executed command\n //this.last = new ReactiveVar('');\n }\n\n _createClass(CommandsManager, [{\n key: \"getContext\",\n value: function getContext(contextName) {\n var context = this.contexts[contextName];\n\n if (!context) {\n return log$1.warn(\"No context found with name \\\"\".concat(contextName, \"\\\"\"));\n }\n\n return context;\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n var contextName = OHIF.context.get();\n\n if (!contextName) {\n return log$1.warn('There is no selected context');\n }\n\n return this.getContext(contextName);\n }\n }, {\n key: \"createContext\",\n value: function createContext(contextName) {\n if (!contextName) return;\n\n if (this.contexts[contextName]) {\n return this.clear(contextName);\n }\n\n this.contexts[contextName] = {};\n }\n }, {\n key: \"set\",\n value: function set(contextName, definitions) {\n var extend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (_typeof(definitions) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n\n if (!extend) {\n this.clear(contextName);\n }\n\n Object.keys(definitions).forEach(function (command) {\n return context[command] = definitions[command];\n });\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, definition) {\n if (_typeof(definition) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n context[command] = definition;\n }\n }, {\n key: \"setDisabledFunction\",\n value: function setDisabledFunction(contextName, command, func) {\n if (!command || typeof func !== 'function') return;\n var context = this.getContext(contextName);\n if (!context) return;\n var definition = context[command];\n\n if (!definition) {\n return log$1.warn(\"Trying to set a disabled function to a command \\\"\".concat(command, \"\\\" that was not yet defined\"));\n }\n\n definition.disabled = func;\n }\n }, {\n key: \"clear\",\n value: function clear(contextName) {\n if (!contextName) return;\n this.contexts[contextName] = {};\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition(command) {\n var context = this.getCurrentContext();\n if (!context) return;\n return context[command];\n }\n }, {\n key: \"isDisabled\",\n value: function isDisabled(command) {\n var definition = this.getDefinition(command);\n if (!definition) return false;\n var disabled = definition.disabled;\n if (isFunction(disabled) && disabled()) return true;\n if (!isFunction(disabled) && disabled) return true;\n return false;\n }\n }, {\n key: \"run\",\n value: function run(command) {\n var definition = this.getDefinition(command);\n\n if (!definition) {\n return log$1.warn(\"Command \\\"\".concat(command, \"\\\" not found in current context\"));\n }\n\n var action = definition.action,\n params = definition.params;\n if (this.isDisabled(command)) return;\n\n if (typeof action !== 'function') {\n return log$1.warn(\"No action was defined for command \\\"\".concat(command, \"\\\"\"));\n } else {\n var result = action(params);\n /*if (this.last.get() === command) {\n this.last.dep.changed();\n } else {\n this.last.set(command);\n }*/\n\n return result;\n }\n }\n }]);\n\n return CommandsManager;\n}();\n\nvar commands = new CommandsManager(); // Export relevant objects\n\nvar HotkeysContext =\n/*#__PURE__*/\nfunction () {\n function HotkeysContext(name, definitions, enabled) {\n _classCallCheck(this, HotkeysContext);\n\n this.name = name;\n this.definitions = Object.assign({}, definitions);\n this.enabled = enabled;\n }\n\n _createClass(HotkeysContext, [{\n key: \"extend\",\n value: function extend() {\n var _this = this;\n\n var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_typeof(definitions) !== 'object') return;\n this.definitions = Object.assign({}, definitions);\n Object.keys(definitions).forEach(function (command) {\n var hotkey = definitions[command];\n\n _this.unregister(command);\n\n if (hotkey) {\n _this.register(command, hotkey);\n }\n\n _this.definitions[command] = hotkey;\n });\n }\n }, {\n key: \"register\",\n value: function register(command, hotkey) {\n var _this2 = this;\n\n if (!hotkey) {\n return;\n }\n\n if (!command) {\n return log$1.warn(\"No command was defined for hotkey \\\"\".concat(hotkey, \"\\\"\"));\n }\n\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n var bind = function bind(hotkey) {\n return $(document).bind(bindingKey, hotkey, function (event) {\n if (!_this2.enabled.get()) return;\n OHIF.commands.run(command);\n event.preventDefault();\n });\n };\n\n if (hotkey instanceof Array) {\n hotkey.forEach(function (hotkey) {\n return bind(hotkey);\n });\n } else {\n bind(hotkey);\n }\n }\n }, {\n key: \"unregister\",\n value: function unregister(command) {\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n if (this.definitions[command]) {\n $(document).unbind(bindingKey);\n delete this.definitions[command];\n }\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n var _this3 = this;\n\n Object.keys(this.definitions).forEach(function (command) {\n var hotkey = _this3.definitions[command];\n\n _this3.register(command, hotkey);\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n $(document).unbind(\"keydown.hotkey.\".concat(this.name));\n }\n }]);\n\n return HotkeysContext;\n}();\n\nvar HotkeysManager =\n/*#__PURE__*/\nfunction () {\n function HotkeysManager() {\n _classCallCheck(this, HotkeysManager);\n\n this.contexts = {};\n this.defaults = {};\n this.currentContextName = null;\n this.enabled = true;\n this.retrieveFunction = null;\n this.storeFunction = null;\n }\n\n _createClass(HotkeysManager, [{\n key: \"setRetrieveFunction\",\n value: function setRetrieveFunction(retrieveFunction) {\n this.retrieveFunction = retrieveFunction;\n }\n }, {\n key: \"setStoreFunction\",\n value: function setStoreFunction(storeFunction) {\n this.storeFunction = storeFunction;\n }\n }, {\n key: \"store\",\n value: function store(contextName, definitions) {\n var _this = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this.storeFunction) {\n _this.storeFunction.call(_this, storageKey, definitions).then(resolve).catch(reject); //} else if (OHIF.user.userLoggedIn()) {\n // OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);\n\n } else {\n var definitionsJSON = JSON.stringify(definitions);\n localStorage.setItem(storageKey, definitionsJSON);\n resolve();\n }\n });\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(contextName) {\n var _this2 = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this2.retrieveFunction) {\n _this2.retrieveFunction(contextName).then(resolve).catch(reject);\n } else if (OHIF.user.userLoggedIn()) {\n try {\n resolve(OHIF.user.getData(storageKey));\n } catch (error) {\n reject(error);\n }\n } else {\n var definitionsJSON = localStorage.getItem(storageKey) || '';\n var definitions = JSON.parse(definitionsJSON) || undefined;\n resolve(definitions);\n }\n });\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled.set(false);\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.enabled.set(true);\n }\n }, {\n key: \"getContext\",\n value: function getContext(contextName) {\n return this.contexts[contextName];\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n return this.getContext(this.currentContextName);\n }\n }, {\n key: \"load\",\n value: function load(contextName) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var context = _this3.getContext(contextName);\n\n if (!context) return reject();\n\n _this3.retrieve(contextName).then(function (defs) {\n var definitions = defs || _this3.defaults[contextName];\n\n if (!definitions) {\n _this3.changeObserver.changed();\n\n return reject();\n }\n\n context.destroy();\n context.definitions = definitions;\n context.initialize();\n\n _this3.changeObserver.changed();\n\n resolve(definitions);\n }).catch(reject);\n });\n }\n }, {\n key: \"set\",\n value: function set(contextName, contextDefinitions) {\n var isDefaultDefinitions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var enabled = this.enabled;\n var context = new HotkeysContext(contextName, contextDefinitions, enabled);\n var currentContext = this.getCurrentContext();\n\n if (currentContext && currentContext.name === contextName) {\n currentContext.destroy();\n context.initialize();\n }\n\n this.contexts[contextName] = context;\n\n if (isDefaultDefinitions) {\n this.defaults[contextName] = contextDefinitions;\n }\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, hotkey) {\n if (!command || !hotkey) return;\n var context = this.getContext(contextName);\n\n if (!context) {\n this.set(contextName, {});\n }\n\n context.register(command, hotkey);\n }\n }, {\n key: \"unsetContext\",\n value: function unsetContext(contextName) {\n if (contextName === this.currentContextName) {\n this.getCurrentContext().destroy();\n }\n\n delete this.contexts[contextName];\n delete this.defaults[contextName];\n }\n }, {\n key: \"resetDefaults\",\n value: function resetDefaults(contextName) {\n var context = this.getContext(contextName);\n var definitions = this.defaults[contextName];\n if (!context || !definitions) return;\n context.extend(definitions);\n return this.store(contextName, definitions);\n }\n }, {\n key: \"switchToContext\",\n value: function switchToContext(contextName) {\n var currentContext = this.getCurrentContext();\n\n if (currentContext) {\n currentContext.destroy();\n }\n\n var newContext = this.contexts[contextName];\n if (!newContext) return;\n this.currentContextName = contextName;\n newContext.initialize();\n this.load(contextName).catch(function () {});\n }\n }]);\n\n return HotkeysManager;\n}();\n\n//import 'jquery.hotkeys';\n// Create hotkeys namespace using a HotkeysManager class instance\n\nvar hotkeys = new HotkeysManager(); // Export relevant objects\n\nvar FUNCTION$1 = 'function';\nvar STRING$3 = 'string';\nvar WILDCARD = '*'; // \"*\" is a special name which means \"all children\".\n\nvar SEPARATOR = '.';\n/**\n * Main Namespace Component Class\n */\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n function Node() {\n _classCallCheck(this, Node);\n\n this.value = 0;\n this.children = {};\n this.handlers = {};\n }\n\n _createClass(Node, [{\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return _typeof(path) === STRING$3 ? path.split(SEPARATOR) : null;\n }\n }, {\n key: \"getNodeUpToIndex\",\n value: function getNodeUpToIndex(path, index) {\n var node = this;\n\n for (var i = 0; i < index; ++i) {\n var item = path[i];\n\n if (node.children.hasOwnProperty(item)) {\n node = node.children[item];\n } else {\n node = null;\n break;\n }\n }\n\n return node;\n }\n }, {\n key: \"append\",\n value: function append(name, value) {\n var children = this.children;\n var node = null;\n\n if (children.hasOwnProperty(name)) {\n node = children[name];\n } else if (_typeof(name) === STRING$3 && name !== WILDCARD) {\n node = new Node();\n children[name] = node;\n }\n\n if (node !== null) {\n node.value += value > 0 ? parseInt(value) : 0;\n }\n\n return node;\n }\n }, {\n key: \"probe\",\n value: function probe(recursively) {\n var value = this.value; // Calculate entire tree value recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"clear\",\n value: function clear(recursively) {\n this.value = 0; // Clear entire tree recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n }\n }\n }, {\n key: \"appendPath\",\n value: function appendPath(path, value) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this;\n\n for (var i = 0; i < last; ++i) {\n node = node.append(path[i], 0);\n\n if (node === null) {\n return false;\n }\n }\n\n return node.append(path[last], value) !== null;\n }\n\n return false;\n }\n }, {\n key: \"clearPath\",\n value: function clearPath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n node.children[item].clear(recursively);\n return true;\n }\n } else {\n var children = node.children;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"probePath\",\n value: function probePath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n return node.children[item].probe(recursively);\n }\n } else {\n var children = node.children;\n var value = 0;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n\n return value;\n }\n }\n }\n\n return 0;\n }\n }, {\n key: \"attachHandler\",\n value: function attachHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n var list = handlers.hasOwnProperty(type) ? handlers[type] : handlers[type] = [];\n var length = list.length;\n var notFound = true;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n notFound = false;\n break;\n }\n }\n\n if (notFound) {\n list[length] = handler;\n result = true;\n }\n }\n\n return result;\n }\n }, {\n key: \"removeHandler\",\n value: function removeHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n list.splice(i, 1);\n result = true;\n break;\n }\n }\n }\n }\n\n return result;\n }\n }, {\n key: \"trigger\",\n value: function trigger(type, nonRecursively) {\n if (_typeof(type) === STRING$3) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n list[i].call(null);\n }\n }\n\n if (nonRecursively !== true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].trigger(type);\n }\n }\n }\n }\n }\n }, {\n key: \"attachHandlerForPath\",\n value: function attachHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.attachHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"removeHandlerForPath\",\n value: function removeHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.removeHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"triggerHandlersForPath\",\n value: function triggerHandlersForPath(path, type, nonRecursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n node.trigger(type, nonRecursively);\n }\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * Root Namespace Node and API\n */\n\n\nvar rootNode = new Node();\n\nfunction handleError(error) {\n var title = error.title,\n message = error.message;\n\n if (!title) {\n if (error instanceof Error) {\n title = error.name;\n }\n }\n\n if (!message) {\n if (error instanceof Error) {\n message = error.message;\n }\n }\n\n var data = Object.assign({\n title: title,\n message: message,\n class: 'themed',\n hideConfirm: true,\n cancelLabel: 'Dismiss',\n cancelClass: 'btn-secondary'\n }, error || {});\n log$1.error(error); // TODO: Find a better way to handle errors instead of displaying a dialog for all of them.\n // OHIF.ui.showDialog('dialogForm', data);\n}\n\n/**\n * Check if the pressed key combination will result in a character input\n * Got from https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n *\n * @returns {Boolean} Whether the pressed key combination will input a character or not\n */\nfunction isCharacterKeyPress(event) {\n if (typeof event.which === 'undefined') {\n // This is IE, which only fires keypress events for printable keys\n return true;\n } else if (typeof event.which === 'number' && event.which > 0) {\n // In other browsers except old versions of WebKit, event.which is\n // only greater than zero if the keypress is a printable key.\n // We need to filter out backspace and ctrl/alt/meta key combinations\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8;\n }\n\n return false;\n}\n\n/**\n * Get the offset for the given element\n *\n * @param {Object} element DOM element which will have the offser calculated\n * @returns {Object} Object containing the top and left offset\n */\nfunction getOffset(element) {\n var top = 0;\n var left = 0;\n\n if (element.offsetParent) {\n do {\n left += element.offsetLeft;\n top += element.offsetTop;\n } while (element = element.offsetParent);\n }\n\n return {\n left: left,\n top: top\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar ui = {\n getScrollbarSize: getScrollbarSize,\n getOffset: getOffset,\n isCharacterKeyPress: isCharacterKeyPress,\n handleError: handleError\n};\n\n//import Dropdown from './ui/dropdown/class.js';\n\n/*\n * Defines the base OHIF header object\n */\n//const dropdown = new OHIF.ui.Dropdown();\nvar header = {};\n\nvar ObjectPath =\n/*#__PURE__*/\nfunction () {\n function ObjectPath() {\n _classCallCheck(this, ObjectPath);\n }\n\n _createClass(ObjectPath, null, [{\n key: \"set\",\n\n /**\n * Set an object property based on \"path\" (namespace) supplied creating\n * ... intermediary objects if they do not exist.\n * @param object {Object} An object where the properties specified on path should be set.\n * @param path {String} A string representing the property to be set, e.g. \"user.study.series.timepoint\".\n * @param value {Any} The value of the property that will be set.\n * @return {Boolean} Returns \"true\" on success, \"false\" if any intermediate component of the supplied path\n * ... is not a valid Object, in which case the property cannot be set. No excpetions are thrown.\n */\n value: function set(object, path, value) {\n var components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0,\n result = false;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n\n if (field in currentObject) {\n if (!ObjectPath.isValidObject(currentObject[field])) {\n break;\n }\n } else {\n currentObject[field] = {};\n }\n\n currentObject = currentObject[field];\n i++;\n }\n\n if (i === last) {\n currentObject[components[last]] = value;\n result = true;\n }\n }\n\n return result;\n }\n /**\n * Get an object property based on \"path\" (namespace) supplied traversing the object\n * ... tree as necessary.\n * @param object {Object} An object where the properties specified might exist.\n * @param path {String} A string representing the property to be searched for, e.g. \"user.study.series.timepoint\".\n * @return {Any} The value of the property if found. By default, returns the special type \"undefined\".\n */\n\n }, {\n key: \"get\",\n value: function get(object, path) {\n var found,\n // undefined by default\n components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n var isValid = ObjectPath.isValidObject(currentObject[field]);\n\n if (field in currentObject && isValid) {\n currentObject = currentObject[field];\n i++;\n } else {\n break;\n }\n }\n\n if (i === last && components[last] in currentObject) {\n found = currentObject[components[last]];\n }\n }\n\n return found;\n }\n /**\n * Check if the supplied argument is a real JavaScript Object instance.\n * @param object {Any} The subject to be tested.\n * @return {Boolean} Returns \"true\" if the object is a real Object instance and \"false\" otherwise.\n */\n\n }, {\n key: \"isValidObject\",\n value: function isValidObject(object) {\n return _typeof(object) === 'object' && object !== null && object instanceof Object;\n }\n }, {\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return typeof path === 'string' ? path.split('.') : null;\n }\n }]);\n\n return ObjectPath;\n}();\n\nfunction absoluteUrl(path) {\n var absolutePath = '/'; // TODO: Find another way to get root url\n\n var absoluteUrl = window.location.origin;\n var absoluteUrlParts = absoluteUrl.split('/');\n\n if (absoluteUrlParts.length > 4) {\n var rootUrlPrefixIndex = absoluteUrl.indexOf(absoluteUrlParts[3]);\n absolutePath += absoluteUrl.substring(rootUrlPrefixIndex) + path;\n } else {\n absolutePath += path;\n }\n\n return absolutePath.replace(/\\/\\/+/g, '/');\n}\n\n// TODO: figure out where else to put this function\nfunction addServers(servers, store) {\n Object.keys(servers).forEach(function (serverType) {\n var endpoints = servers[serverType];\n endpoints.forEach(function (endpoint) {\n var server = Object.assign({}, endpoint);\n server.type = serverType;\n store.dispatch({\n type: 'ADD_SERVER',\n server: server\n });\n });\n });\n}\n\n// Return the array sorting function for its object's properties\nfunction sortBy() {\n var fields = [].slice.call(arguments),\n n_fields = fields.length;\n return function (A, B) {\n var a, b, field, key, reverse, result, i;\n\n for (i = 0; i < n_fields; i++) {\n result = 0;\n field = fields[i];\n key = typeof field === 'string' ? field : field.name;\n a = A[key];\n b = B[key];\n\n if (typeof field.primer !== 'undefined') {\n a = field.primer(a);\n b = field.primer(b);\n }\n\n reverse = field.reverse ? -1 : 1;\n\n if (a < b) {\n result = reverse * -1;\n }\n\n if (a > b) {\n result = reverse * 1;\n }\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n };\n}\n\n/* jshint -W060 */\nfunction writeScript(fileName, callback) {\n var script = document.createElement('script');\n script.src = absoluteUrl(fileName);\n\n script.onload = function () {\n if (typeof callback === 'function') {\n callback(script);\n }\n };\n\n document.body.appendChild(script);\n}\n\nfunction updateQueryStringParameter(uri, key, value) {\n var regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n\n if (uri.match(regex)) {\n return uri.replace(regex, '$1' + key + '=' + value + '$2');\n } else {\n return uri + separator + key + '=' + value;\n }\n}\n/**\n * Obtain an imageId for Cornerstone from an image instance\n *\n * @param instance\n * @param frame\n * @param thumbnail\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getImageId(instance, frame) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!instance) {\n return;\n }\n\n if (typeof instance.getImageId === 'function') {\n return instance.getImageId();\n }\n\n if (instance.url) {\n if (frame !== undefined) {\n instance.url = updateQueryStringParameter(instance.url, 'frame', frame);\n }\n\n return instance.url;\n }\n\n var renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';\n\n if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {\n var imageId = 'dicomweb:' + instance.wadouri;\n\n if (frame !== undefined) {\n imageId += '&frame=' + frame;\n }\n\n return imageId;\n } else {\n return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame\n }\n}\n\nvar stackMap = {};\nvar configuration = {};\nvar stackManagerMetaDataProvider;\nvar stackUpdatedCallbacks = [];\n/**\n * Loop through the current series and add metadata to the\n * Cornerstone meta data provider. This will be used to fill information\n * into the viewport overlays, and to calculate reference lines and orientation markers\n * @param {Object} stackMap stackMap object\n * @param {Object} study Study object\n * @param {Object} displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n\nfunction createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, metadataProvider) {\n var numImages = displaySet.images.length;\n var imageIds = [];\n var imageId;\n displaySet.images.forEach(function (instance, imageIndex) {\n var image = instance.getData();\n var metaData = {\n instance: image,\n // in this context, instance will be the data of the InstanceMetadata object...\n series: displaySet,\n // TODO: Check this\n study: study,\n numImages: numImages,\n imageIndex: imageIndex + 1\n };\n var numberOfFrames = image.numberOfFrames;\n\n if (numberOfFrames > 1) {\n OHIF.log.info('Multiframe image detected');\n\n for (var i = 0; i < numberOfFrames; i++) {\n metaData.frameNumber = i;\n imageId = getImageId(image, i);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n } else {\n metaData.frameNumber = 1;\n imageId = getImageId(image);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n });\n var stack = {\n studyInstanceUid: study.studyInstanceUid,\n displaySetInstanceUid: displaySet.displaySetInstanceUid,\n imageIds: imageIds,\n frameRate: displaySet.frameRate,\n isClip: displaySet.isClip\n };\n stackMap[displaySet.displaySetInstanceUid] = stack;\n return stack;\n}\n\nconfiguration = {\n createAndAddStack: createAndAddStack\n};\n/**\n * This object contains all the functions needed for interacting with the stack manager.\n * Generally, findStack is the only function used. If you want to know when new stacks\n * come in, you can register a callback with addStackUpdatedCallback.\n */\n\nvar StackManager = {\n setMetadataProvider: function setMetadataProvider(provider) {\n stackManagerMetaDataProvider = provider;\n },\n\n /**\n * Removes all current stacks\n */\n clearStacks: function clearStacks() {\n stackMap = {};\n },\n\n /**\n * Create a stack from an image set, as well as add in the metadata on a per image bases.\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n makeAndAddStack: function makeAndAddStack(study, displaySet) {\n if (!stackManagerMetaDataProvider) {\n throw new Error('Please call StackManager.setMetadataProvider(provider) first.');\n }\n\n return configuration.createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, stackManagerMetaDataProvider);\n },\n\n /**\n * Find a stack from the currently created stacks.\n * @param displaySetInstanceUid The UID of the stack to find.\n * @returns {*} undefined if not found, otherwise the stack object is returned.\n */\n findStack: function findStack(displaySetInstanceUid) {\n return stackMap[displaySetInstanceUid];\n },\n\n /**\n * Find a stack or reate one if it has not been created yet\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n findOrCreateStack: function findOrCreateStack(study, displaySet) {\n var stack = this.findStack(displaySet.displaySetInstanceUid);\n\n if (!stack || !stack.imageIds) {\n stack = this.makeAndAddStack(study, displaySet);\n }\n\n return stack;\n },\n\n /**\n * Gets the underlying map of displaySetInstanceUid to stack object.\n * WARNING: Do not change this object. It directly affects the manager.\n * @returns {{}} map of displaySetInstanceUid -> stack.\n */\n getAllStacks: function getAllStacks() {\n return stackMap;\n },\n\n /**\n * Adds in a callback to be called on a stack being added / updated.\n * @param callback must accept at minimum one argument,\n * which is the stack that was added / updated.\n */\n addStackUpdatedCallback: function addStackUpdatedCallback(callback) {\n if (typeof callback !== 'function') {\n throw new OHIFError('callback must be provided as a function');\n }\n\n stackUpdatedCallbacks.push(callback);\n },\n\n /**\n * Return configuration\n */\n getConfiguration: function getConfiguration() {\n return configuration;\n },\n\n /**\n * Set configuration, in order to provide compatibility\n * with other systems by overriding this functions\n * @param {Object} config object with functions to be overrided\n *\n * For now, only makeAndAddStack can be overrided\n */\n setConfiguration: function setConfiguration(config) {\n configuration = config;\n }\n};\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar sopClassDictionary = {\n ComputedRadiographyImageStorage: '1.2.840.10008.5.1.4.1.1.1',\n DigitalXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.1',\n DigitalXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.1.1',\n DigitalMammographyXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.2',\n DigitalMammographyXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.2.1',\n DigitalIntraOralXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.3',\n DigitalIntraOralXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.3.1',\n CTImageStorage: '1.2.840.10008.5.1.4.1.1.2',\n EnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.1',\n LegacyConvertedEnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.2',\n UltrasoundMultiframeImageStorage: '1.2.840.10008.5.1.4.1.1.3.1',\n MRImageStorage: '1.2.840.10008.5.1.4.1.1.4',\n EnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.1',\n MRSpectroscopyStorage: '1.2.840.10008.5.1.4.1.1.4.2',\n EnhancedMRColorImageStorage: '1.2.840.10008.5.1.4.1.1.4.3',\n LegacyConvertedEnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.4',\n UltrasoundImageStorage: '1.2.840.10008.5.1.4.1.1.6.1',\n EnhancedUSVolumeStorage: '1.2.840.10008.5.1.4.1.1.6.2',\n SecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7',\n MultiframeSingleBitSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.1',\n MultiframeGrayscaleByteSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.2',\n MultiframeGrayscaleWordSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.3',\n MultiframeTrueColorSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.4',\n Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1',\n GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2',\n AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3',\n HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1',\n CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.3.1',\n BasicVoiceAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.1',\n GeneralAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.2',\n ArterialPulseWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.5.1',\n RespiratoryWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.6.1',\n GrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.1',\n ColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.2',\n PseudoColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.3',\n BlendingSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.4',\n XAXRFGrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.5',\n XRayAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.12.1',\n EnhancedXAImageStorage: '1.2.840.10008.5.1.4.1.1.12.1.1',\n XRayRadiofluoroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.12.2',\n EnhancedXRFImageStorage: '1.2.840.10008.5.1.4.1.1.12.2.1',\n XRay3DAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.1',\n XRay3DCraniofacialImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.2',\n BreastTomosynthesisImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.3',\n BreastProjectionXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.13.1.4',\n BreastProjectionXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.13.1.5',\n IntravascularOpticalCoherenceTomographyImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.14.1',\n IntravascularOpticalCoherenceTomographyImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.14.2',\n NuclearMedicineImageStorage: '1.2.840.10008.5.1.4.1.1.20',\n RawDataStorage: '1.2.840.10008.5.1.4.1.1.66',\n SpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.1',\n SpatialFiducialsStorage: '1.2.840.10008.5.1.4.1.1.66.2',\n DeformableSpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.3',\n SegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.4',\n SurfaceSegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.5',\n RealWorldValueMappingStorage: '1.2.840.10008.5.1.4.1.1.67',\n SurfaceScanMeshStorage: '1.2.840.10008.5.1.4.1.1.68.1',\n SurfaceScanPointCloudStorage: '1.2.840.10008.5.1.4.1.1.68.2',\n VLEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1',\n VideoEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1.1',\n VLMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2',\n VideoMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2.1',\n VLSlideCoordinatesMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.3',\n VLPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4',\n VideoPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4.1',\n OphthalmicPhotography8BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.1',\n OphthalmicPhotography16BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.2',\n StereometricRelationshipStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.3',\n OphthalmicTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.4',\n VLWholeSlideMicroscopyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.6',\n LensometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.1',\n AutorefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.2',\n KeratometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.3',\n SubjectiveRefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.4',\n VisualAcuityMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.5',\n SpectaclePrescriptionReportStorage: '1.2.840.10008.5.1.4.1.1.78.6',\n OphthalmicAxialMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.7',\n IntraocularLensCalculationsStorage: '1.2.840.10008.5.1.4.1.1.78.8',\n MacularGridThicknessandVolumeReport: '1.2.840.10008.5.1.4.1.1.79.1',\n OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.80.1',\n OphthalmicThicknessMapStorage: '1.2.840.10008.5.1.4.1.1.81.1',\n CornealTopographyMapStorage: '1.2.840.10008.5.1.4.1.1.82.1',\n BasicTextSR: '1.2.840.10008.5.1.4.1.1.88.11',\n EnhancedSR: '1.2.840.10008.5.1.4.1.1.88.22',\n ComprehensiveSR: '1.2.840.10008.5.1.4.1.1.88.33',\n Comprehensive3DSR: '1.2.840.10008.5.1.4.1.1.88.34',\n ProcedureLog: '1.2.840.10008.5.1.4.1.1.88.40',\n MammographyCADSR: '1.2.840.10008.5.1.4.1.1.88.50',\n KeyObjectSelection: '1.2.840.10008.5.1.4.1.1.88.59',\n ChestCADSR: '1.2.840.10008.5.1.4.1.1.88.65',\n XRayRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.67',\n RadiopharmaceuticalRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.68',\n ColonCADSR: '1.2.840.10008.5.1.4.1.1.88.69',\n ImplantationPlanSRDocumentStorage: '1.2.840.10008.5.1.4.1.1.88.70',\n EncapsulatedPDFStorage: '1.2.840.10008.5.1.4.1.1.104.1',\n EncapsulatedCDAStorage: '1.2.840.10008.5.1.4.1.1.104.2',\n PositronEmissionTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.128',\n EnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.130',\n LegacyConvertedEnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.128.1',\n BasicStructuredDisplayStorage: '1.2.840.10008.5.1.4.1.1.131',\n RTImageStorage: '1.2.840.10008.5.1.4.1.1.481.1',\n RTDoseStorage: '1.2.840.10008.5.1.4.1.1.481.2',\n RTStructureSetStorage: '1.2.840.10008.5.1.4.1.1.481.3',\n RTBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.4',\n RTPlanStorage: '1.2.840.10008.5.1.4.1.1.481.5',\n RTBrachyTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.6',\n RTTreatmentSummaryRecordStorage: '1.2.840.10008.5.1.4.1.1.481.7',\n RTIonPlanStorage: '1.2.840.10008.5.1.4.1.1.481.8',\n RTIonBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.9',\n RTBeamsDeliveryInstructionStorage: '1.2.840.10008.5.1.4.34.7',\n GenericImplantTemplateStorage: '1.2.840.10008.5.1.4.43.1',\n ImplantAssemblyTemplateStorage: '1.2.840.10008.5.1.4.44.1',\n ImplantTemplateGroupStorage: '1.2.840.10008.5.1.4.45.1'\n};\n\n/**\n * Checks whether dicom files with specified SOP Class UID have image data\n * @param {string} sopClassUid - SOP Class UID to be checked\n * @returns {boolean} - true if it has image data\n */\n\nfunction isImage(sopClassUid) {\n if (sopClassUid === sopClassDictionary.ComputedRadiographyImageStorage || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.CTImageStorage || sopClassUid === sopClassDictionary.EnhancedCTImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedCTImageStorage || sopClassUid === sopClassDictionary.UltrasoundMultiframeImageStorage || sopClassUid === sopClassDictionary.MRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRColorImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedMRImageStorage || sopClassUid === sopClassDictionary.UltrasoundImageStorage || sopClassUid === sopClassDictionary.SecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.XRayAngiographicImageStorage || sopClassUid === sopClassDictionary.EnhancedXAImageStorage || sopClassUid === sopClassDictionary.XRayRadiofluoroscopicImageStorage || sopClassUid === sopClassDictionary.EnhancedXRFImageStorage || sopClassUid === sopClassDictionary.XRay3DAngiographicImageStorage || sopClassUid === sopClassDictionary.XRay3DCraniofacialImageStorage || sopClassUid === sopClassDictionary.BreastTomosynthesisImageStorage || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing || sopClassUid === sopClassDictionary.NuclearMedicineImageStorage || sopClassUid === sopClassDictionary.VLEndoscopicImageStorage || sopClassUid === sopClassDictionary.VideoEndoscopicImageStorage || sopClassUid === sopClassDictionary.VLMicroscopicImageStorage || sopClassUid === sopClassDictionary.VideoMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLPhotographicImageStorage || sopClassUid === sopClassDictionary.VideoPhotographicImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography8BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography16BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicTomographyImageStorage || sopClassUid === sopClassDictionary.VLWholeSlideMicroscopyImageStorage || sopClassUid === sopClassDictionary.PositronEmissionTomographyImageStorage || sopClassUid === sopClassDictionary.EnhancedPETImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedPETImageStorage || sopClassUid === sopClassDictionary.RTImageStorage) {\n return true;\n }\n\n return false;\n}\n\nvar isMultiFrame = function isMultiFrame(instance) {\n // NumberOfFrames (0028,0008)\n return instance.getRawValue('x00280008') > 1;\n};\n\nvar makeDisplaySet = function makeDisplaySet(series, instances) {\n var instance = instances[0];\n var imageSet = new ImageSet(instances);\n var seriesData = series.getData(); // set appropriate attributes to image set...\n\n imageSet.setAttributes({\n displaySetInstanceUid: imageSet.uid,\n // create a local alias for the imageSet UID\n seriesDate: seriesData.seriesDate,\n seriesTime: seriesData.seriesTime,\n seriesInstanceUid: series.getSeriesInstanceUID(),\n seriesNumber: instance.getRawValue('x00200011'),\n seriesDescription: instance.getRawValue('x0008103e'),\n numImageFrames: instances.length,\n frameRate: instance.getRawValue('x00181063'),\n modality: instance.getRawValue('x00080060'),\n isMultiFrame: isMultiFrame(instance)\n }); // Sort the images in this series if needed\n\n {\n imageSet.sortBy(function (a, b) {\n // Sort by InstanceNumber (0020,0013)\n return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0);\n });\n } // Include the first image instance number (after sorted)\n\n\n imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));\n return imageSet;\n};\n\nvar isSingleImageModality = function isSingleImageModality(modality) {\n return modality === 'CR' || modality === 'MG' || modality === 'DX';\n};\n/**\n * Creates a set of series to be placed in the Study Metadata\n * The series that appear in the Study Metadata must represent\n * imaging modalities.\n *\n * Furthermore, for drag/drop functionality,\n * it is easiest if the stack objects also contain information about\n * which study they are linked to.\n *\n * @param study The study instance metadata to be used\n * @returns {Array} An array of series to be placed in the Study Metadata\n */\n\n\nfunction createStacks(study) {\n // Define an empty array of display sets\n var displaySets = [];\n\n if (!study || !study.getSeriesCount()) {\n return displaySets;\n } // Loop through the series (SeriesMetadata)\n\n\n study.forEachSeries(function (series) {\n // If the series has no instances, skip it\n if (!series.getInstanceCount()) {\n return;\n } // Search through the instances (InstanceMetadata object) of this series\n // Split Multi-frame instances and Single-image modalities\n // into their own specific display sets. Place the rest of each\n // series into another display set.\n\n\n var stackableInstances = [];\n series.forEachInstance(function (instance) {\n // All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)\n if (!isImage(instance.getRawValue('x00080016')) && !instance.getRawValue('x00280010')) {\n return;\n }\n\n var displaySet;\n\n if (isMultiFrame(instance)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n isClip: true,\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid for drag/drop purposes\n numImageFrames: instance.getRawValue('x00280008'),\n // Override the default value of instances.length\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else if (isSingleImageModality(instance.modality)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else {\n stackableInstances.push(instance);\n }\n });\n\n if (stackableInstances.length) {\n var displaySet = makeDisplaySet(series, stackableInstances);\n displaySet.setAttribute('studyInstanceUid', study.getStudyInstanceUID());\n displaySets.push(displaySet);\n }\n });\n return displaySets;\n}\n\nvar OHIFInstanceMetadata =\n/*#__PURE__*/\nfunction (_InstanceMetadata) {\n _inherits(OHIFInstanceMetadata, _InstanceMetadata);\n\n /**\n * @param {Object} Instance object.\n */\n function OHIFInstanceMetadata(data, series, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFInstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFInstanceMetadata).call(this, data, uid));\n\n _this.init(series, study);\n\n return _this;\n }\n\n _createClass(OHIFInstanceMetadata, [{\n key: \"init\",\n value: function init(series, study) {\n var instance = this.getData(); // Initialize Private Properties\n\n Object.defineProperties(this, {\n _sopInstanceUID: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance.sopInstanceUid\n },\n _study: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series\n },\n _instance: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance\n },\n _cache: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n }\n });\n } // Override\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue, bypassCache) {\n // check if this property has been cached...\n if (tagOrProperty in this._cache && bypassCache !== true) {\n return this._cache[tagOrProperty];\n }\n\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty); // Search property value in the whole study metadata chain...\n\n var rawValue;\n\n if (propertyName in this._instance) {\n rawValue = this._instance[propertyName];\n } else if (propertyName in this._series) {\n rawValue = this._series[propertyName];\n } else if (propertyName in this._study) {\n rawValue = this._study[propertyName];\n }\n\n if (rawValue !== void 0) {\n // if rawValue value is not undefined, cache result...\n this._cache[tagOrProperty] = rawValue;\n return rawValue;\n }\n\n return defaultValue;\n } // Override\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty);\n return propertyName in this._instance || propertyName in this._series || propertyName in this._study;\n } // Override\n\n }, {\n key: \"getImageId\",\n value: function getImageId$$1(frame, thumbnail) {\n // If _imageID is not cached, create it\n if (this._imageId === null) {\n this._imageId = getImageId(this.getData(), frame, thumbnail);\n }\n\n return this._imageId;\n }\n /**\n * Static methods\n */\n // @TODO: The current mapping of standard DICOM property names to local property names is not optimal.\n // The inconsistency in property naming makes this function increasingly complex.\n // A possible solution to improve this would be adapt retriveMetadata names to use DICOM standard names as in dicomTagDescriptions.js\n\n }], [{\n key: \"getPropertyName\",\n value: function getPropertyName(tagOrProperty) {\n var propertyName;\n var tagInfo = DICOMTagDescriptions.find(tagOrProperty);\n\n if (tagInfo !== void 0) {\n // This function tries to translate standard DICOM property names into local naming convention.\n propertyName = tagInfo.keyword.replace(/^SOP/, 'sop').replace(/UID$/, 'Uid').replace(/ID$/, 'Id');\n propertyName = propertyName.charAt(0).toLowerCase() + propertyName.substr(1);\n }\n\n return propertyName;\n }\n }]);\n\n return OHIFInstanceMetadata;\n}(InstanceMetadata);\n\nvar OHIFSeriesMetadata =\n/*#__PURE__*/\nfunction (_SeriesMetadata) {\n _inherits(OHIFSeriesMetadata, _SeriesMetadata);\n\n /**\n * @param {Object} Series object.\n */\n function OHIFSeriesMetadata(data, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFSeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFSeriesMetadata).call(this, data, uid));\n\n _this.init(study);\n\n return _this;\n }\n\n _createClass(OHIFSeriesMetadata, [{\n key: \"init\",\n value: function init(study) {\n var _this2 = this;\n\n var series = this.getData(); // define \"_seriesInstanceUID\" protected property...\n\n Object.defineProperty(this, '_seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series.seriesInstanceUid\n }); // populate internal list of instances...\n\n series.instances.forEach(function (instance) {\n _this2.addInstance(new OHIFInstanceMetadata(instance, series, study));\n });\n }\n }]);\n\n return OHIFSeriesMetadata;\n}(SeriesMetadata);\n\nvar OHIFStudyMetadata =\n/*#__PURE__*/\nfunction (_StudyMetadata) {\n _inherits(OHIFStudyMetadata, _StudyMetadata);\n\n /**\n * @param {Object} Study object.\n */\n function OHIFStudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, OHIFStudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFStudyMetadata).call(this, data, uid));\n\n _this.init();\n\n return _this;\n }\n\n _createClass(OHIFStudyMetadata, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var study = this.getData(); // define \"_studyInstanceUID\" protected property\n\n Object.defineProperty(this, '_studyInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study.studyInstanceUid\n }); // populate internal list of series\n\n study.seriesList.forEach(function (series) {\n _this2.addSeries(new OHIFSeriesMetadata(series, study));\n });\n }\n }]);\n\n return OHIFStudyMetadata;\n}(StudyMetadata);\n\nvar getDisplaySets = function getDisplaySets(studyMetadata, seriesNumber, iteratorFunction) {\n var iteratorFn = typeof iteratorFunction !== 'function' ? createStacks : iteratorFunction;\n return iteratorFn(studyMetadata, seriesNumber);\n};\n\nvar sortingManager = {\n getDisplaySets: getDisplaySets\n};\n\nfunction createDisplaySets(studies) {\n // Define the OHIF.viewer.data global object\n // TODO: Save all data that is currently in OHIF.viewer in redux instead\n //OHIF.viewer.data = OHIF.viewer.data || {};\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n //OHIF.viewer.data.studyInstanceUids = [];\n var updatedStudies = studies.map(function (study) {\n var studyMetadata = new OHIFStudyMetadata(study, study.studyInstanceUid);\n var displaySets = study.displaySets;\n\n if (!study.displaySets) {\n displaySets = sortingManager.getDisplaySets(studyMetadata);\n study.displaySets = displaySets;\n }\n\n studyMetadata.setDisplaySets(displaySets); //OHIF.viewer.Studies.insert(study);\n //OHIF.viewer.StudyMetadataList.insert(studyMetadata);\n //OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);\n // Updates WADO-RS metaDataManager\n\n updateMetaDataManager(study);\n return study;\n });\n return updatedStudies;\n}\n\nvar utils = {\n guid: guid,\n ObjectPath: ObjectPath,\n absoluteUrl: absoluteUrl,\n addServers: addServers,\n sortBy: sortBy,\n writeScript: writeScript,\n StackManager: StackManager,\n createStacks: createStacks,\n createDisplaySets: createDisplaySets\n};\n\nvar metadata = {\n Metadata: Metadata,\n WadoRsMetaDataBuilder: WadoRsMetaDataBuilder,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n OHIFStudyMetadata: OHIFStudyMetadata,\n OHIFSeriesMetadata: OHIFSeriesMetadata,\n OHIFInstanceMetadata: OHIFInstanceMetadata\n};\n\nvar FUNCTION$2 = 'function';\n\nvar MetadataProvider =\n/*#__PURE__*/\nfunction () {\n function MetadataProvider() {\n _classCallCheck(this, MetadataProvider);\n\n // Define the main \"metadataLookup\" private property as an immutable property.\n Object.defineProperty(this, 'metadataLookup', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: new Map()\n }); // Local reference to provider function bound to current instance.\n\n Object.defineProperty(this, '_provider', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n }\n /**\n * Cornerstone Metadata provider to store image meta data\n * Data from instances, series, and studies are associated with\n * imageIds to facilitate usage of this information by Cornerstone's Tools\n *\n * e.g. the imagePlane metadata object contains instance information about\n * row/column pixel spacing, patient position, and patient orientation. It\n * is used in CornerstoneTools to position reference lines and orientation markers.\n *\n * @param {String} imageId The Cornerstone ImageId\n * @param {Object} data An object containing instance, series, and study metadata\n */\n\n\n _createClass(MetadataProvider, [{\n key: \"addMetadata\",\n value: function addMetadata(imageId, data) {\n var instanceMetadata = data.instance;\n var seriesMetadata = data.series;\n var studyMetadata = data.study;\n var numImages = data.numImages;\n var metadata = {};\n metadata.frameNumber = data.frameNumber;\n metadata.study = {\n accessionNumber: studyMetadata.accessionNumber,\n patientId: studyMetadata.patientId,\n studyInstanceUid: studyMetadata.studyInstanceUid,\n studyDate: studyMetadata.studyDate,\n studyTime: studyMetadata.studyTime,\n studyDescription: studyMetadata.studyDescription,\n institutionName: studyMetadata.institutionName,\n patientHistory: studyMetadata.patientHistory\n };\n metadata.series = {\n seriesDescription: seriesMetadata.seriesDescription,\n seriesNumber: seriesMetadata.seriesNumber,\n seriesDate: seriesMetadata.seriesDate,\n seriesTime: seriesMetadata.seriesTime,\n modality: seriesMetadata.modality,\n seriesInstanceUid: seriesMetadata.seriesInstanceUid,\n numImages: numImages\n };\n metadata.instance = instanceMetadata;\n metadata.patient = {\n name: studyMetadata.patientName,\n id: studyMetadata.patientId,\n birthDate: studyMetadata.patientBirthDate,\n sex: studyMetadata.patientSex,\n age: studyMetadata.patientAge\n }; // If there is sufficient information, populate\n // the imagePlane object for easier use in the Viewer\n\n metadata.imagePlane = this.getImagePlane(instanceMetadata); // Add the metadata to the imageId lookup object\n\n this.metadataLookup.set(imageId, metadata);\n }\n /**\n * Return the metadata for the given imageId\n * @param {String} imageId The Cornerstone ImageId\n * @returns image metadata\n */\n\n }, {\n key: \"getMetadata\",\n value: function getMetadata(imageId) {\n return this.metadataLookup.get(imageId);\n }\n /**\n * Adds a set of metadata to the Cornerstone metadata provider given a specific\n * imageId, type, and dataset\n *\n * @param imageId\n * @param type (e.g. series, instance, tagDisplay)\n * @param data\n */\n\n }, {\n key: \"addSpecificMetadata\",\n value: function addSpecificMetadata(imageId, type, data) {\n var metadata = {};\n metadata[type] = data;\n var oldMetadata = this.metadataLookup.get(imageId);\n this.metadataLookup.set(imageId, Object.assign(oldMetadata, metadata));\n }\n }, {\n key: \"getFromImage\",\n value: function getFromImage(image, type, tag, attrName, defaultValue) {\n var value;\n\n if (image.data) {\n value = this.getFromDataSet(image.data, type, tag);\n } else {\n value = image.instance[attrName];\n }\n\n return value === null ? defaultValue : value;\n }\n }, {\n key: \"getFromDataSet\",\n value: function getFromDataSet(dataSet, type, tag) {\n if (!dataSet) {\n return;\n }\n\n var fn = dataSet[type];\n\n if (!fn) {\n return;\n }\n\n return fn.call(dataSet, tag);\n }\n }, {\n key: \"getFrameIncrementPointer\",\n value: function getFrameIncrementPointer(image) {\n var dataSet = image.data;\n var frameInstancePointer = '';\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n var frameInstancePointerNames = {\n x00181063: 'frameTime',\n x00181065: 'frameTimeVector'\n }; // (0028,0009) = Frame Increment Pointer\n\n var frameInstancePointerTag = parsingUtils.attributeTag(dataSet, 'x00280009');\n frameInstancePointer = frameInstancePointerNames[frameInstancePointerTag];\n } else {\n frameInstancePointer = image.instance.frameIncrementPointer;\n }\n\n return frameInstancePointer || '';\n }\n }, {\n key: \"getFrameTimeVector\",\n value: function getFrameTimeVector(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n return parsingUtils.floatArray(dataSet, 'x00181065');\n }\n\n return image.instance.frameTimeVector;\n }\n }, {\n key: \"getFrameTime\",\n value: function getFrameTime(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time (0018,1063) field or is not defined (for addtional flexibility).\n // Yet another value is possible for this field (5200,9230 for Multi-frame Functional Groups)\n // but that case is currently not supported.\n return dataSet.floatString('x00181063', -1);\n }\n\n return image.instance.frameTime;\n }\n /**\n * Updates the related metadata for missing fields given a specified image\n *\n * @param image\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(image) {\n var imageMetadata = this.metadataLookup.get(image.imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n imageMetadata.patient.age = imageMetadata.patient.age || this.getFromDataSet(image.data, 'string', 'x00101010');\n imageMetadata.instance.rows = imageMetadata.instance.rows || image.rows;\n imageMetadata.instance.columns = imageMetadata.instance.columns || image.columns;\n imageMetadata.instance.sopClassUid = imageMetadata.instance.sopClassUid || this.getFromDataSet(image.data, 'string', 'x00080016');\n imageMetadata.instance.sopInstanceUid = imageMetadata.instance.sopInstanceUid || this.getFromDataSet(image.data, 'string', 'x00080018');\n imageMetadata.instance.pixelSpacing = imageMetadata.instance.pixelSpacing || this.getFromDataSet(image.data, 'string', 'x00280030');\n imageMetadata.instance.frameOfReferenceUID = imageMetadata.instance.frameOfReferenceUID || this.getFromDataSet(image.data, 'string', 'x00200052');\n imageMetadata.instance.imageOrientationPatient = imageMetadata.instance.imageOrientationPatient || this.getFromDataSet(image.data, 'string', 'x00200037');\n imageMetadata.instance.imagePositionPatient = imageMetadata.instance.imagePositionPatient || this.getFromDataSet(image.data, 'string', 'x00200032');\n imageMetadata.instance.sliceThickness = imageMetadata.instance.sliceThickness || this.getFromDataSet(image.data, 'string', 'x00180050');\n imageMetadata.instance.sliceLocation = imageMetadata.instance.sliceLocation || this.getFromDataSet(image.data, 'string', 'x00201041');\n imageMetadata.instance.tablePosition = imageMetadata.instance.tablePosition || this.getFromDataSet(image.data, 'string', 'x00189327');\n imageMetadata.instance.spacingBetweenSlices = imageMetadata.instance.spacingBetweenSlices || this.getFromDataSet(image.data, 'string', 'x00180088');\n imageMetadata.instance.lossyImageCompression = imageMetadata.instance.lossyImageCompression || this.getFromDataSet(image.data, 'string', 'x00282110');\n imageMetadata.instance.lossyImageCompressionRatio = imageMetadata.instance.lossyImageCompressionRatio || this.getFromDataSet(image.data, 'string', 'x00282112');\n imageMetadata.instance.frameIncrementPointer = imageMetadata.instance.frameIncrementPointer || this.getFromDataSet(image.data, 'string', 'x00280009');\n imageMetadata.instance.frameTime = imageMetadata.instance.frameTime || this.getFromDataSet(image.data, 'string', 'x00181063');\n imageMetadata.instance.frameTimeVector = imageMetadata.instance.frameTimeVector || this.getFromDataSet(image.data, 'string', 'x00181065');\n\n if ((image.data || image.instance) && !imageMetadata.instance.multiframeMetadata) {\n imageMetadata.instance.multiframeMetadata = this.getMultiframeModuleMetadata(image);\n }\n\n imageMetadata.imagePlane = imageMetadata.imagePlane || this.getImagePlane(imageMetadata.instance);\n }\n /**\n * Constructs and returns the imagePlane given the metadata instance\n *\n * @param metadataInstance The metadata instance (InstanceMetadata class) containing information to construct imagePlane\n * @returns imagePlane The constructed imagePlane to be used in viewer easily\n */\n\n }, {\n key: \"getImagePlane\",\n value: function getImagePlane(instance) {\n if (!instance.rows || !instance.columns || !instance.pixelSpacing || !instance.frameOfReferenceUID || !instance.imageOrientationPatient || !instance.imagePositionPatient) {\n return;\n }\n\n var imageOrientation = instance.imageOrientationPatient.split('\\\\');\n var imagePosition = instance.imagePositionPatient.split('\\\\');\n var columnPixelSpacing = 1.0;\n var rowPixelSpacing = 1.0;\n\n if (instance.pixelSpacing) {\n var split = instance.pixelSpacing.split('\\\\');\n rowPixelSpacing = parseFloat(split[0]);\n columnPixelSpacing = parseFloat(split[1]);\n }\n\n var cornerstoneMath = external.cornerstoneMath;\n return {\n frameOfReferenceUID: instance.frameOfReferenceUID,\n rows: instance.rows,\n columns: instance.columns,\n rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),\n columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),\n imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),\n rowPixelSpacing: rowPixelSpacing,\n columnPixelSpacing: columnPixelSpacing\n };\n }\n /**\n * This function extracts miltiframe information from a dicomParser.DataSet object.\n *\n * @param dataSet {Object} An instance of dicomParser.DataSet object where multiframe information can be found.\n * @return {Object} An object containing multiframe image metadata (frameIncrementPointer, frameTime, frameTimeVector, etc).\n */\n\n }, {\n key: \"getMultiframeModuleMetadata\",\n value: function getMultiframeModuleMetadata(image) {\n var imageInfo = {\n isMultiframeImage: false,\n frameIncrementPointer: null,\n numberOfFrames: 0,\n frameTime: 0,\n frameTimeVector: null,\n averageFrameRate: 0 // backwards compatibility only... it might be useless in the future\n\n };\n var frameTime;\n var numberOfFrames = this.getFromImage(image, 'intString', 'x00280008', 'numberOfFrames', -1);\n\n if (numberOfFrames > 0) {\n // set multi-frame image indicator\n imageInfo.isMultiframeImage = true;\n imageInfo.numberOfFrames = numberOfFrames; // (0028,0009) = Frame Increment Pointer\n\n var frameIncrementPointer = this.getFrameIncrementPointer(image);\n\n if (frameIncrementPointer === 'frameTimeVector') {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n var frameTimeVector = this.getFrameTimeVector(image);\n\n if (frameTimeVector instanceof Array && frameTimeVector.length > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTimeVector = frameTimeVector;\n frameTime = frameTimeVector.reduce(function (a, b) {\n return a + b;\n }) / frameTimeVector.length;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n } else if (frameIncrementPointer === 'frameTime' || frameIncrementPointer === '') {\n frameTime = this.getFrameTime(image);\n\n if (frameTime > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTime = frameTime;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n }\n }\n\n return imageInfo;\n }\n /**\n * Get a bound reference to the provider function.\n */\n\n }, {\n key: \"getProvider\",\n value: function getProvider() {\n var provider = this._provider;\n\n if (_typeof(this._provider) !== FUNCTION$2) {\n provider = this.provider.bind(this);\n this._provider = provider;\n }\n\n return provider;\n }\n /**\n * Looks up metadata for Cornerstone Tools given a specified type and imageId\n * A type may be, e.g. 'study', or 'patient', or 'imagePlane'. These types\n * are keys in the stored metadata objects.\n *\n * @param type\n * @param imageId\n * @returns {Object} Relevant metadata of the specified type\n */\n\n }, {\n key: \"provider\",\n value: function provider(type, imageId) {\n // TODO: Cornerstone Tools use 'imagePlaneModule', but OHIF use 'imagePlane'. It must be consistent.\n if (type === 'imagePlaneModule') {\n type = 'imagePlane';\n }\n\n var imageMetadata = this.metadataLookup.get(imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n if (imageMetadata.hasOwnProperty(type)) {\n return imageMetadata[type];\n }\n }\n }]);\n\n return MetadataProvider;\n}();\n\nvar cornerstone$1 = {\n MetadataProvider: MetadataProvider,\n getBoundingBox: getBoundingBox,\n pixelToPage: pixelToPage,\n repositionTextBox: repositionTextBox\n};\n\nvar StudyPrefetcher =\n/*#__PURE__*/\nfunction () {\n function StudyPrefetcher(studies) {\n var _this = this;\n\n _classCallCheck(this, StudyPrefetcher);\n\n _defineProperty(this, \"cacheFullHandler\", function () {\n log$1.warn('Cache full');\n\n _this.stopPrefetching();\n });\n\n this.studies = studies || [];\n this.prefetchDisplaySetsTimeout = 300;\n this.lastActiveViewportElement = null;\n external.cornerstone.events.addEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n\n _createClass(StudyPrefetcher, [{\n key: \"destroy\",\n value: function destroy() {\n this.stopPrefetching();\n external.cornerstone.events.removeEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n }, {\n key: \"setStudies\",\n value: function setStudies(studies) {\n this.stopPrefetching();\n this.studies = studies;\n }\n }, {\n key: \"prefetch\",\n value: function prefetch() {\n if (!this.studies || !this.studies.length) {\n return;\n }\n\n this.stopPrefetching();\n this.prefetchDisplaySets();\n }\n }, {\n key: \"stopPrefetching\",\n value: function stopPrefetching() {\n external.cornerstoneTools.requestPoolManager.clearRequestStack('prefetch');\n }\n }, {\n key: \"prefetchDisplaySetsAsync\",\n value: function prefetchDisplaySetsAsync(timeout) {\n var _this2 = this;\n\n timeout = timeout || this.prefetchDisplaySetsTimeout;\n clearTimeout(this.prefetchDisplaySetsHandler);\n this.prefetchDisplaySetsHandler = setTimeout(function () {\n _this2.prefetchDisplaySets();\n }, timeout);\n }\n }, {\n key: \"prefetchDisplaySets\",\n value: function prefetchDisplaySets() {\n // TODO: Allow passing in config\n var config = {\n order: 'closest',\n displaySetCount: 1\n };\n var displaySetsToPrefetch = this.getDisplaySetsToPrefetch(config);\n var imageIds = this.getImageIdsFromDisplaySets(displaySetsToPrefetch);\n this.prefetchImageIds(imageIds);\n }\n }, {\n key: \"prefetchImageIds\",\n value: function prefetchImageIds(imageIds) {\n var nonCachedImageIds = this.filterCachedImageIds(imageIds);\n var requestPoolManager = external.cornerstoneTools.requestPoolManager;\n var requestType = 'prefetch';\n var preventCache = false;\n\n var noop = function noop() {};\n\n nonCachedImageIds.forEach(function (imageId) {\n requestPoolManager.addRequest({}, imageId, requestType, preventCache, noop, noop);\n });\n requestPoolManager.startGrabbing();\n }\n }, {\n key: \"getStudy\",\n value: function getStudy(image) {\n var studyMetadata = external.cornerstone.metaData.get('study', image.imageId);\n return OHIF.viewer.Studies.find(function (study) {\n return study.studyInstanceUid === studyMetadata.studyInstanceUid;\n });\n }\n }, {\n key: \"getSeries\",\n value: function getSeries(study, image) {\n var seriesMetadata = external.cornerstone.metaData.get('series', image.imageId);\n var studyMetadata = OHIF.viewerbase.getStudyMetadata(study);\n return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);\n }\n }, {\n key: \"getInstance\",\n value: function getInstance(series, image) {\n var instanceMetadata = external.cornerstone.metaData.get('instance', image.imageId);\n return series.getInstanceByUID(instanceMetadata.sopInstanceUid);\n }\n }, {\n key: \"getActiveDisplaySet\",\n value: function getActiveDisplaySet(displaySets, instance) {\n return displaySets.find(function (displaySet) {\n return displaySet.images.some(function (displaySetImage) {\n return displaySetImage.sopInstanceUid === instance.sopInstanceUid;\n });\n });\n }\n }, {\n key: \"getDisplaySetsToPrefetch\",\n value: function getDisplaySetsToPrefetch(config) {\n var image = this.getActiveViewportImage();\n\n if (!image || !config || !config.displaySetCount) {\n return [];\n }\n /*const study = this.getStudy(image);\n const series = this.getSeries(study, image);\n const instance = this.getInstance(series, image);*/\n\n\n var displaySets = study.displaySets;\n var activeDisplaySet = null; //this.getActiveDisplaySet(displaySets, instance);\n\n var prefetchMethodMap = {\n topdown: 'getFirstDisplaySets',\n downward: 'getNextDisplaySets',\n closest: 'getClosestDisplaySets'\n };\n var prefetchOrder = config.order;\n var methodName = prefetchMethodMap[prefetchOrder];\n var getDisplaySets = this[methodName];\n\n if (!getDisplaySets) {\n if (prefetchOrder) {\n log$1.warn(\"Invalid prefetch order configuration (\".concat(prefetchOrder, \")\"));\n }\n\n return [];\n }\n\n return getDisplaySets.call(this, displaySets, activeDisplaySet, config.displaySetCount);\n }\n }, {\n key: \"getFirstDisplaySets\",\n value: function getFirstDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var length = displaySets.length;\n var selectedDisplaySets = [];\n\n for (var i = 0; i < length && displaySetCount; i++) {\n var displaySet = displaySets[i];\n\n if (displaySet !== activeDisplaySet) {\n selectedDisplaySets.push(displaySet);\n displaySetCount--;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getNextDisplaySets\",\n value: function getNextDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var begin = activeDisplaySetIndex + 1;\n var end = Math.min(begin + displaySetCount, displaySets.length);\n return displaySets.slice(begin, end);\n }\n }, {\n key: \"getClosestDisplaySets\",\n value: function getClosestDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var length = displaySets.length;\n var selectedDisplaySets = [];\n var left = activeDisplaySetIndex - 1;\n var right = activeDisplaySetIndex + 1;\n\n while ((left >= 0 || right < length) && displaySetCount) {\n if (left >= 0) {\n selectedDisplaySets.push(displaySets[left]);\n displaySetCount--;\n left--;\n }\n\n if (right < length && displaySetCount) {\n selectedDisplaySets.push(displaySets[right]);\n displaySetCount--;\n right++;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getImageIdsFromDisplaySets\",\n value: function getImageIdsFromDisplaySets(displaySets) {\n var _this3 = this;\n\n var imageIds = [];\n displaySets.forEach(function (displaySet) {\n imageIds = imageIds.concat(_this3.getImageIdsFromDisplaySet(displaySet));\n });\n return imageIds;\n }\n }, {\n key: \"getImageIdsFromDisplaySet\",\n value: function getImageIdsFromDisplaySet(displaySet) {\n var imageIds = []; // TODO: This duplicates work done by the stack manager\n\n displaySet.images.forEach(function (image) {\n var numFrames = image.numFrames;\n\n if (numFrames > 1) {\n for (var i = 0; i < numFrames; i++) {\n var imageId = getImageId(image, i);\n imageIds.push(imageId);\n }\n } else {\n var _imageId = getImageId(image);\n\n imageIds.push(_imageId);\n }\n });\n return imageIds;\n }\n }, {\n key: \"filterCachedImageIds\",\n value: function filterCachedImageIds(imageIds) {\n var _this4 = this;\n\n return imageIds.filter(function (imageId) {\n return !_this4.isImageCached(imageId);\n });\n }\n }, {\n key: \"isImageCached\",\n value: function isImageCached(imageId) {\n var image = external.cornerstone.imageCache.imageCache[imageId];\n return image && image.sizeInBytes;\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!StudyPrefetcher.instance) {\n StudyPrefetcher.instance = new StudyPrefetcher([]);\n }\n\n return StudyPrefetcher.instance;\n }\n }]);\n\n return StudyPrefetcher;\n}();\n\nvar setToolActive = function setToolActive(tool) {\n return {\n type: 'SET_TOOL_ACTIVE',\n tool: tool\n };\n};\nvar setViewportActive = function setViewportActive(viewportIndex) {\n return {\n type: 'SET_VIEWPORT_ACTIVE',\n viewportIndex: viewportIndex\n };\n};\nvar setLayout = function setLayout(layout) {\n return {\n type: 'SET_LAYOUT',\n layout: layout\n };\n};\nvar setStudyLoadingProgress = function setStudyLoadingProgress(progressId, progressData) {\n return {\n type: 'SET_STUDY_LOADING_PROGRESS',\n progressId: progressId,\n progressData: progressData\n };\n};\nvar clearStudyLoadingProgress = function clearStudyLoadingProgress(progressId) {\n return {\n type: 'CLEAR_STUDY_LOADING_PROGRESS',\n progressId: progressId\n };\n};\nvar setViewportSpecificData = function setViewportSpecificData(viewportIndex, data) {\n return {\n type: 'SET_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex,\n data: data\n };\n};\nvar clearViewportSpecificData = function clearViewportSpecificData(viewportIndex) {\n return {\n type: 'CLEAR_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex\n };\n};\nvar addPlugin = function addPlugin(plugin) {\n return {\n type: \"ADD_PLUGIN\",\n plugin: plugin\n };\n};\nvar setAvailableButtons = function setAvailableButtons(buttons) {\n return {\n type: 'SET_AVAILABLE_BUTTONS',\n buttons: buttons\n };\n};\nvar actions = {\n setToolActive: setToolActive,\n setViewportActive: setViewportActive,\n setLayout: setLayout,\n setStudyLoadingProgress: setStudyLoadingProgress,\n clearStudyLoadingProgress: clearStudyLoadingProgress,\n setViewportSpecificData: setViewportSpecificData,\n clearViewportSpecificData: clearViewportSpecificData,\n addPlugin: addPlugin,\n setAvailableButtons: setAvailableButtons\n};\n\nvar BaseLoadingListener =\n/*#__PURE__*/\nfunction () {\n function BaseLoadingListener(stack) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BaseLoadingListener);\n\n this.id = BaseLoadingListener.getNewId();\n this.stack = stack;\n this.startListening();\n this.statsItemsLimit = options.statsItemsLimit || 2;\n this.stats = {\n items: [],\n total: 0,\n elapsedTime: 0,\n speed: 0\n };\n this._setProgressData = options._setProgressData;\n this._clearProgressById = options._clearProgressById; // Register the start point to make it possible to calculate\n // bytes/s or frames/s when the first byte or frame is received\n\n this._addStatsData(0); // Update the progress before starting the download\n // to make it possible to update the UI\n\n\n this._updateProgress();\n }\n\n _createClass(BaseLoadingListener, [{\n key: \"_addStatsData\",\n value: function _addStatsData(value) {\n var date = new Date();\n var stats = this.stats;\n var items = stats.items;\n var newItem = {\n value: value,\n date: date\n };\n items.push(newItem);\n stats.total += newItem.value; // Remove items until it gets below the limit\n\n while (items.length > this.statsItemsLimit) {\n var item = items.shift();\n stats.total -= item.value;\n } // Update the elapsedTime (seconds) based on first and last\n // elements and recalculate the speed (bytes/s or frames/s)\n\n\n if (items.length > 1) {\n var oldestItem = items[0];\n stats.elapsedTime = (newItem.date.getTime() - oldestItem.date.getTime()) / 1000;\n stats.speed = (stats.total - oldestItem.value) / stats.elapsedTime;\n }\n }\n }, {\n key: \"_getProgressId\",\n value: function _getProgressId() {\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n return 'StackProgress:' + displaySetInstanceUid;\n }\n }, {\n key: \"_clearProgress\",\n value: function _clearProgress() {\n var progressId = this._getProgressId();\n\n this._clearProgressById(progressId);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n throw new Error('`startListening` must be implemented by child classes');\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n throw new Error('`stopListening` must be implemented by child classes');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stopListening();\n\n this._clearProgress();\n }\n }], [{\n key: \"getNewId\",\n value: function getNewId() {\n var timeSlice = new Date().getTime().toString().slice(-8);\n var randomNumber = parseInt(Math.random() * 1000000000);\n return timeSlice.toString() + randomNumber.toString();\n }\n }]);\n\n return BaseLoadingListener;\n}();\n\nvar DICOMFileLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener) {\n _inherits(DICOMFileLoadingListener, _BaseLoadingListener);\n\n function DICOMFileLoadingListener(stack, options) {\n var _this;\n\n _classCallCheck(this, DICOMFileLoadingListener);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DICOMFileLoadingListener).call(this, stack, options));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"_imageLoadProgressEventHandler\", function (e) {\n var eventData = e.detail;\n\n var dataSetUrl = _this._convertImageIdToDataSetUrl(eventData.imageId);\n\n var bytesDiff = eventData.loaded - _this._lastLoaded;\n\n if (!_this._dataSetUrl === dataSetUrl) {\n return;\n } // Add the bytes downloaded to the stats\n\n\n _this._addStatsData(bytesDiff); // Update the download progress\n\n\n _this._updateProgress(eventData); // Cache the last eventData.loaded value\n\n\n _this._lastLoaded = eventData.loaded;\n });\n\n _this._dataSetUrl = _this._getDataSetUrl(stack);\n _this._lastLoaded = 0; // Check how many instances has already been download (cached)\n\n _this._checkCachedData();\n\n return _this;\n }\n\n _createClass(DICOMFileLoadingListener, [{\n key: \"_checkCachedData\",\n value: function _checkCachedData() {\n var dataSet = external.cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(this._dataSetUrl);\n\n if (dataSet) {\n var dataSetLength = dataSet.byteArray.length;\n\n this._updateProgress({\n percentComplete: 100,\n loaded: dataSetLength,\n total: dataSetLength\n });\n }\n }\n }, {\n key: \"_getImageLoadProgressEventName\",\n value: function _getImageLoadProgressEventName() {\n // TODO: Add this event as a constant in Cornerstone\n return 'cornerstoneimageloadprogress.' + this.id;\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n this.imageLoadProgressEventHandler = this._imageLoadProgressEventHandle.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress(eventData) {\n var progressId = this._getProgressId();\n\n eventData = eventData || {};\n var progressData = {\n multiFrame: false,\n percentComplete: eventData.percentComplete,\n bytesLoaded: eventData.loaded,\n bytesTotal: eventData.total,\n bytesPerSecond: this.stats.speed\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_convertImageIdToDataSetUrl\",\n value: function _convertImageIdToDataSetUrl(imageId) {\n // Remove the prefix (\"dicomweb:\" or \"wadouri:\"\")\n imageId = imageId.replace(/^(dicomweb:|wadouri:)/i, ''); // Remove \"frame=999&\" from the imageId\n\n imageId = imageId.replace(/frame=\\d+&?/i, ''); // Remove the last \"&\" like in \"http://...?foo=1&bar=2&\"\n\n imageId = imageId.replace(/&$/, '');\n return imageId;\n }\n }, {\n key: \"_getDataSetUrl\",\n value: function _getDataSetUrl(stack) {\n var imageId = stack.imageIds[0];\n return this._convertImageIdToDataSetUrl(imageId);\n }\n }]);\n\n return DICOMFileLoadingListener;\n}(BaseLoadingListener);\n\nvar StackLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener2) {\n _inherits(StackLoadingListener, _BaseLoadingListener2);\n\n function StackLoadingListener(stack) {\n var _this2;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StackLoadingListener);\n\n options.statsItemsLimit = 20;\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(StackLoadingListener).call(this, stack, options));\n _this2.imageDataMap = _this2._convertImageIdsArrayToMap(stack.imageIds);\n _this2.framesStatus = _this2._createArray(stack.imageIds.length, false);\n _this2.loadedCount = 0; // Check how many instances has already been download (cached)\n\n _this2._checkCachedData();\n\n return _this2;\n }\n\n _createClass(StackLoadingListener, [{\n key: \"_convertImageIdsArrayToMap\",\n value: function _convertImageIdsArrayToMap(imageIds) {\n var imageIdsMap = new Map();\n\n for (var i = 0; i < imageIds.length; i++) {\n imageIdsMap.set(imageIds[i], {\n index: i,\n loaded: false\n });\n }\n\n return imageIdsMap;\n }\n }, {\n key: \"_createArray\",\n value: function _createArray(length, defaultValue) {\n // `new Array(length)` is an anti-pattern in javascript because its\n // funny API. Otherwise I would go for `new Array(length).fill(false)`\n var array = [];\n\n for (var i = 0; i < length; i++) {\n array[i] = defaultValue;\n }\n\n return array;\n }\n }, {\n key: \"_checkCachedData\",\n value: function _checkCachedData() {// const imageIds = this.stack.imageIds;\n // TODO: No way to check status of Promise.\n\n /*for(let i = 0; i < imageIds.length; i++) {\n const imageId = imageIds[i];\n const imagePromise = cornerstone.imageCache.getImageLoadObject(imageId).promise;\n if (imagePromise && (imagePromise.state() === 'resolved')) {\n this._updateFrameStatus(imageId, true);\n }\n }*/\n }\n }, {\n key: \"_getImageLoadedEventName\",\n value: function _getImageLoadedEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_LOADED, \".\").concat(this.id);\n }\n }, {\n key: \"_getImageCachePromiseRemoveEventName\",\n value: function _getImageCachePromiseRemoveEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, \".\").concat(this.id);\n }\n }, {\n key: \"_imageLoadedEventHandler\",\n value: function _imageLoadedEventHandler(e) {\n this._updateFrameStatus(e.detail.image.imageId, true);\n }\n }, {\n key: \"_imageCachePromiseRemovedEventHandler\",\n value: function _imageCachePromiseRemovedEventHandler(e) {\n this._updateFrameStatus(e.detail.imageId, false);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n this.imageLoadedEventHandler = this._imageLoadedEventHandler.bind(this);\n this.imageCachePromiseRemovedEventHandler = this._imageCachePromiseRemovedEventHandler.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.addEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.removeEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"_updateFrameStatus\",\n value: function _updateFrameStatus(imageId, loaded) {\n var imageData = this.imageDataMap.get(imageId);\n\n if (!imageData || imageData.loaded === loaded) {\n return;\n } // Add one more frame to the stats\n\n\n if (loaded) {\n this._addStatsData(1);\n }\n\n imageData.loaded = loaded;\n this.framesStatus[imageData.index] = loaded;\n this.loadedCount += loaded ? 1 : -1;\n\n this._updateProgress();\n }\n }, {\n key: \"_setProgressData\",\n value: function _setProgressData(progressId, progressData) {\n // TODO: This method (and _clearProgressById) need to access\n // the Redux store and should therefore be provided from the\n // application. I've added a workaround to pass this in through\n // the 'options' variable on instantiation, but this is really ugly.\n // We could consider making the StudyLoadingListener a higher-order\n // component which would set this stuff itself.\n throw new Error(\"The _setProgressData function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_clearProgressById\",\n value: function _clearProgressById(progressId) {\n throw new Error(\"The _clearProgressById function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var loadedFramesCount = this.loadedCount;\n var loadingFramesCount = totalFramesCount - loadedFramesCount;\n var percentComplete = Math.round(loadedFramesCount / totalFramesCount * 100);\n\n var progressId = this._getProgressId();\n\n var progressData = {\n multiFrame: true,\n totalFramesCount: totalFramesCount,\n loadedFramesCount: loadedFramesCount,\n loadingFramesCount: loadingFramesCount,\n percentComplete: percentComplete,\n framesPerSecond: this.stats.speed,\n framesStatus: this.framesStatus\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_logProgress\",\n value: function _logProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n var progressBar = '[';\n\n for (var i = 0; i < totalFramesCount; i++) {\n var ch = this.framesStatus[i] ? '|' : '.';\n progressBar += \"\".concat(ch);\n }\n\n progressBar += ']';\n log.info(\"\".concat(displaySetInstanceUid, \": \").concat(progressBar));\n }\n }]);\n\n return StackLoadingListener;\n}(BaseLoadingListener);\n\nvar StudyLoadingListener =\n/*#__PURE__*/\nfunction () {\n function StudyLoadingListener(options) {\n _classCallCheck(this, StudyLoadingListener);\n\n this.listeners = {};\n this.options = options;\n }\n\n _createClass(StudyLoadingListener, [{\n key: \"addStack\",\n value: function addStack(stack, stackMetaData) {\n var displaySetInstanceUid = stack.displaySetInstanceUid;\n\n if (!this.listeners[displaySetInstanceUid]) {\n var listener = this._createListener(stack, stackMetaData);\n\n if (listener) {\n this.listeners[displaySetInstanceUid] = listener;\n }\n }\n }\n }, {\n key: \"addStudy\",\n value: function addStudy(study) {\n var _this3 = this;\n\n study.displaySets.forEach(function (displaySet) {\n var stack = StackManager.findOrCreateStack(study, displaySet);\n\n _this3.addStack(stack, {\n isMultiFrame: displaySet.isMultiFrame\n });\n });\n }\n }, {\n key: \"addStudies\",\n value: function addStudies(studies) {\n var _this4 = this;\n\n if (!studies || !studies.length) {\n return;\n }\n\n studies.forEach(function (study) {\n return _this4.addStudy(study);\n });\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var displaySetInstanceUids = Object.keys(this.listeners);\n var length = displaySetInstanceUids.length;\n\n for (var i = 0; i < length; i++) {\n var displaySetInstanceUid = displaySetInstanceUids[i];\n var displaySet = this.listeners[displaySetInstanceUid];\n displaySet.destroy();\n }\n\n this.listeners = {};\n }\n }, {\n key: \"_createListener\",\n value: function _createListener(stack, stackMetaData) {\n var schema = this._getSchema(stack); // A StackLoadingListener can be created if it's wadors or not a multiframe\n // wadouri instance (single file) that means \"N\" files will have to be\n // downloaded where \"N\" is the number of frames. DICOMFileLoadingListener\n // is created only if it's a single DICOM file and there's no way to know\n // how many frames has already been loaded (bytes/s instead of frames/s).\n\n\n if (schema === 'wadors' || !stackMetaData.isMultiFrame) {\n return new StackLoadingListener(stack, this.options);\n } else {\n return new DICOMFileLoadingListener(stack, this.options);\n }\n }\n }, {\n key: \"_getSchema\",\n value: function _getSchema(stack) {\n var imageId = stack.imageIds[0];\n var colonIndex = imageId.indexOf(':');\n return imageId.substring(0, colonIndex);\n } // Singleton\n\n }], [{\n key: \"getInstance\",\n value: function getInstance(options) {\n if (!StudyLoadingListener._instance) {\n StudyLoadingListener._instance = new StudyLoadingListener(options);\n }\n\n return StudyLoadingListener._instance;\n }\n }]);\n\n return StudyLoadingListener;\n}();\n\n/**\n * Constants\n */\nvar PROPERTY_SEPARATOR = '.';\nvar ORDER_ASC = 'asc';\nvar ORDER_DESC = 'desc';\nvar MIN_COUNT = 0x00000000;\nvar MAX_COUNT = 0x7fffffff;\n/**\n * Class Definition\n */\n\nvar TypeSafeCollection =\n/*#__PURE__*/\nfunction () {\n function TypeSafeCollection() {\n _classCallCheck(this, TypeSafeCollection);\n\n this._operationCount = MIN_COUNT;\n this._elementList = [];\n this._handlers = Object.create(null);\n }\n /**\n * Private Methods\n */\n\n\n _createClass(TypeSafeCollection, [{\n key: \"_invalidate\",\n value: function _invalidate() {\n var count = this._operationCount;\n this._operationCount = count < MAX_COUNT ? count + 1 : MIN_COUNT;\n }\n }, {\n key: \"_elements\",\n value: function _elements(silent) {\n silent === true || this._operationCount;\n return this._elementList;\n }\n }, {\n key: \"_elementWithPayload\",\n value: function _elementWithPayload(payload, silent) {\n return this._elements(silent).find(function (item) {\n return item.payload === payload;\n });\n }\n }, {\n key: \"_elementWithId\",\n value: function _elementWithId(id, silent) {\n return this._elements(silent).find(function (item) {\n return item.id === id;\n });\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(event, data) {\n var handlers = this._handlers;\n\n if (event in handlers) {\n handlers = handlers[event];\n\n if (!(handlers instanceof Array)) {\n return;\n }\n\n for (var i = 0, limit = handlers.length; i < limit; ++i) {\n var handler = handlers[i];\n\n if (_isFunction(handler)) {\n handler.call(null, data);\n }\n }\n }\n }\n /**\n * Public Methods\n */\n\n }, {\n key: \"onInsert\",\n value: function onInsert(callback) {\n if (_isFunction(callback)) {\n var handlers = this._handlers.insert;\n\n if (!(handlers instanceof Array)) {\n handlers = [];\n this._handlers.insert = handlers;\n }\n\n handlers.push(callback);\n }\n }\n /**\n * Update the payload associated with the given ID to be the new supplied payload.\n * @param {string} id The ID of the entry that will be updated.\n * @param {any} payload The element that will replace the previous payload.\n * @returns {boolean} Returns true if the given ID is present in the collection, false otherwise.\n */\n\n }, {\n key: \"updateById\",\n value: function updateById(id, payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n if (found.id === id) {\n // set result to true since the ids match...\n result = true;\n\n this._invalidate();\n }\n } else {\n found = this._elementWithId(id, true);\n\n if (found) {\n found.payload = payload;\n result = true;\n\n this._invalidate();\n }\n }\n\n return result;\n }\n /**\n * Signal that the given element has been changed by notifying reactive data-source observers.\n * This method is basically a means to invalidate the inernal reactive data-source.\n * @param {any} payload The element that has been altered.\n * @returns {boolean} Returns true if the element is present in the collection, false otherwise.\n */\n\n }, {\n key: \"update\",\n value: function update(payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n result = true;\n\n this._invalidate();\n }\n\n return result;\n }\n /**\n * Insert an element in the collection. On success, the element ID (a unique string) is returned. On failure, returns null.\n * A failure scenario only happens when the given payload is already present in the collection. Note that NO exceptions are thrown!\n * @param {any} payload The element to be stored.\n * @returns {string} The ID of the inserted element or null if the element already exists...\n */\n\n }, {\n key: \"insert\",\n value: function insert(payload) {\n var id = null,\n found = this._elementWithPayload(payload, true);\n\n if (!found) {\n id = OHIF.utils.guid();\n\n this._elements(true).push({\n id: id,\n payload: payload\n });\n\n this._invalidate();\n\n this._trigger('insert', {\n id: id,\n data: payload\n });\n }\n\n return id;\n }\n /**\n * Remove all elements from the collection.\n * @returns {void} No meaningful value is returned.\n */\n\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var all = this._elements(true),\n length = all.length;\n\n for (var i = length - 1; i >= 0; i--) {\n var item = all[i];\n delete item.id;\n delete item.payload;\n all[i] = null;\n }\n\n all.splice(0, length);\n\n this._invalidate();\n }\n /**\n * Remove elements from the collection that match the criteria given in the property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} A list with all removed elements.\n */\n\n }, {\n key: \"remove\",\n value: function remove(propertyMap) {\n var found = this.findAllEntriesBy(propertyMap),\n foundCount = found.length,\n removed = [];\n\n if (foundCount > 0) {\n var all = this._elements(true);\n\n for (var i = foundCount - 1; i >= 0; i--) {\n var item = found[i];\n all.splice(item[2], 1);\n removed.push(item[0]);\n }\n\n this._invalidate();\n }\n\n return removed;\n }\n /**\n * Provides the ID of the given element inside the collection.\n * @param {any} payload The element being searched for.\n * @returns {string} The ID of the given element or undefined if the element is not present.\n */\n\n }, {\n key: \"getElementId\",\n value: function getElementId(payload) {\n var found = this._elementWithPayload(payload);\n\n return found && found.id;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"findById\",\n value: function findById(id) {\n var found = this._elementWithId(id);\n\n return found && found.payload;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfElement\",\n value: function indexOfElement(payload) {\n return this._elements().indexOf(this._elementWithPayload(payload, true));\n }\n /**\n * Provides the position of the element associated with the given ID in the internal list returning -1 if the element is not present.\n * @param {string} id The index of the element.\n * @returns {number} The position of the element associated with the given ID in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfId\",\n value: function indexOfId(id) {\n return this._elements().indexOf(this._elementWithId(id, true));\n }\n /**\n * Provides a list-like approach to the collection returning an element by index.\n * @param {number} index The index of the element.\n * @returns {any} If out of bounds, undefined is returned. Otherwise the element in the given position is returned.\n */\n\n }, {\n key: \"getElementByIndex\",\n value: function getElementByIndex(index) {\n var found = this._elements()[index >= 0 ? index : -1];\n\n return found && found.payload;\n }\n /**\n * Find an element by a criteria defined by the given callback function.\n * Attention!!! The reactive source will not be notified if no valid callback is supplied...\n * @param {function} callback A callback function which will define the search criteria. The callback\n * function will be passed the collection element, its ID and its index in this very order. The callback\n * shall return true when its criterea has been fulfilled.\n * @returns {any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"find\",\n value: function find(callback) {\n var _this = this;\n\n var found;\n\n if (_isFunction(callback)) {\n found = this._elements().find(function (item, index) {\n return callback.call(_this, item.payload, item.id, index);\n });\n }\n\n return found && found.payload;\n }\n /**\n * Find the first element that strictly matches the specified property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"findBy\",\n value: function findBy(propertyMap, options) {\n var found;\n\n if (_isObject(options)) {\n // if the \"options\" argument is provided and is a valid object,\n // it must be applied to the dataset before search...\n var all = this.all(options);\n\n if (all.length > 0) {\n if (_isObject(propertyMap)) {\n found = all.find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item);\n });\n } else {\n found = all[0]; // simply extract the first element...\n }\n }\n } else if (_isObject(propertyMap)) {\n found = this._elements().find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item.payload);\n });\n\n if (found) {\n found = found.payload;\n }\n }\n\n return found;\n }\n /**\n * Find all elements that strictly match the specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} An array of entries of all elements that match the given criteria. Each set in\n * in the array has the following format: [ elementData, elementId, elementIndex ].\n */\n\n }, {\n key: \"findAllEntriesBy\",\n value: function findAllEntriesBy(propertyMap) {\n var found = [];\n\n if (_isObject(propertyMap)) {\n this._elements().forEach(function (item, index) {\n if (_compareToPropertyMapStrict(propertyMap, item.payload)) {\n // Match! Add it to the found list...\n found.push([item.payload, item.id, index]);\n }\n });\n }\n\n return found;\n }\n /**\n * Find all elements that match a specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements that match the given criteria and sorted in the specified sorting order.\n */\n\n }, {\n key: \"findAllBy\",\n value: function findAllBy(propertyMap, options) {\n var found = this.findAllEntriesBy(propertyMap).map(function (item) {\n return item[0];\n }); // Only payload is relevant...\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(found, options.sort);\n }\n }\n\n return found;\n }\n /**\n * Executes the supplied callback function for each element of the collection.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {function} callback The callback function to be executed. The callback is passed the element,\n * its ID and its index in this very order.\n * @returns {void} Nothing is returned.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this2 = this;\n\n if (_isFunction(callback)) {\n this._elements().forEach(function (item, index) {\n callback.call(_this2, item.payload, item.id, index);\n });\n }\n }\n /**\n * Count the number of elements currently in the collection.\n * @returns {number} The current number of elements in the collection.\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this._elements().length;\n }\n /**\n * Returns a list with all elements of the collection optionally sorted by a sorting specifier criteria.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements stored in the collection.\n */\n\n }, {\n key: \"all\",\n value: function all(options) {\n var list = this._elements().map(function (item) {\n return item.payload;\n });\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(list, options.sort);\n }\n }\n\n return list;\n }\n }]);\n\n return TypeSafeCollection;\n}();\n/**\n * Utility Functions\n */\n\n/**\n * Test if supplied argument is a valid object for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\nfunction _isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n}\n/**\n * Test if supplied argument is a valid string for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isString(subject) {\n return typeof subject === 'string';\n}\n/**\n * Test if supplied argument is a valid function for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isFunction(subject) {\n return typeof subject === 'function';\n}\n/**\n * Shortcut for Object's prototype \"hasOwnProperty\" method.\n */\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Retrieve an object's property value by name. Composite property names (e.g., 'address.country.name') are accepted.\n * @param {Object} targetObject The object we want read the property from...\n * @param {String} propertyName The property to be read (e.g., 'address.street.name' or 'address.street.number'\n * to read object.address.street.name or object.address.street.number, respectively);\n * @returns {Any} Returns whatever the property holds or undefined if the property cannot be read or reached.\n */\n\nfunction _getPropertyValue(targetObject, propertyName) {\n var propertyValue; // undefined (the default return value)\n\n if (_isObject(targetObject) && _isString(propertyName)) {\n var fragments = propertyName.split(PROPERTY_SEPARATOR);\n var fragmentCount = fragments.length;\n\n if (fragmentCount > 0) {\n var firstFragment = fragments[0];\n var remainingFragments = fragmentCount > 1 ? fragments.slice(1).join(PROPERTY_SEPARATOR) : null;\n propertyValue = targetObject[firstFragment];\n\n if (remainingFragments !== null) {\n propertyValue = _getPropertyValue(propertyValue, remainingFragments);\n }\n }\n }\n\n return propertyValue;\n}\n/**\n * Compare a property map with a target object using strict comparison.\n * @param {Object} propertyMap The property map whose properties will be used for comparison. Composite\n * property names (e.g., 'address.country.name') will be tested against the \"resolved\" properties from the target object.\n * @param {Object} targetObject The target object whose properties will be tested.\n * @returns {boolean} Returns true if the properties match, false otherwise.\n */\n\n\nfunction _compareToPropertyMapStrict(propertyMap, targetObject) {\n var result = false; // \"for in\" loops do not thown exceptions for invalid data types...\n\n for (var propertyName in propertyMap) {\n if (_hasOwnProperty.call(propertyMap, propertyName)) {\n if (propertyMap[propertyName] !== _getPropertyValue(targetObject, propertyName)) {\n result = false;\n break;\n } else if (result !== true) {\n result = true;\n }\n }\n }\n\n return result;\n}\n/**\n * Checks if a sorting specifier is valid.\n * A valid sorting specifier consists of an array of arrays being each subarray a pair\n * in the format [\"property name\", \"sorting order\"].\n * The following exemple can be used to sort studies by \"date\"\" and use \"time\" to break ties in descending order.\n * [ [ 'study.date', 'desc' ], [ 'study.time', 'desc' ] ]\n * @param {Array} specifiers The sorting specifier to be tested.\n * @returns {boolean} Returns true if the specifiers are valid, false otherwise.\n */\n\n\nfunction _isValidSortingSpecifier(specifiers) {\n var result = true;\n\n if (specifiers instanceof Array && specifiers.length > 0) {\n for (var i = specifiers.length - 1; i >= 0; i--) {\n var item = specifiers[i];\n\n if (item instanceof Array) {\n var property = item[0];\n var order = item[1];\n\n if (_isString(property) && (order === ORDER_ASC || order === ORDER_DESC)) {\n continue;\n }\n }\n\n result = false;\n break;\n }\n }\n\n return result;\n}\n/**\n * Sorts an array based on sorting specifier options.\n * @param {Array} list The that needs to be sorted.\n * @param {Array} specifiers An array of specifiers. Please read isValidSortingSpecifier method definition for further details.\n * @returns {void} No value is returned. The array is sorted in place.\n */\n\n\nfunction _sortListBy(list, specifiers) {\n if (list instanceof Array && _isValidSortingSpecifier(specifiers)) {\n var specifierCount = specifiers.length;\n list.sort(function _sortListByCallback(a, b) {\n // callback name for stack traces...\n var index = 0;\n\n while (index < specifierCount) {\n var specifier = specifiers[index];\n var property = specifier[0];\n var order = specifier[1] === ORDER_DESC ? -1 : 1;\n\n var aValue = _getPropertyValue(a, property);\n\n var bValue = _getPropertyValue(b, property); // @TODO: should we check for the types being compared, like:\n // ~~ if (typeof aValue !== typeof bValue) continue;\n // Not sure because dates, for example, can be correctly compared to numbers...\n\n\n if (aValue < bValue) {\n return order * -1;\n }\n\n if (aValue > bValue) {\n return order * 1;\n }\n\n if (++index >= specifierCount) {\n return 0;\n }\n }\n });\n } else {\n throw new Error('Invalid Arguments');\n }\n}\n\n/**\n * Abstract class to fetch study metadata.\n */\n\nvar StudyMetadataSource =\n/*#__PURE__*/\nfunction () {\n function StudyMetadataSource() {\n _classCallCheck(this, StudyMetadataSource);\n }\n\n _createClass(StudyMetadataSource, [{\n key: \"getByInstanceUID\",\n\n /**\n * Get study metadata for a study with given study InstanceUID.\n * @param {String} studyInstanceUID Study InstanceUID.\n */\n value: function getByInstanceUID(studyInstanceUID) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::getByInstanceUID is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n /**\n * Load study info and study metadata for a given study into the viewer.\n * @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.\n */\n\n }, {\n key: \"loadStudy\",\n value: function loadStudy(study) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::loadStudy is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n }]);\n\n return StudyMetadataSource;\n}();\n\nvar classes = {\n MetadataProvider: MetadataProvider,\n CommandsManager: CommandsManager,\n HotkeysContext: HotkeysContext,\n HotkeysManager: HotkeysManager,\n ImageSet: ImageSet,\n StudyPrefetcher: StudyPrefetcher,\n StudyLoadingListener: StudyLoadingListener,\n StackLoadingListener: StackLoadingListener,\n DICOMFileLoadingListener: DICOMFileLoadingListener,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n //StudySummary,\n TypeSafeCollection: TypeSafeCollection,\n OHIFError: OHIFError,\n StudyMetadataSource: StudyMetadataSource\n};\n\nvar defaultButtons = [{\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: '/icons.svg#icon-tools-pan',\n active: false\n}, {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: '/icons.svg#icon-tools-zoom',\n active: false\n}, {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: '/icons.svg#icon-tools-measure-target',\n active: false\n}, {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: '/icons.svg#icon-tools-stack-scroll',\n active: false\n}, {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: '/icons.svg#icon-tools-reset',\n active: false\n}, {\n command: 'Wwwc',\n type: 'tool',\n text: 'Manual',\n svgUrl: '/icons.svg#icon-tools-levels',\n active: true\n}, {\n command: 'setWLPresetSoftTissue',\n type: 'command',\n text: 'Soft Tissue',\n svgUrl: '/icons.svg#icon-wl-soft-tissue',\n active: false\n}, {\n command: 'setWLPresetLung',\n type: 'command',\n text: 'Lung',\n svgUrl: '/icons.svg#icon-wl-lung',\n active: false\n}, {\n command: 'setWLPresetLiver',\n type: 'command',\n text: 'Liver',\n svgUrl: '/icons.svg#icon-wl-liver',\n active: false\n}, {\n command: 'setWLPresetBrain',\n type: 'command',\n text: 'Brain',\n svgUrl: '/icons.svg#icon-wl-brain',\n active: false\n}];\n\nvar tools = function tools() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n buttons: defaultButtons\n };\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'SET_TOOL_ACTIVE':\n var item = state.buttons.find(function (button) {\n return button.command === action.tool;\n });\n var buttons = [];\n\n if (item.type === 'tool') {\n buttons = state.buttons.map(function (button) {\n if (button.command === action.tool) {\n button.active = true;\n } else if (button.type === 'tool') {\n button.active = false;\n }\n\n return button;\n });\n }\n\n return {\n buttons: buttons\n };\n\n case 'SET_AVAILABLE_BUTTONS':\n return {\n buttons: action.buttons\n };\n\n default:\n return state;\n }\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_merge = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n});\n\nvar defaultState = {\n activeViewportIndex: 0,\n layout: {\n viewports: [{\n height: '100%',\n width: '100%'\n }]\n },\n viewportSpecificData: {}\n};\n\nvar viewports = function viewports() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var viewportSpecificData;\n\n switch (action.type) {\n case 'SET_VIEWPORT_ACTIVE':\n return Object.assign({}, state, {\n activeViewportIndex: action.viewportIndex\n });\n\n case 'SET_LAYOUT':\n return Object.assign({}, state, {\n layout: action.layout\n });\n\n case 'SET_VIEWPORT_SPECIFIC_DATA':\n var currentData = lodash_clonedeep(state.viewportSpecificData[action.viewportIndex]) || {};\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = lodash_merge({}, currentData, action.data);\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n case 'CLEAR_VIEWPORT_SPECIFIC_DATA':\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = {};\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$1 = {\n servers: []\n};\n\nvar servers = function servers() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$1;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_SERVER':\n var _servers = state.servers;\n\n var alreadyExists = _servers.find(function (server) {\n return server.id === action.server.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n _servers.push(action.server);\n\n if (_servers.length === 1) {\n _servers[0].active = true;\n }\n\n return Object.assign({}, state, {\n servers: _servers\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$2 = {\n progress: {},\n lastUpdated: null\n};\n\nvar loading = function loading() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$2;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var progress;\n var lastUpdated;\n\n switch (action.type) {\n case 'SET_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n progress[action.progressId] = action.progressData; // This is a workaround so we can easily identify changes\n // to the progress object without doing deep comparison.\n\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n case 'CLEAR_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n delete progress[action.progressId];\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n default:\n return state;\n }\n};\n\nvar PLUGIN_TYPES = {\n VIEWPORT: 'viewport'\n};\nvar plugins = {\n PLUGIN_TYPES: PLUGIN_TYPES,\n availablePlugins: []\n};\n\nvar defaultState$3 = {\n availablePlugins: []\n};\n\nvar plugins$1 = function plugins$$1() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$3;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_PLUGIN':\n var availablePlugins = state.availablePlugins;\n var alreadyExists = availablePlugins.find(function (plugin) {\n return plugin.id === action.plugin.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n availablePlugins.push({\n id: action.plugin.id,\n type: action.plugin.type\n }); // Not sure where else to put this. We shouldn't store functions in Redux, so I'll do this instead\n\n plugins.availablePlugins.push(action.plugin);\n return Object.assign({}, state, {\n availablePlugins: availablePlugins\n });\n\n default:\n return state;\n }\n};\n\nvar reducers = {\n tools: tools,\n viewports: viewports,\n servers: servers,\n loading: loading,\n plugins: plugins$1\n};\n\nvar redux = {\n reducers: reducers,\n actions: actions\n};\n\n// TODO: This is duplicated in TypeSafeCollection\nfunction isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n} // TODO: This is duplicated in TypeSafeCollection\n\n\nfunction isString(subject) {\n return typeof subject === 'string';\n} // Search for some string inside any object or array\n\n\nfunction search(object, query) {\n var property = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var result = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // Create the search pattern\n var pattern = new RegExp(query.trim(), 'i');\n Object.keys(object).forEach(function (key) {\n var item = object[key]; // Stop here if item is empty\n\n if (!item) {\n return;\n } // Get the value to be compared\n\n\n var value = isString(property) ? item[property] : item; // Check if the value match the pattern\n\n if (isString(value) && pattern.test(value)) {\n // Add the current item to the result\n result.push(item);\n }\n\n if (isObject(item)) {\n // Search recursively the item if the current item is an object\n search(item, query, property, result);\n }\n }); // Return the found items\n\n return result;\n} // Encode any string into a safe format for HTML id attribute\n\n\nfunction encodeId(input) {\n var string = input && input.toString ? input.toString() : input; // Return an underscore if the given string is empty or if it's not a string\n\n if (string === '' || typeof string !== 'string') {\n return '_';\n } // Create a converter to replace non accepted chars\n\n\n var converter = function converter(match) {\n return '_' + match[0].charCodeAt(0).toString(16) + '_';\n }; // Encode the given string and return it\n\n\n return string.replace(/[^a-zA-Z0-9-]/g, converter);\n}\n\nvar string = {\n search: search,\n encodeId: encodeId\n};\n\n// Transforms a shallow object with keys separated by \".\" into a nested object\nfunction getNestedObject(shallowObject) {\n var nestedObject = {};\n\n for (var key in shallowObject) {\n if (!shallowObject.hasOwnProperty(key)) continue;\n var value = shallowObject[key];\n var propertyArray = key.split('.');\n var currentObject = nestedObject;\n\n while (propertyArray.length) {\n var currentProperty = propertyArray.shift();\n\n if (!propertyArray.length) {\n currentObject[currentProperty] = value;\n } else {\n if (!currentObject[currentProperty]) {\n currentObject[currentProperty] = {};\n }\n\n currentObject = currentObject[currentProperty];\n }\n }\n }\n\n return nestedObject;\n}\n\nfunction getShallowObject(nestedObject) {\n var shallowObject = {};\n\n var putValues = function putValues(baseKey, nestedObject, resultObject) {\n for (var key in nestedObject) {\n if (!nestedObject.hasOwnProperty(key)) continue;\n var currentKey = baseKey ? \"\".concat(baseKey, \".\").concat(key) : key;\n var currentValue = nestedObject[key];\n\n if (_typeof(currentValue) === 'object') {\n if (currentValue instanceof Array) {\n currentKey += '[]';\n }\n\n putValues(currentKey, currentValue, resultObject);\n } else {\n resultObject[currentKey] = currentValue;\n }\n }\n };\n\n putValues('', nestedObject, shallowObject);\n return shallowObject;\n}\nvar object = {\n getNestedObject: getNestedObject,\n getShallowObject: getShallowObject\n};\n\nvar validate = createCommonjsModule(function (module, exports) {\n/*!\n * validate.js 0.12.0\n *\n * (c) 2013-2017 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n ;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 12,\n patch: 0,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n v.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", {attr: attribute}));\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false;\n\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n }\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(commonjsGlobal,\n exports,\n module,\n null);\n});\n\nvalidate.validators.equals = function (value, options, key, attributes) {\n if (options && value !== options.value) {\n return key + 'must equal ' + options.value;\n }\n};\n\nvalidate.validators.doesNotEqual = function (value, options, key) {\n if (options && value === options.value) {\n return key + 'cannot equal ' + options.value;\n }\n};\n\nvalidate.validators.contains = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) === -1) {\n return key + 'must contain ' + options.value;\n }\n};\n\nvalidate.validators.doesNotContain = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) !== -1) {\n return key + 'cannot contain ' + options.value;\n }\n};\n\nvalidate.validators.startsWith = function (value, options, key) {\n if (options && value.startsWith && !value.startsWith(options.value)) {\n return key + 'must start with ' + options.value;\n }\n};\n\nvalidate.validators.endsWith = function (value, options, key) {\n if (options && value.endsWith && !value.endsWith(options.value)) {\n return key + 'must end with ' + options.value;\n }\n};\n\n/**\n * Import Constants\n */\n\nvar StudySummary = metadata.StudySummary,\n InstanceMetadata$1 = metadata.InstanceMetadata;\n/**\n * Match a Metadata instance against rules using Validate.js for validation.\n * @param {StudySummary|InstanceMetadata} metadataInstance Metadata instance object\n * @param {Array} rules Array of MatchingRules instances (StudyMatchingRule|SeriesMatchingRule|ImageMatchingRule) for the match\n * @return {Object} Matching Object with score and details (which rule passed or failed)\n */\n\nvar match = function match(metadataInstance, rules) {\n // Make sure the supplied data is valid.\n if (!(metadataInstance instanceof StudySummary || metadataInstance instanceof InstanceMetadata$1)) {\n throw new OHIFError('HPMatcher::match metadataInstance must be an instance of StudySummary or InstanceMetadata');\n }\n\n var options = {\n format: 'grouped'\n };\n var details = {\n passed: [],\n failed: []\n };\n var requiredFailed = false;\n var score = 0;\n rules.forEach(function (rule) {\n var attribute = rule.attribute;\n var customAttributeExists = metadataInstance.customAttributeExists(attribute); // If the metadataInstance we are testing (e.g. study, series, or instance MetadataInstance) do\n // not contain the attribute specified in the rule, check whether or not they have been\n // defined in the CustomAttributeRetrievalCallbacks Object.\n\n if (!customAttributeExists && HP.CustomAttributeRetrievalCallbacks.hasOwnProperty(attribute)) {\n var customAttribute = HP.CustomAttributeRetrievalCallbacks[attribute];\n metadataInstance.setCustomAttribute(attribute, customAttribute.callback(metadataInstance));\n customAttributeExists = true;\n } // Format the constraint as required by Validate.js\n\n\n var testConstraint = _defineProperty({}, attribute, rule.constraint); // Create a single attribute object to be validated, since metadataInstance is an\n // instance of Metadata (StudyMetadata, SeriesMetadata or InstanceMetadata)\n\n\n var attributeValue = customAttributeExists ? metadataInstance.getCustomAttribute(attribute) : metadataInstance.getTagValue(attribute);\n\n var attributeMap = _defineProperty({}, attribute, attributeValue); // Use Validate.js to evaluate the constraints on the specified metadataInstance\n\n\n var errorMessages;\n\n try {\n errorMessages = validate(attributeMap, testConstraint, [options]);\n } catch (e) {\n errorMessages = ['Something went wrong during validation.', e];\n }\n\n if (!errorMessages) {\n // If no errorMessages were returned, then validation passed.\n // Add the rule's weight to the total score\n score += parseInt(rule.weight, 10); // Log that this rule passed in the matching details object\n\n details.passed.push({\n rule: rule\n });\n } else {\n // If errorMessages were present, then validation failed\n // If the rule that failed validation was Required, then\n // mark that a required Rule has failed\n if (rule.required) {\n requiredFailed = true;\n } // Log that this rule failed in the matching details object\n // and include any error messages\n\n\n details.failed.push({\n rule: rule,\n errorMessages: errorMessages\n });\n }\n }); // If a required Rule has failed Validation, set the matching score to zero\n\n if (requiredFailed) {\n score = 0;\n }\n\n return {\n score: score,\n details: details,\n requiredFailed: requiredFailed\n };\n};\n\nvar HPMatcher = {\n match: match\n};\n\n// Sorts an array by score\nvar sortByScore = function sortByScore(arr) {\n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n};\n\n/**\n * Import Constants\n */\n\nvar StudyMetadata$1 = metadata.StudyMetadata,\n InstanceMetadata$2 = metadata.InstanceMetadata,\n StudySummary$1 = metadata.StudySummary;\n\n\nvar ABSTRACT_PRIOR_VALUE = 'abstractPriorValue';\n/*Meteor.startup(() => {\n HP.addCustomViewportSetting('wlPreset', 'Window/Level Preset', Object.create(null), (element, optionValue) => {\n if (_.findWhere(OHIF.viewer.wlPresets, { id: optionValue })) {\n OHIF.viewerbase.wlPresets.applyWLPreset(optionValue, element);\n }\n });\n});*/\n// TODO:\n// Should have ProtocolStore as an input to constructor\n// Something to update current HP and current stage 'globally'\n//\n//\n// Should allow user to provide:\n// functions for adding /\n\nvar ProtocolEngine =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n * @param {Array} studies Array of study metadata\n * @param {Map} priorStudies Map of prior studies\n * @param {Object} studyMetadataSource Instance of StudyMetadataSource (ohif-viewerbase) Object to get study metadata\n */\n function ProtocolEngine(studies, priorStudies, studyMetadataSource) {\n _classCallCheck(this, ProtocolEngine);\n\n _defineProperty(this, \"matchedProtocols\", new Set());\n\n _defineProperty(this, \"matchedProtocolScores\", new Map());\n\n // -----------\n // Type Validations\n if (!(studyMetadataSource instanceof StudyMetadataSource)) {\n throw new OHIFError('ProtocolEngine::constructor studyMetadataSource is not an instance of StudyMetadataSource');\n }\n\n if (!(studies instanceof Array) && !studies.every(function (study) {\n return study instanceof StudyMetadata$1;\n })) {\n throw new OHIFError(\"ProtocolEngine::constructor studies is not an array or it's items are not instances of StudyMetadata\");\n } // --------------\n // Initialization\n\n\n this.studies = studies;\n this.priorStudies = priorStudies instanceof Map ? priorStudies : new Map();\n this.studyMetadataSource = studyMetadataSource; // Put protocol engine in a known state\n\n this.reset(); // Create an array for new stage ids to be stored\n // while editing a stage\n\n this.newStageIds = [];\n }\n /**\n * Resets the ProtocolEngine to the best match\n */\n\n\n _createClass(ProtocolEngine, [{\n key: \"reset\",\n value: function reset() {\n var protocol = this.getBestProtocolMatch();\n this.setHangingProtocol(protocol);\n }\n /**\n * Retrieves the current Stage from the current Protocol and stage index\n *\n * @returns {*} The Stage model for the currently displayed Stage\n */\n\n }, {\n key: \"getCurrentStageModel\",\n value: function getCurrentStageModel() {\n return this.protocol.stages[this.stage];\n }\n /**\n * Finds the best protocols from Protocol Store, matching each protocol matching rules\n * with the given study. The best protocol are orded by score and returned in an array\n * @param {Object} study StudyMetadata instance object\n * @return {Array} Array of match objects or an empty array if no match was found\n * Each match object has the score of the matching and the matched\n * protocol\n */\n\n }, {\n key: \"findMatchByStudy\",\n value: function findMatchByStudy(study) {\n log$1.trace('ProtocolEngine::findMatchByStudy');\n var matched = [];\n var studyInstance = study.getFirstInstance(); // Set custom attribute for study metadata\n\n var numberOfAvailablePriors = this.getNumberOfAvailablePriors(study.getObjectID());\n HP.ProtocolStore.getProtocol().forEach(function (protocol) {\n // Clone the protocol's protocolMatchingRules array\n // We clone it so that we don't accidentally add the\n // numberOfPriorsReferenced rule to the Protocol itself.\n var rules = protocol.protocolMatchingRules.slice();\n\n if (!rules) {\n return;\n } // Check if the study has the minimun number of priors used by the protocol.\n\n\n var numberOfPriorsReferenced = protocol.getNumberOfPriorsReferenced();\n\n if (numberOfPriorsReferenced > numberOfAvailablePriors) {\n return;\n } // Run the matcher and get matching details\n\n\n var matchedDetails = HPMatcher.match(studyInstance, rules);\n var score = matchedDetails.score; // The protocol matched some rule, add it to the matched list\n\n if (score > 0) {\n matched.push({\n score: score,\n protocol: protocol\n });\n }\n }); // If no matches were found, select the default protocol\n\n if (!matched.length) {\n var defaultProtocol = HP.ProtocolStore.getProtocol('defaultProtocol');\n return [{\n score: 1,\n protocol: defaultProtocol\n }];\n } // Sort the matched list by score\n\n\n sortByScore(matched);\n log$1.trace('ProtocolEngine::findMatchByStudy matched', matched);\n return matched;\n }\n }, {\n key: \"_clearMatchedProtocols\",\n value: function _clearMatchedProtocols() {\n this.matchedProtocols.clear();\n this.matchedProtocolScores.clear();\n }\n /**\n * Populates the MatchedProtocols Collection by running the matching procedure\n */\n\n }, {\n key: \"updateProtocolMatches\",\n value: function updateProtocolMatches() {\n var _this = this;\n\n log$1.trace('ProtocolEngine::updateProtocolMatches'); // Clear all data currently in matchedProtocols\n\n this._clearMatchedProtocols(); // For each study, find the matching protocols\n\n\n this.studies.forEach(function (study) {\n var matched = _this.findMatchByStudy(study); // For each matched protocol, check if it is already in MatchedProtocols\n\n\n matched.forEach(function (matchedDetail) {\n var protocol = matchedDetail.protocol;\n\n if (!protocol) {\n return;\n } // If it is not already in the MatchedProtocols Collection, insert it with its score\n\n\n if (!_this.matchedProtocols.has(protocol)) {\n log$1.trace('ProtocolEngine::updateProtocolMatches inserting protocol match', matchedDetail);\n\n _this.matchedProtocols.add(protocol);\n\n _this.matchedProtocolScores[protocol.id] = matchedDetail.score;\n }\n });\n });\n }\n }, {\n key: \"_getHighestScoringProtocol\",\n value: function _getHighestScoringProtocol() {\n var highestScoringProtocolId = ProtocolEngine._largestKeyByValue(this.matchedProtocolScores);\n\n return this.matchedProtocols[highestScoringProtocolId];\n }\n /**\n * Return the best matched Protocol to the current study or set of studies\n * @returns {*}\n */\n\n }, {\n key: \"getBestProtocolMatch\",\n value: function getBestProtocolMatch() {\n // Run the matching to populate matchedProtocols Set and Map\n this.updateProtocolMatches(); // Retrieve the highest scoring Protocol\n\n var bestMatch = this._getHighestScoringProtocol();\n\n log$1.trace('ProtocolEngine::getBestProtocolMatch bestMatch', bestMatch);\n return bestMatch;\n }\n /**\n * Get the number of prior studies supplied in the priorStudies map property.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {number} The number of available prior studies with the same PatientID\n */\n\n }, {\n key: \"getNumberOfAvailablePriors\",\n value: function getNumberOfAvailablePriors(studyObjectID) {\n return this.getAvailableStudyPriors(studyObjectID).length;\n }\n /**\n * Get the array of prior studies from a specific study.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {Array} The array of available priors or an empty array\n */\n\n }, {\n key: \"getAvailableStudyPriors\",\n value: function getAvailableStudyPriors(studyObjectID) {\n var priors = this.priorStudies.get(studyObjectID);\n return priors instanceof Array ? priors : [];\n } // Match images given a list of Studies and a Viewport's image matching reqs\n\n }, {\n key: \"matchImages\",\n value: function matchImages(viewport, viewportIndex) {\n var _this2 = this;\n\n log$1.trace('ProtocolEngine::matchImages');\n var studyMatchingRules = viewport.studyMatchingRules,\n seriesMatchingRules = viewport.seriesMatchingRules,\n instanceMatchingRules = viewport.imageMatchingRules;\n var matchingScores = [];\n var currentStudy = this.studies[0]; // @TODO: Should this be: this.studies[this.currentStudy] ???\n\n var firstInstance = currentStudy.getFirstInstance();\n var highestStudyMatchingScore = 0;\n var highestSeriesMatchingScore = 0; // Set custom attribute for study metadata and it's first instance\n\n currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n } // Only used if study matching rules has abstract prior values defined...\n\n\n var priorStudies;\n studyMatchingRules.forEach(function (rule) {\n if (rule.attribute === ABSTRACT_PRIOR_VALUE) {\n var validatorType = Object.keys(rule.constraint)[0];\n var validator = Object.keys(rule.constraint[validatorType])[0];\n var abstractPriorValue = rule.constraint[validatorType][validator];\n abstractPriorValue = parseInt(abstractPriorValue, 10); // TODO: Restrict or clarify validators for abstractPriorValue?\n // No need to call it more than once...\n\n if (!priorStudies) {\n priorStudies = _this2.getAvailableStudyPriors(currentStudy.getObjectID());\n } // TODO: Revisit this later: What about two studies with the same\n // study date?\n\n\n var priorStudy;\n\n if (abstractPriorValue === -1) {\n priorStudy = priorStudies[priorStudies.length - 1];\n } else {\n var studyIndex = Math.max(abstractPriorValue - 1, 0);\n priorStudy = priorStudies[studyIndex];\n } // Invalid data\n\n\n if (!(priorStudy instanceof StudyMetadata$1) && !(priorStudy instanceof StudySummary$1)) {\n return;\n }\n\n var priorStudyObjectID = priorStudy.getObjectID(); // Check if study metadata is already in studies list\n\n if (_this2.studies.find(function (study) {\n return study.getObjectID() === priorStudyObjectID;\n })) {\n return;\n } // Get study metadata if necessary and load study in the viewer (each viewer should provide it's own load study method)\n\n\n _this2.studyMetadataSource.loadStudy(priorStudy).then(function (studyMetadata) {\n // Set the custom attribute abstractPriorValue for the study metadata\n studyMetadata.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue); // Also add custom attribute\n\n var firstInstance = studyMetadata.getFirstInstance();\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue);\n } // Insert the new study metadata\n\n\n _this2.studies.push(studyMetadata); // Update the viewport to refresh layout manager with new study\n\n\n _this2.updateViewports(viewportIndex);\n }, function (error) {\n log$1.warn(error);\n throw new OHIFError(\"ProtocolEngine::matchImages could not get study metadata for the Study with the following ObjectID: \".concat(priorStudyObjectID));\n });\n } // TODO: Add relative Date / time\n\n });\n this.studies.forEach(function (study) {\n var studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {\n return;\n }\n\n highestStudyMatchingScore = studyMatchDetails.score;\n study.forEachSeries(function (series) {\n var seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {\n return;\n }\n\n highestSeriesMatchingScore = seriesMatchDetails.score;\n series.forEachInstance(function (instance, index) {\n // This tests to make sure there is actually image data in this instance\n // TODO: Change this when we add PDF and MPEG support\n // See https://ohiforg.atlassian.net/browse/LT-227\n // sopClassUid = x00080016\n // rows = x00280010\n if (!isImage(instance.getTagValue('x00080016')) && !instance.getTagValue('x00280010')) {\n return;\n }\n\n var instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (instanceMatchDetails.requiredFailed === true) {\n return;\n }\n\n var matchDetails = {\n passed: [],\n failed: []\n };\n matchDetails.passed = matchDetails.passed.concat(instanceMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(seriesMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(studyMatchDetails.details.passed);\n matchDetails.failed = matchDetails.failed.concat(instanceMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed);\n var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score;\n var currentSOPInstanceUID = instance.getSOPInstanceUID();\n var imageDetails = {\n studyInstanceUid: study.getStudyInstanceUID(),\n seriesInstanceUid: series.getSeriesInstanceUID(),\n sopInstanceUid: currentSOPInstanceUID,\n currentImageIdIndex: index,\n matchingScore: totalMatchScore,\n matchDetails: matchDetails,\n sortingInfo: {\n score: totalMatchScore,\n study: instance.getTagValue('x00080020') + instance.getTagValue('x00080030'),\n // StudyDate = x00080020 StudyTime = x00080030\n series: parseInt(instance.getTagValue('x00200011')),\n // TODO: change for seriesDateTime SeriesNumber = x00200011\n instance: parseInt(instance.getTagValue('x00200013')) // TODO: change for acquisitionTime InstanceNumber = x00200013\n\n }\n }; // Find the displaySet\n\n var displaySet = study.findDisplaySet(function (displaySet) {\n return displaySet.images.find(function (image) {\n return image.getSOPInstanceUID() === currentSOPInstanceUID;\n });\n }); // If the instance was found, set the displaySet ID\n\n if (displaySet) {\n imageDetails.displaySetInstanceUid = displaySet.getUID();\n imageDetails.imageId = instance.getImageId();\n }\n\n matchingScores.push(imageDetails);\n });\n });\n }); // Sort the matchingScores\n\n var sortingFunction = sortBy({\n name: 'score',\n reverse: true\n }, {\n name: 'study',\n reverse: true\n }, {\n name: 'instance'\n }, {\n name: 'series'\n });\n matchingScores.sort(function (a, b) {\n return sortingFunction(a.sortingInfo, b.sortingInfo);\n });\n var bestMatch = matchingScores[0];\n log$1.trace('ProtocolEngine::matchImages bestMatch', bestMatch);\n return {\n bestMatch: bestMatch,\n matchingScores: matchingScores\n };\n }\n /**\n * Rerenders viewports that are part of the current ProtocolEngine's LayoutManager\n * using the matching rules internal to each viewport.\n *\n * If this function is provided the index of a viewport, only the specified viewport\n * is rerendered.\n *\n * @param viewportIndex\n */\n\n }, {\n key: \"updateViewports\",\n value: function updateViewports(viewportIndex) {\n var _this3 = this;\n\n log$1.trace(\"ProtocolEngine::updateViewports viewportIndex: \".concat(viewportIndex)); // Make sure we have an active protocol with a non-empty array of display sets\n\n if (!this.getNumProtocolStages()) {\n return;\n } // Retrieve the current stage\n\n\n var stageModel = this.getCurrentStageModel(); // If the current stage does not fulfill the requirements to be displayed,\n // stop here.\n\n if (!stageModel || !stageModel.viewportStructure || !stageModel.viewports || !stageModel.viewports.length) {\n return;\n } // Retrieve the layoutTemplate associated with the current display set's viewport structure\n // If no such template name exists, stop here.\n\n\n var layoutTemplateName = stageModel.viewportStructure.getLayoutTemplateName();\n\n if (!layoutTemplateName) {\n return;\n } // Retrieve the properties associated with the current display set's viewport structure template\n // If no such layout properties exist, stop here.\n\n\n var layoutProps = stageModel.viewportStructure.properties;\n\n if (!layoutProps) {\n return;\n } // Create an empty array to store the output viewportData\n\n\n var viewportData = []; // Empty the matchDetails associated with the ProtocolEngine.\n // This will be used to store the pass/fail details and score\n // for each of the viewport matching procedures\n\n this.matchDetails = []; // Loop through each viewport\n\n stageModel.viewports.forEach(function (viewport, viewportIndex) {\n var details = _this3.matchImages(viewport, viewportIndex);\n\n _this3.matchDetails[viewportIndex] = details; // Convert any YES/NO values into true/false for Cornerstone\n\n var cornerstoneViewportParams = {}; // Cache viewportSettings keys\n\n var viewportSettingsKeys = Object.keys(viewport.viewportSettings);\n viewportSettingsKeys.forEach(function (key) {\n var value = viewport.viewportSettings[key];\n\n if (value === 'YES') {\n value = true;\n } else if (value === 'NO') {\n value = false;\n }\n\n cornerstoneViewportParams[key] = value;\n }); // imageViewerViewports occasionally needs relevant layout data in order to set\n // the element style of the viewport in question\n\n var currentViewportData = _objectSpread({\n viewportIndex: viewportIndex,\n viewport: cornerstoneViewportParams\n }, layoutProps);\n\n var customSettings = [];\n viewportSettingsKeys.forEach(function (id) {\n var setting = HP.CustomViewportSettings[id];\n\n if (!setting) {\n return;\n }\n\n customSettings.push({\n id: id,\n value: viewport.viewportSettings[id]\n });\n });\n\n currentViewportData.renderedCallback = function (element) {\n //console.log('renderedCallback for ' + element.id);\n customSettings.forEach(function (customSetting) {\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback Applying custom setting: \".concat(customSetting.id));\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback with value: \".concat(customSetting.value));\n var setting = HP.CustomViewportSettings[customSetting.id];\n setting.callback(element, customSetting.value);\n });\n };\n\n var currentMatch = details.bestMatch;\n var currentPosition = 1;\n var scoresLength = details.matchingScores.length;\n\n while (currentPosition < scoresLength && viewportData.find(function (a) {\n return a.imageId === currentMatch.imageId;\n })) {\n currentMatch = details.matchingScores[currentPosition];\n currentPosition++;\n }\n\n if (currentMatch && currentMatch.imageId) {\n currentViewportData.studyInstanceUid = currentMatch.studyInstanceUid;\n currentViewportData.seriesInstanceUid = currentMatch.seriesInstanceUid;\n currentViewportData.sopInstanceUid = currentMatch.sopInstanceUid;\n currentViewportData.currentImageIdIndex = currentMatch.currentImageIdIndex;\n currentViewportData.displaySetInstanceUid = currentMatch.displaySetInstanceUid;\n currentViewportData.imageId = currentMatch.imageId;\n } // @TODO Why should we throw an exception when a best match is not found? This was aborting the whole process.\n // if (!currentViewportData.displaySetInstanceUid) {\n // throw new OHIFError('ProtocolEngine::updateViewports No matching display set found?');\n // }\n\n\n viewportData.push(currentViewportData);\n });\n this.LayoutManager.layoutTemplateName = layoutTemplateName;\n this.LayoutManager.layoutProps = layoutProps;\n this.LayoutManager.viewportData = viewportData;\n\n if (viewportIndex !== undefined && viewportData[viewportIndex]) {\n this.LayoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, viewportData[viewportIndex]);\n } else {\n this.LayoutManager.updateViewports();\n }\n }\n /**\n * Sets the current Hanging Protocol to the specified Protocol\n * An optional argument can also be used to prevent the updating of the Viewports\n *\n * @param newProtocol\n * @param updateViewports\n */\n\n }, {\n key: \"setHangingProtocol\",\n value: function setHangingProtocol(newProtocol) {\n var updateViewports = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log$1.trace('ProtocolEngine::setHangingProtocol newProtocol', newProtocol);\n log$1.trace(\"ProtocolEngine::setHangingProtocol updateViewports = \".concat(updateViewports)); // Reset the array of newStageIds\n\n this.newStageIds = [];\n\n if (HP.Protocol.prototype.isPrototypeOf(newProtocol)) {\n this.protocol = newProtocol;\n } else {\n this.protocol = new HP.Protocol();\n this.protocol.fromObject(newProtocol);\n }\n\n this.stage = 0; // Update viewports by default\n\n if (updateViewports) {\n this.updateViewports();\n } //Session.set('HangingProtocolName', this.protocol.name);\n //Session.set('HangingProtocolStage', this.stage);\n\n }\n /**\n * Check if the next stage is available\n * @return {Boolean} True if next stage is available or false otherwise\n */\n\n }, {\n key: \"isNextStageAvailable\",\n value: function isNextStageAvailable() {\n var numberOfStages = this.getNumProtocolStages();\n return this.stage + 1 < numberOfStages;\n }\n /**\n * Check if the previous stage is available\n * @return {Boolean} True if previous stage is available or false otherwise\n */\n\n }, {\n key: \"isPreviousStageAvailable\",\n value: function isPreviousStageAvailable() {\n return this.stage - 1 >= 0;\n }\n /**\n * Changes the current stage to a new stage index in the display set sequence.\n * It checks if the next stage exists.\n *\n * @param {Integer} stageAction An integer value specifying wheater next (1) or previous (-1) stage\n * @return {Boolean} True if new stage has set or false, otherwise\n */\n\n }, {\n key: \"setCurrentProtocolStage\",\n value: function setCurrentProtocolStage(stageAction) {\n // Check if previous or next stage is available\n if (stageAction === -1 && !this.isPreviousStageAvailable()) {\n return false;\n } else if (stageAction === 1 && !this.isNextStageAvailable()) {\n return false;\n } // Sets the new stage\n\n\n this.stage += stageAction; // Log the new stage\n\n log$1.trace(\"ProtocolEngine::setCurrentProtocolStage stage = \".concat(this.stage)); // Set stage Session variable for reactivity\n //Session.set('HangingProtocolStage', this.stage);\n // Since stage has changed, we need to update the viewports\n // and redo matchings\n\n this.updateViewports(); // Everything went well\n\n return true;\n }\n /**\n * Retrieves the number of Stages in the current Protocol or\n * undefined if no protocol or stages are set\n */\n\n }, {\n key: \"getNumProtocolStages\",\n value: function getNumProtocolStages() {\n if (!this.protocol || !this.protocol.stages || !this.protocol.stages.length) {\n return;\n }\n\n return this.protocol.stages.length;\n }\n /**\n * Switches to the next protocol stage in the display set sequence\n */\n\n }, {\n key: \"nextProtocolStage\",\n value: function nextProtocolStage() {\n log$1.trace('ProtocolEngine::nextProtocolStage');\n\n if (!this.setCurrentProtocolStage(1)) {\n log$1.trace('ProtocolEngine::nextProtocolStage failed');\n }\n }\n /**\n * Switches to the previous protocol stage in the display set sequence\n */\n\n }, {\n key: \"previousProtocolStage\",\n value: function previousProtocolStage() {\n log$1.trace('ProtocolEngine::previousProtocolStage');\n\n if (!this.setCurrentProtocolStage(-1)) {\n log$1.trace('ProtocolEngine::previousProtocolStage failed');\n }\n }\n }]);\n\n return ProtocolEngine;\n}();\n\nvar viewer = {};\nvar OHIF$1 = {\n viewer: viewer,\n utils: utils,\n studies: studies,\n redux: redux,\n classes: classes,\n metadata: metadata,\n hotkeys: hotkeys,\n header: header,\n cornerstone: cornerstone$1,\n string: string,\n ui: ui,\n user: user,\n object: object,\n commands: commands,\n log: log$1,\n external: external,\n DICOMWeb: DICOMWeb,\n plugins: plugins\n};\n\nexport default OHIF$1;\nexport { viewer, utils, studies, redux, classes, metadata, hotkeys, header, cornerstone$1 as cornerstone, string, ui, user, object, commands, log$1 as log, DICOMWeb, plugins, OHIF$1 as OHIF };\n//# sourceMappingURL=index.es.js.map\n","/*! dicom-parser - 1.8.2 - 2018-12-05 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return Z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(e).length;default:if(n)return Z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:f>223?3:f>191?2:1;if(i+h<=r)switch(h){case 1:f<128&&(u=f);break;case 2:128==(192&(a=e[i+1]))&&(l=(31&f)<<6|63&a)>127&&(u=l);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(l=(15&f)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&f)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return D(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return S(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},l.prototype.compare=function(e,t,r,n,i){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),f=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return y(this,e,t,r);case\"utf8\":case\"utf-8\":return b(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,a){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function B(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function U(e,t,r,n,a){return a||B(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||B(e,0,r,8),i.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return U(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return U(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function j(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var l=i(s.prototype),f=0;f1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=l}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+f[r].offset+8,f[r].length);for(var c=l(f,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;y.WritableState=_;var f=r(6);f.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,f=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(f||0===f)?f:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?l(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(2),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,l=!0;r;)i[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;i.allBuffers=l,b(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:f.length,f,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)})}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}f.inherits(y,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=g.destroy,y.prototype._undestroy=g.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,l,f;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(f=r.slice()).length,l=0;l0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var l=n[r],f=o(i,l);if(void 0===f)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,f);return(0,a.default)(e,t,f,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function f(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var l=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var f,v=\"\",S=!1,k=[\"{\",\"}\"];(c(r)&&(S=!0,k=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return b(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||S&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),f=S?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(f,v,k)):k[0]+v+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(l.value)<0?(s=g(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function y(e){return void 0===e}function b(e){return v(e)&&\"[object RegExp]\"===S(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===S(e)}function E(e){return v(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;f--)if(u[f]!==h[f])return!1;for(f=u.length-1;f>=0;f--)if(l=u[f],!y(e[l],t[l],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function b(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),l=!e&&i&&!r;if((s&&o&&v(i,r)||l)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){y(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){y(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){y(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){y(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function f(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=b;var a,o=r(38);b.ReadableState=y;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=r(34),f=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(b,l);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(2),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,o)):(i||(a=function(e,t){var r;n=t,f.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===f.prototype||(t=function(e){return f.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){c(\"emit readable\"),e.emit(\"readable\"),O(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=f.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function R(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?R(this):S(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&R(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&R(this)),null!==n&&this.emit(\"data\",n),n},b.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var l=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:b;function f(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",f),r.removeListener(\"end\",u),r.removeListener(\"end\",b),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(l):r.once(\"end\",l),e.on(\"unpipe\",f);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,O(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),b(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",y),b()}function y(){c(\"onfinish\"),e.removeListener(\"close\",_),b()}function b(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",y),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var l=new i.default(r.byteArrayParser,r.byteArray,t);return l.warnings=r.warnings,l.position=r.position,l}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=f(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,l,f,u,h,d){var c,p,g,m,_,y,b,v,w,E=d.bits,x=0,S=0,k=0,A=0,P=0,T=0,D=0,O=0,I=0,R=0,L=null,F=0,B=new n.Buf16(16),U=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)B[x]=0;for(S=0;S=1&&0===B[A];A--);if(P>A&&(P=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(k=1;k0&&(0===e||1!==A))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+B[x];for(S=0;S852||2===e&&I>592)return 1;for(;;){b=x-D,h[S]y?(v=M[N+h[S]],w=L[F+h[S]]):(v=96,w=0),c=1<>D)+(p-=c)]=b<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(R&=c-1,R+=c):R=0,S++,0==--B[x]){if(x===A)break;x=t[r+h[S]]}if(x>P&&(R&m)!==g){for(0===D&&(D=P),_+=k,O=1<<(T=x-D);T+D852||2===e&&I>592)return 1;f[g=R&m]=P<<24|T<<16|_-u|0}}return 0!==R&&(f[_+R]=x-D<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,l,f,u,h,d,c,p,g,m,_,y,b,v,w,E,x,S,k,A;r=e.state,n=e.next_in,k=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),l=r.dmax,f=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=b>>>24,p-=v,0===(v=b>>>16&255))A[a++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=g[(65535&b)+(c&(1<>>=v,p-=v),p<15&&(c+=k[n++]<>>=v=b>>>24,p-=v,!(16&(v=b>>>16&255))){if(0==(64&v)){b=m[(65535&b)+(c&(1<l){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=d,0===h){if(x+=f-v,v2;)A[a++]=S[x++],A[a++]=S[x++],A[a++]=S[x++],w-=3;w&&(A[a++]=S[x++],w>1&&(A[a++]=S[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var le,fe,ue=!0;function he(e){if(ue){var t;for(le=new n.Buf32(512),fe=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(f,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,fe,0,e.work,{bits:5}),ue=!1}e.lencode=le,e.lenbits=9,e.distcode=fe,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,le=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(le-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=S;case S:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,le=0,r.mode=k;case k:for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=A;case A:if(1024&r.flags){for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=T;case T:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&le,le-=7&le,r.mode=V;break}for(;le<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=B;break;case 1:if(he(r),r.mode=j,t===c){se>>>=2,le-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,le-=2;break;case B:for(se>>>=7&le,le-=7≤le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,le=0,r.mode=U,t===c)break e;case U:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;le<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,le-=5,r.ndist=1+(31&se),se>>>=5,le-=5,r.ncode=4+(15&se),se>>>=4,le-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>=3,le-=3}for(;r.have<19;)r.lens[Te[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Se={bits:r.lenbits},xe=s(l,r.lens,0,19,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=Z;case Z:for(;r.have>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,le-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;le>>=me,le-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,le-=2}else if(17===ye){for(ke=me+3;le>>=me)),se>>>=3,le-=3}else{for(ke=me+7;le>>=me)),se>>>=7,le-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,Se={bits:r.lenbits},xe=s(f,r.lens,0,r.nlen,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,Se={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Se),r.distbits=Se.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=j,t===c)break e;case j:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=le,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,le=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,r.length=ye,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=ye,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;le<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var f=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,y=15,b=16,v=7,w=256,E=16,x=17,S=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(p+2));l(D);var O=new Array(2*g);l(O);var I=new Array(512);l(I);var R=new Array(256);l(R);var L=new Array(d);l(L);var F,B,U,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function z(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Z(e){return e<256?I[e]:I[256+(e>>>7)]}function j(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>b-r?(e.bi_buf|=t<>b-e.bi_valid,e.bi_valid+=r-b):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(y+1),o=0;for(n=1;n<=y;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?j(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)J(e,a,r);i=l;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],J(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,J(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,l=t.dyn_tree,f=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=y;a++)e.bl_count[a]=0;for(l[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=l[2*l[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),l[2*n+1]=a,n>f||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=l[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>f||(l[2*i+1]!==a&&(e.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),n--)}}(e,t),W(a,f,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,l=7,f=4;for(0===o&&(l=138,f=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*T[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),l=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=l&&(l=f)):l=f=r+5,r+4<=l&&-1!==t?te(e,t,r,n):e.strategy===i||f===l?(C(e,(u<<1)+(n?1:0),3),K(e,D,O)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(R[r]+c+1)]++,e.dyn_dtree[2*Z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,D),function(e){16===e.bi_valid?(j(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),l=r(49),f=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,y=-5,b=-1,v=1,w=2,E=3,x=4,S=0,k=2,A=8,P=9,T=15,D=8,O=286,I=30,R=19,L=2*O+1,F=15,B=3,U=258,M=U+B+1,N=32,z=42,Z=69,j=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,J=4,K=3;function X(e,t){return e.msg=l[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,f=e.window,u=e.w_mask,h=e.prev,d=e.strstart+U,c=f[a+o-1],p=f[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(f[(r=t)+o]===p&&f[r+o-1]===c&&f[r]===f[a]&&f[++r]===f[a+1]){a+=2,r++;do{}while(f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=f[a+o-1],p=f[a+o]}}}while((t=h[t&u])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,l,f,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(f=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=f.avail_in)>d&&(c=d),r=0===c?0:(f.avail_in-=c,i.arraySet(u,f.input,f.next_in,c,h),1===f.state.wrap?f.adler=o(f.adler,u,c,h):2===f.state.wrap&&(f.adler=s(f.adler,u,c,h)),f.next_in+=c,f.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=B)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<=B)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-B,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*R+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*O+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*O+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=n,l.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===f)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new le(4,4,8,4,oe),new le(4,5,16,8,oe),new le(4,6,32,32,oe),new le(4,4,16,16,se),new le(8,16,32,32,se),new le(8,16,128,128,se),new le(8,32,128,256,se),new le(32,128,258,1024,se),new le(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,T,D,S)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=fe,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?y:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===z)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,K),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===Z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,y);if(i.status===W&&0!==e.avail_in)return X(e,y);if(0!==e.avail_in||0!==i.lookahead||t!==f&&i.status!==W){var b=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===f)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=U){if(ae(e),e.lookahead<=U&&t===f)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+U;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(r=a._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(b!==V&&b!==J||(i.status=W),b===H||b===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(b===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==z&&t!==Z&&t!==j&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,l,f,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==z||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),l=e.avail_in,f=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=B;){n=r.strstart,a=r.lookahead-(B-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,l,f,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=f,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,l){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,l=1,f={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function f(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",l),r.removeListener(\"error\",f),e.removeListener(\"error\",f),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",f),e.on(\"error\",f),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,l=r(1).kMaxLength,f=\"Cannot create final Buffer. It would be larger than 0x\"+l.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=l?o=new RangeError(f):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function y(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){T(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var l=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(l=e.level);var f=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(f=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,f,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=f,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function T(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function D(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=b,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=S,t.Unzip=k,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new k(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new b(t),e,r)},t.deflateSync=function(e,t){return y(new b(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return y(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.unzipSync=function(e,t){return y(new k(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.inflateRawSync=function(e,t){return y(new S(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){T(this,t),e.nextTick(D,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(g[0],g[1]));if(this._hadError)throw d;if(p>=l)throw T(this),new RangeError(f);var m=n.concat(c,p);return T(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(l,f){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-f;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===f||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===f){if(o+=i-l,i=l,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=y,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=y},o.inherits(b,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(S,P),o.inherits(k,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(l){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(l),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,l){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,l);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,f.default)(t,l,t.length-l),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+l);return t.copy(g,0,0,l),p.copy(g,l),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(l),_=pako.inflateRaw(m),y=(0,n.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new a.default(s.default,y,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,l);return new a.default(s.default,t,l)}(c,l.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,l.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),l=c(r(36)),f=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.2\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-f;else{if(a===l)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=f}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,l,f=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*l-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,f-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-f(e)},t.toByteArray=function(e){var t,r,n,o,s,l=e.length;o=f(e),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(25),i=f(r(77)),a=f(r(76)),o=f(r(43)),s=f(r(75)),l=f(r(74));function f(e){return e&&e.__esModule?e:{default:e}}t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=i.default,t.parseDA=a.default,t.explicitElementToString=o.default,t.explicitDataSetToJS=s.default,t.createJPEGBasicOffsetTable=l.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readTag=t.readSequenceItem=t.readSequenceItemsImplicit=t.readSequenceItemsExplicit=t.readPart10Header=t.readEncapsulatedPixelDataFromFragments=t.readEncapsulatedPixelData=t.readEncapsulatedImageFrame=t.readDicomElementImplicit=t.readDicomElementExplicit=t.parseDicom=t.littleEndianByteArrayParser=t.findItemDelimitationItemAndSetElementLength=t.findEndOfEncapsulatedElement=t.findAndSetUNElementLength=t.DataSet=t.sharedCopy=t.ByteStream=t.bigEndianByteArrayParser=t.version=t.alloc=t.readFixedString=t.parseDicomDataSetImplicit=t.parseDicomDataSetExplicit=t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(78),i=r(16),a=r(14),o=P(r(22)),s=P(r(71)),l=P(r(37)),f=P(r(12)),u=P(r(11)),h=P(r(7)),d=P(r(41)),c=P(r(42)),p=P(r(24)),g=P(r(21)),m=P(r(70)),_=P(r(15)),y=P(r(23)),b=P(r(26)),v=P(r(44)),w=P(r(17)),E=P(r(36)),x=P(r(40)),S=P(r(39)),k=P(r(13)),A=P(r(4));function P(e){return e&&e.__esModule?e:{default:e}}var T={isStringVr:n.isStringVr,isPrivateTag:n.isPrivateTag,parsePN:n.parsePN,parseTM:n.parseTM,parseDA:n.parseDA,explicitElementToString:n.explicitElementToString,explicitDataSetToJS:n.explicitDataSetToJS,createJPEGBasicOffsetTable:n.createJPEGBasicOffsetTable,parseDicomDataSetExplicit:i.parseDicomDataSetExplicit,parseDicomDataSetImplicit:i.parseDicomDataSetImplicit,readFixedString:a.readFixedString,alloc:o.default,version:s.default,bigEndianByteArrayParser:l.default,ByteStream:f.default,sharedCopy:u.default,DataSet:h.default,findAndSetUNElementLength:d.default,findEndOfEncapsulatedElement:c.default,findItemDelimitationItemAndSetElementLength:p.default,littleEndianByteArrayParser:g.default,parseDicom:m.default,readDicomElementExplicit:_.default,readDicomElementImplicit:y.default,readEncapsulatedImageFrame:b.default,readEncapsulatedPixelData:v.default,readEncapsulatedPixelDataFromFragments:w.default,readPart10Header:E.default,readSequenceItemsExplicit:x.default,readSequenceItemsImplicit:S.default,readSequenceItem:k.default,readTag:A.default};t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=n.parseTM,t.parseDA=n.parseDA,t.explicitElementToString=n.explicitElementToString,t.explicitDataSetToJS=n.explicitDataSetToJS,t.createJPEGBasicOffsetTable=n.createJPEGBasicOffsetTable,t.parseDicomDataSetExplicit=i.parseDicomDataSetExplicit,t.parseDicomDataSetImplicit=i.parseDicomDataSetImplicit,t.readFixedString=a.readFixedString,t.alloc=o.default,t.version=s.default,t.bigEndianByteArrayParser=l.default,t.ByteStream=f.default,t.sharedCopy=u.default,t.DataSet=h.default,t.findAndSetUNElementLength=d.default,t.findEndOfEncapsulatedElement=c.default,t.findItemDelimitationItemAndSetElementLength=p.default,t.littleEndianByteArrayParser=g.default,t.parseDicom=m.default,t.readDicomElementExplicit=_.default,t.readDicomElementImplicit=y.default,t.readEncapsulatedImageFrame=b.default,t.readEncapsulatedPixelData=v.default,t.readEncapsulatedPixelDataFromFragments=w.default,t.readPart10Header=E.default,t.readSequenceItemsExplicit=x.default,t.readSequenceItemsImplicit=S.default,t.readSequenceItem=k.default,t.readTag=A.default,t.default=T}])});\n//# sourceMappingURL=dicomParser.min.js.map","/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstone-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstone-core\"] = factory();\n\telse\n\t\troot[\"cornerstone\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \tfunction hotDisposeChunk(chunkId) {\n/******/ \t\tdelete installedChunks[chunkId];\n/******/ \t}\n/******/ \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n/******/ \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n/******/ \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n/******/ \t\thotAddUpdateChunk(chunkId, moreModules);\n/******/ \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n/******/ \t} ;\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadUpdateChunk(chunkId) {\n/******/ \t\tvar head = document.getElementsByTagName(\"head\")[0];\n/******/ \t\tvar script = document.createElement(\"script\");\n/******/ \t\tscript.charset = \"utf-8\";\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n/******/ \t\t;\n/******/ \t\thead.appendChild(script);\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadManifest(requestTimeout) {\n/******/ \t\trequestTimeout = requestTimeout || 10000;\n/******/ \t\treturn new Promise(function(resolve, reject) {\n/******/ \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n/******/ \t\t\t\treturn reject(new Error(\"No browser support\"));\n/******/ \t\t\t}\n/******/ \t\t\ttry {\n/******/ \t\t\t\tvar request = new XMLHttpRequest();\n/******/ \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n/******/ \t\t\t\trequest.open(\"GET\", requestPath, true);\n/******/ \t\t\t\trequest.timeout = requestTimeout;\n/******/ \t\t\t\trequest.send(null);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\treturn reject(err);\n/******/ \t\t\t}\n/******/ \t\t\trequest.onreadystatechange = function() {\n/******/ \t\t\t\tif (request.readyState !== 4) return;\n/******/ \t\t\t\tif (request.status === 0) {\n/******/ \t\t\t\t\t// timeout\n/******/ \t\t\t\t\treject(\n/******/ \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n/******/ \t\t\t\t\t);\n/******/ \t\t\t\t} else if (request.status === 404) {\n/******/ \t\t\t\t\t// no update available\n/******/ \t\t\t\t\tresolve();\n/******/ \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n/******/ \t\t\t\t\t// other failure\n/******/ \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\t// success\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n/******/ \t\t\t\t\t} catch (e) {\n/******/ \t\t\t\t\t\treject(e);\n/******/ \t\t\t\t\t\treturn;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tresolve(update);\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \tvar hotApplyOnUpdate = true;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentHash = \"72ed982d5a0046aad5fa\";\n/******/ \tvar hotRequestTimeout = 10000;\n/******/ \tvar hotCurrentModuleData = {};\n/******/ \tvar hotCurrentChildModule;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParents = [];\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParentsTemp = [];\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateRequire(moduleId) {\n/******/ \t\tvar me = installedModules[moduleId];\n/******/ \t\tif (!me) return __webpack_require__;\n/******/ \t\tvar fn = function(request) {\n/******/ \t\t\tif (me.hot.active) {\n/******/ \t\t\t\tif (installedModules[request]) {\n/******/ \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n/******/ \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\t\t\thotCurrentChildModule = request;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (me.children.indexOf(request) === -1) {\n/******/ \t\t\t\t\tme.children.push(request);\n/******/ \t\t\t\t}\n/******/ \t\t\t} else {\n/******/ \t\t\t\tconsole.warn(\n/******/ \t\t\t\t\t\"[HMR] unexpected require(\" +\n/******/ \t\t\t\t\t\trequest +\n/******/ \t\t\t\t\t\t\") from disposed module \" +\n/******/ \t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t);\n/******/ \t\t\t\thotCurrentParents = [];\n/******/ \t\t\t}\n/******/ \t\t\treturn __webpack_require__(request);\n/******/ \t\t};\n/******/ \t\tvar ObjectFactory = function ObjectFactory(name) {\n/******/ \t\t\treturn {\n/******/ \t\t\t\tconfigurable: true,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: function() {\n/******/ \t\t\t\t\treturn __webpack_require__[name];\n/******/ \t\t\t\t},\n/******/ \t\t\t\tset: function(value) {\n/******/ \t\t\t\t\t__webpack_require__[name] = value;\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t};\n/******/ \t\tfor (var name in __webpack_require__) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n/******/ \t\t\t\tname !== \"e\" &&\n/******/ \t\t\t\tname !== \"t\"\n/******/ \t\t\t) {\n/******/ \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tfn.e = function(chunkId) {\n/******/ \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n/******/ \t\t\thotChunksLoading++;\n/******/ \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n/******/ \t\t\t\tfinishChunkLoading();\n/******/ \t\t\t\tthrow err;\n/******/ \t\t\t});\n/******/\n/******/ \t\t\tfunction finishChunkLoading() {\n/******/ \t\t\t\thotChunksLoading--;\n/******/ \t\t\t\tif (hotStatus === \"prepare\") {\n/******/ \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n/******/ \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n/******/ \t\t\t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\tfn.t = function(value, mode) {\n/******/ \t\t\tif (mode & 1) value = fn(value);\n/******/ \t\t\treturn __webpack_require__.t(value, mode & ~1);\n/******/ \t\t};\n/******/ \t\treturn fn;\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateModule(moduleId) {\n/******/ \t\tvar hot = {\n/******/ \t\t\t// private stuff\n/******/ \t\t\t_acceptedDependencies: {},\n/******/ \t\t\t_declinedDependencies: {},\n/******/ \t\t\t_selfAccepted: false,\n/******/ \t\t\t_selfDeclined: false,\n/******/ \t\t\t_disposeHandlers: [],\n/******/ \t\t\t_main: hotCurrentChildModule !== moduleId,\n/******/\n/******/ \t\t\t// Module API\n/******/ \t\t\tactive: true,\n/******/ \t\t\taccept: function(dep, callback) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n/******/ \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n/******/ \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n/******/ \t\t\t},\n/******/ \t\t\tdecline: function(dep) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n/******/ \t\t\t\telse hot._declinedDependencies[dep] = true;\n/******/ \t\t\t},\n/******/ \t\t\tdispose: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\taddDisposeHandler: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\tremoveDisposeHandler: function(callback) {\n/******/ \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n/******/ \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t// Management API\n/******/ \t\t\tcheck: hotCheck,\n/******/ \t\t\tapply: hotApply,\n/******/ \t\t\tstatus: function(l) {\n/******/ \t\t\t\tif (!l) return hotStatus;\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\taddStatusHandler: function(l) {\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\tremoveStatusHandler: function(l) {\n/******/ \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n/******/ \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t//inherit from previous dispose call\n/******/ \t\t\tdata: hotCurrentModuleData[moduleId]\n/******/ \t\t};\n/******/ \t\thotCurrentChildModule = undefined;\n/******/ \t\treturn hot;\n/******/ \t}\n/******/\n/******/ \tvar hotStatusHandlers = [];\n/******/ \tvar hotStatus = \"idle\";\n/******/\n/******/ \tfunction hotSetStatus(newStatus) {\n/******/ \t\thotStatus = newStatus;\n/******/ \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n/******/ \t\t\thotStatusHandlers[i].call(null, newStatus);\n/******/ \t}\n/******/\n/******/ \t// while downloading\n/******/ \tvar hotWaitingFiles = 0;\n/******/ \tvar hotChunksLoading = 0;\n/******/ \tvar hotWaitingFilesMap = {};\n/******/ \tvar hotRequestedFilesMap = {};\n/******/ \tvar hotAvailableFilesMap = {};\n/******/ \tvar hotDeferred;\n/******/\n/******/ \t// The update info\n/******/ \tvar hotUpdate, hotUpdateNewHash;\n/******/\n/******/ \tfunction toModuleId(id) {\n/******/ \t\tvar isNumber = +id + \"\" === id;\n/******/ \t\treturn isNumber ? +id : id;\n/******/ \t}\n/******/\n/******/ \tfunction hotCheck(apply) {\n/******/ \t\tif (hotStatus !== \"idle\") {\n/******/ \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n/******/ \t\t}\n/******/ \t\thotApplyOnUpdate = apply;\n/******/ \t\thotSetStatus(\"check\");\n/******/ \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n/******/ \t\t\tif (!update) {\n/******/ \t\t\t\thotSetStatus(\"idle\");\n/******/ \t\t\t\treturn null;\n/******/ \t\t\t}\n/******/ \t\t\thotRequestedFilesMap = {};\n/******/ \t\t\thotWaitingFilesMap = {};\n/******/ \t\t\thotAvailableFilesMap = update.c;\n/******/ \t\t\thotUpdateNewHash = update.h;\n/******/\n/******/ \t\t\thotSetStatus(\"prepare\");\n/******/ \t\t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\t\thotDeferred = {\n/******/ \t\t\t\t\tresolve: resolve,\n/******/ \t\t\t\t\treject: reject\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\thotUpdate = {};\n/******/ \t\t\tvar chunkId = \"cornerstone\";\n/******/ \t\t\t// eslint-disable-next-line no-lone-blocks\n/******/ \t\t\t{\n/******/ \t\t\t\t/*globals chunkId */\n/******/ \t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t\tif (\n/******/ \t\t\t\thotStatus === \"prepare\" &&\n/******/ \t\t\t\thotChunksLoading === 0 &&\n/******/ \t\t\t\thotWaitingFiles === 0\n/******/ \t\t\t) {\n/******/ \t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t}\n/******/ \t\t\treturn promise;\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n/******/ \t\t\treturn;\n/******/ \t\thotRequestedFilesMap[chunkId] = false;\n/******/ \t\tfor (var moduleId in moreModules) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n/******/ \t\t\thotUpdateDownloaded();\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotEnsureUpdateChunk(chunkId) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId]) {\n/******/ \t\t\thotWaitingFilesMap[chunkId] = true;\n/******/ \t\t} else {\n/******/ \t\t\thotRequestedFilesMap[chunkId] = true;\n/******/ \t\t\thotWaitingFiles++;\n/******/ \t\t\thotDownloadUpdateChunk(chunkId);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotUpdateDownloaded() {\n/******/ \t\thotSetStatus(\"ready\");\n/******/ \t\tvar deferred = hotDeferred;\n/******/ \t\thotDeferred = null;\n/******/ \t\tif (!deferred) return;\n/******/ \t\tif (hotApplyOnUpdate) {\n/******/ \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n/******/ \t\t\t// avoid triggering uncaught exception warning in Chrome.\n/******/ \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n/******/ \t\t\tPromise.resolve()\n/******/ \t\t\t\t.then(function() {\n/******/ \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n/******/ \t\t\t\t})\n/******/ \t\t\t\t.then(\n/******/ \t\t\t\t\tfunction(result) {\n/******/ \t\t\t\t\t\tdeferred.resolve(result);\n/******/ \t\t\t\t\t},\n/******/ \t\t\t\t\tfunction(err) {\n/******/ \t\t\t\t\t\tdeferred.reject(err);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t);\n/******/ \t\t} else {\n/******/ \t\t\tvar outdatedModules = [];\n/******/ \t\t\tfor (var id in hotUpdate) {\n/******/ \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\t\toutdatedModules.push(toModuleId(id));\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tdeferred.resolve(outdatedModules);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotApply(options) {\n/******/ \t\tif (hotStatus !== \"ready\")\n/******/ \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n/******/ \t\toptions = options || {};\n/******/\n/******/ \t\tvar cb;\n/******/ \t\tvar i;\n/******/ \t\tvar j;\n/******/ \t\tvar module;\n/******/ \t\tvar moduleId;\n/******/\n/******/ \t\tfunction getAffectedStuff(updateModuleId) {\n/******/ \t\t\tvar outdatedModules = [updateModuleId];\n/******/ \t\t\tvar outdatedDependencies = {};\n/******/\n/******/ \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n/******/ \t\t\t\treturn {\n/******/ \t\t\t\t\tchain: [id],\n/******/ \t\t\t\t\tid: id\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\twhile (queue.length > 0) {\n/******/ \t\t\t\tvar queueItem = queue.pop();\n/******/ \t\t\t\tvar moduleId = queueItem.id;\n/******/ \t\t\t\tvar chain = queueItem.chain;\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n/******/ \t\t\t\tif (module.hot._selfDeclined) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"self-declined\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (module.hot._main) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"unaccepted\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n/******/ \t\t\t\t\tvar parentId = module.parents[i];\n/******/ \t\t\t\t\tvar parent = installedModules[parentId];\n/******/ \t\t\t\t\tif (!parent) continue;\n/******/ \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\treturn {\n/******/ \t\t\t\t\t\t\ttype: \"declined\",\n/******/ \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\tparentId: parentId\n/******/ \t\t\t\t\t\t};\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n/******/ \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n/******/ \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n/******/ \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n/******/ \t\t\t\t\t\tcontinue;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tdelete outdatedDependencies[parentId];\n/******/ \t\t\t\t\toutdatedModules.push(parentId);\n/******/ \t\t\t\t\tqueue.push({\n/******/ \t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\tid: parentId\n/******/ \t\t\t\t\t});\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/\n/******/ \t\t\treturn {\n/******/ \t\t\t\ttype: \"accepted\",\n/******/ \t\t\t\tmoduleId: updateModuleId,\n/******/ \t\t\t\toutdatedModules: outdatedModules,\n/******/ \t\t\t\toutdatedDependencies: outdatedDependencies\n/******/ \t\t\t};\n/******/ \t\t}\n/******/\n/******/ \t\tfunction addAllToSet(a, b) {\n/******/ \t\t\tfor (var i = 0; i < b.length; i++) {\n/******/ \t\t\t\tvar item = b[i];\n/******/ \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// at begin all updates modules are outdated\n/******/ \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n/******/ \t\tvar outdatedDependencies = {};\n/******/ \t\tvar outdatedModules = [];\n/******/ \t\tvar appliedUpdate = {};\n/******/\n/******/ \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n/******/ \t\t\tconsole.warn(\n/******/ \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n/******/ \t\t\t);\n/******/ \t\t};\n/******/\n/******/ \t\tfor (var id in hotUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\tmoduleId = toModuleId(id);\n/******/ \t\t\t\t/** @type {TODO} */\n/******/ \t\t\t\tvar result;\n/******/ \t\t\t\tif (hotUpdate[id]) {\n/******/ \t\t\t\t\tresult = getAffectedStuff(moduleId);\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tresult = {\n/******/ \t\t\t\t\t\ttype: \"disposed\",\n/******/ \t\t\t\t\t\tmoduleId: id\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\t/** @type {Error|false} */\n/******/ \t\t\t\tvar abortError = false;\n/******/ \t\t\t\tvar doApply = false;\n/******/ \t\t\t\tvar doDispose = false;\n/******/ \t\t\t\tvar chainInfo = \"\";\n/******/ \t\t\t\tif (result.chain) {\n/******/ \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n/******/ \t\t\t\t}\n/******/ \t\t\t\tswitch (result.type) {\n/******/ \t\t\t\t\tcase \"self-declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\t\" in \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.parentId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"unaccepted\":\n/******/ \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"accepted\":\n/******/ \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n/******/ \t\t\t\t\t\tdoApply = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"disposed\":\n/******/ \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n/******/ \t\t\t\t\t\tdoDispose = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tdefault:\n/******/ \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (abortError) {\n/******/ \t\t\t\t\thotSetStatus(\"abort\");\n/******/ \t\t\t\t\treturn Promise.reject(abortError);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (doApply) {\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n/******/ \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n/******/ \t\t\t\t\t\tif (\n/******/ \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n/******/ \t\t\t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t\t\t\t)\n/******/ \t\t\t\t\t\t) {\n/******/ \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n/******/ \t\t\t\t\t\t\taddAllToSet(\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Store self accepted outdated modules to require them later by the module system\n/******/ \t\tvar outdatedSelfAcceptedModules = [];\n/******/ \t\tfor (i = 0; i < outdatedModules.length; i++) {\n/******/ \t\t\tmoduleId = outdatedModules[i];\n/******/ \t\t\tif (\n/******/ \t\t\t\tinstalledModules[moduleId] &&\n/******/ \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n/******/ \t\t\t)\n/******/ \t\t\t\toutdatedSelfAcceptedModules.push({\n/******/ \t\t\t\t\tmodule: moduleId,\n/******/ \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n/******/ \t\t\t\t});\n/******/ \t\t}\n/******/\n/******/ \t\t// Now in \"dispose\" phase\n/******/ \t\thotSetStatus(\"dispose\");\n/******/ \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n/******/ \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n/******/ \t\t\t\thotDisposeChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t});\n/******/\n/******/ \t\tvar idx;\n/******/ \t\tvar queue = outdatedModules.slice();\n/******/ \t\twhile (queue.length > 0) {\n/******/ \t\t\tmoduleId = queue.pop();\n/******/ \t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\tif (!module) continue;\n/******/\n/******/ \t\t\tvar data = {};\n/******/\n/******/ \t\t\t// Call dispose handlers\n/******/ \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n/******/ \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n/******/ \t\t\t\tcb = disposeHandlers[j];\n/******/ \t\t\t\tcb(data);\n/******/ \t\t\t}\n/******/ \t\t\thotCurrentModuleData[moduleId] = data;\n/******/\n/******/ \t\t\t// disable module (this disables requires from this module)\n/******/ \t\t\tmodule.hot.active = false;\n/******/\n/******/ \t\t\t// remove module from cache\n/******/ \t\t\tdelete installedModules[moduleId];\n/******/\n/******/ \t\t\t// when disposing there is no need to call dispose handler\n/******/ \t\t\tdelete outdatedDependencies[moduleId];\n/******/\n/******/ \t\t\t// remove \"parents\" references from all children\n/******/ \t\t\tfor (j = 0; j < module.children.length; j++) {\n/******/ \t\t\t\tvar child = installedModules[module.children[j]];\n/******/ \t\t\t\tif (!child) continue;\n/******/ \t\t\t\tidx = child.parents.indexOf(moduleId);\n/******/ \t\t\t\tif (idx >= 0) {\n/******/ \t\t\t\t\tchild.parents.splice(idx, 1);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// remove outdated dependency from module children\n/******/ \t\tvar dependency;\n/******/ \t\tvar moduleOutdatedDependencies;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n/******/ \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n/******/ \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Not in \"apply\" phase\n/******/ \t\thotSetStatus(\"apply\");\n/******/\n/******/ \t\thotCurrentHash = hotUpdateNewHash;\n/******/\n/******/ \t\t// insert new code\n/******/ \t\tfor (moduleId in appliedUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// call accept handlers\n/******/ \t\tvar error = null;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tvar callbacks = [];\n/******/ \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n/******/ \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n/******/ \t\t\t\t\t\tif (cb) {\n/******/ \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n/******/ \t\t\t\t\t\t\tcallbacks.push(cb);\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n/******/ \t\t\t\t\t\tcb = callbacks[i];\n/******/ \t\t\t\t\t\ttry {\n/******/ \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n/******/ \t\t\t\t\t\t} catch (err) {\n/******/ \t\t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n/******/ \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n/******/ \t\t\t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t\t}\n/******/ \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\t\tif (!error) error = err;\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/******/\n/******/ \t\t// Load self accepted modules\n/******/ \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n/******/ \t\t\tvar item = outdatedSelfAcceptedModules[i];\n/******/ \t\t\tmoduleId = item.module;\n/******/ \t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\ttry {\n/******/ \t\t\t\t__webpack_require__(moduleId);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\tif (typeof item.errorHandler === \"function\") {\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\titem.errorHandler(err);\n/******/ \t\t\t\t\t} catch (err2) {\n/******/ \t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n/******/ \t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\terror: err2,\n/******/ \t\t\t\t\t\t\t\toriginalError: err\n/******/ \t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\tif (!error) error = err2;\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t});\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// handle errors in accept handlers and self accepted module load\n/******/ \t\tif (error) {\n/******/ \t\t\thotSetStatus(\"fail\");\n/******/ \t\t\treturn Promise.reject(error);\n/******/ \t\t}\n/******/\n/******/ \t\thotSetStatus(\"idle\");\n/******/ \t\treturn new Promise(function(resolve) {\n/******/ \t\t\tresolve(outdatedModules);\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {},\n/******/ \t\t\thot: hotCreateModule(moduleId),\n/******/ \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n/******/ \t\t\tchildren: []\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// __webpack_hash__\n/******/ \t__webpack_require__.h = function() { return hotCurrentHash; };\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn hotCreateRequire(\"./index.js\")(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./canvasToPixel.js\":\n/*!**************************!*\\\n !*** ./canvasToPixel.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the canvas coordinate system to the pixel coordinate system\n * system. This can be used to reset tools' image coordinates after modifications\n * have been made in canvas space (e.g. moving a tool by a few cm, independent of\n * image resolution).\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {{x: Number, y: Number}} pt The input point in the canvas coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./colors/colormap.js\":\n/*!****************************!*\\\n !*** ./colors/colormap.js ***!\n \\****************************/\n/*! exports provided: getColormapsList, getColormap */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormapsList\", function() { return getColormapsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormap\", function() { return getColormap; });\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\nvar COLOR_TRANSPARENT = [0, 0, 0, 0]; // Colormaps\n//\n// Hot Iron, PET, Hot Metal Blue and PET 20 Step are color palettes\n// Defined by the DICOM standard\n// http://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html\n//\n// All Linear Segmented Colormaps were copied from matplotlib\n// https://github.com/stefanv/matplotlib/blob/master/lib/matplotlib/_cm.py\n\nvar colormapsData = {\n hotIron: {\n name: 'Hot Iron',\n numOfColors: 256,\n colors: [[0, 0, 0, 255], [2, 0, 0, 255], [4, 0, 0, 255], [6, 0, 0, 255], [8, 0, 0, 255], [10, 0, 0, 255], [12, 0, 0, 255], [14, 0, 0, 255], [16, 0, 0, 255], [18, 0, 0, 255], [20, 0, 0, 255], [22, 0, 0, 255], [24, 0, 0, 255], [26, 0, 0, 255], [28, 0, 0, 255], [30, 0, 0, 255], [32, 0, 0, 255], [34, 0, 0, 255], [36, 0, 0, 255], [38, 0, 0, 255], [40, 0, 0, 255], [42, 0, 0, 255], [44, 0, 0, 255], [46, 0, 0, 255], [48, 0, 0, 255], [50, 0, 0, 255], [52, 0, 0, 255], [54, 0, 0, 255], [56, 0, 0, 255], [58, 0, 0, 255], [60, 0, 0, 255], [62, 0, 0, 255], [64, 0, 0, 255], [66, 0, 0, 255], [68, 0, 0, 255], [70, 0, 0, 255], [72, 0, 0, 255], [74, 0, 0, 255], [76, 0, 0, 255], [78, 0, 0, 255], [80, 0, 0, 255], [82, 0, 0, 255], [84, 0, 0, 255], [86, 0, 0, 255], [88, 0, 0, 255], [90, 0, 0, 255], [92, 0, 0, 255], [94, 0, 0, 255], [96, 0, 0, 255], [98, 0, 0, 255], [100, 0, 0, 255], [102, 0, 0, 255], [104, 0, 0, 255], [106, 0, 0, 255], [108, 0, 0, 255], [110, 0, 0, 255], [112, 0, 0, 255], [114, 0, 0, 255], [116, 0, 0, 255], [118, 0, 0, 255], [120, 0, 0, 255], [122, 0, 0, 255], [124, 0, 0, 255], [126, 0, 0, 255], [128, 0, 0, 255], [130, 0, 0, 255], [132, 0, 0, 255], [134, 0, 0, 255], [136, 0, 0, 255], [138, 0, 0, 255], [140, 0, 0, 255], [142, 0, 0, 255], [144, 0, 0, 255], [146, 0, 0, 255], [148, 0, 0, 255], [150, 0, 0, 255], [152, 0, 0, 255], [154, 0, 0, 255], [156, 0, 0, 255], [158, 0, 0, 255], [160, 0, 0, 255], [162, 0, 0, 255], [164, 0, 0, 255], [166, 0, 0, 255], [168, 0, 0, 255], [170, 0, 0, 255], [172, 0, 0, 255], [174, 0, 0, 255], [176, 0, 0, 255], [178, 0, 0, 255], [180, 0, 0, 255], [182, 0, 0, 255], [184, 0, 0, 255], [186, 0, 0, 255], [188, 0, 0, 255], [190, 0, 0, 255], [192, 0, 0, 255], [194, 0, 0, 255], [196, 0, 0, 255], [198, 0, 0, 255], [200, 0, 0, 255], [202, 0, 0, 255], [204, 0, 0, 255], [206, 0, 0, 255], [208, 0, 0, 255], [210, 0, 0, 255], [212, 0, 0, 255], [214, 0, 0, 255], [216, 0, 0, 255], [218, 0, 0, 255], [220, 0, 0, 255], [222, 0, 0, 255], [224, 0, 0, 255], [226, 0, 0, 255], [228, 0, 0, 255], [230, 0, 0, 255], [232, 0, 0, 255], [234, 0, 0, 255], [236, 0, 0, 255], [238, 0, 0, 255], [240, 0, 0, 255], [242, 0, 0, 255], [244, 0, 0, 255], [246, 0, 0, 255], [248, 0, 0, 255], [250, 0, 0, 255], [252, 0, 0, 255], [254, 0, 0, 255], [255, 0, 0, 255], [255, 2, 0, 255], [255, 4, 0, 255], [255, 6, 0, 255], [255, 8, 0, 255], [255, 10, 0, 255], [255, 12, 0, 255], [255, 14, 0, 255], [255, 16, 0, 255], [255, 18, 0, 255], [255, 20, 0, 255], [255, 22, 0, 255], [255, 24, 0, 255], [255, 26, 0, 255], [255, 28, 0, 255], [255, 30, 0, 255], [255, 32, 0, 255], [255, 34, 0, 255], [255, 36, 0, 255], [255, 38, 0, 255], [255, 40, 0, 255], [255, 42, 0, 255], [255, 44, 0, 255], [255, 46, 0, 255], [255, 48, 0, 255], [255, 50, 0, 255], [255, 52, 0, 255], [255, 54, 0, 255], [255, 56, 0, 255], [255, 58, 0, 255], [255, 60, 0, 255], [255, 62, 0, 255], [255, 64, 0, 255], [255, 66, 0, 255], [255, 68, 0, 255], [255, 70, 0, 255], [255, 72, 0, 255], [255, 74, 0, 255], [255, 76, 0, 255], [255, 78, 0, 255], [255, 80, 0, 255], [255, 82, 0, 255], [255, 84, 0, 255], [255, 86, 0, 255], [255, 88, 0, 255], [255, 90, 0, 255], [255, 92, 0, 255], [255, 94, 0, 255], [255, 96, 0, 255], [255, 98, 0, 255], [255, 100, 0, 255], [255, 102, 0, 255], [255, 104, 0, 255], [255, 106, 0, 255], [255, 108, 0, 255], [255, 110, 0, 255], [255, 112, 0, 255], [255, 114, 0, 255], [255, 116, 0, 255], [255, 118, 0, 255], [255, 120, 0, 255], [255, 122, 0, 255], [255, 124, 0, 255], [255, 126, 0, 255], [255, 128, 4, 255], [255, 130, 8, 255], [255, 132, 12, 255], [255, 134, 16, 255], [255, 136, 20, 255], [255, 138, 24, 255], [255, 140, 28, 255], [255, 142, 32, 255], [255, 144, 36, 255], [255, 146, 40, 255], [255, 148, 44, 255], [255, 150, 48, 255], [255, 152, 52, 255], [255, 154, 56, 255], [255, 156, 60, 255], [255, 158, 64, 255], [255, 160, 68, 255], [255, 162, 72, 255], [255, 164, 76, 255], [255, 166, 80, 255], [255, 168, 84, 255], [255, 170, 88, 255], [255, 172, 92, 255], [255, 174, 96, 255], [255, 176, 100, 255], [255, 178, 104, 255], [255, 180, 108, 255], [255, 182, 112, 255], [255, 184, 116, 255], [255, 186, 120, 255], [255, 188, 124, 255], [255, 190, 128, 255], [255, 192, 132, 255], [255, 194, 136, 255], [255, 196, 140, 255], [255, 198, 144, 255], [255, 200, 148, 255], [255, 202, 152, 255], [255, 204, 156, 255], [255, 206, 160, 255], [255, 208, 164, 255], [255, 210, 168, 255], [255, 212, 172, 255], [255, 214, 176, 255], [255, 216, 180, 255], [255, 218, 184, 255], [255, 220, 188, 255], [255, 222, 192, 255], [255, 224, 196, 255], [255, 226, 200, 255], [255, 228, 204, 255], [255, 230, 208, 255], [255, 232, 212, 255], [255, 234, 216, 255], [255, 236, 220, 255], [255, 238, 224, 255], [255, 240, 228, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 240, 255], [255, 248, 244, 255], [255, 250, 248, 255], [255, 252, 252, 255], [255, 255, 255, 255]]\n },\n pet: {\n name: 'PET',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 2, 1, 255], [0, 4, 3, 255], [0, 6, 5, 255], [0, 8, 7, 255], [0, 10, 9, 255], [0, 12, 11, 255], [0, 14, 13, 255], [0, 16, 15, 255], [0, 18, 17, 255], [0, 20, 19, 255], [0, 22, 21, 255], [0, 24, 23, 255], [0, 26, 25, 255], [0, 28, 27, 255], [0, 30, 29, 255], [0, 32, 31, 255], [0, 34, 33, 255], [0, 36, 35, 255], [0, 38, 37, 255], [0, 40, 39, 255], [0, 42, 41, 255], [0, 44, 43, 255], [0, 46, 45, 255], [0, 48, 47, 255], [0, 50, 49, 255], [0, 52, 51, 255], [0, 54, 53, 255], [0, 56, 55, 255], [0, 58, 57, 255], [0, 60, 59, 255], [0, 62, 61, 255], [0, 65, 63, 255], [0, 67, 65, 255], [0, 69, 67, 255], [0, 71, 69, 255], [0, 73, 71, 255], [0, 75, 73, 255], [0, 77, 75, 255], [0, 79, 77, 255], [0, 81, 79, 255], [0, 83, 81, 255], [0, 85, 83, 255], [0, 87, 85, 255], [0, 89, 87, 255], [0, 91, 89, 255], [0, 93, 91, 255], [0, 95, 93, 255], [0, 97, 95, 255], [0, 99, 97, 255], [0, 101, 99, 255], [0, 103, 101, 255], [0, 105, 103, 255], [0, 107, 105, 255], [0, 109, 107, 255], [0, 111, 109, 255], [0, 113, 111, 255], [0, 115, 113, 255], [0, 117, 115, 255], [0, 119, 117, 255], [0, 121, 119, 255], [0, 123, 121, 255], [0, 125, 123, 255], [0, 128, 125, 255], [1, 126, 127, 255], [3, 124, 129, 255], [5, 122, 131, 255], [7, 120, 133, 255], [9, 118, 135, 255], [11, 116, 137, 255], [13, 114, 139, 255], [15, 112, 141, 255], [17, 110, 143, 255], [19, 108, 145, 255], [21, 106, 147, 255], [23, 104, 149, 255], [25, 102, 151, 255], [27, 100, 153, 255], [29, 98, 155, 255], [31, 96, 157, 255], [33, 94, 159, 255], [35, 92, 161, 255], [37, 90, 163, 255], [39, 88, 165, 255], [41, 86, 167, 255], [43, 84, 169, 255], [45, 82, 171, 255], [47, 80, 173, 255], [49, 78, 175, 255], [51, 76, 177, 255], [53, 74, 179, 255], [55, 72, 181, 255], [57, 70, 183, 255], [59, 68, 185, 255], [61, 66, 187, 255], [63, 64, 189, 255], [65, 63, 191, 255], [67, 61, 193, 255], [69, 59, 195, 255], [71, 57, 197, 255], [73, 55, 199, 255], [75, 53, 201, 255], [77, 51, 203, 255], [79, 49, 205, 255], [81, 47, 207, 255], [83, 45, 209, 255], [85, 43, 211, 255], [86, 41, 213, 255], [88, 39, 215, 255], [90, 37, 217, 255], [92, 35, 219, 255], [94, 33, 221, 255], [96, 31, 223, 255], [98, 29, 225, 255], [100, 27, 227, 255], [102, 25, 229, 255], [104, 23, 231, 255], [106, 21, 233, 255], [108, 19, 235, 255], [110, 17, 237, 255], [112, 15, 239, 255], [114, 13, 241, 255], [116, 11, 243, 255], [118, 9, 245, 255], [120, 7, 247, 255], [122, 5, 249, 255], [124, 3, 251, 255], [126, 1, 253, 255], [128, 0, 255, 255], [130, 2, 252, 255], [132, 4, 248, 255], [134, 6, 244, 255], [136, 8, 240, 255], [138, 10, 236, 255], [140, 12, 232, 255], [142, 14, 228, 255], [144, 16, 224, 255], [146, 18, 220, 255], [148, 20, 216, 255], [150, 22, 212, 255], [152, 24, 208, 255], [154, 26, 204, 255], [156, 28, 200, 255], [158, 30, 196, 255], [160, 32, 192, 255], [162, 34, 188, 255], [164, 36, 184, 255], [166, 38, 180, 255], [168, 40, 176, 255], [170, 42, 172, 255], [171, 44, 168, 255], [173, 46, 164, 255], [175, 48, 160, 255], [177, 50, 156, 255], [179, 52, 152, 255], [181, 54, 148, 255], [183, 56, 144, 255], [185, 58, 140, 255], [187, 60, 136, 255], [189, 62, 132, 255], [191, 64, 128, 255], [193, 66, 124, 255], [195, 68, 120, 255], [197, 70, 116, 255], [199, 72, 112, 255], [201, 74, 108, 255], [203, 76, 104, 255], [205, 78, 100, 255], [207, 80, 96, 255], [209, 82, 92, 255], [211, 84, 88, 255], [213, 86, 84, 255], [215, 88, 80, 255], [217, 90, 76, 255], [219, 92, 72, 255], [221, 94, 68, 255], [223, 96, 64, 255], [225, 98, 60, 255], [227, 100, 56, 255], [229, 102, 52, 255], [231, 104, 48, 255], [233, 106, 44, 255], [235, 108, 40, 255], [237, 110, 36, 255], [239, 112, 32, 255], [241, 114, 28, 255], [243, 116, 24, 255], [245, 118, 20, 255], [247, 120, 16, 255], [249, 122, 12, 255], [251, 124, 8, 255], [253, 126, 4, 255], [255, 128, 0, 255], [255, 130, 4, 255], [255, 132, 8, 255], [255, 134, 12, 255], [255, 136, 16, 255], [255, 138, 20, 255], [255, 140, 24, 255], [255, 142, 28, 255], [255, 144, 32, 255], [255, 146, 36, 255], [255, 148, 40, 255], [255, 150, 44, 255], [255, 152, 48, 255], [255, 154, 52, 255], [255, 156, 56, 255], [255, 158, 60, 255], [255, 160, 64, 255], [255, 162, 68, 255], [255, 164, 72, 255], [255, 166, 76, 255], [255, 168, 80, 255], [255, 170, 85, 255], [255, 172, 89, 255], [255, 174, 93, 255], [255, 176, 97, 255], [255, 178, 101, 255], [255, 180, 105, 255], [255, 182, 109, 255], [255, 184, 113, 255], [255, 186, 117, 255], [255, 188, 121, 255], [255, 190, 125, 255], [255, 192, 129, 255], [255, 194, 133, 255], [255, 196, 137, 255], [255, 198, 141, 255], [255, 200, 145, 255], [255, 202, 149, 255], [255, 204, 153, 255], [255, 206, 157, 255], [255, 208, 161, 255], [255, 210, 165, 255], [255, 212, 170, 255], [255, 214, 174, 255], [255, 216, 178, 255], [255, 218, 182, 255], [255, 220, 186, 255], [255, 222, 190, 255], [255, 224, 194, 255], [255, 226, 198, 255], [255, 228, 202, 255], [255, 230, 206, 255], [255, 232, 210, 255], [255, 234, 214, 255], [255, 236, 218, 255], [255, 238, 222, 255], [255, 240, 226, 255], [255, 242, 230, 255], [255, 244, 234, 255], [255, 246, 238, 255], [255, 248, 242, 255], [255, 250, 246, 255], [255, 252, 250, 255], [255, 255, 255, 255]]\n },\n hotMetalBlue: {\n name: 'Hot Metal Blue',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 2, 255], [0, 0, 4, 255], [0, 0, 6, 255], [0, 0, 8, 255], [0, 0, 10, 255], [0, 0, 12, 255], [0, 0, 14, 255], [0, 0, 16, 255], [0, 0, 17, 255], [0, 0, 19, 255], [0, 0, 21, 255], [0, 0, 23, 255], [0, 0, 25, 255], [0, 0, 27, 255], [0, 0, 29, 255], [0, 0, 31, 255], [0, 0, 33, 255], [0, 0, 35, 255], [0, 0, 37, 255], [0, 0, 39, 255], [0, 0, 41, 255], [0, 0, 43, 255], [0, 0, 45, 255], [0, 0, 47, 255], [0, 0, 49, 255], [0, 0, 51, 255], [0, 0, 53, 255], [0, 0, 55, 255], [0, 0, 57, 255], [0, 0, 59, 255], [0, 0, 61, 255], [0, 0, 63, 255], [0, 0, 65, 255], [0, 0, 67, 255], [0, 0, 69, 255], [0, 0, 71, 255], [0, 0, 73, 255], [0, 0, 75, 255], [0, 0, 77, 255], [0, 0, 79, 255], [0, 0, 81, 255], [0, 0, 83, 255], [0, 0, 84, 255], [0, 0, 86, 255], [0, 0, 88, 255], [0, 0, 90, 255], [0, 0, 92, 255], [0, 0, 94, 255], [0, 0, 96, 255], [0, 0, 98, 255], [0, 0, 100, 255], [0, 0, 102, 255], [0, 0, 104, 255], [0, 0, 106, 255], [0, 0, 108, 255], [0, 0, 110, 255], [0, 0, 112, 255], [0, 0, 114, 255], [0, 0, 116, 255], [0, 0, 117, 255], [0, 0, 119, 255], [0, 0, 121, 255], [0, 0, 123, 255], [0, 0, 125, 255], [0, 0, 127, 255], [0, 0, 129, 255], [0, 0, 131, 255], [0, 0, 133, 255], [0, 0, 135, 255], [0, 0, 137, 255], [0, 0, 139, 255], [0, 0, 141, 255], [0, 0, 143, 255], [0, 0, 145, 255], [0, 0, 147, 255], [0, 0, 149, 255], [0, 0, 151, 255], [0, 0, 153, 255], [0, 0, 155, 255], [0, 0, 157, 255], [0, 0, 159, 255], [0, 0, 161, 255], [0, 0, 163, 255], [0, 0, 165, 255], [0, 0, 167, 255], [3, 0, 169, 255], [6, 0, 171, 255], [9, 0, 173, 255], [12, 0, 175, 255], [15, 0, 177, 255], [18, 0, 179, 255], [21, 0, 181, 255], [24, 0, 183, 255], [26, 0, 184, 255], [29, 0, 186, 255], [32, 0, 188, 255], [35, 0, 190, 255], [38, 0, 192, 255], [41, 0, 194, 255], [44, 0, 196, 255], [47, 0, 198, 255], [50, 0, 200, 255], [52, 0, 197, 255], [55, 0, 194, 255], [57, 0, 191, 255], [59, 0, 188, 255], [62, 0, 185, 255], [64, 0, 182, 255], [66, 0, 179, 255], [69, 0, 176, 255], [71, 0, 174, 255], [74, 0, 171, 255], [76, 0, 168, 255], [78, 0, 165, 255], [81, 0, 162, 255], [83, 0, 159, 255], [85, 0, 156, 255], [88, 0, 153, 255], [90, 0, 150, 255], [93, 2, 144, 255], [96, 4, 138, 255], [99, 6, 132, 255], [102, 8, 126, 255], [105, 9, 121, 255], [108, 11, 115, 255], [111, 13, 109, 255], [114, 15, 103, 255], [116, 17, 97, 255], [119, 19, 91, 255], [122, 21, 85, 255], [125, 23, 79, 255], [128, 24, 74, 255], [131, 26, 68, 255], [134, 28, 62, 255], [137, 30, 56, 255], [140, 32, 50, 255], [143, 34, 47, 255], [146, 36, 44, 255], [149, 38, 41, 255], [152, 40, 38, 255], [155, 41, 35, 255], [158, 43, 32, 255], [161, 45, 29, 255], [164, 47, 26, 255], [166, 49, 24, 255], [169, 51, 21, 255], [172, 53, 18, 255], [175, 55, 15, 255], [178, 56, 12, 255], [181, 58, 9, 255], [184, 60, 6, 255], [187, 62, 3, 255], [190, 64, 0, 255], [194, 66, 0, 255], [198, 68, 0, 255], [201, 70, 0, 255], [205, 72, 0, 255], [209, 73, 0, 255], [213, 75, 0, 255], [217, 77, 0, 255], [221, 79, 0, 255], [224, 81, 0, 255], [228, 83, 0, 255], [232, 85, 0, 255], [236, 87, 0, 255], [240, 88, 0, 255], [244, 90, 0, 255], [247, 92, 0, 255], [251, 94, 0, 255], [255, 96, 0, 255], [255, 98, 3, 255], [255, 100, 6, 255], [255, 102, 9, 255], [255, 104, 12, 255], [255, 105, 15, 255], [255, 107, 18, 255], [255, 109, 21, 255], [255, 111, 24, 255], [255, 113, 26, 255], [255, 115, 29, 255], [255, 117, 32, 255], [255, 119, 35, 255], [255, 120, 38, 255], [255, 122, 41, 255], [255, 124, 44, 255], [255, 126, 47, 255], [255, 128, 50, 255], [255, 130, 53, 255], [255, 132, 56, 255], [255, 134, 59, 255], [255, 136, 62, 255], [255, 137, 65, 255], [255, 139, 68, 255], [255, 141, 71, 255], [255, 143, 74, 255], [255, 145, 76, 255], [255, 147, 79, 255], [255, 149, 82, 255], [255, 151, 85, 255], [255, 152, 88, 255], [255, 154, 91, 255], [255, 156, 94, 255], [255, 158, 97, 255], [255, 160, 100, 255], [255, 162, 103, 255], [255, 164, 106, 255], [255, 166, 109, 255], [255, 168, 112, 255], [255, 169, 115, 255], [255, 171, 118, 255], [255, 173, 121, 255], [255, 175, 124, 255], [255, 177, 126, 255], [255, 179, 129, 255], [255, 181, 132, 255], [255, 183, 135, 255], [255, 184, 138, 255], [255, 186, 141, 255], [255, 188, 144, 255], [255, 190, 147, 255], [255, 192, 150, 255], [255, 194, 153, 255], [255, 196, 156, 255], [255, 198, 159, 255], [255, 200, 162, 255], [255, 201, 165, 255], [255, 203, 168, 255], [255, 205, 171, 255], [255, 207, 174, 255], [255, 209, 176, 255], [255, 211, 179, 255], [255, 213, 182, 255], [255, 215, 185, 255], [255, 216, 188, 255], [255, 218, 191, 255], [255, 220, 194, 255], [255, 222, 197, 255], [255, 224, 200, 255], [255, 226, 203, 255], [255, 228, 206, 255], [255, 229, 210, 255], [255, 231, 213, 255], [255, 233, 216, 255], [255, 235, 219, 255], [255, 237, 223, 255], [255, 239, 226, 255], [255, 240, 229, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 239, 255], [255, 248, 242, 255], [255, 250, 245, 255], [255, 251, 249, 255], [255, 253, 252, 255], [255, 255, 255, 255]]\n },\n pet20Step: {\n name: 'PET 20 Step',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255]]\n },\n gray: {\n name: 'Gray',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 1, 1]]\n }\n },\n jet: {\n name: 'Jet',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.35, 0, 0], [0.66, 1, 1], [0.89, 1, 1], [1, 0.5, 0.5]],\n green: [[0, 0, 0], [0.125, 0, 0], [0.375, 1, 1], [0.64, 1, 1], [0.91, 0, 0], [1, 0, 0]],\n blue: [[0, 0.5, 0.5], [0.11, 1, 1], [0.34, 1, 1], [0.65, 0, 0], [1, 0, 0]]\n }\n },\n hsv: {\n name: 'HSV',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [0.158730, 1, 1], [0.174603, 0.968750, 0.968750], [0.333333, 0.031250, 0.031250], [0.349206, 0, 0], [0.666667, 0, 0], [0.682540, 0.031250, 0.031250], [0.841270, 0.968750, 0.968750], [0.857143, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.158730, 0.937500, 0.937500], [0.174603, 1, 1], [0.507937, 1, 1], [0.666667, 0.062500, 0.062500], [0.682540, 0, 0], [1, 0, 0]],\n blue: [[0, 0, 0], [0.333333, 0, 0], [0.349206, 0.062500, 0.062500], [0.507937, 1, 1], [0.841270, 1, 1], [0.857143, 0.937500, 0.937500], [1, 0.09375, 0.09375]]\n }\n },\n hot: {\n name: 'Hot',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.0416, 0.0416], [0.365079, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0, 0], [0.746032, 1, 1], [1, 1, 1]],\n blue: [[0, 0, 0], [0.746032, 0, 0], [1, 1, 1]]\n }\n },\n cool: {\n name: 'Cool',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 1, 1], [1, 0, 0]],\n blue: [[0, 1, 1], [1, 1, 1]]\n }\n },\n spring: {\n name: 'Spring',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0, 0]]\n }\n },\n summer: {\n name: 'Summer',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0.5, 0.5], [1, 1, 1]],\n blue: [[0, 0.4, 0.4], [1, 0.4, 0.4]]\n }\n },\n autumn: {\n name: 'Autumn',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 0, 0]]\n }\n },\n winter: {\n name: 'Winter',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 0, 0]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0.5, 0.5]]\n }\n },\n bone: {\n name: 'Bone',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.746032, 0.652778, 0.652778], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0.319444, 0.319444], [0.746032, 0.777778, 0.777778], [1, 1, 1]],\n blue: [[0, 0, 0], [0.365079, 0.444444, 0.444444], [1, 1, 1]]\n }\n },\n copper: {\n name: 'Copper',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.809524, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 0.7812, 0.7812]],\n blue: [[0, 0, 0], [1, 0.4975, 0.4975]]\n }\n },\n spectral: {\n name: 'Spectral',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.05, 0.4667, 0.4667], [0.10, 0.5333, 0.5333], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0, 0], [0.30, 0, 0], [0.35, 0, 0], [0.40, 0, 0], [0.45, 0, 0], [0.50, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0.7333, 0.7333], [0.70, 0.9333, 0.9333], [0.75, 1, 1], [0.80, 1, 1], [0.85, 1, 1], [0.90, 0.8667, 0.8667], [0.95, 0.80, 0.80], [1, 0.80, 0.80]],\n green: [[0, 0, 0], [0.05, 0, 0], [0.10, 0, 0], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0.4667, 0.4667], [0.30, 0.6000, 0.6000], [0.35, 0.6667, 0.6667], [0.40, 0.6667, 0.6667], [0.45, 0.6000, 0.6000], [0.50, 0.7333, 0.7333], [0.55, 0.8667, 0.8667], [0.60, 1, 1], [0.65, 1, 1], [0.70, 0.9333, 0.9333], [0.75, 0.8000, 0.8000], [0.80, 0.6000, 0.6000], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]],\n blue: [[0, 0, 0], [0.05, 0.5333, 0.5333], [0.10, 0.6000, 0.6000], [0.15, 0.6667, 0.6667], [0.20, 0.8667, 0.8667], [0.25, 0.8667, 0.8667], [0.30, 0.8667, 0.8667], [0.35, 0.6667, 0.6667], [0.40, 0.5333, 0.5333], [0.45, 0, 0], [0.5, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0, 0], [0.70, 0, 0], [0.75, 0, 0], [0.80, 0, 0], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]]\n }\n },\n coolwarm: {\n name: 'CoolWarm',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.2298057, 0.2298057], [0.03125, 0.26623388, 0.26623388], [0.0625, 0.30386891, 0.30386891], [0.09375, 0.342804478, 0.342804478], [0.125, 0.38301334, 0.38301334], [0.15625, 0.424369608, 0.424369608], [0.1875, 0.46666708, 0.46666708], [0.21875, 0.509635204, 0.509635204], [0.25, 0.552953156, 0.552953156], [0.28125, 0.596262162, 0.596262162], [0.3125, 0.639176211, 0.639176211], [0.34375, 0.681291281, 0.681291281], [0.375, 0.722193294, 0.722193294], [0.40625, 0.761464949, 0.761464949], [0.4375, 0.798691636, 0.798691636], [0.46875, 0.833466556, 0.833466556], [0.5, 0.865395197, 0.865395197], [0.53125, 0.897787179, 0.897787179], [0.5625, 0.924127593, 0.924127593], [0.59375, 0.944468518, 0.944468518], [0.625, 0.958852946, 0.958852946], [0.65625, 0.96732803, 0.96732803], [0.6875, 0.969954137, 0.969954137], [0.71875, 0.966811177, 0.966811177], [0.75, 0.958003065, 0.958003065], [0.78125, 0.943660866, 0.943660866], [0.8125, 0.923944917, 0.923944917], [0.84375, 0.89904617, 0.89904617], [0.875, 0.869186849, 0.869186849], [0.90625, 0.834620542, 0.834620542], [0.9375, 0.795631745, 0.795631745], [0.96875, 0.752534934, 0.752534934], [1, 0.705673158, 0.705673158]],\n green: [[0, 0.298717966, 0.298717966], [0.03125, 0.353094838, 0.353094838], [0.0625, 0.406535296, 0.406535296], [0.09375, 0.458757618, 0.458757618], [0.125, 0.50941904, 0.50941904], [0.15625, 0.558148092, 0.558148092], [0.1875, 0.604562568, 0.604562568], [0.21875, 0.648280772, 0.648280772], [0.25, 0.688929332, 0.688929332], [0.28125, 0.726149107, 0.726149107], [0.3125, 0.759599947, 0.759599947], [0.34375, 0.788964712, 0.788964712], [0.375, 0.813952739, 0.813952739], [0.40625, 0.834302879, 0.834302879], [0.4375, 0.849786142, 0.849786142], [0.46875, 0.860207984, 0.860207984], [0.5, 0.86541021, 0.86541021], [0.53125, 0.848937047, 0.848937047], [0.5625, 0.827384882, 0.827384882], [0.59375, 0.800927443, 0.800927443], [0.625, 0.769767752, 0.769767752], [0.65625, 0.734132809, 0.734132809], [0.6875, 0.694266682, 0.694266682], [0.71875, 0.650421156, 0.650421156], [0.75, 0.602842431, 0.602842431], [0.78125, 0.551750968, 0.551750968], [0.8125, 0.49730856, 0.49730856], [0.84375, 0.439559467, 0.439559467], [0.875, 0.378313092, 0.378313092], [0.90625, 0.312874446, 0.312874446], [0.9375, 0.24128379, 0.24128379], [0.96875, 0.157246067, 0.157246067], [1, 0.01555616, 0.01555616]],\n blue: [[0, 0.753683153, 0.753683153], [0.03125, 0.801466763, 0.801466763], [0.0625, 0.84495867, 0.84495867], [0.09375, 0.883725899, 0.883725899], [0.125, 0.917387822, 0.917387822], [0.15625, 0.945619588, 0.945619588], [0.1875, 0.968154911, 0.968154911], [0.21875, 0.98478814, 0.98478814], [0.25, 0.995375608, 0.995375608], [0.28125, 0.999836203, 0.999836203], [0.3125, 0.998151185, 0.998151185], [0.34375, 0.990363227, 0.990363227], [0.375, 0.976574709, 0.976574709], [0.40625, 0.956945269, 0.956945269], [0.4375, 0.931688648, 0.931688648], [0.46875, 0.901068838, 0.901068838], [0.5, 0.865395561, 0.865395561], [0.53125, 0.820880546, 0.820880546], [0.5625, 0.774508472, 0.774508472], [0.59375, 0.726736146, 0.726736146], [0.625, 0.678007945, 0.678007945], [0.65625, 0.628751763, 0.628751763], [0.6875, 0.579375448, 0.579375448], [0.71875, 0.530263762, 0.530263762], [0.75, 0.481775914, 0.481775914], [0.78125, 0.434243684, 0.434243684], [0.8125, 0.387970225, 0.387970225], [0.84375, 0.343229596, 0.343229596], [0.875, 0.300267182, 0.300267182], [0.90625, 0.259301199, 0.259301199], [0.9375, 0.220525627, 0.220525627], [0.96875, 0.184115123, 0.184115123], [1, 0.150232812, 0.150232812]]\n }\n },\n blues: {\n name: 'Blues',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.9686274528503418, 0.9686274528503418], [0.125, 0.87058824300765991, 0.87058824300765991], [0.25, 0.7764706015586853, 0.7764706015586853], [0.375, 0.61960786581039429, 0.61960786581039429], [0.5, 0.41960784792900085, 0.41960784792900085], [0.625, 0.25882354378700256, 0.25882354378700256], [0.75, 0.12941177189350128, 0.12941177189350128], [0.875, 0.031372550874948502, 0.031372550874948502], [1, 0.031372550874948502, 0.031372550874948502]],\n green: [[0, 0.9843137264251709, 0.9843137264251709], [0.125, 0.92156863212585449, 0.92156863212585449], [0.25, 0.85882353782653809, 0.85882353782653809], [0.375, 0.7921568751335144, 0.7921568751335144], [0.5, 0.68235296010971069, 0.68235296010971069], [0.625, 0.57254904508590698, 0.57254904508590698], [0.75, 0.44313725829124451, 0.44313725829124451], [0.875, 0.31764706969261169, 0.31764706969261169], [1, 0.18823529779911041, 0.18823529779911041]],\n blue: [[0, 1, 1], [0.125, 0.9686274528503418, 0.9686274528503418], [0.25, 0.93725490570068359, 0.93725490570068359], [0.375, 0.88235294818878174, 0.88235294818878174], [0.5, 0.83921569585800171, 0.83921569585800171], [0.625, 0.7764706015586853, 0.7764706015586853], [0.75, 0.70980393886566162, 0.70980393886566162], [0.875, 0.61176472902297974, 0.61176472902297974], [1, 0.41960784792900085, 0.41960784792900085]]\n }\n }\n};\n/**\n * Generate linearly spaced vectors\n* http://cens.ioc.ee/local/man/matlab/techdoc/ref/linspace.html\n * @param {Number} a A number representing the first vector\n * @param {Number} b A number representing the second vector\n * @param {Number} n The number of linear spaced vectors to generate\n * @returns {Array} An array of points representing linear spaced vectors.\n * @memberof Colors\n */\n\nfunction linspace(a, b, n) {\n n = n === null ? 100 : n;\n var increment = (b - a) / (n - 1);\n var vector = [];\n\n while (n-- > 0) {\n vector.push(a);\n a += increment;\n } // Make sure the last item will always be \"b\" because most of the\n // Time we'll get numbers like 1.0000000000000002 instead of 1.\n\n\n vector[vector.length - 1] = b;\n return vector;\n}\n/**\n * Returns the \"rank/index\" of the element in a sorted array if found or the highest index if not. Uses (binary search)\n * @param {Array} array A sorted array to search in\n * @param {any} elem the element in the array to search for\n * @returns {number} The rank/index of the element in the given array\n * @memberof Colors\n */\n\n\nfunction getRank(array, elem) {\n var left = 0;\n var right = array.length - 1;\n\n while (left <= right) {\n var mid = left + Math.floor((right - left) / 2);\n var midElem = array[mid];\n\n if (midElem === elem) {\n return mid;\n } else if (elem < midElem) {\n right = mid - 1;\n } else {\n left = mid + 1;\n }\n }\n\n return left;\n}\n/**\n * Find the indices into a sorted array a such that, if the corresponding elements\n * In v were inserted before the indices, the order of a would be preserved.\n * http://lagrange.univ-lyon1.fr/docs/numpy/1.11.0/reference/generated/numpy.searchsorted.html\n * @param {Array} inputArray The array where the values will be inserted\n * @param {Array} values An array of the values to be inserted into the inputArray\n * @returns {Array} The indices where elements should be inserted to maintain order.\n * @memberof Colors\n */\n\n\nfunction searchSorted(inputArray, values) {\n var i;\n var indexes = [];\n var len = values.length;\n inputArray.sort(function (a, b) {\n return a - b;\n });\n\n for (i = 0; i < len; i++) {\n indexes[i] = getRank(inputArray, values[i]);\n }\n\n return indexes;\n}\n/**\n * Creates an *N* -element 1-d lookup table\n * @param {Number} N The number of elements in the result lookup table\n * @param {Array} data represented by a list of x,y0,y1 mapping correspondences. Each element in this\n * List represents how a value between 0 and 1 (inclusive) represented by x is mapped to\n * A corresponding value between 0 and 1 (inclusive). The two values of y are to allow for\n * Discontinuous mapping functions (say as might be found in a sawtooth) where y0 represents\n * The value of y for values of x <= to that given, and y1 is the value to be used for x >\n * Than that given). The list must start with x=0, end with x=1, and all values of x must be\n * In increasing order. Values between the given mapping points are determined by simple linear\n * Interpolation.\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the map.\n * @returns {any[]} an array \"result\" where result[x*(N-1)] gives the closest value for\n * Values of x between 0 and 1.\n * @memberof Colors\n */\n\n\nfunction makeMappingArray(N, data, gamma) {\n var i;\n var x = [];\n var y0 = [];\n var y1 = [];\n var lut = [];\n gamma = gamma === null ? 1 : gamma;\n\n for (i = 0; i < data.length; i++) {\n var element = data[i];\n x.push((N - 1) * element[0]);\n y0.push(element[1]);\n y1.push(element[1]);\n }\n\n var xLinSpace = linspace(0, 1, N);\n\n for (i = 0; i < N; i++) {\n xLinSpace[i] = (N - 1) * Math.pow(xLinSpace[i], gamma);\n }\n\n var xLinSpaceIndexes = searchSorted(x, xLinSpace);\n\n for (i = 1; i < N - 1; i++) {\n var index = xLinSpaceIndexes[i];\n var colorPercent = (xLinSpace[i] - x[index - 1]) / (x[index] - x[index - 1]);\n var colorDelta = y0[index] - y1[index - 1];\n lut[i] = colorPercent * colorDelta + y1[index - 1];\n }\n\n lut[0] = y1[0];\n lut[N - 1] = y0[data.length - 1];\n return lut;\n}\n/**\n * Creates a Colormap based on lookup tables using linear segments.\n * @param {{red:Array, green:Array, blue:Array}} segmentedData An object with a red, green and blue entries.\n * Each entry should be a list of x, y0, y1 tuples, forming rows in a table.\n * @param {Number} N The number of elements in the result Colormap\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the Colormap.\n * @returns {Array} The created Colormap object\n * @description The lookup table is generated using linear interpolation for each\n * Primary color, with the 0-1 domain divided into any number of\n * Segments.\n * https://github.com/stefanv/matplotlib/blob/3f1a23755e86fef97d51e30e106195f34425c9e3/lib/matplotlib/colors.py#L663\n * @memberof Colors\n */\n\n\nfunction createLinearSegmentedColormap(segmentedData, N, gamma) {\n var i;\n var lut = [];\n N = N === null ? 256 : N;\n gamma = gamma === null ? 1 : gamma;\n var redLut = makeMappingArray(N, segmentedData.red, gamma);\n var greenLut = makeMappingArray(N, segmentedData.green, gamma);\n var blueLut = makeMappingArray(N, segmentedData.blue, gamma);\n\n for (i = 0; i < N; i++) {\n var red = Math.round(redLut[i] * 255);\n var green = Math.round(greenLut[i] * 255);\n var blue = Math.round(blueLut[i] * 255);\n var rgba = [red, green, blue, 255];\n lut.push(rgba);\n }\n\n return lut;\n}\n/**\n * Return all available colormaps (id and name)\n * @returns {Array<{id,key}>} An array of colormaps with an object containing the \"id\" and display \"name\"\n * @memberof Colors\n */\n\n\nfunction getColormapsList() {\n var colormaps = [];\n var keys = Object.keys(colormapsData);\n keys.forEach(function (key) {\n if (colormapsData.hasOwnProperty(key)) {\n var colormap = colormapsData[key];\n colormaps.push({\n id: key,\n name: colormap.name\n });\n }\n });\n colormaps.sort(function (a, b) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n\n if (aName === bName) {\n return 0;\n }\n\n return aName < bName ? -1 : 1;\n });\n return colormaps;\n}\n/**\n * Return a colorMap object with the provided id and colormapData\n * if the Id matches existent colorMap objects (check colormapsData) the colormapData is ignored.\n * if the colormapData is not empty, the colorMap will be added to the colormapsData list. Otherwise, an empty colorMap object is returned.\n * @param {string} id The ID of the colormap\n * @param {Object} colormapData - An object that can contain a name, numColors, gama, segmentedData and/or colors\n * @returns {*} The Colormap Object\n * @memberof Colors\n*/\n\nfunction getColormap(id, colormapData) {\n var colormap = colormapsData[id];\n\n if (!colormap) {\n colormap = colormapsData[id] = colormapData || {\n name: '',\n colors: []\n };\n }\n\n if (!colormap.colors && colormap.segmentedData) {\n colormap.colors = createLinearSegmentedColormap(colormap.segmentedData, colormap.numColors, colormap.gamma);\n }\n\n return {\n getId: function getId() {\n return id;\n },\n getColorSchemeName: function getColorSchemeName() {\n return colormap.name;\n },\n setColorSchemeName: function setColorSchemeName(name) {\n colormap.name = name;\n },\n getNumberOfColors: function getNumberOfColors() {\n return colormap.colors.length;\n },\n setNumberOfColors: function setNumberOfColors(numColors) {\n while (colormap.colors.length < numColors) {\n colormap.colors.push(COLOR_TRANSPARENT);\n }\n\n colormap.colors.length = numColors;\n },\n getColor: function getColor(index) {\n if (this.isValidIndex(index)) {\n return colormap.colors[index];\n }\n\n return COLOR_TRANSPARENT;\n },\n getColorRepeating: function getColorRepeating(index) {\n var numColors = colormap.colors.length;\n index = numColors ? index % numColors : 0;\n return this.getColor(index);\n },\n setColor: function setColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors[index] = rgba;\n }\n },\n addColor: function addColor(rgba) {\n colormap.colors.push(rgba);\n },\n insertColor: function insertColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1, rgba);\n }\n },\n removeColor: function removeColor(index) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1);\n }\n },\n clearColors: function clearColors() {\n colormap.colors = [];\n },\n buildLookupTable: function buildLookupTable(lut) {\n if (!lut) {\n return;\n }\n\n var numColors = colormap.colors.length;\n lut.setNumberOfTableValues(numColors);\n\n for (var i = 0; i < numColors; i++) {\n lut.setTableValue(i, colormap.colors[i]);\n }\n },\n createLookupTable: function createLookupTable() {\n var lut = new _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.buildLookupTable(lut);\n return lut;\n },\n isValidIndex: function isValidIndex(index) {\n return index >= 0 && index < colormap.colors.length;\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./colors/index.js\":\n/*!*************************!*\\\n !*** ./colors/index.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colormap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colormap.js */ \"./colors/colormap.js\");\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getColormap: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormap\"],\n getColormapsList: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormapsList\"],\n LookupTable: _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./colors/lookupTable.js\":\n/*!*******************************!*\\\n !*** ./colors/lookupTable.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// This code was created based on vtkLookupTable\n// http://www.vtk.org/doc/release/5.0/html/a01697.html\n// https://github.com/Kitware/VTK/blob/master/Common/Core/vtkLookupTable.cxx\nvar BELOW_RANGE_COLOR_INDEX = 0;\nvar ABOVE_RANGE_COLOR_INDEX = 1;\nvar NAN_COLOR_INDEX = 2;\n/**\n * Converts an HSV (Hue, Saturation, Value) color to RGB (Red, Green, Blue) color value\n * @param {Number} hue A number representing the hue color value\n * @param {any} sat A number representing the saturation color value\n * @param {any} val A number representing the value color value\n * @returns {Numberp[]} An RGB color array\n */\n\nfunction HSVToRGB(hue, sat, val) {\n if (hue > 1) {\n throw new Error('HSVToRGB expects hue < 1');\n }\n\n var rgb = [];\n\n if (sat === 0) {\n rgb[0] = val;\n rgb[1] = val;\n rgb[2] = val;\n return rgb;\n }\n\n var hueCase = Math.floor(hue * 6);\n var frac = 6 * hue - hueCase;\n var lx = val * (1 - sat);\n var ly = val * (1 - sat * frac);\n var lz = val * (1 - sat * (1 - frac));\n\n switch (hueCase) {\n /* 0 p.Range[1]) {\n dIndex = p.MaxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.Shift) * p.Scale;\n }\n\n return Math.floor(dIndex);\n}\n/**\n * Maps scalar values into colors via a lookup table\n * LookupTable is an object that is used by mapper objects to map scalar values into rgba (red-green-blue-alpha transparency) color specification,\n * or rgba into scalar values. The color table can be created by direct insertion of color values, or by specifying hue, saturation, value, and alpha range and generating a table\n */\n\n\nvar LookupTable =\n/*#__PURE__*/\nfunction () {\n /**\n * Creates a default linear LookupTable object with 256 colors.\n */\n function LookupTable() {\n _classCallCheck(this, LookupTable);\n\n this.NumberOfColors = 256;\n this.Ramp = 'linear';\n this.TableRange = [0, 255];\n this.HueRange = [0, 0.66667];\n this.SaturationRange = [1, 1];\n this.ValueRange = [1, 1];\n this.AlphaRange = [1, 1];\n this.NaNColor = [128, 0, 0, 255];\n this.BelowRangeColor = [0, 0, 0, 255];\n this.UseBelowRangeColor = true;\n this.AboveRangeColor = [255, 255, 255, 255];\n this.UseAboveRangeColor = true;\n this.InputRange = [0, 255];\n this.Table = [];\n }\n /**\n * Specify the number of values (i.e., colors) in the lookup table.\n * @param {Number} number The number of colors in he LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n\n _createClass(LookupTable, [{\n key: \"setNumberOfTableValues\",\n value: function setNumberOfTableValues(number) {\n this.NumberOfColors = number;\n }\n /**\n * Set the shape of the table ramp to either 'linear', 'scurve' or 'sqrt'\n * @param {String} ramp A string value representing the shape of the table. Allowed values are 'linear', 'scurve' or 'sqrt'\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRamp\",\n value: function setRamp(ramp) {\n this.Ramp = ramp;\n }\n /**\n * Sets the minimum/maximum scalar values for scalar mapping.\n * Scalar values less than minimum range value are clamped to minimum range value.\n * Scalar values greater than maximum range value are clamped to maximum range value.\n * @param {Number} start A double representing the minimum scaler value of the LookupTable\n * @param {any} end A double representing the maximum scaler value of the LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableRange\",\n value: function setTableRange(start, end) {\n this.TableRange[0] = start;\n this.TableRange[1] = end;\n }\n /**\n * Set the range in hue (using automatic generation). Hue ranges between [0,1].\n * @param {Number} start A double representing the minimum hue value in a range. Min. is 0\n * @param {Number} end A double representing the maximum hue value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setHueRange\",\n value: function setHueRange(start, end) {\n this.HueRange[0] = start;\n this.HueRange[1] = end;\n }\n /**\n * Set the range in saturation (using automatic generation). Saturation ranges between [0,1].\n * @param {Number} start A double representing the minimum Saturation value in a range. Min. is 0\n * @param {Number} end A double representing the maximum Saturation value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setSaturationRange\",\n value: function setSaturationRange(start, end) {\n this.SaturationRange[0] = start;\n this.SaturationRange[1] = end;\n }\n /**\n * Set the range in value (using automatic generation). Value ranges between [0,1].\n * @param {Numeber } start A double representing the minimum value in a range. Min. is 0\n * @param {Numeber} end A double representing the maximum value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setValueRange\",\n value: function setValueRange(start, end) {\n // Set the range in value (using automatic generation). Value ranges between [0,1].\n this.ValueRange[0] = start;\n this.ValueRange[1] = end;\n }\n /**\n * (Not Used) Sets the range of scalars which will be mapped.\n * @param {Number} start the minimum scalar value in the range\n * @param {Number} end the maximum scalar value in the range\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRange\",\n value: function setRange(start, end) {\n this.InputRange[0] = start;\n this.InputRange[1] = end;\n }\n /**\n * Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n * @param {Number} start A double representing the minimum alpha value\n * @param {Number} end A double representing the maximum alpha value\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setAlphaRange\",\n value: function setAlphaRange(start, end) {\n // Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n this.AlphaRange[0] = start;\n this.AlphaRange[1] = end;\n }\n /**\n * Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Number} scalar A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"getColor\",\n value: function getColor(scalar) {\n return this.mapValue(scalar);\n }\n /**\n * Generate lookup table from hue, saturation, value, alpha min/max values. Table is built from linear ramp of each value.\n * @param {Boolean} force true to force the build of the LookupTable. Otherwie, false. This is useful if a lookup table has been defined manually\n * (using SetTableValue) and then an application decides to rebuild the lookup table using the implicit process.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"build\",\n value: function build(force) {\n if (this.Table.length > 1 && !force) {\n return;\n } // Clear the table\n\n\n this.Table = [];\n var maxIndex = this.NumberOfColors - 1;\n var hinc, sinc, vinc, ainc;\n\n if (maxIndex) {\n hinc = (this.HueRange[1] - this.HueRange[0]) / maxIndex;\n sinc = (this.SaturationRange[1] - this.SaturationRange[0]) / maxIndex;\n vinc = (this.ValueRange[1] - this.ValueRange[0]) / maxIndex;\n ainc = (this.AlphaRange[1] - this.AlphaRange[0]) / maxIndex;\n } else {\n hinc = sinc = vinc = ainc = 0.0;\n }\n\n for (var i = 0; i <= maxIndex; i++) {\n var hue = this.HueRange[0] + i * hinc;\n var sat = this.SaturationRange[0] + i * sinc;\n var val = this.ValueRange[0] + i * vinc;\n var alpha = this.AlphaRange[0] + i * ainc;\n var rgb = HSVToRGB(hue, sat, val);\n var c_rgba = [];\n\n switch (this.Ramp) {\n case 'scurve':\n c_rgba[0] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[0]) * Math.PI)));\n c_rgba[1] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[1]) * Math.PI)));\n c_rgba[2] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[2]) * Math.PI)));\n c_rgba[3] = Math.floor(alpha * 255);\n break;\n\n case 'linear':\n c_rgba[0] = Math.floor(rgb[0] * 255 + 0.5);\n c_rgba[1] = Math.floor(rgb[1] * 255 + 0.5);\n c_rgba[2] = Math.floor(rgb[2] * 255 + 0.5);\n c_rgba[3] = Math.floor(alpha * 255 + 0.5);\n break;\n\n case 'sqrt':\n c_rgba[0] = Math.floor(Math.sqrt(rgb[0]) * 255 + 0.5);\n c_rgba[1] = Math.floor(Math.sqrt(rgb[1]) * 255 + 0.5);\n c_rgba[2] = Math.floor(Math.sqrt(rgb[2]) * 255 + 0.5);\n c_rgba[3] = Math.floor(Math.sqrt(alpha) * 255 + 0.5);\n break;\n\n default:\n throw new Error(\"Invalid Ramp value (\".concat(this.Ramp, \")\"));\n }\n\n this.Table.push(c_rgba);\n }\n\n this.buildSpecialColors();\n }\n /**\n * Ensures the out-of-range colors (Below range and Above range) are set correctly.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"buildSpecialColors\",\n value: function buildSpecialColors() {\n var numberOfColors = this.NumberOfColors;\n var belowRangeColorIndex = numberOfColors + BELOW_RANGE_COLOR_INDEX;\n var aboveRangeColorIndex = numberOfColors + ABOVE_RANGE_COLOR_INDEX;\n var nanColorIndex = numberOfColors + NAN_COLOR_INDEX; // Below range color\n\n if (this.UseBelowRangeColor || numberOfColors === 0) {\n this.Table[belowRangeColorIndex] = this.BelowRangeColor;\n } else {\n // Duplicate the first color in the table.\n this.Table[belowRangeColorIndex] = this.Table[0];\n } // Above range color\n\n\n if (this.UseAboveRangeColor || numberOfColors === 0) {\n this.Table[aboveRangeColorIndex] = this.AboveRangeColor;\n } else {\n // Duplicate the last color in the table.\n this.Table[aboveRangeColorIndex] = this.Table[numberOfColors - 1];\n } // Always use NanColor\n\n\n this.Table[nanColorIndex] = this.NaNColor;\n }\n /**\n * Similar to GetColor - Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Numeber} v A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"mapValue\",\n value: function mapValue(v) {\n var index = this.getIndex(v);\n\n if (index < 0) {\n return this.NaNColor;\n } else if (index === 0) {\n if (this.UseBelowRangeColor && v < this.TableRange[0]) {\n return this.BelowRangeColor;\n }\n } else if (index === this.NumberOfColors - 1) {\n if (this.UseAboveRangeColor && v > this.TableRange[1]) {\n return this.AboveRangeColor;\n }\n }\n\n return this.Table[index];\n }\n /**\n * Return the table index associated with a particular value.\n * @param {Number} v A double value which table index will be returned.\n * @returns {Number} The index in the LookupTable\n * @memberof Colors\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex(v) {\n var p = {};\n p.Range = [];\n p.MaxIndex = this.NumberOfColors - 1; // This was LookupShiftAndScale\n\n p.Shift = -this.TableRange[0];\n\n if (this.TableRange[1] <= this.TableRange[0]) {\n p.Scale = Number.MAX_VALUE;\n } else {\n p.Scale = p.MaxIndex / (this.TableRange[1] - this.TableRange[0]);\n }\n\n p.Range[0] = this.TableRange[0];\n p.Range[1] = this.TableRange[1]; // First, check whether we have a number...\n\n if (isNaN(v)) {\n // For backwards compatibility\n return -1;\n } // Map to an index:\n\n\n var index = linearIndexLookupMain(v, p); // For backwards compatibility, if the index indicates an\n // Out-of-range value, truncate to index range for in-range colors.\n\n if (index === this.NumberOfColors + BELOW_RANGE_COLOR_INDEX) {\n index = 0;\n } else if (index === this.NumberOfColors + ABOVE_RANGE_COLOR_INDEX) {\n index = this.NumberOfColors - 1;\n }\n\n return index;\n }\n /**\n * Directly load color into lookup table. Use [0,1] double values for color component specification.\n * Make sure that you've either used the Build() method or used SetNumberOfTableValues() prior to using this method.\n * @param {Number} index The index in the LookupTable of where to insert the color value\n * @param {Number[]} rgba An array of [0,1] double values for an RGBA color component\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableValue\",\n value: function setTableValue(index, rgba) {\n // Check if it index, red, green, blue and alpha were passed as parameter\n if (arguments.length === 5) {\n rgba = Array.prototype.slice.call(arguments, 1);\n } // Check the index to make sure it is valid\n\n\n if (index < 0) {\n throw new Error(\"Can't set the table value for negative index (\".concat(index, \")\"));\n }\n\n if (index >= this.NumberOfColors) {\n new Error(\"Index \".concat(index, \" is greater than the number of colors \").concat(this.NumberOfColors));\n }\n\n this.Table[index] = rgba;\n\n if (index === 0 || index === this.NumberOfColors - 1) {\n // This is needed due to the way the special colors are stored in\n // The internal table. If Above/BelowRangeColors are not used and\n // The min/max colors are changed in the table with this member\n // Function, then the colors used for values outside the range may\n // Be incorrect. Calling this here ensures the out-of-range colors\n // Are set correctly.\n this.buildSpecialColors();\n }\n }\n }]);\n\n return LookupTable;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LookupTable);\n\n/***/ }),\n\n/***/ \"./disable.js\":\n/*!********************!*\\\n !*** ./disable.js ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Disable an HTML element for further use in Cornerstone\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Enable\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n if (element === undefined) {\n throw new Error('disable: element must not be undefined');\n } // Search for this element in this list of enabled elements\n\n\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n // We found it!\n // Fire an event so dependencies can cleanup\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_2__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData); // Remove the child DOM elements that we created (e.g.canvas)\n\n enabledElements[i].element.removeChild(enabledElements[i].canvas);\n enabledElements[i].canvas = undefined; // Remove this element from the list of enabled elements\n\n enabledElements.splice(i, 1);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./displayImage.js\":\n/*!*************************!*\\\n !*** ./displayImage.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n\n/**\n * Sets a new image object for a given element.\n *\n * Will also apply an optional viewport setting.\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @param {Object} [viewport] A set of Cornerstone viewport parameters\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image, viewport) {\n if (element === undefined) {\n throw new Error('displayImage: parameter element must not be undefined');\n }\n\n if (image === undefined) {\n throw new Error('displayImage: parameter image must not be undefined');\n }\n\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldImage = enabledElement.image;\n enabledElement.image = image;\n\n if (enabledElement.layers && enabledElement.layers.length) {\n Object(_layers_js__WEBPACK_IMPORTED_MODULE_4__[\"setLayerImage\"])(element, image);\n }\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n }\n\n var frameRate;\n\n if (enabledElement.lastImageTimeStamp !== undefined) {\n var timeSinceLastImage = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - enabledElement.lastImageTimeStamp;\n frameRate = (1000 / timeSinceLastImage).toFixed();\n }\n\n enabledElement.lastImageTimeStamp = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var newImageEventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n oldImage: oldImage,\n enabledElement: enabledElement,\n frameRate: frameRate\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].NEW_IMAGE, newImageEventData);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./draw.js\":\n/*!*****************!*\\\n !*** ./draw.js ***!\n \\*****************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Immediately draws the enabled element\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('draw: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./drawInvalidated.js\":\n/*!****************************!*\\\n !*** ./drawInvalidated.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/**\n * This module is responsible for drawing invalidated enabled elements\n */\n\n\n/**\n * Draws all invalidated enabled elements and clears the invalid flag after drawing it\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n var ee = enabledElements[i];\n\n if (ee.invalid === true) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ee, true);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./enable.js\":\n/*!*******************!*\\\n !*** ./enable.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _generateUUID_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generateUUID.js */ \"./generateUUID.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/getCanvas.js */ \"./internal/getCanvas.js\");\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Enable\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n */\n\n/**\r\n * Returns whether or not an Enabled Element has either a currently active image or\r\n * a non-empty Array of Enabled Element Layers.\r\n *\r\n * @param {EnabledElement} enabledElement An Enabled Element\r\n * @return {Boolean} Whether or not the Enabled Element has an active image or valid set of layers\r\n * @memberof Enable\r\n */\n\nfunction hasImageOrLayers(enabledElement) {\n return enabledElement.image !== undefined || enabledElement.layers.length > 0;\n}\n/**\r\n * Enable an HTML Element for use in Cornerstone\r\n *\r\n * - If there is a Canvas already present within the HTMLElement, and it has the class\r\n * 'cornerstone-canvas', this function will use this existing Canvas instead of creating\r\n * a new one. This may be helpful when using libraries (e.g. React, Vue) which don't\r\n * want third parties to change the DOM.\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @param {Object} options Options for the enabledElement\r\n *\r\n * @return {void}\r\n * @memberof Enable\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, options) {\n if (element === undefined) {\n throw new Error('enable: parameter element cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var canvas = Object(_internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element);\n var enabledElement = {\n element: element,\n canvas: canvas,\n image: undefined,\n // Will be set once image is loaded\n invalid: false,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n uuid: Object(_generateUUID_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])()\n };\n Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"addEnabledElement\"])(enabledElement);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_7__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ELEMENT_ENABLED, enabledElement);\n Object(_resize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, true);\n /**\r\n * Draw the image immediately\r\n *\r\n * @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n function draw(timestamp) {\n if (enabledElement.canvas === undefined) {\n return;\n }\n\n var eventDetails = {\n enabledElement: enabledElement,\n timestamp: timestamp\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].PRE_RENDER, eventDetails);\n\n if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, enabledElement.invalid);\n }\n\n Object(_internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(draw);\n }\n\n draw();\n});\n\n/***/ }),\n\n/***/ \"./enabledElementData.js\":\n/*!*******************************!*\\\n !*** ./enabledElementData.js ***!\n \\*******************************/\n/*! exports provided: getElementData, removeElementData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return getElementData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return removeElementData; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n * @returns {*} Whatever data is stored for this enabled element\n */\n\nfunction getElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (ee.data.hasOwnProperty(dataType) === false) {\n ee.data[dataType] = {};\n }\n\n return ee.data[dataType];\n}\n/**\n * Clears any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n *\n * @returns {void}\n */\n\nfunction removeElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n delete ee.data[dataType];\n}\n\n/***/ }),\n\n/***/ \"./enabledElements.js\":\n/*!****************************!*\\\n !*** ./enabledElements.js ***!\n \\****************************/\n/*! exports provided: getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return getEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return addEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return getEnabledElementsByImageId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return getEnabledElements; });\nvar enabledElements = [];\n/**\n * @module EnabledElements\n */\n\n/**\n * @module Objects\n */\n\n/**\n * A two-dimensional vector\n *\n * @typedef {Object} vec2\n * @memberof Objects\n * @param {Number} x - The x distance\n * @param {Number} y - The y distance\n */\n\n/**\n * VOI\n *\n * @typedef {Object} VOI\n * @memberof Objects\n * @param {Number} windowWidth - Window Width for display\n * @param {Number} windowCenter - Window Center for display\n */\n\n/**\n * Lookup Table Array\n *\n * @typedef {Object} LUT\n * @memberof Objects\n * @property {Number} firstValueMapped\n * @property {Number} numBitsPerEntry\n * @property {Array} lut\n */\n\n/**\n * Image Statistics Object\n *\n * @typedef {Object} ImageStats\n * @memberof Objects\n * @property {Number} [lastGetPixelDataTime] The time in ms taken to retrieve stored pixels required to draw the image\n * @property {Number} [lastStoredPixelDataToCanvasImageDataTime] The time in ms taken to map from stored pixel array to canvas pixel array\n * @property {Number} [lastPutImageDataTime] The time in ms taken for putImageData to put the canvas pixel data into the canvas context\n * @property {Number} [lastRenderTime] The total time in ms taken for the entire rendering function to run\n * @property {Number} [lastLutGenerateTime] The time in ms taken to generate the lookup table for the image\n */\n\n/**\n * An Image Object in Cornerstone\n *\n * @typedef {Object} Image\n * @memberof Objects\n * @property {string} imageId - The imageId associated with this image object\n * @property {Number} minPixelValue - the minimum stored pixel value in the image\n * @property {Number} maxPixelValue - the maximum stored pixel value in the image\n * @property {Number} slope - the rescale slope to convert stored pixel values to modality pixel values or 1 if not specified\n * @property {Number} intercept - the rescale intercept used to convert stored pixel values to modality values or 0 if not specified\n * @property {Number} windowCenter - the default windowCenter to apply to the image\n * @property {Number} windowWidth - the default windowWidth to apply to the image\n * @property {function} getPixelData - a function that returns the underlying pixel data. An array of integers for grayscale and an array of RGBA for color\n * @property {function} getImageData - a function that returns a canvas imageData object for the image. This is only needed for color images\n * @property {function} getCanvas - a function that returns a canvas element with the image loaded into it. This is only needed for color images.\n * @property {function} getImage - a function that returns a JavaScript Image object with the image data. This is optional and typically used for images encoded in standard web JPEG and PNG formats\n * @property {Number} rows - number of rows in the image. This is the same as height but duplicated for convenience\n * @property {Number} columns - number of columns in the image. This is the same as width but duplicated for convenience\n * @property {Number} height - the height of the image. This is the same as rows but duplicated for convenience\n * @property {Number} width - the width of the image. This is the same as columns but duplicated for convenience\n * @property {Boolean} color - true if pixel data is RGB, false if grayscale\n * @property {Object} lut - The Lookup Table\n * @property {Boolean} rgba - Is the color pixel data stored in RGBA?\n * @property {Number} columnPixelSpacing - horizontal distance between the middle of each pixel (or width of each pixel) in mm or undefined if not known\n * @property {Number} rowPixelSpacing - vertical distance between the middle of each pixel (or height of each pixel) in mm or undefined if not known\n * @property {Boolean} invert - true if the the image should initially be displayed be inverted, false if not. This is here mainly to support DICOM images with a photometric interpretation of MONOCHROME1\n * @property {Number} sizeInBytes - the number of bytes used to store the pixels for this image.\n * @property {Boolean} [falseColor=false] - Whether or not the image has undergone false color mapping\n * @property {Array} [origPixelData] - Original pixel data for an image after it has undergone false color mapping\n * @property {ImageStats} [stats] - Statistics for the last redraw of the image\n * @property {Object} cachedLut - Cached Lookup Table for this image.\n * @property {String|Colormap} [colormap] - Depreacted. Use viewport.colormap instead. an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * A Viewport Settings Object Cornerstone\n *\n * @typedef {Object} Viewport\n * @memberof Objects\n * @property {Number} [scale=1.0] - The scale applied to the image. A scale of 1.0 will display no zoom (one image pixel takes up one screen pixel). A scale of 2.0 will be double zoom and a scale of .5 will be zoomed out by 2x\n * @property {vec2} [translation] - An object with properties x and y which describe the translation to apply in the pixel coordinate system. Note that the image is initially displayed centered in the enabled element with a x and y translation of 0 and 0 respectively.\n * @property {VOI} [voi] - an object with properties windowWidth and windowCenter.\n * @property {boolean} [invert=false] - Whether or not the image is inverted.\n * @property {boolean} [pixelReplication=false] - true if the image smooth / interpolation should be used when zoomed in on the image or false if pixel replication should be used.\n * @property {boolean} [hflip=false] - true if the image is flipped horizontally. Default is false\n * @property {boolean} [vflip=false] - true if the image is flipped vertically. Default is false\n * @property {Number} [rotation=0] - the rotation of the image (90 degree increments). Default is 0\n * @property {LUT} [modalityLUT] - the modality LUT to apply or undefined if none\n * @property {LUT} [voiLUT] - the modality LUT to apply or undefined if none\n * @property {String|Colormap} [colormap] - an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * An Enabled Element in Cornerstone\n *\n * @typedef {Object} EnabledElement\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n * @property {EnabledElementLayer[]} [layers] - The layers that have been added to the enabledElement\n * @property {Boolean} [syncViewports] - Whether or not to synchronize the viewport parameters\n * for each of the enabled element's layers\n * @property {Boolean} [lastSyncViewportsState] - The previous state for the sync viewport boolean\n */\n\n/**\n * An Enabled Element Layer in Cornerstone\n *\n * @typedef {Object} EnabledElementLayer\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Object} [options] - Layer drawing options\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n */\n\n/**\n * An Image Load Object\n *\n * @typedef {Object} ImageLoadObject\n * @memberof Objects\n * @property {Promise} promise - The Promise tracking the loading of this image\n * @property {Function|undefined} cancelFn - A function to cancel the image load request\n */\n\n/**\n * Retrieves a Cornerstone Enabled Element object\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n *\n * @returns {EnabledElement} A Cornerstone Enabled Element\n * @memberof EnabledElements\n */\n\nfunction getEnabledElement(element) {\n if (element === undefined) {\n throw new Error('getEnabledElement: parameter element must not be undefined');\n }\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n return enabledElements[i];\n }\n }\n\n throw new Error('element not enabled');\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {EnabledElement} enabledElement A Cornerstone enabledElement Object\n * @returns {void}\n * @memberof EnabledElements\n */\n\nfunction addEnabledElement(enabledElement) {\n if (enabledElement === undefined) {\n throw new Error('getEnabledElement: enabledElement element must not be undefined');\n }\n\n enabledElements.push(enabledElement);\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {string} imageId A Cornerstone Image ID\n * @returns {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElementsByImageId(imageId) {\n var ees = [];\n enabledElements.forEach(function (enabledElement) {\n if (enabledElement.image && enabledElement.image.imageId === imageId) {\n ees.push(enabledElement);\n }\n });\n return ees;\n}\n/**\n * Retrieve all of the currently enabled Cornerstone elements\n *\n * @return {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElements() {\n return enabledElements;\n}\n\n/***/ }),\n\n/***/ \"./events.js\":\n/*!*******************!*\\\n !*** ./events.js ***!\n \\*******************/\n/*! exports provided: default, events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return events; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n NEW_IMAGE: 'cornerstonenewimage',\n INVALIDATED: 'cornerstoneinvalidated',\n PRE_RENDER: 'cornerstoneprerender',\n IMAGE_CACHE_MAXIMUM_SIZE_CHANGED: 'cornerstoneimagecachemaximumsizechanged',\n IMAGE_CACHE_PROMISE_REMOVED: 'cornerstoneimagecachepromiseremoved',\n IMAGE_CACHE_FULL: 'cornerstoneimagecachefull',\n IMAGE_CACHE_CHANGED: 'cornerstoneimagecachechanged',\n WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved',\n WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull',\n IMAGE_LOADED: 'cornerstoneimageloaded',\n IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed',\n ELEMENT_RESIZED: 'cornerstoneelementresized',\n IMAGE_RENDERED: 'cornerstoneimagerendered',\n LAYER_ADDED: 'cornerstonelayeradded',\n LAYER_REMOVED: 'cornerstonelayerremoved',\n ACTIVE_LAYER_CHANGED: 'cornerstoneactivelayerchanged',\n ELEMENT_DISABLED: 'cornerstoneelementdisabled',\n ELEMENT_ENABLED: 'cornerstoneelementenabled'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EVENTS);\n/**\n * EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface\n *\n * @class\n * @memberof Polyfills\n */\n\nvar EventTarget =\n/*#__PURE__*/\nfunction () {\n function EventTarget() {\n _classCallCheck(this, EventTarget);\n\n this.listeners = {};\n this.namespaces = {};\n }\n\n _createClass(EventTarget, [{\n key: \"addEventNamespaceListener\",\n value: function addEventNamespaceListener(type, callback) {\n if (type.indexOf('.') <= 0) {\n return;\n }\n\n this.namespaces[type] = callback;\n this.addEventListener(type.split('.')[0], callback);\n }\n }, {\n key: \"removeEventNamespaceListener\",\n value: function removeEventNamespaceListener(type) {\n if (type.indexOf('.') <= 0 || !this.namespaces[type]) {\n return;\n }\n\n this.removeEventListener(type.split('.')[0], this.namespaces[type]);\n delete this.namespaces[type];\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.addEventNamespaceListener(type, callback);\n return;\n }\n\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(callback);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.removeEventNamespaceListener(type);\n return;\n }\n\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n\n var stack = this.listeners[event.type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return EventTarget;\n}();\n\nvar events = new EventTarget();\n\n/***/ }),\n\n/***/ \"./falseColorMapping.js\":\n/*!******************************!*\\\n !*** ./falseColorMapping.js ***!\n \\******************************/\n/*! exports provided: convertImageToFalseColorImage, convertToFalseColorImage, restoreImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return convertImageToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return convertToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return restoreImage; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony import */ var _colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors/colormap.js */ \"./colors/colormap.js\");\n\n\n\n/**\n * Retrieves the minimum and maximum pixel values from an Array of pixel data\n *\n * @param {Array} pixelData The input pixel data array\n *\n * @returns {{minPixelValue: Number, maxPixelValue: Number}} The minimum and maximum pixel values in the input Array\n */\n\nfunction getPixelValues(pixelData) {\n var minPixelValue = Number.MAX_VALUE;\n var maxPixelValue = Number.MIN_VALUE;\n var len = pixelData.length;\n var pixel;\n\n for (var i = 0; i < len; i++) {\n pixel = pixelData[i];\n minPixelValue = minPixelValue < pixel ? minPixelValue : pixel;\n maxPixelValue = maxPixelValue > pixel ? maxPixelValue : pixel;\n }\n\n return {\n minPixelValue: minPixelValue,\n maxPixelValue: maxPixelValue\n };\n}\n/**\n * Retrieve a function that will allow an image object to be reset to its original form\n * after a false color mapping transformation\n *\n * @param {Image} image A Cornerstone Image Object\n *\n * @return {Function} A function for resetting an Image Object to its original form\n */\n\n\nfunction getRestoreImageMethod(image) {\n if (image.restore) {\n return image.restore;\n }\n\n var color = image.color;\n var rgba = image.rgba;\n var cachedLut = image.cachedLut;\n var slope = image.slope;\n var windowWidth = image.windowWidth;\n var windowCenter = image.windowCenter;\n var minPixelValue = image.minPixelValue;\n var maxPixelValue = image.maxPixelValue;\n return function () {\n image.color = color;\n image.rgba = rgba;\n image.cachedLut = cachedLut;\n image.slope = slope;\n image.windowWidth = windowWidth;\n image.windowCenter = windowCenter;\n image.minPixelValue = minPixelValue;\n image.maxPixelValue = maxPixelValue;\n\n if (image.origPixelData) {\n var pixelData = image.origPixelData;\n\n image.getPixelData = function () {\n return pixelData;\n };\n } // Remove some attributes added by false color mapping\n\n\n image.origPixelData = undefined;\n image.colormapId = undefined;\n image.falseColor = undefined;\n };\n} //\n// Then we need to make sure it will be converted into a colormap object if it's as string.\n\n/**\n * User can pass a colormap or its id as string to some of these public functions.\n * Then we need to make sure it will be converted into a colormap object if it's a string.\n *\n * @param {*} colormap A colormap ID or Object\n * @return {*} The colormap\n */\n\n\nfunction ensuresColormap(colormap) {\n if (colormap && typeof colormap === 'string') {\n colormap = Object(_colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__[\"getColormap\"])(colormap);\n }\n\n return colormap;\n}\n/**\n * Restores a false color image to its original version\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Boolean} True if the image object had a valid restore function, which was run. Otherwise, false.\n */\n\n\nfunction restoreImage(image) {\n if (image.restore && typeof image.restore === 'function') {\n image.restore();\n return true;\n }\n\n return false;\n}\n/**\n * Convert an image to a false color image\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {String|Object} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {Boolean} - Whether or not the image has been converted to a false color image\n */\n\n\nfunction convertImageToFalseColorImage(image, colormap) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n } // User can pass a colormap id or a colormap object\n\n\n colormap = ensuresColormap(colormap);\n var colormapId = colormap.getId(); // Doesn't do anything if colormapId hasn't changed\n\n if (image.colormapId === colormapId) {\n // It has already being converted into a false color image\n // Using the colormapId passed as parameter\n return false;\n } // Restore the image attributes updated when converting to a false color image\n\n\n restoreImage(image); // Convert the image to a false color image\n\n if (colormapId) {\n var minPixelValue = image.minPixelValue || 0;\n var maxPixelValue = image.maxPixelValue || 255;\n image.restore = getRestoreImageMethod(image);\n var lookupTable = colormap.createLookupTable();\n lookupTable.setTableRange(minPixelValue, maxPixelValue); // Update the pixel data and render the new image\n\n Object(_pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lookupTable); // Update min and max pixel values\n\n var pixelValues = getPixelValues(image.getPixelData());\n image.minPixelValue = pixelValues.minPixelValue;\n image.maxPixelValue = pixelValues.maxPixelValue;\n image.windowWidth = 255;\n image.windowCenter = 128; // Cache the last colormapId used for performance\n // Then it doesn't need to be re-rendered on next\n // Time if the user hasn't updated it\n\n image.colormapId = colormapId;\n } // Return `true` to tell the caller that the image has got updated\n\n\n return true;\n}\n/**\n * Convert the image of a element to a false color image\n *\n * @param {HTMLElement} element The Cornerstone element\n * @param {*} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {void}\n */\n\n\nfunction convertToFalseColorImage(element, colormap) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return convertImageToFalseColorImage(enabledElement.image, colormap);\n}\n\n\n\n/***/ }),\n\n/***/ \"./fitToWindow.js\":\n/*!************************!*\\\n !*** ./fitToWindow.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n\n\n/**\n * Adjusts an image's scale and translation so the image is centered and all pixels\n * in the image are viewable.\n *\n * @param {HTMLElement} element The Cornerstone element to update\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var image = enabledElement.image; // The new scale is the minimum of the horizontal and vertical scale values\n\n enabledElement.viewport.scale = Object(_internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image, enabledElement.viewport.rotation).scaleFactor;\n enabledElement.viewport.translation.x = 0;\n enabledElement.viewport.translation.y = 0;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./generateUUID.js\":\n/*!*************************!*\\\n !*** ./generateUUID.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n* Generates a UUID for the enabledElement.\n*\n* @return {String} the UUID.\n*/\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n // https://stackoverflow.com/a/8809472/9208320 Public Domain/MIT\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\"&\",\"|\"] }] */\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // Use high-precision timer if available\n }\n\n return 'x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n});\n\n/***/ }),\n\n/***/ \"./getDefaultViewportForImage.js\":\n/*!***************************************!*\\\n !*** ./getDefaultViewportForImage.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n\n\n/**\n * Returns a default viewport for display the specified image on the specified\n * enabled element. The default viewport is fit to window\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image Object\n *\n * @returns {Viewport} The default viewport for the image\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n});\n\n/***/ }),\n\n/***/ \"./getImage.js\":\n/*!*********************!*\\\n !*** ./getImage.js ***!\n \\*********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Returns the currently displayed image for an element or undefined if no image has\n * been displayed yet\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Image} The Cornerstone Image Object displayed in this element\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return enabledElement.image;\n});\n\n/***/ }),\n\n/***/ \"./getPixels.js\":\n/*!**********************!*\\\n !*** ./getPixels.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony import */ var _internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n\n\n\n/**\n * Retrieves an array of pixels from a rectangular region with modality LUT transformation applied\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The modality pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n var storedPixels = Object(_getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, x, y, width, height);\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var mlutfn = Object(_internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ee.image.slope, ee.image.intercept, ee.viewport.modalityLUT);\n return storedPixels.map(mlutfn);\n});\n\n/***/ }),\n\n/***/ \"./getStoredPixels.js\":\n/*!****************************!*\\\n !*** ./getStoredPixels.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves an array of stored pixel values from a rectangular region of an image\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The stored pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n if (element === undefined) {\n throw new Error('getStoredPixels: parameter element must not be undefined');\n }\n\n x = Math.round(x);\n y = Math.round(y);\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var storedPixels = [];\n var index = 0;\n var pixelData = enabledElement.image.getPixelData();\n\n for (var row = 0; row < height; row++) {\n for (var column = 0; column < width; column++) {\n var spIndex = (row + y) * enabledElement.image.columns + (column + x);\n storedPixels[index++] = pixelData[spIndex];\n }\n }\n\n return storedPixels;\n});\n\n/***/ }),\n\n/***/ \"./getViewport.js\":\n/*!************************!*\\\n !*** ./getViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves the viewport for the specified enabled element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Viewport|undefined} The Cornerstone Viewport settings for this element, if they exist. Otherwise, undefined\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var viewport = enabledElement.viewport;\n\n if (viewport === undefined) {\n return;\n } // Return a copy of the viewport\n\n\n return Object.assign({}, viewport);\n});\n\n/***/ }),\n\n/***/ \"./imageCache.js\":\n/*!***********************!*\\\n !*** ./imageCache.js ***!\n \\***********************/\n/*! exports provided: cachedImages, setMaximumSizeBytes, putImageLoadObject, getImageLoadObject, removeImageLoadObject, getCacheInfo, purgeCache, changeImageIdCacheSize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cachedImages\", function() { return cachedImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumSizeBytes\", function() { return setMaximumSizeBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"putImageLoadObject\", function() { return putImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageLoadObject\", function() { return getImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeImageLoadObject\", function() { return removeImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCacheInfo\", function() { return getCacheInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeCache\", function() { return purgeCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeImageIdCacheSize\", function() { return changeImageIdCacheSize; });\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\n * This module deals with caching images\n * @module ImageCache\n */\n\nvar maximumSizeInBytes = 1024 * 1024 * 1024; // 1 GB\n\nvar cacheSizeInBytes = 0; // Dictionary of imageId to cachedImage objects\n\nvar imageCacheDict = {}; // Array of cachedImage objects\n\nvar cachedImages = [];\n/** Sets the maximum size of cache and purges cache contents if necessary.\n *\n * @param {number} numBytes The maximun size that the cache should occupy.\n * @returns {void}\n */\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_MAXIMUM_SIZE_CHANGED);\n purgeCacheIfNecessary();\n}\n/**\n * Purges the cache if size exceeds maximum\n * @returns {void}\n */\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary)\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n var imageId = lastCachedImage.imageId;\n removeImageLoadObject(imageId);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_PROMISE_REMOVED, {\n imageId: imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_FULL, cacheInfo);\n}\n/**\n * Puts a new image loader into the cache\n *\n * @param {string} imageId ImageId of the image loader\n * @param {Object} imageLoadObject The object that is loading or loaded the image\n * @returns {void}\n */\n\n\nfunction putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n\n if (imageCacheDict.hasOwnProperty(imageId) === true) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n\n if (imageLoadObject.cancelFn && typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancelFn must be a function');\n }\n\n var cachedImage = {\n loaded: false,\n imageId: imageId,\n sharedCacheKey: undefined,\n // The sharedCacheKey for this imageId. undefined by default\n imageLoadObject: imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0\n };\n imageCacheDict[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n imageLoadObject.promise.then(function (image) {\n if (cachedImages.indexOf(cachedImage) === -1) {\n // If the image has been purged before being loaded, we stop here.\n return;\n }\n\n cachedImage.loaded = true;\n cachedImage.image = image;\n\n if (image.sizeInBytes === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n\n cachedImage.sizeInBytes = image.sizeInBytes;\n cacheSizeInBytes += cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'addImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n purgeCacheIfNecessary();\n }, function () {\n var cachedImage = imageCacheDict[imageId];\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n delete imageCacheDict[imageId];\n });\n}\n/**\n * Retuns the object that is loading a given imageId\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n}\n/**\n * Removes the image loader associated with a given Id from the cache\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction removeImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'deleteImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n decache(cachedImage.imageLoadObject);\n delete imageCacheDict[imageId];\n}\n/**\n * @typedef {Object} CacheInformation\n * @property {number} maximumSizeInBytes The maximum size of the cache in bytes\n * @property {number} cacheSizeInBytes Currently occupied space in the cache in bytes\n * @property {number} numberOfImagesCached Number of ImageLoaders in the cache\n * @returns {void}\n */\n\n/**\n * Gets the current state of the cache\n * @returns {void}\n */\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n} // This method should only be called by `removeImageLoadObject` because it's\n// The one that knows how to deal with shared cache keys and cache size.\n\n/**\n * INTERNAL: Removes and ImageLoader from the cache\n *\n * @param {Object} imageLoadObject Image Loader Object to remove\n * @returns {void}\n */\n\nfunction decache(imageLoadObject) {\n imageLoadObject.promise.then(function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n }, function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n });\n}\n/**\n * Removes all images from cache\n * @returns {void}\n */\n\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages[0];\n removeImageLoadObject(removedCachedImage.imageId);\n }\n}\n/**\n * Updates the space than an image is using in the cache\n *\n * @param {string} imageId Image ID\n * @param {number} newCacheSize New image size\n * @returns {void}\n */\n\nfunction changeImageIdCacheSize(imageId, newCacheSize) {\n var cacheEntry = imageCacheDict[imageId];\n\n if (cacheEntry) {\n cacheEntry.imageLoadObject.promise.then(function (image) {\n var cacheSizeDifference = newCacheSize - image.sizeInBytes;\n image.sizeInBytes = newCacheSize;\n cacheEntry.sizeInBytes = newCacheSize;\n cacheSizeInBytes += cacheSizeDifference;\n var eventDetails = {\n action: 'changeImageSize',\n image: image\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n });\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n imageCache: imageCacheDict,\n cachedImages: cachedImages,\n setMaximumSizeBytes: setMaximumSizeBytes,\n putImageLoadObject: putImageLoadObject,\n getImageLoadObject: getImageLoadObject,\n removeImageLoadObject: removeImageLoadObject,\n getCacheInfo: getCacheInfo,\n purgeCache: purgeCache,\n changeImageIdCacheSize: changeImageIdCacheSize\n});\n\n/***/ }),\n\n/***/ \"./imageLoader.js\":\n/*!************************!*\\\n !*** ./imageLoader.js ***!\n \\************************/\n/*! exports provided: loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return loadImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return loadAndCacheImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return registerImageLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return registerUnknownImageLoader; });\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n\n/**\r\n * This module deals with ImageLoaders, loading images and caching images\r\n * @module ImageLoader\r\n */\n\nvar imageLoaders = {};\nvar unknownImageLoader;\n/**\r\n * Load an image using a registered Cornerstone Image Loader.\r\n *\r\n * The image loader that is used will be\r\n * determined by the image loader scheme matching against the imageId.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\nfunction loadImageFromImageLoader(imageId, options) {\n var colonIndex = imageId.indexOf(':');\n var scheme = imageId.substring(0, colonIndex);\n var loader = imageLoaders[scheme];\n\n if (loader === undefined || loader === null) {\n if (unknownImageLoader !== undefined) {\n return unknownImageLoader(imageId);\n }\n\n throw new Error('loadImageFromImageLoader: no image loader for imageId');\n }\n\n var imageLoadObject = loader(imageId, options); // Broadcast an image loaded event once the image is loaded\n\n imageLoadObject.promise.then(function (image) {\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOADED, {\n image: image\n });\n }, function (error) {\n var errorObject = {\n imageId: imageId,\n error: error\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOAD_FAILED, errorObject);\n });\n return imageLoadObject;\n}\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The loaded image is not stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\n\nfunction loadImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n return loadImageFromImageLoader(imageId, options).promise;\n} //\n\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The image is stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} Image Loader Object\r\n * @memberof ImageLoader\r\n */\n\nfunction loadAndCacheImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadAndCacheImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n imageLoadObject = loadImageFromImageLoader(imageId, options);\n Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"putImageLoadObject\"])(imageId, imageLoadObject);\n return imageLoadObject.promise;\n}\n/**\r\n * Registers an imageLoader plugin with cornerstone for the specified scheme\r\n *\r\n * @param {String} scheme The scheme to use for this image loader (e.g. 'dicomweb', 'wadouri', 'http')\r\n * @param {Function} imageLoader A Cornerstone Image Loader function\r\n * @returns {void}\r\n * @memberof ImageLoader\r\n */\n\nfunction registerImageLoader(scheme, imageLoader) {\n imageLoaders[scheme] = imageLoader;\n}\n/**\r\n * Registers a new unknownImageLoader and returns the previous one\r\n *\r\n * @param {Function} imageLoader A Cornerstone Image Loader\r\n *\r\n * @returns {Function|Undefined} The previous Unknown Image Loader\r\n * @memberof ImageLoader\r\n */\n\nfunction registerUnknownImageLoader(imageLoader) {\n var oldImageLoader = unknownImageLoader;\n unknownImageLoader = imageLoader;\n return oldImageLoader;\n}\n\n/***/ }),\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawImage\", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ \"./internal/generateLut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateLut\", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewport\", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageData\", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedColorPixelDataToCanvasImageData\", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataColorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataPseudocolorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ \"./internal/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internal\", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"]; });\n\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"]; });\n\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"]; });\n\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"]; });\n\n/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"]; });\n\n/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToCanvas\", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ \"./canvasToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canvasToPixel\", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ \"./disable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ \"./displayImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"displayImage\", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ \"./draw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ \"./drawInvalidated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawInvalidated\", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ \"./enable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"enable\", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ \"./enabledElementData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"]; });\n\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"]; });\n\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"]; });\n\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitToWindow\", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ \"./getDefaultViewportForImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewportForImage\", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ \"./getImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImage\", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ \"./getPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getPixels\", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStoredPixels\", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ \"./getViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewport\", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ \"./imageLoader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"]; });\n\n/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ \"./invalidate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidate\", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ \"./invalidateImageId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidateImageId\", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ \"./pageToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageToPixel\", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ \"./pixelToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelToCanvas\", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ \"./reset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setToPixelCoordinateSystem\", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ \"./setViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setViewport\", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"updateImage\", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelDataToFalseColorData\", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ \"./rendering/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rendering\", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"imageCache\", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ \"./metaData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"metaData\", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ \"./webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"webGL\", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colors\", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ \"./falseColorMapping.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"]; });\n\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"]; });\n\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerEvent\", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n// Internal (some of these are from old internal/legacy expose)\n\n\n\n\n\n\n\n\n // Rendering\n\n\n\n\n\n\n\n/**\n * @module PixelCoordinateSystem\n */\n\n/**\n * @module ViewportSettings\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar cornerstone = {\n drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"],\n renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"],\n renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"],\n renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"],\n renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"],\n renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"],\n removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"],\n getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"],\n addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"],\n getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"],\n getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"],\n addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"],\n removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"],\n getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"],\n getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"],\n getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"],\n setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"],\n getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"],\n purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"],\n setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"],\n fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"],\n loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"],\n registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"],\n registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"],\n invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"],\n convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"],\n restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"],\n EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n events: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"],\n triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cornerstone);\n\n/***/ }),\n\n/***/ \"./internal/calculateTransform.js\":\n/*!****************************************!*\\\n !*** ./internal/calculateTransform.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n/**\n * Calculate the transform for a Cornerstone enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\n * @param {Number} [scale] The viewport scale\n * @return {Transform} The current transform\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, scale) {\n var transform = new _transform_js__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"](); // Move to center of canvas\n\n transform.translate(enabledElement.canvas.width / 2, enabledElement.canvas.height / 2); // Apply the rotation before scaling for non square pixels\n\n var angle = enabledElement.viewport.rotation;\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n } // Apply the scale\n\n\n var widthScale = enabledElement.viewport.scale;\n var heightScale = enabledElement.viewport.scale;\n var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1);\n var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1);\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {\n if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) {\n widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing;\n } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) {\n heightScale *= enabledElement.image.rowPixelSpacing / enabledElement.image.columnPixelSpacing;\n }\n } else {\n // These should be good for \"TRUE SIZE\" and \"MAGNIFY\"\n widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing;\n heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing;\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') {\n // Fit TRUE IMAGE image (width/height) to window\n var verticalScale = enabledElement.canvas.height / (height * heightScale);\n var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale\n\n widthScale = heightScale = Math.min(horizontalScale, verticalScale);\n\n if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) {\n widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing;\n } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) {\n heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing;\n }\n }\n }\n\n transform.scale(widthScale, heightScale); // Unrotate to so we can translate unrotated\n\n if (angle !== 0) {\n transform.rotate(-angle * Math.PI / 180);\n } // Apply the pan offset\n\n\n transform.translate(enabledElement.viewport.translation.x, enabledElement.viewport.translation.y); // Rotate again so we can apply general scale\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n }\n\n if (scale !== undefined) {\n // Apply the font scale\n transform.scale(scale, scale);\n } // Apply Flip if required\n\n\n if (enabledElement.viewport.hflip) {\n transform.scale(-1, 1);\n }\n\n if (enabledElement.viewport.vflip) {\n transform.scale(1, -1);\n } // Move back from center of image\n\n\n transform.translate(-width / 2, -height / 2);\n return transform;\n});\n\n/***/ }),\n\n/***/ \"./internal/computeAutoVoi.js\":\n/*!************************************!*\\\n !*** ./internal/computeAutoVoi.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return computeAutoVoi; });\n/**\n * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.\n *\n * @param {Viewport} viewport - Object containing the viewport properties\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @returns {void}\n * @memberof Internal\n */\nfunction computeAutoVoi(viewport, image) {\n if (hasVoi(viewport)) {\n return;\n }\n\n var maxVoi = image.maxPixelValue * image.slope + image.intercept;\n var minVoi = image.minPixelValue * image.slope + image.intercept;\n var ww = maxVoi - minVoi;\n var wc = (maxVoi + minVoi) / 2;\n\n if (viewport.voi === undefined) {\n viewport.voi = {\n windowWidth: ww,\n windowCenter: wc\n };\n } else {\n viewport.voi.windowWidth = ww;\n viewport.voi.windowCenter = wc;\n }\n}\n/**\n * Check if viewport has voi LUT data\n * @param {any} viewport The viewport to check for voi LUT data\n * @returns {Boolean} true viewport has LUT data (Window Width/Window Center or voiLUT). Otherwise, false.\n * @memberof Internal\n */\n\nfunction hasVoi(viewport) {\n var hasLut = viewport.voiLUT && viewport.voiLUT.lut && viewport.voiLUT.lut.length > 0;\n return hasLut || viewport.voi.windowWidth !== undefined && viewport.voi.windowCenter !== undefined;\n}\n\n/***/ }),\n\n/***/ \"./internal/drawCompositeImage.js\":\n/*!****************************************!*\\\n !*** ./internal/drawCompositeImage.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layers.js */ \"./layers.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n\n\n\n\n\n\n\nfunction getViewportRatio(baseLayer, targetLayer) {\n if (!baseLayer.syncProps) {\n updateLayerSyncProps(baseLayer);\n }\n\n if (!targetLayer.syncProps) {\n updateLayerSyncProps(targetLayer);\n }\n\n return targetLayer.syncProps.originalScale / baseLayer.syncProps.originalScale;\n}\n\nfunction updateLayerSyncProps(layer) {\n var syncProps = layer.syncProps || {}; // This is used to keep each of the layers' viewports in sync with the active layer\n\n syncProps.originalScale = layer.viewport.scale;\n layer.syncProps = syncProps;\n} // Sync all viewports based on active layer's viewport\n\n\nfunction syncViewports(layers, activeLayer) {\n // If we intend to keep the viewport's scale, translation and rotation in sync,\n // loop through the layers\n layers.forEach(function (layer) {\n // Don't do anything to the active layer\n // Don't do anything if this layer has no viewport\n if (layer === activeLayer || !layer.viewport || !activeLayer.viewport) {\n return;\n }\n\n if (!layer.syncProps) {\n updateLayerSyncProps(layer);\n }\n\n var viewportRatio = getViewportRatio(activeLayer, layer); // Update the layer's translation and scale to keep them in sync with the first image\n // based on the ratios between the images\n\n layer.viewport.scale = activeLayer.viewport.scale * viewportRatio;\n layer.viewport.rotation = activeLayer.viewport.rotation;\n layer.viewport.translation = {\n x: activeLayer.viewport.translation.x / viewportRatio,\n y: activeLayer.viewport.translation.y / viewportRatio\n };\n layer.viewport.hflip = activeLayer.viewport.hflip;\n layer.viewport.vflip = activeLayer.viewport.vflip;\n });\n}\n/**\n * Internal function to render all layers for a Cornerstone enabled element\n *\n * @param {CanvasRenderingContext2D} context Canvas context to draw upon\n * @param {EnabledElementLayer[]} layers The array of all layers for this enabled element\n * @param {Boolean} invalidated A boolean whether or not this image has been invalidated and must be redrawn\n * @returns {void}\n * @memberof Internal\n */\n\n\nfunction renderLayers(context, layers, invalidated) {\n // Loop through each layer and draw it to the canvas\n layers.forEach(function (layer, index) {\n if (!layer.image) {\n return;\n }\n\n context.save(); // Set the layer's canvas to the pixel coordinate system\n\n layer.canvas = context.canvas;\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(layer, context); // Render into the layer's canvas\n\n var colormap = layer.viewport.colormap || layer.options.colormap;\n var labelmap = layer.viewport.labelmap;\n var isInvalid = layer.invalid || invalidated;\n\n if (colormap && colormap !== '' && labelmap === true) {\n Object(_rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"addLabelMapLayer\"])(layer, isInvalid);\n } else if (colormap && colormap !== '') {\n Object(_rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"addPseudoColorLayer\"])(layer, isInvalid);\n } else if (layer.image.color === true) {\n Object(_rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"addColorLayer\"])(layer, isInvalid);\n } else {\n // If this is the base layer, use the alpha channel for rendering of the grayscale image\n var useAlphaChannel = index === 0;\n Object(_rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"addGrayscaleLayer\"])(layer, isInvalid, useAlphaChannel);\n } // Apply any global opacity settings that have been defined for this layer\n\n\n if (layer.options && layer.options.opacity) {\n context.globalAlpha = layer.options.opacity;\n } else {\n context.globalAlpha = 1;\n }\n\n if (layer.options && layer.options.fillStyle) {\n context.fillStyle = layer.options.fillStyle;\n } // Set the pixelReplication property before drawing from the layer into the\n // composite canvas\n\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas\n\n var sx = layer.viewport.displayedArea.tlhc.x - 1;\n var sy = layer.viewport.displayedArea.tlhc.y - 1;\n var width = layer.viewport.displayedArea.brhc.x - sx;\n var height = layer.viewport.displayedArea.brhc.y - sy;\n context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height);\n context.restore();\n layer.invalid = false;\n });\n}\n/**\n * Internal API function to draw a composite image to a given enabled element\n *\n * @param {EnabledElement} enabledElement An enabled element to draw into\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var element = enabledElement.element;\n var allLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getLayers\"])(element);\n var activeLayer = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getActiveLayer\"])(element);\n var visibleLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getVisibleLayers\"])(element);\n var resynced = !enabledElement.lastSyncViewportsState && enabledElement.syncViewports; // This state will help us to determine if the user has re-synced the\n // layers allowing us to make a new copy of the viewports\n\n enabledElement.lastSyncViewportsState = enabledElement.syncViewports; // Stores a copy of all viewports if the user has just synced them then we can use the\n // copies to calculate anything later (ratio, translation offset, rotation offset, etc)\n\n if (resynced) {\n allLayers.forEach(function (layer) {\n if (layer.viewport) {\n updateLayerSyncProps(layer);\n }\n });\n } // Sync all viewports in case it's activated\n\n\n if (enabledElement.syncViewports === true) {\n syncViewports(visibleLayers, activeLayer);\n } // Get the enabled element's canvas so we can draw to it\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Render all visible layers\n\n renderLayers(context, visibleLayers, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImage.js\":\n/*!*******************************!*\\\n !*** ./internal/drawImage.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Internal API function to draw an image to a given enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} [invalidated = false] - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof Internal\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n enabledElement.needsRedraw = true;\n\n if (invalidated) {\n enabledElement.invalid = true;\n }\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImageSync.js\":\n/*!***********************************!*\\\n !*** ./internal/drawImageSync.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n/* harmony import */ var _drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawCompositeImage.js */ \"./internal/drawCompositeImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n\n\n\n\n\n\n\n\n/**\r\n * Draw an image to a given enabled element synchronously\r\n *\r\n * @param {EnabledElement} enabledElement An enabled element to draw into\r\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\r\n * @returns {void}\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var image = enabledElement.image;\n var element = enabledElement.element;\n var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn\n\n if (!enabledElement.canvas || !(enabledElement.image || layers.length)) {\n return;\n } // Start measuring the time needed to draw the image/layers\n\n\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n image.stats = {\n lastGetPixelDataTime: -1.0,\n lastStoredPixelDataToCanvasImageDataTime: -1.0,\n lastPutImageDataTime: -1.0,\n lastRenderTime: -1.0,\n lastLutGenerateTime: -1.0\n };\n\n if (layers && layers.length) {\n Object(_drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n } else if (image) {\n var render = image.render;\n\n if (!render) {\n if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '' && enabledElement.image.labelmap === true) {\n render = _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__[\"renderLabelMapImage\"];\n } else if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '') {\n render = _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderPseudoColorImage\"];\n } else if (image.color) {\n render = _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderColorImage\"];\n } else {\n render = _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderGrayscaleImage\"];\n }\n }\n\n render(enabledElement, invalidated);\n } // Calculate how long it took to draw the image/layers\n\n\n var renderTimeInMs = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var eventData = {\n viewport: enabledElement.viewport,\n element: element,\n image: image,\n enabledElement: enabledElement,\n canvasContext: enabledElement.canvas.getContext('2d'),\n renderTimeInMs: renderTimeInMs\n };\n image.stats.lastRenderTime = renderTimeInMs;\n enabledElement.invalid = false;\n enabledElement.needsRedraw = false;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].IMAGE_RENDERED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./internal/generateColorLut.js\":\n/*!**************************************!*\\\n !*** ./internal/generateColorLut.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n/**\n * Creates a LUT used while rendering to convert stored pixel values to\n * display pixels\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Number} windowWidth The Window Width\n * @param {Number} windowCenter The Window Center\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\n *\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(storedValue);\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(_storedValue);\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/generateLut.js\":\n/*!*********************************!*\\\n !*** ./internal/generateLut.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n\n/**\r\n * Creates a LUT used while rendering to convert stored pixel values to\r\n * display pixels\r\n *\r\n * @param {Image} image A Cornerstone Image Object\r\n * @param {Number} windowWidth The Window Width\r\n * @param {Number} windowCenter The Window Center\r\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\r\n * @param {Array} [modalityLUT] A modality Lookup Table\r\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\r\n *\r\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, modalityLUT, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image.slope, image.intercept, modalityLUT);\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(mlutfn(_storedValue));\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/getCanvas.js\":\n/*!*******************************!*\\\n !*** ./internal/getCanvas.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getCanvas; });\nvar CANVAS_CSS_CLASS = 'cornerstone-canvas';\n/**\n * Create a canvas and append it to the element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\nfunction createCanvas(element) {\n var canvas = document.createElement('canvas');\n canvas.style.display = 'block';\n canvas.classList.add(CANVAS_CSS_CLASS);\n element.appendChild(canvas);\n return canvas;\n}\n/**\n * Create a canvas or returns the one that already exists for a given element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\n\nfunction getCanvas(element) {\n var selector = \"canvas.\".concat(CANVAS_CSS_CLASS);\n return element.querySelector(selector) || createCanvas(element);\n}\n\n/***/ }),\n\n/***/ \"./internal/getDefaultViewport.js\":\n/*!****************************************!*\\\n !*** ./internal/getDefaultViewport.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n/**\n * Creates a new viewport object containing default values\n *\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\nfunction createViewport() {\n var displayedArea = createDefaultDisplayedArea();\n return {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: undefined,\n windowCenter: undefined\n },\n invert: false,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: undefined,\n voiLUT: undefined,\n colormap: undefined,\n labelmap: false,\n displayedArea: displayedArea\n };\n}\n/**\n * Creates the default displayed area.\n * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space.\n *\n * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object\n * @memberof Internal\n */\n\n\nfunction createDefaultDisplayedArea() {\n return {\n // Top Left Hand Corner\n tlhc: {\n x: 1,\n y: 1\n },\n // Bottom Right Hand Corner\n brhc: {\n x: 1,\n y: 1\n },\n rowPixelSpacing: 1,\n columnPixelSpacing: 1,\n presentationSizeMode: 'NONE'\n };\n}\n/**\n * Creates a new viewport object containing default values for the image and canvas\n *\n * @param {HTMLElement} canvas A Canvas DOM element\n * @param {Image} image A Cornerstone Image Object\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n if (canvas === undefined) {\n throw new Error('getDefaultViewport: parameter canvas must not be undefined');\n }\n\n if (image === undefined) {\n return createViewport();\n } // Fit image to window\n\n\n var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(canvas, image, 0).scaleFactor;\n return {\n scale: scale,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter\n },\n invert: image.invert,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: image.modalityLUT,\n voiLUT: image.voiLUT,\n colormap: image.colormap,\n labelmap: Boolean(image.labelmap),\n displayedArea: {\n tlhc: {\n x: 1,\n y: 1\n },\n brhc: {\n x: image.columns,\n y: image.rows\n },\n rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing,\n columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing,\n presentationSizeMode: 'NONE'\n }\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageFitScale.js\":\n/*!**************************************!*\\\n !*** ./internal/getImageFitScale.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n/* harmony import */ var _getImageSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageSize.js */ \"./internal/getImageSize.js\");\n\n\n/**\n * Calculates the horizontal, vertical and minimum scale factor for an image\n @param {{width, height}} windowSize The window size where the image is displayed. This can be any HTML element or structure with a width, height fields (e.g. canvas).\n * @param {any} image The cornerstone image object\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{horizontalScale, verticalScale, scaleFactor}} The calculated horizontal, vertical and minimum scale factor\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowSize, image) {\n var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(windowSize, 'getImageScale: parameter windowSize must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageScale: parameter image must not be undefined');\n var imageSize = Object(_getImageSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, rotation);\n var rowPixelSpacing = image.rowPixelSpacing || 1;\n var columnPixelSpacing = image.columnPixelSpacing || 1;\n var verticalRatio = 1;\n var horizontalRatio = 1;\n\n if (rowPixelSpacing < columnPixelSpacing) {\n horizontalRatio = columnPixelSpacing / rowPixelSpacing;\n } else {\n // even if they are equal we want to calculate this ratio (the ration might be 0.5)\n verticalRatio = rowPixelSpacing / columnPixelSpacing;\n }\n\n var verticalScale = windowSize.height / imageSize.height / verticalRatio;\n var horizontalScale = windowSize.width / imageSize.width / horizontalRatio; // Fit image to window\n\n return {\n verticalScale: verticalScale,\n horizontalScale: horizontalScale,\n scaleFactor: Math.min(horizontalScale, verticalScale)\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageSize.js\":\n/*!**********************************!*\\\n !*** ./internal/getImageSize.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n\n/**\n * Check if the angle is rotated\n * @param {Number} rotation the rotation angle\n * @returns {Boolean} true if the angle is rotated; Otherwise, false.\n * @memberof Internal\n */\n\nfunction isRotated(rotation) {\n return !(rotation === null || rotation === undefined || rotation === 0 || rotation === 180);\n}\n/**\n * Retrieves the current image dimensions given an enabled element\n *\n * @param {any} image The Cornerstone image.\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{width:Number, height:Number}} The Image dimensions\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image) {\n var rotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageSize: parameter image must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.width, 'getImageSize: parameter image must have width');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.height, 'getImageSize: parameter image must have height');\n\n if (isRotated(rotation)) {\n return {\n height: image.width,\n width: image.height\n };\n }\n\n return {\n width: image.width,\n height: image.height\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getModalityLUT.js\":\n/*!************************************!*\\\n !*** ./internal/getModalityLUT.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generates a linear modality transformation function\n *\n * See DICOM PS3.3 C.11.1 Modality LUT Module\n *\n * http://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.11.html\n *\n * @param {Number} slope m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} intercept The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n\n Output units = m*SV + b.\n * @return {function(*): *} A linear modality LUT function. Given a stored pixel it returns the modality pixel value\n * @memberof Internal\n */\nfunction generateLinearModalityLUT(slope, intercept) {\n return function (storedPixelValue) {\n return storedPixelValue * slope + intercept;\n };\n}\n\nfunction generateNonLinearModalityLUT(modalityLUT) {\n var minValue = modalityLUT.lut[0];\n var maxValue = modalityLUT.lut[modalityLUT.lut.length - 1];\n var maxValueMapped = modalityLUT.firstValueMapped + modalityLUT.lut.length;\n return function (storedPixelValue) {\n if (storedPixelValue < modalityLUT.firstValueMapped) {\n return minValue;\n } else if (storedPixelValue >= maxValueMapped) {\n return maxValue;\n }\n\n return modalityLUT.lut[storedPixelValue];\n };\n}\n/**\n * Get the appropriate Modality LUT for the current situation.\n *\n * @param {Number} [slope] m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} [intercept] The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n * @param {Function} [modalityLUT] A modality LUT function. Given a stored pixel it returns the modality pixel value.\n *\n * @return {function(*): *} A modality LUT function. Given a stored pixel it returns the modality pixel value.\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (slope, intercept, modalityLUT) {\n if (modalityLUT) {\n return generateNonLinearModalityLUT(modalityLUT);\n }\n\n return generateLinearModalityLUT(slope, intercept);\n});\n\n/***/ }),\n\n/***/ \"./internal/getTransform.js\":\n/*!**********************************!*\\\n !*** ./internal/getTransform.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n // For now we will calculate it every time it is requested.\n // In the future, we may want to cache it in the enabled element to speed things up.\n return Object(_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./internal/getVOILut.js\":\n/*!*******************************!*\\\n !*** ./internal/getVOILut.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint no-bitwise: 0 */\n\n/**\n * Volume of Interest Lookup Table Function\n *\n * @typedef {Function} VOILUTFunction\n *\n * @param {Number} modalityLutValue\n * @returns {Number} transformed value\n * @memberof Objects\n */\n\n/**\n * @module: VOILUT\n */\n\n/**\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\nfunction generateLinearVOILUT(windowWidth, windowCenter) {\n return function (modalityLutValue) {\n return ((modalityLutValue - windowCenter) / windowWidth + 0.5) * 255.0;\n };\n}\n/**\n * Generate a non-linear volume of interest lookup table\n *\n * @param {LUT} voiLUT Volume of Interest Lookup Table Object\n *\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\nfunction generateNonLinearVOILUT(voiLUT) {\n // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa!\n var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length;\n var shift = bitsPerEntry - 8;\n var minValue = voiLUT.lut[0] >> shift;\n var maxValue = voiLUT.lut[voiLUT.lut.length - 1] >> shift;\n var maxValueMapped = voiLUT.firstValueMapped + voiLUT.lut.length - 1;\n return function (modalityLutValue) {\n if (modalityLutValue < voiLUT.firstValueMapped) {\n return minValue;\n } else if (modalityLutValue >= maxValueMapped) {\n return maxValue;\n }\n\n return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift;\n };\n}\n/**\n * Retrieve a VOI LUT mapping function given the current windowing settings\n * and the VOI LUT for the image\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object\n *\n * @return {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowWidth, windowCenter, voiLUT) {\n if (voiLUT) {\n return generateNonLinearVOILUT(voiLUT);\n }\n\n return generateLinearVOILUT(windowWidth, windowCenter);\n});\n\n/***/ }),\n\n/***/ \"./internal/guid.js\":\n/*!**************************!*\\\n !*** ./internal/guid.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n/**\n * Generate a unique identifier\n *\n * @return {string} A unique identifier\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return \"\".concat(s4() + s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4()).concat(s4()).concat(s4());\n});\n\n/***/ }),\n\n/***/ \"./internal/index.js\":\n/*!***************************!*\\\n !*** ./internal/index.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ \"./internal/drawImage.js\");\n/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ \"./internal/generateLut.js\");\n/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ \"./internal/getTransform.js\");\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__[\"Transform\"]\n});\n\n/***/ }),\n\n/***/ \"./internal/now.js\":\n/*!*************************!*\\\n !*** ./internal/now.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @module Polyfills\n */\n\n/**\n * Use the performance.now() method if possible, and if not, use Date.now()\n *\n * @return {number} Time elapsed since the time origin\n * @memberof Polyfills\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n if (window.performance) {\n return performance.now();\n }\n\n return Date.now();\n});\n\n/***/ }),\n\n/***/ \"./internal/requestAnimationFrame.js\":\n/*!*******************************************!*\\\n !*** ./internal/requestAnimationFrame.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction requestFrame(callback) {\n window.setTimeout(callback, 1000 / 60);\n}\n/**\n * Polyfills requestAnimationFrame for older browsers.\n *\n * @param {Function} callback A parameter specifying a function to call when it's time to update your animation for the next repaint. The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame starts to fire callbacks.\n *\n * @return {Number} A long integer value, the request id, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.\n * @memberof Polyfills\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (callback) {\n return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback);\n});\n\n/***/ }),\n\n/***/ \"./internal/storedColorPixelDataToCanvasImageData.js\":\n/*!***********************************************************!*\\\n !*** ./internal/storedColorPixelDataToCanvasImageData.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored color pixel values to display pixel values using a LUT.\n *\n * Note: Skips alpha value for any input image pixel data.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex] + -minPixelValue]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex]]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageData.js\":\n/*!******************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageData.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT. This is the most performance sensitive code in cornerstone and\n * we use a special trick to make this go as fast as possible. Specifically we\n * use the alpha channel only to control the luminance rather than the red, green and\n * blue channels which makes it over 3x faster. The canvasImageDataData buffer needs\n * to be previously filled with white pixels.\n *\n * NOTE: Attribution would be appreciated if you use this technique!\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 3;\n var storedPixelDataIndex = 0; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\":\n/*!**************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataColorLUT.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataColorLUT(image, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataColorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\":\n/*!********************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} grayscaleLut Lookup table array\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataPseudocolorLUT(image, grayscaleLut, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var grayscale;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++]];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataPseudocolorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataRGBA.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var pixelValue; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedRGBAPixelDataToCanvasImageData.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedRGBAPixelDataToCanvasImageData.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored RGBA color pixel values to display pixel values using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/transform.js\":\n/*!*******************************!*\\\n !*** ./internal/transform.js ***!\n \\*******************************/\n/*! exports provided: Transform */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// By Simon Sarris\n// Www.simonsarris.com\n// Sarris@acm.org\n//\n// Free to use and distribute at will\n// So long as you are nice to people, etc\n// Simple class for keeping track of the current transformation matrix\n// For instance:\n// Var t = new Transform();\n// T.rotate(5);\n// Var m = t.m;\n// Ctx.setTransform(m[0], m[1], m[2], m[3], m[4], m[5]);\n// Is equivalent to:\n// Ctx.rotate(5);\n// But now you can retrieve it :)\n// Remember that this does not account for any CSS transforms applied to the canvas\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform() {\n _classCallCheck(this, Transform);\n\n this.reset();\n }\n\n _createClass(Transform, [{\n key: \"reset\",\n value: function reset() {\n this.m = [1, 0, 0, 1, 0, 0];\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var transform = new Transform();\n transform.m[0] = this.m[0];\n transform.m[1] = this.m[1];\n transform.m[2] = this.m[2];\n transform.m[3] = this.m[3];\n transform.m[4] = this.m[4];\n transform.m[5] = this.m[5];\n return transform;\n }\n }, {\n key: \"multiply\",\n value: function multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n }\n }, {\n key: \"invert\",\n value: function invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n }\n }, {\n key: \"rotate\",\n value: function rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n }\n }, {\n key: \"translate\",\n value: function translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(px, py) {\n var x = px;\n var y = py;\n px = x * this.m[0] + y * this.m[2] + this.m[4];\n py = x * this.m[1] + y * this.m[3] + this.m[5];\n return {\n x: px,\n y: py\n };\n }\n }]);\n\n return Transform;\n}();\n\n/***/ }),\n\n/***/ \"./internal/tryEnableWebgl.js\":\n/*!************************************!*\\\n !*** ./internal/tryEnableWebgl.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n\n/**\n * Checks if webGL is supported and initializes the rendering engine.\n * @param {any} options Options to check if webgl rendering is requested (e.g. enable webgl by passing {renderer: 'webgl'})\n * @returns {Boolean} true if webgl rendering has been successfully initialized. Otherwise, false.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.isWebGLAvailable()) {\n // If WebGL is available on the device, initialize the renderer\n // And return the renderCanvas from the WebGL rendering path\n _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.initRenderer();\n options.renderer = 'webgl';\n return true;\n } // If WebGL is not available on this device, we will fall back\n // To using the Canvas renderer\n\n\n console.error('WebGL not available, falling back to Canvas renderer');\n delete options.renderer;\n return false;\n});\n\n/***/ }),\n\n/***/ \"./internal/validator.js\":\n/*!*******************************!*\\\n !*** ./internal/validator.js ***!\n \\*******************************/\n/*! exports provided: validateParameterUndefined, validateParameterUndefinedOrNull */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefined\", function() { return validateParameterUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefinedOrNull\", function() { return validateParameterUndefinedOrNull; });\n/**\n * Check if the supplied parameter is undefined and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\nfunction validateParameterUndefined(checkParam, errorMsg) {\n if (checkParam === undefined) {\n throw new Error(errorMsg);\n }\n}\n/**\n * Check if the supplied parameter is undefined or null and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\n\nfunction validateParameterUndefinedOrNull(checkParam, errorMsg) {\n if (checkParam === undefined || checkParam === null) {\n throw new Error(errorMsg);\n }\n}\n\n/***/ }),\n\n/***/ \"./invalidate.js\":\n/*!***********************!*\\\n !*** ./invalidate.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Sets the invalid flag on the enabled element and fire an event\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.invalid = true;\n enabledElement.needsRedraw = true;\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].INVALIDATED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./invalidateImageId.js\":\n/*!******************************!*\\\n !*** ./invalidateImageId.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the all enabled elements\n * displaying the specified imageId\n *\n * @param {string} imageId The imageId of the Cornerstone Image Object to redraw\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (imageId) {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElementsByImageId\"])(imageId);\n enabledElements.forEach(function (enabledElement) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, true);\n });\n});\n\n/***/ }),\n\n/***/ \"./layers.js\":\n/*!*******************!*\\\n !*** ./layers.js ***!\n \\*******************/\n/*! exports provided: rescaleImage, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, setLayerImage, getActiveLayer, purgeLayers */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rescaleImage\", function() { return rescaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return addLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return removeLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return getLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return getLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return getVisibleLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return setActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return setLayerImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return getActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return purgeLayers; });\n/* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ \"./internal/guid.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\n * @module EnabledElementLayers\n */\n\n/**\n * Helper function to trigger an event on a Cornerstone element with\n * a specific layerId\n *\n * @param {String} eventName The event name (e.g. CornerstoneLayerAdded)\n * @param {EnabledElement} enabledElement The Cornerstone enabled element\n * @param {String} layerId The layer's unique identifier\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction triggerEventForLayer(eventName, enabledElement, layerId) {\n var element = enabledElement.element;\n var eventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n enabledElement: enabledElement,\n layerId: layerId\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(element, eventName, eventData);\n}\n/**\n * Rescale the target layer to the base layer based on the\n * relative size of each image and their pixel dimensions.\n *\n * This function will update the Viewport parameters of the\n * target layer to a new scale.\n *\n * @param {EnabledElementLayer} baseLayer The base layer\n * @param {EnabledElementLayer} targetLayer The target layer to rescale\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\n\nfunction rescaleImage(baseLayer, targetLayer) {\n if (baseLayer.layerId === targetLayer.layerId) {\n throw new Error('rescaleImage: both arguments represent the same layer');\n }\n\n var baseImage = baseLayer.image;\n var targetImage = targetLayer.image; // Return if these images don't have an imageId (e.g. for dynamic images)\n\n if (!baseImage.imageId || !targetImage.imageId) {\n return;\n } // Column pixel spacing need to be considered when calculating the\n // ratio between the layer added and base layer images\n\n\n var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width);\n var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative;\n targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio;\n}\n/**\n * Add a layer to a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image object to add as a new layer\n * @param {Object} options Options for the layer\n *\n * @returns {String} layerId The new layer's unique identifier\n * @memberof EnabledElementLayers\n */\n\nfunction addLayer(element, image, options) {\n var layerId = Object(_internal_guid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var viewport;\n\n if (image) {\n viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (options && options.viewport) {\n viewport = Object.assign(viewport, options.viewport);\n }\n } // Set syncViewports to true by default when a new layer is added\n\n\n if (enabledElement.syncViewports !== false) {\n enabledElement.syncViewports = true;\n }\n\n var newLayer = {\n image: image,\n layerId: layerId,\n viewport: viewport,\n options: options || {},\n renderingTools: {}\n }; // Rescale the new layer based on the base layer to make sure\n // they will have a proportional size (pixel spacing)\n\n if (layers.length && image) {\n rescaleImage(layers[0], newLayer);\n }\n\n layers.push(newLayer);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added\n\n if (layers.length === 1 && image) {\n setActiveLayer(element, layerId);\n }\n\n return layerId;\n}\n/**\n * Remove a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction removeLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index !== -1) {\n layers.splice(index, 1); // If the current layer is active, and we have other layers,\n // switch to the first layer that remains in the array\n\n if (layerId === enabledElement.activeLayerId && layers.length) {\n setActiveLayer(element, layers[0].layerId);\n }\n\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_REMOVED, enabledElement, layerId);\n }\n}\n/**\n * Retrieve a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @return {EnabledElementLayer} The layer\n * @memberof EnabledElementLayers\n */\n\nfunction getLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === layerId;\n });\n}\n/**\n * Retrieve all layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers;\n}\n/**\n * Retrieve all visible layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getVisibleLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.filter(function (layer) {\n return layer.options && layer.options.visible !== false && layer.options.opacity !== 0;\n });\n}\n/**\n * Set the active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setActiveLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // Stop here if this layer is already active\n\n if (enabledElement.activeLayerId === layerId) {\n return;\n }\n\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index === -1) {\n throw new Error('setActiveLayer: layer not found in layers array');\n }\n\n var layer = enabledElement.layers[index];\n\n if (!layer.image) {\n throw new Error('setActiveLayer: layer with undefined image cannot be set as active.');\n }\n\n enabledElement.activeLayerId = layerId;\n enabledElement.image = layer.image;\n enabledElement.viewport = layer.viewport;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ACTIVE_LAYER_CHANGED, enabledElement, layerId);\n}\n/**\n * Set a new image for a specific layerId\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image The image to be displayed in this layer\n * @param {String} [layerId] The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setLayerImage(element, image, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var baseLayer = enabledElement.layers[0];\n var layer;\n\n if (layerId) {\n layer = getLayer(element, layerId);\n } else {\n layer = getActiveLayer(element);\n }\n\n if (!layer) {\n throw new Error('setLayerImage: Layer not found');\n }\n\n layer.image = image;\n\n if (!image) {\n layer.viewport = undefined;\n return;\n }\n\n if (!layer.viewport) {\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (layer.options && layer.options.viewport) {\n layer.viewport = Object.assign(defaultViewport, layer.options.viewport);\n }\n\n if (baseLayer.layerId !== layerId) {\n rescaleImage(baseLayer, layer);\n }\n }\n}\n/**\n * Retrieve the currently active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @return {EnabledElementLayer} The currently active layer\n * @memberof EnabledElementLayers\n */\n\nfunction getActiveLayer(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === enabledElement.activeLayerId;\n });\n}\n/**\n * Purge the layers\r\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\r\n * @returns {void}\r\n */\n\nfunction purgeLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n enabledElement.layers = [];\n delete enabledElement.activeLayerId;\n delete enabledElement.lastSyncViewportsState;\n}\n\n/***/ }),\n\n/***/ \"./metaData.js\":\n/*!*********************!*\\\n !*** ./metaData.js ***!\n \\*********************/\n/*! exports provided: addProvider, removeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addProvider\", function() { return addProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeProvider\", function() { return removeProvider; });\n// This module defines a way to access various metadata about an imageId. This layer of abstraction exists\n// So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document)\nvar providers = [];\n/**\n * @module Metadata\n */\n\n/**\n * Adds a metadata provider with the specified priority\n * @param {Function} provider Metadata provider function\n * @param {Number} [priority=0] - 0 is default/normal, > 0 is high, < 0 is low\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction addProvider(provider) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var i; // Find the right spot to insert this provider based on priority\n\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n } // Insert the decode task at position i\n\n\n providers.splice(i, 0, {\n priority: priority,\n provider: provider\n });\n}\n/**\n * Removes the specified provider\n *\n * @param {Function} provider Metadata provider function\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction removeProvider(provider) {\n for (var i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\n/**\n * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest\n * until one responds\n *\n * @param {String} type The type of metadata requested from the metadata store\n * @param {String} imageId The Cornerstone Image Object's imageId\n *\n * @returns {*} The metadata retrieved from the metadata store\n * @memberof Metadata\n */\n\nfunction getMetaData(type, imageId) {\n // Invoke each provider in priority order until one returns something\n for (var i = 0; i < providers.length; i++) {\n var result = providers[i].provider(type, imageId);\n\n if (result !== undefined) {\n return result;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addProvider: addProvider,\n removeProvider: removeProvider,\n get: getMetaData\n});\n\n/***/ }),\n\n/***/ \"./pageToPixel.js\":\n/*!************************!*\\\n !*** ./pageToPixel.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the page coordinate system to the pixel coordinate\n * system\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {Number} pageX The x value in the page coordinate system\n * @param {Number} pageY The y value in the page coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pageX, pageY) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('image has not been loaded yet');\n } // Convert the pageX and pageY to the canvas client coordinates\n\n\n var rect = element.getBoundingClientRect();\n var clientX = pageX - rect.left - window.pageXOffset;\n var clientY = pageY - rect.top - window.pageYOffset;\n var pt = {\n x: clientX,\n y: clientY\n };\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./pixelDataToFalseColorData.js\":\n/*!**************************************!*\\\n !*** ./pixelDataToFalseColorData.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pixelDataToFalseColorData; });\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n\n/**\n * Converts the image pixel data into a false color data\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Object} lookupTable A lookup table Object\n *\n * @returns {void}\n * @deprecated This function is superseded by the ability to set the Viewport parameters\n * to include colormaps.\n */\n\nfunction pixelDataToFalseColorData(image, lookupTable) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n }\n\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = image.width * image.height;\n var origPixelData = image.origPixelData || image.getPixelData();\n var storedColorPixelData = new Uint8Array(numPixels * 4);\n var sp;\n var mapped;\n image.color = true;\n image.falseColor = true;\n image.origPixelData = origPixelData;\n\n if (lookupTable instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n lookupTable.build();\n\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n mapped = lookupTable.mapValue(sp);\n storedColorPixelData[canvasImageDataIndex++] = mapped[0];\n storedColorPixelData[canvasImageDataIndex++] = mapped[1];\n storedColorPixelData[canvasImageDataIndex++] = mapped[2];\n storedColorPixelData[canvasImageDataIndex++] = mapped[3];\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][3]; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][3]; // Alpha\n }\n }\n\n image.rgba = true;\n image.cachedLut = undefined;\n image.render = undefined;\n image.slope = 1;\n image.intercept = 0;\n image.minPixelValue = 0;\n image.maxPixelValue = 255;\n image.windowWidth = 255;\n image.windowCenter = 128;\n\n image.getPixelData = function () {\n return storedColorPixelData;\n };\n}\n\n/***/ }),\n\n/***/ \"./pixelToCanvas.js\":\n/*!**************************!*\\\n !*** ./pixelToCanvas.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the pixel coordinate system to the canvas coordinate system\n * system. This can be used to render using canvas context without having the weird\n * side effects that come from scaling and non square pixels\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {{x: Number, y: Number}} pt The transformed point in the pixel coordinate system\n *\n * @returns {{x: Number, y: Number}} The input point in the canvas coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./rendering/doesImageNeedToBeRendered.js\":\n/*!************************************************!*\\\n !*** ./rendering/doesImageNeedToBeRendered.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Determine whether or not an Enabled Element needs to be re-rendered.\n *\n * If the imageId has changed, or if any of the last rendered viewport\n * parameters have changed, this function will return true.\n *\n * @param {EnabledElement} enabledElement An Enabled Element\n * @param {Image} image An Image\n * @return {boolean} Whether or not the Enabled Element needs to re-render its image\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var lastRenderedImageId = enabledElement.renderingTools.lastRenderedImageId;\n var lastRenderedViewport = enabledElement.renderingTools.lastRenderedViewport;\n return image.imageId !== lastRenderedImageId || !lastRenderedViewport || lastRenderedViewport.windowCenter !== enabledElement.viewport.voi.windowCenter || lastRenderedViewport.windowWidth !== enabledElement.viewport.voi.windowWidth || lastRenderedViewport.invert !== enabledElement.viewport.invert || lastRenderedViewport.rotation !== enabledElement.viewport.rotation || lastRenderedViewport.hflip !== enabledElement.viewport.hflip || lastRenderedViewport.vflip !== enabledElement.viewport.vflip || lastRenderedViewport.modalityLUT !== enabledElement.viewport.modalityLUT || lastRenderedViewport.voiLUT !== enabledElement.viewport.voiLUT || lastRenderedViewport.colormap !== enabledElement.viewport.colormap;\n});\n\n/***/ }),\n\n/***/ \"./rendering/getLut.js\":\n/*!*****************************!*\\\n !*** ./rendering/getLut.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/computeAutoVoi.js */ \"./internal/computeAutoVoi.js\");\n/* harmony import */ var _lutMatches_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lutMatches.js */ \"./rendering/lutMatches.js\");\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateLut.js */ \"./internal/generateLut.js\");\n\n\n\n/**\n * Retrieve or generate a LUT Array for an Image and Viewport\n *\n * @param {Image} image An Image Object\n * @param {Viewport} viewport An Viewport Object\n * @param {Boolean} invalidated Whether or not the LUT data has been invalidated\n * (e.g. by a change to the windowWidth, windowCenter, or invert viewport parameters).\n * @return {Uint8ClampedArray} LUT Array\n * @memberof rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, viewport, invalidated) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.modalityLUT, viewport.modalityLUT) && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.voiLUT, viewport.voiLUT) && image.cachedLut.invert === viewport.invert && invalidated !== true) {\n return image.cachedLut.lutArray;\n }\n\n Object(_internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(viewport, image); // Lut is invalid or not present, regenerate it and cache it\n\n Object(_internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert, viewport.modalityLUT, viewport.voiLUT);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n image.cachedLut.voiLUT = viewport.voiLUT;\n image.cachedLut.modalityLUT = viewport.modalityLUT;\n return image.cachedLut.lutArray;\n});\n\n/***/ }),\n\n/***/ \"./rendering/index.js\":\n/*!****************************!*\\\n !*** ./rendering/index.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony import */ var _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n\n\n\n\n\n\n/**\n * @module rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n colorImage: _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__[\"renderColorImage\"],\n grayscaleImage: _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderGrayscaleImage\"],\n webImage: _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderWebImage\"],\n pseudoColorImage: _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderPseudoColorImage\"],\n labelMapImage: _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderLabelMapImage\"],\n toCanvas: _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./rendering/initializeRenderCanvas.js\":\n/*!*********************************************!*\\\n !*** ./rendering/initializeRenderCanvas.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Sets size and clears canvas\n *\n * @param {Object} enabledElement Cornerstone Enabled Element\n * @param {Object} image Image to be rendered\n * @returns {void}\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // Resize the canvas\n\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we\n // control the luminance using the alpha channel to improve rendering performance.\n\n canvasContext.fillStyle = 'white';\n canvasContext.fillRect(0, 0, renderCanvas.width, renderCanvas.height);\n var renderCanvasData = canvasContext.getImageData(0, 0, image.width, image.height);\n enabledElement.renderingTools.renderCanvasContext = canvasContext;\n enabledElement.renderingTools.renderCanvasData = renderCanvasData;\n});\n\n/***/ }),\n\n/***/ \"./rendering/lutMatches.js\":\n/*!*********************************!*\\\n !*** ./rendering/lutMatches.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Check if two lookup tables match\n *\n * @param {LUT} a A lookup table function\n * @param {LUT} b Another lookup table function\n * @return {boolean} Whether or not they match\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (a, b) {\n // If undefined, they are equal\n if (!a && !b) {\n return true;\n } // If one is undefined, not equal\n\n\n if (!a || !b) {\n return false;\n } // Check the unique ids\n\n\n return a.id === b.id;\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderColorImage.js\":\n/*!***************************************!*\\\n !*** ./rendering/renderColorImage.js ***!\n \\***************************************/\n/*! exports provided: renderColorImage, addColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return renderColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addColorLayer\", function() { return addColorLayer; });\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ \"./internal/generateColorLut.js\");\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ \"./internal/storedRGBAPixelDataToCanvasImageData.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Generates an appropriate Look Up Table to render the given image with the given window width and level (specified in the viewport)\n * Uses an internal cache for performance\n *\n * @param {Object} image The image to be rendered\n * @param {Object} viewport The viewport values used for rendering\n * @returns {Uint8ClampedArray} Look Up Table array.\n * @memberof rendering\n */\n\nfunction getLut(image, viewport) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && image.cachedLut.invert === viewport.invert) {\n return image.cachedLut.lutArray;\n } // Lut is invalid or not present, regenerate it and cache it\n\n\n Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n return image.cachedLut.lutArray;\n}\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || !canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // The ww/wc is identity and not inverted - get a canvas with the image rendered into it for\n // Fast drawing\n\n if (enabledElement.viewport.voi.windowWidth === 255 && enabledElement.viewport.voi.windowCenter === 128 && enabledElement.viewport.invert === false && image.getCanvas && image.getCanvas()) {\n return image.getCanvas();\n } // Apply the lut to the stored pixel data onto the render canvas\n\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var colorLut = getLut(image, enabledElement.viewport);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // The color image voi/invert has been modified - apply the lut to the underlying\n // Pixel data and put it into the renderCanvas\n\n if (image.rgba) {\n Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, colorLut, renderCanvasData.data);\n } else {\n Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, colorLut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to render a color image to an enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderColorImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderColorImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\nfunction addColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addColorLayer: image must be loaded before it can be drawn');\n } // All multi-layer images should include the alpha value\n\n\n image.rgba = true;\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderGrayscaleImage.js\":\n/*!*******************************************!*\\\n !*** ./rendering/renderGrayscaleImage.js ***!\n \\*******************************************/\n/*! exports provided: renderGrayscaleImage, addGrayscaleLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return renderGrayscaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGrayscaleLayer\", function() { return addGrayscaleLayer; });\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @param {Boolean} [useAlphaChannel = true] Will an alpha channel be used\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var useAlphaChannel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas\n\n if (useAlphaChannel) {\n Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image, lut, renderCanvasData.data);\n } else {\n Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a grayscale image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderGrayscaleImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a grayscale image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @param {Boolean} [useAlphaChannel] - Whether or not to render the grayscale image using only the alpha channel.\n This does not work if this layer is not the first layer in the enabledElement.\n * @returns {void}\n */\n\nfunction addGrayscaleLayer(layer, invalidated) {\n var useAlphaChannel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (layer === undefined) {\n throw new Error('addGrayscaleLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addGrayscaleLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderLabelMapImage.js\":\n/*!******************************************!*\\\n !*** ./rendering/renderLabelMapImage.js ***!\n \\******************************************/\n/*! exports provided: renderLabelMapImage, addLabelMapLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return renderLabelMapImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLabelMapLayer\", function() { return addLabelMapLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderLabelMapImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a label map image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderLabelMapImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderLabelMapImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for label map pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addLabelMapLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addLabelMapLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addLabelMapLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderPseudoColorImage.js\":\n/*!*********************************************!*\\\n !*** ./rendering/renderPseudoColorImage.js ***!\n \\*********************************************/\n/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return renderPseudoColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPseudoColorLayer\", function() { return addPseudoColorLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderPseudoColorImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n colormap.setNumberOfColors(256);\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(image, lut, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a pseudo-color image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderPseudoColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for pseudocolor pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addPseudoColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addPseudoColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addPseudoColorLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderToCanvas.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderToCanvas.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n\n\n\n\n\n/**\r\n * @typedef {Object} EnabledElementStub\r\n * @property {HTMLElement} element The enabled element\r\n * @property {HTMLCanvasElement} canvas The current canvas\r\n * @property {Object} image Currently displayed image\r\n * @property {Boolean} invalid Whether or not the image pixel data has been changed\r\n * @property {Boolean} needsRedraw A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\r\n * @property {Object} options Layer drawing options\r\n * @property {Object[]} layers Layers added to the EnabledElement\r\n * @property {Object} data\r\n * @property {Object} renderingTools\r\n * @property {Object} viewport The current viewport\r\n * @memberof rendering\r\n */\n\n/**\r\n * creates a dummy enabled element\r\n *\r\n * @param {HTMLCanvasElement} canvas the canvas that will be assigned to the enabled element.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param { any } options Options for rendering the image (e.g.enable webgl by {renderer: 'webgl' })\r\n * @param { any } viewport A set of Cornerstone viewport parameters\r\n * @returns {EnabledElementStub} a dummy enabled element\r\n * @memberof rendering\r\n */\n\nfunction createEnabledElementStub(canvas, image, options, viewport) {\n return {\n element: canvas,\n canvas: canvas,\n image: image,\n invalid: true,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n viewport: viewport\n };\n}\n/**\r\n * Render the image to the provided canvas immediately.\r\n * @param {any} canvas The HTML canvas where the image will be rendered.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param {any} [viewport = null] A set of Cornerstone viewport parameters\r\n * @param {any} [options = null] Options for rendering the image (e.g. enable webgl by {renderer: 'webgl'})\r\n * @returns {void}\r\n * @memberof rendering\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (canvas === undefined) {\n throw new Error('renderToCanvas: parameter canvas cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canvas, image);\n\n if (viewport) {\n Object.assign(defaultViewport, viewport);\n }\n\n var enabledElementStub = createEnabledElementStub(canvas, image, options, defaultViewport);\n var eventDetails = {\n enabledElement: enabledElementStub,\n timestamp: Date.now()\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElementStub.element, _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PRE_RENDER, eventDetails);\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElementStub, enabledElementStub.invalid);\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderWebImage.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderWebImage.js ***!\n \\*************************************/\n/*! exports provided: renderWebImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return renderWebImage; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n\n\n/**\n * API function to draw a standard web image (PNG, JPG) to an enabledImage\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\nfunction renderWebImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderWebImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderWebImage: image must be loaded before it can be drawn');\n } // If the viewport ww/wc and invert all match the initial state of the image, we can draw the image\n // Directly. If any of those are changed, we call renderColorImage() to apply the lut\n\n\n if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) {\n // Get the canvas context and reset the transform\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height);\n } else {\n Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderColorImage\"])(enabledElement, invalidated);\n }\n}\n\n/***/ }),\n\n/***/ \"./rendering/saveLastRendered.js\":\n/*!***************************************!*\\\n !*** ./rendering/saveLastRendered.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Saves the parameters of the last render into renderingTools, used later to decide if data can be reused.\n *\n * @param {Object} enabledElement Cornerstone EnabledElement\n * @returns {Object} enabledElement.renderingTools\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var imageId = enabledElement.image.imageId;\n var viewport = enabledElement.viewport;\n var isColor = enabledElement.image.color;\n enabledElement.renderingTools.lastRenderedImageId = imageId;\n enabledElement.renderingTools.lastRenderedIsColor = isColor;\n enabledElement.renderingTools.lastRenderedViewport = {\n windowCenter: viewport.voi.windowCenter,\n windowWidth: viewport.voi.windowWidth,\n invert: viewport.invert,\n rotation: viewport.rotation,\n hflip: viewport.hflip,\n vflip: viewport.vflip,\n modalityLUT: viewport.modalityLUT,\n voiLUT: viewport.voiLUT,\n colormap: viewport.colormap\n };\n return enabledElement.renderingTools;\n});\n\n/***/ }),\n\n/***/ \"./reset.js\":\n/*!******************!*\\\n !*** ./reset.js ***!\n \\******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\n/**\n * Resets the viewport to the default settings\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, enabledElement.image);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./resize.js\":\n/*!*******************!*\\\n !*** ./resize.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/getImageSize.js */ \"./internal/getImageSize.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {HTMLElement} canvas The Canvas DOM element within the DOM element enabled for Cornerstone\r\n * @returns {void}\r\n */\n\nfunction setCanvasSize(element, canvas) {\n // The device pixel ratio is 1.0 for normal displays and > 1.0\n // For high DPI displays like Retina\n\n /*\r\n This functionality is disabled due to buggy behavior on systems with mixed DPI's. If the canvas\r\n is created on a display with high DPI (e.g. 2.0) and then the browser window is dragged to\r\n a different display with a different DPI (e.g. 1.0), the canvas is not recreated so the pageToPixel\r\n produces incorrect results. I couldn't find any way to determine when the DPI changed other than\r\n by polling which is not very clean. If anyone has any ideas here, please let me know, but for now\r\n we will disable this functionality. We may want\r\n to add a mechanism to optionally enable this functionality if we can determine it is safe to do\r\n so (e.g. iPad or iPhone or perhaps enumerate the displays on the system. I am choosing\r\n to be cautious here since I would rather not have bug reports or safety issues related to this\r\n scenario.\r\n var devicePixelRatio = window.devicePixelRatio;\r\n if(devicePixelRatio === undefined) {\r\n devicePixelRatio = 1.0;\r\n }\r\n */\n // Avoid setting the same value because it flashes the canvas with IE and Edge\n if (canvas.width !== element.clientWidth) {\n canvas.width = element.clientWidth;\n canvas.style.width = \"\".concat(element.clientWidth, \"px\");\n } // Avoid setting the same value because it flashes the canvas with IE and Edge\n\n\n if (canvas.height !== element.clientHeight) {\n canvas.height = element.clientHeight;\n canvas.style.height = \"\".concat(element.clientHeight, \"px\");\n }\n}\n/**\r\n * Checks if the image of a given enabled element fitted the window\r\n * before the resize\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {Boolean} true if it fitted the windows, false otherwise\r\n */\n\n\nfunction wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var imageSize = Object(_internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement.image, enabledElement.viewport.rotation);\n var imageWidth = Math.round(imageSize.width * scale);\n var imageHeight = Math.round(imageSize.height * scale);\n var x = enabledElement.viewport.translation.x;\n var y = enabledElement.viewport.translation.y;\n return imageWidth === oldCanvasWidth && imageHeight <= oldCanvasHeight || imageWidth <= oldCanvasWidth && imageHeight === oldCanvasHeight && x === 0 && y === 0;\n}\n/**\r\n * Rescale the image relative to the changed size of the canvas\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {void}\r\n */\n\n\nfunction relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var canvasWidth = enabledElement.canvas.width;\n var canvasHeight = enabledElement.canvas.height;\n var relWidthChange = canvasWidth / oldCanvasWidth;\n var relHeightChange = canvasHeight / oldCanvasHeight;\n var relChange = Math.sqrt(relWidthChange * relHeightChange);\n enabledElement.viewport.scale = relChange * scale;\n}\n/**\r\n * Resizes an enabled element and optionally fits the image to window\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {Boolean} forceFitToWindow true to to force a refit, false to rescale accordingly\r\n * @returns {void}\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, forceFitToWindow) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldCanvasWidth = enabledElement.canvas.width;\n var oldCanvasHeight = enabledElement.canvas.height;\n setCanvasSize(element, enabledElement.canvas);\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ELEMENT_RESIZED, eventData);\n\n if (enabledElement.image === undefined) {\n return;\n }\n\n if (forceFitToWindow || wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight)) {\n // Fit the image to the window again if it fitted before the resize\n Object(_fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n } else {\n // Adapt the scale of a zoomed or panned image relative to the size change\n relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./setToPixelCoordinateSystem.js\":\n/*!***************************************!*\\\n !*** ./setToPixelCoordinateSystem.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/**\n * Sets the canvas context transformation matrix to the pixel coordinate system. This allows\n * geometry to be driven using the canvas context using coordinates in the pixel coordinate system\n * @param {EnabledElement} enabledElement The\n * @param {CanvasRenderingContext2D} context The CanvasRenderingContext2D for the enabledElement's Canvas\n * @param {Number} [scale] Optional scale to apply\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, context, scale) {\n if (enabledElement === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter enabledElement must not be undefined');\n }\n\n if (context === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter context must not be undefined');\n }\n\n var transform = Object(_internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, scale);\n context.setTransform(transform.m[0], transform.m[1], transform.m[2], transform.m[3], transform.m[4], transform.m[5]);\n});\n\n/***/ }),\n\n/***/ \"./setViewport.js\":\n/*!************************!*\\\n !*** ./setViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\nvar MIN_WINDOW_WIDTH = 0.000001;\nvar MIN_VIEWPORT_SCALE = 0.0001;\n/**\n * Sets/updates viewport of a given enabled element\n *\n * @param {HTMLElement} element - DOM element of the enabled element\n * @param {Viewport} [viewport] - Object containing the viewport properties\n * @returns {void}\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, viewport) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // If viewport is not already set, start with default and merge new\n // viewport options later\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement.canvas);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n } // Prevent window width from being too small (note that values close to zero are valid and can occur with\n // PET images in particular)\n\n\n if (enabledElement.viewport.voi.windowWidth) {\n enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH);\n } // Prevent scale from getting too small\n\n\n if (enabledElement.viewport.scale) {\n enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE);\n } // Normalize the rotation value to a positive rotation in degrees\n\n\n enabledElement.viewport.rotation %= 360;\n\n if (enabledElement.viewport.rotation < 0) {\n enabledElement.viewport.rotation += 360;\n }\n\n if (enabledElement.image) {\n // Force the image to be updated since the viewport has been modified\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./triggerEvent.js\":\n/*!*************************!*\\\n !*** ./triggerEvent.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return triggerEvent; });\n/**\n * Trigger a CustomEvent\n *\n * @param {EventTarget} el The element or EventTarget to trigger the event upon\n * @param {String} type The event type name\n * @param {Object|null} detail=null The event data to be sent\n * @returns {Boolean} The return value is false if at least one event listener called preventDefault(). Otherwise it returns true.\n */\nfunction triggerEvent(el, type) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var event; // This check is needed to polyfill CustomEvent on IE11-\n\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(type, {\n detail: detail,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, detail);\n }\n\n return el.dispatchEvent(event);\n}\n\n/***/ }),\n\n/***/ \"./updateImage.js\":\n/*!************************!*\\\n !*** ./updateImage.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the specified enabled element\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Boolean} [invalidated=false] Whether or not the image pixel data has been changed, necessitating a redraw\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined && !enabledElement.layers.length) {\n throw new Error('updateImage: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./webgl/createProgramFromString.js\":\n/*!******************************************!*\\\n !*** ./webgl/createProgramFromString.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Creates and compiles a shader.\n *\n * @param {!WebGLRenderingContext} gl The WebGL Context.\n * @param {string} shaderSource The GLSL source code for the shader.\n * @param {number} shaderType The type of shader, VERTEX_SHADER or FRAGMENT_SHADER.\n *\n * @return {!WebGLShader} The shader.\n * @memberof WebGLRendering\n */\nfunction compileShader(gl, shaderSource, shaderType) {\n // Create the shader object\n var shader = gl.createShader(shaderType); // Set the shader source code.\n\n gl.shaderSource(shader, shaderSource); // Compile the shader\n\n gl.compileShader(shader); // Check if it compiled\n\n var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong during compilation; get the error\n var infoLog = gl.getShaderInfoLog(shader);\n console.error(\"Could not compile shader:\\n\".concat(infoLog));\n }\n\n return shader;\n}\n/**\n * Creates a program from 2 shaders.\n *\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShader A vertex shader.\n * @param {!WebGLShader} fragmentShader A fragment shader.\n * @return {!WebGLProgram} A program.\n * @memberof WebGLRendering\n */\n\n\nfunction createProgram(gl, vertexShader, fragmentShader) {\n // Create a program.\n var program = gl.createProgram(); // Attach the shaders.\n\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader); // Link the program.\n\n gl.linkProgram(program); // Check if it linked.\n\n var success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong with the link\n var infoLog = gl.getProgramInfoLog(program);\n console.error(\"WebGL program filed to link:\\n\".concat(infoLog));\n }\n\n return program;\n}\n/**\n * Creates a program from 2 shaders source (Strings)\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShaderSrc Vertex shader string\n * @param {!WebGLShader} fragShaderSrc Fragment shader string\n * @return {!WebGLProgram} A program\n * @memberof WebGLRendering\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (gl, vertexShaderSrc, fragShaderSrc) {\n var vertexShader = compileShader(gl, vertexShaderSrc, gl.VERTEX_SHADER);\n var fragShader = compileShader(gl, fragShaderSrc, gl.FRAGMENT_SHADER);\n return createProgram(gl, vertexShader, fragShader);\n});\n\n/***/ }),\n\n/***/ \"./webgl/index.js\":\n/*!************************!*\\\n !*** ./webgl/index.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"./webgl/renderer.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n\n\n\n/**\n * @module WebGLRendering\n */\n\nvar mod = {\n createProgramFromString: _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n renderer: {\n render: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n initRenderer: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"initRenderer\"],\n getRenderCanvas: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"getRenderCanvas\"],\n isWebGLAvailable: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLAvailable\"]\n },\n textureCache: _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nObject.defineProperty(mod, 'isWebGLInitialized', {\n enumerable: true,\n configurable: false,\n get: function get() {\n return _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLInitialized\"];\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n\n/***/ }),\n\n/***/ \"./webgl/renderer.js\":\n/*!***************************!*\\\n !*** ./webgl/renderer.js ***!\n \\***************************/\n/*! exports provided: isWebGLInitialized, getRenderCanvas, initRenderer, render, isWebGLAvailable */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLInitialized\", function() { return isWebGLInitialized; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderCanvas\", function() { return getRenderCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRenderer\", function() { return initRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLAvailable\", function() { return isWebGLAvailable; });\n/* harmony import */ var _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shaders/index.js */ \"./webgl/shaders/index.js\");\n/* harmony import */ var _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertexShader.js */ \"./webgl/vertexShader.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* eslint no-bitwise: 0 */\n\n\n\n\nvar renderCanvas = document.createElement('canvas');\nvar gl;\nvar texCoordBuffer;\nvar positionBuffer;\nvar isWebGLInitialized = false;\n\nfunction getRenderCanvas() {\n return renderCanvas;\n}\n\nfunction initShaders() {\n for (var id in _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"]) {\n // Console.log(\"WEBGL: Loading shader\", id);\n var shader = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][id];\n shader.attributes = {};\n shader.uniforms = {};\n shader.vert = _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__[\"vertexShader\"];\n shader.program = Object(_createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(gl, shader.vert, shader.frag);\n shader.attributes.texCoordLocation = gl.getAttribLocation(shader.program, 'a_texCoord');\n gl.enableVertexAttribArray(shader.attributes.texCoordLocation);\n shader.attributes.positionLocation = gl.getAttribLocation(shader.program, 'a_position');\n gl.enableVertexAttribArray(shader.attributes.positionLocation);\n shader.uniforms.resolutionLocation = gl.getUniformLocation(shader.program, 'u_resolution');\n }\n}\n\nfunction initRenderer() {\n if (isWebGLInitialized === true) {\n // Console.log(\"WEBGL Renderer already initialized\");\n return;\n }\n\n if (initWebGL(renderCanvas)) {\n initBuffers();\n initShaders(); // Console.log(\"WEBGL Renderer initialized!\");\n\n isWebGLInitialized = true;\n }\n}\n\nfunction updateRectangle(gl, width, height) {\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([width, height, 0, height, width, 0, 0, 0]), gl.STATIC_DRAW);\n}\n\nfunction handleLostContext(event) {\n event.preventDefault();\n console.warn('WebGL Context Lost!');\n}\n\nfunction handleRestoredContext(event) {\n event.preventDefault();\n isWebGLInitialized = false;\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].purgeCache();\n initRenderer(); // Console.log('WebGL Context Restored.');\n}\n\nfunction initWebGL(canvas) {\n gl = null;\n\n try {\n // Try to grab the standard context. If it fails, fallback to experimental.\n var options = {\n preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element\n\n }; // ---------------- Testing purposes -------------\n // If (debug === true && WebGLDebugUtils) {\n // RenderCanvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderCanvas);\n // }\n // ---------------- Testing purposes -------------\n\n gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); // Set up event listeners for context lost / context restored\n\n canvas.removeEventListener('webglcontextlost', handleLostContext, false);\n canvas.addEventListener('webglcontextlost', handleLostContext, false);\n canvas.removeEventListener('webglcontextrestored', handleRestoredContext, false);\n canvas.addEventListener('webglcontextrestored', handleRestoredContext, false);\n } catch (error) {\n throw new Error('Error creating WebGL context');\n } // If we don't have a GL context, give up now\n\n\n if (!gl) {\n console.error('Unable to initialize WebGL. Your browser may not support it.');\n gl = null;\n }\n\n return gl;\n}\n/**\n * Returns the image data type as a string representation.\n * @param {any} image The cornerstone image object\n * @returns {string} image data type (rgb, iint16, uint16, int8 and uint8)\n * @memberof WebGLRendering\n */\n\n\nfunction getImageDataType(image) {\n if (image.color) {\n return 'rgb';\n }\n\n var pixelData = image.getPixelData();\n\n if (pixelData instanceof Int16Array) {\n return 'int16';\n }\n\n if (pixelData instanceof Uint16Array) {\n return 'uint16';\n }\n\n if (pixelData instanceof Int8Array) {\n return 'int8';\n }\n\n return 'uint8';\n}\n\nfunction getShaderProgram(image) {\n var datatype = getImageDataType(image); // We need a mechanism for\n // Choosing the shader based on the image datatype\n // Console.log(\"Datatype: \" + datatype);\n\n if (_shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].hasOwnProperty(datatype)) {\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][datatype];\n }\n\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].rgb;\n}\n\nfunction generateTexture(image) {\n var TEXTURE_FORMAT = {\n uint8: gl.LUMINANCE,\n int8: gl.LUMINANCE_ALPHA,\n uint16: gl.LUMINANCE_ALPHA,\n int16: gl.RGB,\n rgb: gl.RGB\n };\n var TEXTURE_BYTES = {\n int8: 1,\n // Luminance\n uint16: 2,\n // Luminance + Alpha\n int16: 3,\n // RGB\n rgb: 3 // RGB\n\n };\n var imageDataType = getImageDataType(image);\n var format = TEXTURE_FORMAT[imageDataType]; // GL texture configuration\n\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var imageData = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"dataUtilities\"][imageDataType].storedPixelDataToImageData(image, image.width, image.height);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, image.width, image.height, 0, format, gl.UNSIGNED_BYTE, imageData); // Calculate the size in bytes of this image in memory\n\n var sizeInBytes = image.width * image.height * TEXTURE_BYTES[imageDataType];\n return {\n texture: texture,\n sizeInBytes: sizeInBytes\n };\n}\n\nfunction getImageTexture(image) {\n var imageTexture = _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageTexture(image.imageId);\n\n if (!imageTexture) {\n // Console.log(\"Generating texture for imageid: \", image.imageId);\n imageTexture = generateTexture(image);\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].putImageTexture(image, imageTexture);\n }\n\n return imageTexture.texture;\n}\n\nfunction initBuffers() {\n positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]), gl.STATIC_DRAW);\n texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0]), gl.STATIC_DRAW);\n}\n\nfunction renderQuad(shader, parameters, texture, width, height) {\n gl.clearColor(1.0, 0.0, 0.0, 1.0);\n gl.viewport(0, 0, width, height);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.useProgram(shader.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.vertexAttribPointer(shader.attributes.texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.vertexAttribPointer(shader.attributes.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n for (var key in parameters) {\n var uniformLocation = gl.getUniformLocation(shader.program, key);\n\n if (!uniformLocation) {\n continue; // Disabling this error for now since RGB requires minPixelValue\n // but the other shaders do not.\n // throw `Could not access location for uniform: ${key}`;\n }\n\n var uniform = parameters[key];\n var type = uniform.type;\n var value = uniform.value;\n\n if (type === 'i') {\n gl.uniform1i(uniformLocation, value);\n } else if (type === 'f') {\n gl.uniform1f(uniformLocation, value);\n } else if (type === '2f') {\n gl.uniform2f(uniformLocation, value[0], value[1]);\n }\n }\n\n updateRectangle(gl, width, height);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\n\nfunction render(enabledElement) {\n // Resize the canvas\n var image = enabledElement.image;\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var viewport = enabledElement.viewport; // Render the current image\n\n var shader = getShaderProgram(image);\n var texture = getImageTexture(image);\n var parameters = {\n u_resolution: {\n type: '2f',\n value: [image.width, image.height]\n },\n wc: {\n type: 'f',\n value: viewport.voi.windowCenter\n },\n ww: {\n type: 'f',\n value: viewport.voi.windowWidth\n },\n slope: {\n type: 'f',\n value: image.slope\n },\n intercept: {\n type: 'f',\n value: image.intercept\n },\n minPixelValue: {\n type: 'f',\n value: image.minPixelValue\n },\n invert: {\n type: 'i',\n value: viewport.invert ? 1 : 0\n }\n };\n renderQuad(shader, parameters, texture, image.width, image.height);\n return renderCanvas;\n}\nfunction isWebGLAvailable() {\n // Adapted from\n // http://stackoverflow.com/questions/9899807/three-js-detect-webgl-support-and-fallback-to-regular-canvas\n var options = {\n failIfMajorPerformanceCaveat: true\n };\n\n try {\n var canvas = document.createElement('canvas');\n return Boolean(window.WebGLRenderingContext) && (canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options));\n } catch (e) {\n return false;\n }\n}\n\n/***/ }),\n\n/***/ \"./webgl/shaders/index.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/index.js ***!\n \\********************************/\n/*! exports provided: shaders, dataUtilities */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shaders\", function() { return shaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataUtilities\", function() { return dataUtilities; });\n/* harmony import */ var _int16_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int16.js */ \"./webgl/shaders/int16.js\");\n/* harmony import */ var _int8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int8.js */ \"./webgl/shaders/int8.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"./webgl/shaders/rgb.js\");\n/* harmony import */ var _uint16_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uint16.js */ \"./webgl/shaders/uint16.js\");\n/* harmony import */ var _uint8_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uint8.js */ \"./webgl/shaders/uint8.js\");\n\n\n\n\n\nvar shaders = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16Shader\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8Shader\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbShader\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16Shader\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8Shader\"]\n};\nvar dataUtilities = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16DataUtilities\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8DataUtilities\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbDataUtilities\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16DataUtilities\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8DataUtilities\"]\n};\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int16.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/int16.js ***!\n \\********************************/\n/*! exports provided: int16DataUtilities, int16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16DataUtilities\", function() { return int16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16Shader\", function() { return int16Shader; });\n/* eslint no-bitwise: 0 */\nvar int16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack int16 into three uint8 channels (r, g, b)\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack int16 into three uint8 channels (r, g, b)\n var pixelData = image.getPixelData();\n var numberOfChannels = 3;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = Math.abs(pixelData[i]);\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.g*65536.0;' + 'if (color.b == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int8.js\":\n/*!*******************************!*\\\n !*** ./webgl/shaders/int8.js ***!\n \\*******************************/\n/*! exports provided: int8DataUtilities, int8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8DataUtilities\", function() { return int8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8Shader\", function() { return int8Shader; });\nvar int8Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Store data in Uint8Array\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n // Store data in Uint8Array\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n data[offset++] = pixelData[i];\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.;' + 'if (color.a == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/rgb.js\":\n/*!******************************!*\\\n !*** ./webgl/shaders/rgb.js ***!\n \\******************************/\n/*! exports provided: rgbDataUtilities, rgbShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbDataUtilities\", function() { return rgbDataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbShader\", function() { return rgbShader; });\nvar rgbShader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack RGB images into a 3-channel RGB texture\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0; // Only 3 channels, since we use WebGL's RGB texture format\n\n var numStoredPixels = image.width * image.height * 4;\n var numOutputPixels = image.width * image.height * 3;\n var storedPixelData = image.getPixelData();\n var data = new Uint8Array(numOutputPixels); // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n } else {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n }\n\n return data;\n}\n\nvar rgbDataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nrgbShader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform float minPixelValue;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec3 color = texture2D(u_image, v_texCoord).xyz;' + // Rescale based on slope and intercept\n'color = color * 256.0 * slope + intercept;' + // Apply window settings\n'float center0 = wc - 0.5 - minPixelValue;' + 'float width0 = max(ww, 1.0);' + 'color = (color - center0) / width0 + 0.5;' + // RGBA output\n'gl_FragColor = vec4(color, 1);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1. - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint16.js\":\n/*!*********************************!*\\\n !*** ./webgl/shaders/uint16.js ***!\n \\*********************************/\n/*! exports provided: uint16DataUtilities, uint16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16DataUtilities\", function() { return uint16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16Shader\", function() { return uint16Shader; });\n/* eslint no-bitwise: 0 */\nvar uint16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * For uint16 pack uint16 into two uint8 channels (r and a).\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack uint16 into two uint8 channels (r and a)\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = pixelData[i];\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n }\n\n return data;\n}\n\nvar uint16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.a*65536.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint8.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/uint8.js ***!\n \\********************************/\n/*! exports provided: uint8DataUtilities, uint8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8DataUtilities\", function() { return uint8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8Shader\", function() { return uint8Shader; });\nvar uint8Shader = {};\n/**\n * Convert stored pixel data to image data. Here we will store\n * all data in the alpha channel.\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n return image.getPixelData();\n}\n\nvar uint8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/textureCache.js\":\n/*!*******************************!*\\\n !*** ./webgl/textureCache.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\r\n * This module deals with caching image textures in VRAM for WebGL\r\n * @module WebGLTextureCache\r\n */\n\nvar imageCache = {};\nvar cachedImages = [];\nvar maximumSizeInBytes = 1024 * 1024 * 256; // 256 MB\n\nvar cacheSizeInBytes = 0;\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n}\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n cacheSizeInBytes -= lastCachedImage.sizeInBytes;\n delete imageCache[lastCachedImage.imageId];\n cachedImages.pop();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_REMOVED, {\n imageId: lastCachedImage.imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_CACHE_FULL, cacheInfo);\n}\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n purgeCacheIfNecessary();\n}\n\nfunction putImageTexture(image, imageTexture) {\n var imageId = image.imageId;\n\n if (image === undefined) {\n throw new Error('putImageTexture: image must not be undefined');\n }\n\n if (imageId === undefined) {\n throw new Error('putImageTexture: imageId must not be undefined');\n }\n\n if (imageTexture === undefined) {\n throw new Error('putImageTexture: imageTexture must not be undefined');\n }\n\n if (Object.prototype.hasOwnProperty.call(imageCache, imageId) === true) {\n throw new Error('putImageTexture: imageId already in cache');\n }\n\n var cachedImage = {\n imageId: imageId,\n imageTexture: imageTexture,\n timeStamp: new Date(),\n sizeInBytes: imageTexture.sizeInBytes\n };\n imageCache[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n\n if (imageTexture.sizeInBytes === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes must not be undefined');\n }\n\n if (imageTexture.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes is not a number');\n }\n\n cacheSizeInBytes += cachedImage.sizeInBytes;\n purgeCacheIfNecessary();\n}\n\nfunction getImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = new Date();\n return cachedImage.imageTexture;\n}\n\nfunction removeImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n delete imageCache[imageId];\n return cachedImage.imageTexture;\n}\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages.pop();\n delete imageCache[removedCachedImage.imageId];\n }\n\n cacheSizeInBytes = 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n purgeCache: purgeCache,\n getImageTexture: getImageTexture,\n putImageTexture: putImageTexture,\n removeImageTexture: removeImageTexture,\n setMaximumSizeBytes: setMaximumSizeBytes\n});\n\n/***/ }),\n\n/***/ \"./webgl/vertexShader.js\":\n/*!*******************************!*\\\n !*** ./webgl/vertexShader.js ***!\n \\*******************************/\n/*! exports provided: vertexShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertexShader\", function() { return vertexShader; });\nvar vertexShader = 'attribute vec2 a_position;' + 'attribute vec2 a_texCoord;' + 'uniform vec2 u_resolution;' + 'varying vec2 v_texCoord;' + 'void main() {' + 'vec2 zeroToOne = a_position / u_resolution;' + 'vec2 zeroToTwo = zeroToOne * 2.0;' + 'vec2 clipSpace = zeroToTwo - 1.0;' + 'gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);' + 'v_texCoord = a_texCoord;' + '}';\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=cornerstone.js.map","/*! cornerstone-wado-image-loader - 2.2.2 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstoneWADOImageLoader */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstoneWADOImageLoader\",[],t):\"object\"==typeof exports?exports.cornerstoneWADOImageLoader=t():e.cornerstoneWADOImageLoader=t()}(this,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,r){\"use strict\";t.a=function(e){for(var t,r=e[0],a=e[0],n=e.length,o=1;o>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var i;return e};var d=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var r=t,a=e.rows*e.columns,n=new ArrayBuffer(a*e.samplesPerPixel),o=new DataView(r.buffer,r.byteOffset),i=new Int8Array(r.buffer,r.byteOffset),l=new Int8Array(n),s=0,u=o.getInt32(0,!0),c=0;c>l;var u=(new Date).getTime();return e.decodeTimeInMS=u-o,e}},function(e,t,r){\"use strict\";r.r(t);var a=function(e,t){if(void 0===e)throw new Error(\"decodeRGB: rgbBuffer must not be undefined\");if(e.length%3!=0)throw new Error(\"decodeRGB: rgbBuffer length must be divisible by 3\");for(var r=e.length/3,a=0,n=0,o=0;o>t;return a}var l=function(e,t){for(var r=e.columns*e.rows,a=e.pixelData,n=e.redPaletteColorLookupTableData,o=e.greenPaletteColorLookupTableData,i=e.bluePaletteColorLookupTableData,l=e.redPaletteColorLookupTableData.length,s=0,u=0,c=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,d=x(n,f),p=x(o,f),m=x(i,f),g=0;gt.length)return!1;for(var a=r,n=0;n=E.maxWebWorkers)){var e=new Worker(E.webWorkerPath);R.push({worker:e,status:\"initializing\"}),e.addEventListener(\"message\",F),e.postMessage({taskType:\"initialize\",workerIndex:R.length-1,config:E})}}function G(e){if(e=e||W,E)throw new Error(\"WebWorkerManager already initialized\");if((E=e).maxWebWorkers=E.maxWebWorkers||navigator.hardwareConcurrency||1,!E.startWebWorkersOnDemand)for(var t=0;t=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,u)}if(16===n){if((r=s+t*u*2)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,2*u)}if(1===n){if((r=s+t*u*.125)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return Pe(e.byteArray,r,u)}if(32!==n)throw new Error(\"unsupported pixel format\");if((r=s+t*u*4)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,4*u)};var Ie=function(e){var t=de(e),r=parseInt(t.url,10),a=be.get(r);return new Promise(function(r,e){var t=new FileReader;t.onload=function(e){var t=e.target.result;r(t)},t.onerror=e,t.readAsArrayBuffer(a)})};var Te=function(e){var t=1i?i:t},e.degToRad=function(t){return t*(Math.PI/180)},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return\"number\"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(3),s=(n=o)&&n.__esModule?n:{default:n},r=i(0);var a,h,u,c,l,f=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};f.prototype={constructor:f,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(\"index is out of range: \"+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+t)}},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},sub:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyAxisAngle:(l=void 0,function(t,e){return void 0===l&&(l=new s.default),this.applyQuaternion(l.setFromAxisAngle(t.normalize(),e)),this}),applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[3]*i+o[6]*n,this.y=o[1]*e+o[4]*i+o[7]*n,this.z=o[2]*e+o[5]*i+o[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n+o[12],this.y=o[1]*e+o[5]*i+o[9]*n+o[13],this.z=o[2]*e+o[6]*i+o[10]*n+o[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements,s=1/(o[3]*e+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*e+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*e+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*e+o[6]*i+o[10]*n+o[14])*s,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,o=t.x,s=t.y,r=t.z,a=t.w,h=a*e+s*n-r*i,u=a*i+r*e-o*n,c=a*n+o*i-s*e,l=-o*e-s*i-r*n;return this.x=h*a+l*-o+u*-r-c*-s,this.y=u*a+l*-s+c*-o-h*-r,this.z=c*a+l*-r+h*-s-u*-o,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n,this.y=o[1]*e+o[5]*i+o[9]*n,this.z=o[2]*e+o[6]*i+o[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:(u=void 0,c=void 0,function(t,e){return void 0===u&&(u=new f,c=new f),u.set(t,t,t),c.set(e,e,e),this.clamp(u,c)}),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},cross:function(t,e){if(void 0!==e)return console.warn(\"DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(t,e);var i=this.x,n=this.y,o=this.z;return this.x=n*t.z-o*t.y,this.y=o*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,o=t.z,s=e.x,r=e.y,a=e.z;return this.x=n*a-o*r,this.y=o*s-i*a,this.z=i*r-n*s,this},projectOnVector:(a=void 0,h=void 0,function(t){return void 0===a&&(a=new f),a.copy(t).normalize(),h=this.dot(a),this.copy(a).multiplyScalar(h)}),projectOnPlane:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,r.clamp)(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new f(this.x,this.y,this.z)}},e.default=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}var r={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var i=s(t.start,t.end);if(0===i)return s(e,t.start);var n=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/i;return s(e,n<0?t.start:n>1?t.end:{x:t.start.x+n*(t.end.x-t.start.x),y:t.start.y+n*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var i,o,s,r,a,h,u,c,l,f,y,d={},p=t.start.x,x=t.start.y,m=t.end.x,v=t.end.y,g=e.start.x,z=e.start.y,b=e.end.x,M=e.end.y,w=void 0;if(f=(i=v-x)*b+(s=p-m)*M+(a=m*x-p*v),(0===(l=i*g+s*z+a)||0===f||(0,n.sign)(l)!==(0,n.sign)(f))&&(c=(o=M-z)*m+(r=g-b)*v+(h=b*z-g*M),0===(u=o*p+r*x+h)||0===c||(0,n.sign)(u)!==(0,n.sign)(c))){y=i*r-o*s,w=s*h-r*a;var R=parseFloat(w/y);w=o*a-i*h;var P=parseFloat(w/y);return d.x=R,d.y=P,d}}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=void 0!==n?n:1};n.prototype.setFromAxisAngle=function(t,e){var i=e/2,n=Math.sin(i);return this.x=t.x*n,this.y=t.y*n,this.z=t.z*n,this.w=Math.cos(i),this},n.prototype.multiplyQuaternions=function(t,e){var i=t.x,n=t.y,o=t.z,s=t.w,r=e.x,a=e.y,h=e.z,u=e.w;return this.x=i*u+s*r+n*h-o*a,this.y=n*u+s*a+o*r-i*h,this.z=o*u+s*h+i*a-n*r,this.w=s*u-i*r-n*a-o*h,this},n.prototype.setFromRotationMatrix=function(t){var e=t.elements,i=e[0],n=e[4],o=e[8],s=e[1],r=e[5],a=e[9],h=e[2],u=e[6],c=e[10],l=i+r+c,f=void 0;return l>0?(f=.5/Math.sqrt(l+1),this.w=.25/f,this.x=(u-a)*f,this.y=(o-h)*f,this.z=(s-n)*f):i>r&&i>c?(f=2*Math.sqrt(1+i-r-c),this.w=(u-a)/f,this.x=.25*f,this.y=(n+s)/f,this.z=(o+h)/f):r>c?(f=2*Math.sqrt(1+r-i-c),this.w=(o-h)/f,this.x=(n+s)/f,this.y=.25*f,this.z=(a+u)/f):(f=2*Math.sqrt(1+c-i-r),this.w=(s-n)/f,this.x=(o+h)/f,this.y=(a+u)/f,this.z=.25*f),this},e.default=n},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(2),s=(n=o)&&n.__esModule?n:{default:n};function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var a={distanceToPoint:function(t,e){var i=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var n=s.default.distanceToPoint(t,e);n=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),n=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),i&&n}(t,e)){var n=r(t),o=r(e);return t.width>=0?e.width>=0?(i.topLeft.x=Math.max(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.bottomRight.x)):(i.topLeft.x=Math.max(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.topLeft.x)):e.width>=0?(i.topLeft.x=Math.min(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.topLeft.x)):(i.topLeft.x=Math.min(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(i.topLeft.y=Math.max(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.bottomRight.y)):(i.topLeft.y=Math.max(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.topLeft.y)):e.height>=0?(i.topLeft.y=Math.min(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.topLeft.y)):(i.topLeft.y=Math.min(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.bottomRight.y)),i}}};e.default=a},function(t,e,i){\"use strict\";function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function o(t,e){return Math.sqrt(s(t,e))}function s(t,e){var i=n(t,e);return i.x*i.x+i.y*i.y}Object.defineProperty(e,\"__esModule\",{value:!0});var r={subtract:n,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:o,distanceSquared:s,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var i=[],n=void 0;return t.forEach(function(t,s){var r=o(t,e);i.push(r),n=0===s?r:Math.min(r,n)}),t[i.indexOf(n)]}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r,a,h=function(t,e){this.normal=void 0!==t?t:new s.default(1,0,0),this.constant=void 0!==e?e:0};h.prototype={constructor:h,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:(r=new s.default,a=new s.default,function(t,e,i){var n=r.subVectors(i,e).cross(a.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}),copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return this.orthoPoint(t,e).sub(t).negate()},orthoPoint:function(t,e){var i=this.distanceToPoint(t);return(e||new s.default).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(t){var e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0},intersectLine:function(){var t=new s.default;return function(e,i){var n=i||new s.default,o=e.delta(t),r=this.normal.dot(o);if(0===r)return 0===this.distanceToPoint(e.start)?n.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?void 0:n.copy(o).multiplyScalar(a).add(e.start)}}(),intersectPlane:function(t){var e=this.normal.clone().cross(t.normal),i={origin:new s.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return i.direction=new s.default,i;var n=this.constant,o=t.constant,r=this.normal.clone().dot(t.normal),a=-(n-o*r)/(1-r*r),h=-(o-n*r)/(1-r*r);return i.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(h)),i},coplanarPoint:function(t){return(t||new s.default).copy(this.normal).multiplyScalar(-this.constant)},translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},clone:function(){return(new h).copy(this)}},e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r=function(t,e,i,n,o,s,r,a,h,u,c,l,f,y,d,p){this.elements=new Float32Array(16);var x=this.elements;x[0]=void 0!==t?t:1,x[4]=e||0,x[8]=i||0,x[12]=n||0,x[1]=o||0,x[5]=void 0!==s?s:1,x[9]=r||0,x[13]=a||0,x[2]=h||0,x[6]=u||0,x[10]=void 0!==c?c:1,x[14]=l||0,x[3]=f||0,x[7]=y||0,x[11]=d||0,x[15]=void 0!==p?p:1};r.prototype.makeRotationFromQuaternion=function(t){var e=this.elements,i=t.x,n=t.y,o=t.z,s=t.w,r=i+i,a=n+n,h=o+o,u=i*r,c=i*a,l=i*h,f=n*a,y=n*h,d=o*h,p=s*r,x=s*a,m=s*h;return e[0]=1-(f+d),e[4]=c-m,e[8]=l+x,e[1]=c+m,e[5]=1-(u+d),e[9]=y-p,e[2]=l-x,e[6]=y+p,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},r.prototype.multiplyMatrices=function(t,e){var i=t.elements,n=e.elements,o=this.elements,s=i[0],r=i[4],a=i[8],h=i[12],u=i[1],c=i[5],l=i[9],f=i[13],y=i[2],d=i[6],p=i[10],x=i[14],m=i[3],v=i[7],g=i[11],z=i[15],b=n[0],M=n[4],w=n[8],R=n[12],P=n[1],L=n[5],T=n[9],S=n[13],_=n[2],V=n[6],q=n[10],j=n[14],E=n[3],k=n[7],O=n[11],A=n[15];return o[0]=s*b+r*P+a*_+h*E,o[4]=s*M+r*L+a*V+h*k,o[8]=s*w+r*T+a*q+h*O,o[12]=s*R+r*S+a*j+h*A,o[1]=u*b+c*P+l*_+f*E,o[5]=u*M+c*L+l*V+f*k,o[9]=u*w+c*T+l*q+f*O,o[13]=u*R+c*S+l*j+f*A,o[2]=y*b+d*P+p*_+x*E,o[6]=y*M+d*L+p*V+x*k,o[10]=y*w+d*T+p*q+x*O,o[14]=y*R+d*S+p*j+x*A,o[3]=m*b+v*P+g*_+z*E,o[7]=m*M+v*L+g*V+z*k,o[11]=m*w+v*T+g*q+z*O,o[15]=m*R+v*S+g*j+z*A,this},r.prototype.multiply=function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},r.prototype.getInverse=function(t,e){var i=this.elements,n=t.elements,o=n[0],s=n[4],r=n[8],a=n[12],h=n[1],u=n[5],c=n[9],l=n[13],f=n[2],y=n[6],d=n[10],p=n[14],x=n[3],m=n[7],v=n[11],g=n[15];i[0]=c*p*m-l*d*m+l*y*v-u*p*v-c*y*g+u*d*g,i[4]=a*d*m-r*p*m-a*y*v+s*p*v+r*y*g-s*d*g,i[8]=r*l*m-a*c*m+a*u*v-s*l*v-r*u*g+s*c*g,i[12]=a*c*y-r*l*y-a*u*d+s*l*d+r*u*p-s*c*p,i[1]=l*d*x-c*p*x-l*f*v+h*p*v+c*f*g-h*d*g,i[5]=r*p*x-a*d*x+a*f*v-o*p*v-r*f*g+o*d*g,i[9]=a*c*x-r*l*x-a*h*v+o*l*v+r*h*g-o*c*g,i[13]=r*l*f-a*c*f+a*h*d-o*l*d-r*h*p+o*c*p,i[2]=u*p*x-l*y*x+l*f*m-h*p*m-u*f*g+h*y*g,i[6]=a*y*x-s*p*x-a*f*m+o*p*m+s*f*g-o*y*g,i[10]=s*l*x-a*u*x+a*h*m-o*l*m-s*h*g+o*u*g,i[14]=a*u*f-s*l*f-a*h*y+o*l*y+s*h*p-o*u*p,i[3]=c*y*x-u*d*x-c*f*m+h*d*m+u*f*v-h*y*v,i[7]=s*d*x-r*y*x+r*f*m-o*d*m-s*f*v+o*y*v,i[11]=r*u*x-s*c*x-r*h*m+o*c*m+s*h*v-o*u*v,i[15]=s*c*f-r*u*f+r*h*y-o*c*y-s*h*d+o*u*d;var z=o*i[0]+h*i[4]+f*i[8]+x*i[12];if(0===z){var b=\"Matrix4.getInverse(): can't invert matrix, determinant is 0\";if(e)throw new Error(b);return console.warn(b),this.identity(),this}return this.multiplyScalar(1/z),this},r.prototype.applyToVector3Array=function(){var t=new s.default;return function(e,i,n){void 0===i&&(i=0),void 0===n&&(n=e.length);for(var o=0,s=i;o1||isNaN(r))){var a=this.start.clone().add(e.clone().multiplyScalar(r));return a.clone().sub(t.start).lengthSq()+a.clone().sub(t.end).lengthSq()<=t.distanceSq()?a:void 0}}}}]),t}();e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var n=f(i(8)),o=f(i(2)),s=i(0),r=f(i(7)),a=f(i(6)),h=f(i(5)),u=f(i(3)),c=f(i(4)),l=f(i(1));function f(t){return t&&t.__esModule?t:{default:t}}var y={Line3:n.default,lineSegment:o.default,clamp:s.clamp,degToRad:s.degToRad,radToDeg:s.radToDeg,sign:s.sign,Matrix4:r.default,Plane:a.default,point:h.default,quaternion:u.default,rect:c.default,Vector3:l.default};e.Line3=n.default,e.lineSegment=o.default,e.clamp=s.clamp,e.degToRad=s.degToRad,e.radToDeg=s.radToDeg,e.sign=s.sign,e.Matrix4=r.default,e.Plane=a.default,e.point=h.default,e.quaternion=u.default,e.rect=c.default,e.Vector3=l.default,e.default=y}])});\n//# sourceMappingURL=cornerstoneMath.min.js.map","/*! cornerstone-tools - 3.0.0-b.1512 - 2018-12-17 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstone-tools\",[],t):\"object\"==typeof exports?exports[\"cornerstone-tools\"]=t():e.cornerstoneTools=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=10)}([function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;return\"function\"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent(\"CustomEvent\")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}var b={drawColorId:0,radius:10,minRadius:1,maxRadius:50,alpha:.4,renderBrushIfHiddenButActive:!0,hiddenButActiveAlpha:.2,colorMapId:\"BrushColorMap\",visibleSegmentations:{},imageBitmapCache:{},segmentationMetadata:{}},E={radius:function(e){b.radius=Math.min(Math.max(e,b.minRadius),b.maxRadius)},brushColorMap:function(e){var t=f.cornerstone.colors.getColormap(b.colorMapId);t.setNumberOfColors(e.length);for(var n=0;n2&&void 0!==arguments[2])||arguments[2];b.visibleSegmentations[e]||(b.imageBitmapCache[e]=[]),b.visibleSegmentations[e][t]=n},imageBitmapCacheForElement:function(e,t,n){b.imageBitmapCache[e]||(b.imageBitmapCache[e]=[]),b.imageBitmapCache[e][t]=n},clearImageBitmapCacheForElement:function(e){b.imageBitmapCache[e]=[]},metadata:function(e,t,n){b.segmentationMetadata[e]||(b.segmentationMetadata[e]=[]),b.segmentationMetadata[e][t]=n}};var M={state:b,onRegisterCallback:function(){!function(){var e=f.cornerstone.colors.getColormap(b.colorMapId);e.setNumberOfColors(19);for(var t=0;t<19;t++)t0}).forEach(function(t){var n=!1;t.supportedInteractionTypes.forEach(function(e){t.options[\"is\".concat(e,\"Active\")]&&(n=!0)}),n||(console.info(\"Setting tool \".concat(t.name,\"'s to PASSIVE\")),N(e,t.name))})}(e,o,n,a),o.supportedInteractionTypes.forEach(function(e){void 0===a||a.includes(e)?n[\"is\".concat(e,\"Active\")]=!0:n[\"is\".concat(e,\"Active\")]=!1})),F(\"active\",null,e,t,n)},L=function(e,t,n){z(\"active\",e,t,n),_.state.enabledElements.forEach(function(a){D(a,e,t,n)})},A=F.bind(null,\"disabled\",null),H=V.bind(null,\"disabled\",null),R=F.bind(null,\"enabled\",null),U=V.bind(null,\"enabled\",null),N=F.bind(null,\"passive\",x.TOOL_DEACTIVATED),B=V.bind(null,\"passive\",x.TOOL_DEACTIVATED);function F(e,t,n,a,o){var i=O(n,a);i?(o=G(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(i.options.mouseButtonMask)&&(o.mouseButtonMask=o.mouseButtonMask.concat(i.options.mouseButtonMask)),i.mode=e,i.mergeOptions(o),i[\"\".concat(e,\"Callback\")]&&i[\"\".concat(e,\"Callback\")](n,o),t&&T(n,t,{options:o,toolName:a,type:t})):console.warn(\"Unable to find tool '\".concat(a,\"' for enabledElement\"))}function V(e,t,n,a){z(e,n,a),_.state.enabledElements.forEach(function(o){F(e,t,o,n,a)})}function j(e,t,n,a){var o=_.state.tools.find(function(t){return t.element===n&&\"active\"===t.mode&&!0===t.options[\"is\".concat(e,\"Active\")]});o&&(console.info(\"Setting tool \".concat(o.name,\"'s is\").concat(e,\"Active to false\")),o.options[\"is\".concat(e,\"Active\")]=!1)}function z(e,t,n,a){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),_.state.globalToolChangeHistory.push(o);_.state.globalToolChangeHistory.length>50&&_.state.globalToolChangeHistory.shift();var i=_.state.globalTools[t];if(\"active\"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=_.state.globalTools[e];if(o){var i=new o.tool(o.configuration);i.supportedInteractionTypes.forEach(function(e){if(void 0===n||n.includes(e))if(\"Mouse\"===e){var o=G(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach(function(t){return a.push(\"\".concat(e,\"-\").concat(t))}):Array.isArray(o)&&0===o.length&&a.push(\"\".concat(e,\"-DELETE\"))}else\"MultiTouch\"===e?a.push(\"\".concat(e,\"-\").concat(i.configuration.touchPointers)):a.push(e)})}return a}(t,n,a);Object.keys(_.state.globalTools).forEach(function(e){var t=_.state.globalTools[e];t.activeBindings=t.activeBindings.filter(function(e){return!r.includes(e)})}),r.some(function(e){return e.includes(\"Mouse-DELETE\")})&&(i.activeBindings=i.activeBindings.filter(function(e){return!e.includes(\"Mouse\")}),r=r.filter(function(e){return!e.includes(\"Mouse\")})),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[]}}var W={Mouse:function(e,t,n){var a=G(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some(function(e){return a.includes(e)})});o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter(function(e){return!a.includes(e)}),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:j.bind(void 0,\"MouseWheel\"),Touch:function(e,t,n){var a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive}),o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers});a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isTouchActive to false\")),o.options.isMultiTouchActive=!1)},TouchPinch:j.bind(void 0,\"TouchPinch\"),TouchRotate:j.bind(void 0,\"TouchRotate\"),DoubleTap:j.bind(void 0,\"DoubleTap\"),MultiTouch:function(e,t,n){var a,o=_.state.tools.find(function(n){return n.element===t&&\"active\"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers});1===e.configuration.touchPointers&&(a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive})),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isMultiTouchActive to false\")),o.options.isMultiTouchActive=!1),a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1)}};function G(e){if(e!==Object(e)||Array.isArray(e))if(\"number\"==typeof e){var t=[];t.push(e),e={mouseButtonMask:0===e?[]:t}}else null===e?e={mouseButtonMask:[]}:(console.info(\"No options provided when changing tool mode\"),e={});else if(0===e.mouseButtonMask||null===e.mouseButtonMask)e.mouseButtonMask=[];else if(\"number\"==typeof e.mouseButtonMask){var n=[];n.push(e.mouseButtonMask),e.mouseButtonMask=n}return e}var q={activeOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},enabledCallback:function(e){D(e,this.name)}},enabledOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},activeCallback:function(e){R(e,this.name)}}},Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.name,a=t.strategies,i=t.defaultStrategy,r=t.configuration,s=t.supportedInteractionTypes,l=t.mixins;o()(this,e),this.name=n,this.mode=\"disabled\",this.element=void 0,this.supportedInteractionTypes=s||[],this.strategies=a||{},this.defaultStrategy=i||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,this._options={},this._configuration=Object.assign({},r),this.hasCursor=!1,l&&l.length&&this._applyMixins(l)}return r()(e,[{key:\"mergeOptions\",value:function(e){this._options=Object.assign({},this._options,e)}},{key:\"clearOptions\",value:function(){this._options={}}},{key:\"applyActiveStrategy\",value:function(e){return this.strategies[this.activeStrategy](e,this.configuration)}},{key:\"_applyMixins\",value:function(e){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=a.detail,i=o.element,r=o.image,s=a.detail.deltaPoints.image,l=s.x,c=s.y;t.active=!0;for(var u=Object.keys(t.handles),d=0;d2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=s.detail,c=s.detail.element;t.active=!1,t.invalidated=!0,S.isToolLocked=!1,ce[a].forEach(function(e){c.removeEventListener(e,i)}),ue[a].forEach(function(e){c.removeEventListener(e,r)}),n.deleteIfHandleOutsideImage&&re(l,t.handles)&&$(c,e,t);\"function\"==typeof n.doneMovingCallback&&n.doneMovingCallback();f.cornerstone.updateImage(c)}(t,n,o,i,{dragHandler:r,upOrEndHandler:e},a)};n.active=!0,S.isToolLocked=!0,ce[i].forEach(function(e){a.addEventListener(e,r)}),ue[i].forEach(function(e){a.addEventListener(e,s)})};var he={value:!1},ve={mouse:[x.MOUSE_DRAG],touch:[x.TOUCH_DRAG]},ge={mouse:[x.MOUSE_UP,x.MOUSE_CLICK],touch:[x.TOUCH_END,x.TOUCH_DRAG_END,x.TOUCH_PINCH,x.TOUCH_PRESS,x.TAP]},me=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element,s=function(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=l.page,d=f.cornerstone.pageToPixel(c,u.x,\"touch\"===o?u.y+-57:u.y);!1===n.hasMoved&&(n.hasMoved=!0);he.value=!1,n.active=!0,n.x=d.x,n.y=d.y,a.preventHandleOutsideImage&&le(n,s);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function r(l){!function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=t.currentPoints.image,d=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,S.isToolLocked=!1,he.value=!1,ve[i].forEach(function(e){d.removeEventListener(e,s)}),ge[i].forEach(function(e){d.removeEventListener(e,l)}),o.deleteIfHandleOutsideImage&&re(t,n.handles)&&$(d,e,n);c.type===x.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=u.x,a.y=u.y);\"function\"==typeof o.doneMovingCallback&&o.doneMovingCallback();f.cornerstone.updateImage(d)}(t,e,n,a,o,i,{dragHandler:s,upOrEndHandler:r},l)};if(a.active=!0,n.active=!0,S.isToolLocked=!0,ve[i].forEach(function(e){r.addEventListener(e,s)}),ge[i].forEach(function(e){r.addEventListener(e,l)}),\"touch\"===i){he.value=!0;var c=f.cornerstone.getEnabledElement(r),u={x:e.currentPoints.page.x,y:e.currentPoints.page.y+-57},d=f.cornerstone.pageToPixel(r,u.x,u.y);!function e(t,n,a,o){if(!n.value)return;var i=Math.abs(t.y-o.y);var r=i/10;if(i<1)return t.y=o.y,void(n.value=!1);t.y>o.y?t.y-=r:t.y5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element;S.isToolLocked=!0,a.active=!0,n.active=!0;var s=function(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=s.page,d=f.cornerstone.pageToPixel(c,\"touch\"===o?u.x+-57:u.x,\"touch\"===o?u.y+-57:u.y);n.active=!0,n.x=d.x,n.y=d.y,a&&a.preventHandleOutsideImage&&le(n,l);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function e(r){!function(e,t,n,a,o,i,r){var s=i.moveHandler,l=i.moveEndHandler,c=r.detail,u=c.element,d=c.currentPoints.page,h=f.cornerstone.pageToPixel(u,\"touch\"===o?d.x+-57:d.x,\"touch\"===o?d.y+-57:d.y);if(n.active=!1,t.active=!1,S.isToolLocked=!1,n.x=h.x,n.y=h.y,fe[o].forEach(function(e){u.removeEventListener(e,s)}),pe[o].forEach(function(e){u.removeEventListener(e,l)}),u.removeEventListener(x.TOUCH_START,xe),r.type===x.TOUCH_PINCH||r.type===x.TOUCH_PRESS)return n.active=!1,f.cornerstone.updateImage(u),void(\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback());a.preventHandleOutsideImage&&le(n,r.detail.image);a.deleteIfHandleOutsideImage&&re(r.detail,t.handles)&&$(u,e,t);\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback();f.cornerstone.updateImage(u)}(t,n,a,o,i,{moveHandler:s,moveEndHandler:e},r)};fe[i].forEach(function(e){r.addEventListener(e,s)}),pe[i].forEach(function(e){r.addEventListener(e,l)}),r.addEventListener(x.TOUCH_START,xe)};function xe(e){return e.stopImmediatePropagation(),!1}var Te=function(e,t,n,a,o){n.active=!0,S.isToolLocked=!0,me(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},be=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"mouse\",i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=Object.assign({},{doneMovingCallback:function(){n.active=!1,S.isToolLocked=!1}},t.options);n.active=!0,S.isToolLocked=!0,de(e.detail,t.name,n,null,o,a),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Me=function(e){function t(e){var n=e.name,a=e.strategies,i=e.defaultStrategy,r=e.configuration,s=e.supportedInteractionTypes,c=e.mixins;return o()(this,t),l()(this,u()(t).call(this,{name:n,strategies:a,defaultStrategy:i,configuration:r,supportedInteractionTypes:s,mixins:c}))}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){throw new Error(\"Method createNewMeasurement not implemented for \".concat(this.name,\".\"))}},{key:\"pointNearTool\",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error(\"Method pointNearTool not implemented for \".concat(this.name,\".\"))}},{key:\"distanceFromPoint\",value:function(e,t,n){throw new Error(\"Method distanceFromPoint not implemented for \".concat(this.name,\".\"))}},{key:\"renderToolData\",value:function(e){throw new Error(\"renderToolData not implemented for \".concat(this.name,\".\"))}},{key:\"mouseMoveCallback\",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=Q(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:\"mouse\";Te(e,this,t,n,a)}},{key:\"toolSelectedCallback\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"mouse\";Ee(e,this,t,n)}}]),t}(Y),Ce=1,we=2;var Ie={setToolWidth:function(e){Ce=e},getToolWidth:function(){return Ce},setActiveWidth:function(e){we=e},getActiveWidth:function(){return we}},Se=\"white\",ke=\"greenyellow\",Pe=\"transparent\";var _e={setFillColor:function(e){Pe=e},getFillColor:function(){return Pe},setToolColor:function(e){Se=e},getToolColor:function(){return Se},setActiveColor:function(e){ke=e},getActiveColor:function(){return ke},getColorIfActive:function(e){return e.color?e.color:e.active?ke:Se}},Oe=function(e,t){e.save(),t(e),e.restore()},De=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Ie.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),e.stroke(),r&&e.setLineDash([])};function Le(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)})}var Ae=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=a.map(function(e){return f.cornerstone.pixelToCanvas(t,e)})),e.moveTo(n.x,n.y),a.forEach(function(t){var n=t.x,a=t.y;e.lineTo(n,a)})})},He=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Le(e,void 0,t,n,r,\"canvas\"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Ae(e,void 0,n,s,r,\"canvas\")},Re=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n)),De(e,o,function(e){e.arc(n.x,n.y,a,0,2*Math.PI)})},Ue=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a));var i=Math.min(n.x,a.x),r=Math.min(n.y,a.y),s=Math.abs(n.x-a.x),l=Math.abs(n.y-a.y),c=s/2*.5522848,u=l/2*.5522848,d=i+s,h=r+l,v=i+s/2,g=r+l/2;De(e,o,function(e){e.moveTo(i,g),e.bezierCurveTo(i,g-u,v-c,r,v,r),e.bezierCurveTo(v+c,r,d,g-u,d,g),e.bezierCurveTo(d,g+u,v+c,h,v,h),e.bezierCurveTo(v-c,h,i,g+u,i,g),e.closePath()})},Ne=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=_e.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return\"continue\";if(!0===a.drawHandlesIfActive&&!s.active)return\"continue\";var l=s.active?Ie.getActiveWidth():Ie.getToolWidth(),c=a.fill;De(e,{lineWidth:l,fillStyle:c},function(e){var t=f.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||S.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)})},l=0;l0?f.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Le(a,void 0,r,f.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},\"canvas\")},Fe=15,Ve=\"\".concat(Fe,\"px Arial\"),je=\"transparent\";var ze={setFont:function(e){Ve=e},getFont:function(){return Ve},setFontSize:function(e){Fe=e},getFontSize:function(){return Fe},setBackgroundColor:function(e){je=e},getBackgroundColor:function(){return je}},We=function(e,t,n,a,o){var i=ze.getFontSize();e.font=ze.getFont(),e.textBaseline=\"top\",e.fillStyle=a,n.forEach(function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))})},Ge=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function qe(e,t,n){var a=ze.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var Ye=function(e,t,n,a,o,i){\"[object Array]\"!==Object.prototype.toString.call(t)&&(t=[t]);var r=ze.getFontSize(),s=ze.getBackgroundColor(),l=0;t.forEach(function(t){var n=qe(e,t,5);l=Math.max(l,n)});var c={width:l,height:5+t.length*(r+5)};return Oe(e,function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?\"#FF0000\":s;Ge(e,c,r),We(e,c,t,o,5)}),c},Xe=function(e,t,n,a,o,i,r,s,l,c){var u=f.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=Ye(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map(function(e){return u.pixelToCanvas(t,e)});Be(v,d,n.boundingBox,e,r,s)}},Ke=function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(r,s,l,c)})},Ze=function(e){var t=e.getContext(\"2d\");return t.setTransform(1,0,0,1,0,0),t},Je=function(e,t){return void 0===e?t:e},Qe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Je(t.shadowColor,\"#000000\"),e.shadowBlur=Je(t.shadowBlur,0),e.shadowOffsetX=Je(t.shadowOffsetX,1),e.shadowOffsetY=Je(t.shadowOffsetY,1))},$e=function(e,t,n){if(n.vflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},et=function(e){e.setTransform(1,0,0,1,0,0)},tt=function(e,t,n,a){var o=f.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return f.cornerstoneMath.lineSegment.distanceToPoint(i,a)},nt=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n};function at(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}var ot=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Angle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(tt(e,t.handles.start,t.handles.middle,n)<25||tt(e,t.handles.middle,t.handles.end,n)<25)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=Q(e.currentTarget,this.name);if(s)for(var l=Ze(n.canvasContext.canvas),c=Ie.getToolWidth(),u=function(e){var o=s.data[e];if(!1===o.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var s=_e.getColorIfActive(o),l=f.cornerstone.pixelToCanvas(n.element,o.handles.start),u=f.cornerstone.pixelToCanvas(n.element,o.handles.middle);Ae(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var d={color:s,handleRadius:i,drawHandlesIfActive:r};Ne(e,n,o.handles,d);var v=n.image.columnPixelSpacing||1,g=n.image.rowPixelSpacing||1,m={x:(o.handles.middle.x-o.handles.start.x)*v,y:(o.handles.middle.y-o.handles.start.y)*g},p={x:(o.handles.end.x-o.handles.middle.x)*v,y:(o.handles.end.y-o.handles.middle.y)*g},y={x:(o.handles.end.x-o.handles.start.x)*v,y:(o.handles.end.y-o.handles.start.y)*g},x=at(m),T=at(p),b=at(y),E=Math.acos((Math.pow(x,2)+Math.pow(T,2)-Math.pow(b,2))/(2*x*T));if(E*=180/Math.PI,o.rAngle=nt(E,2),o.rAngle){var M,C=function(e,t,n){var a=t&&n?\"\":\" (isotropic)\";return e.rAngle.toString()+String.fromCharCode(parseInt(\"00B0\",16))+a}(o,n.image.rowPixelSpacing,n.image.columnPixelSpacing);if(!o.handles.textBox.hasMoved){M={x:u.x,y:u.y};var w=qe(e,C,5);u.x0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ArrowAnnotate\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{getTextCallback:rt,changeTextCallback:st,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=Q(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Ze(c),d=Ie.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return\"continue\";Oe(u,function(n){Qe(n,t.configuration);var l=_e.getColorIfActive(i),c=f.cornerstone.pixelToCanvas(a,i.handles.start),u=f.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?He(n,u,c,l,d):He(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&Ne(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&\"\"!==v){var m=qe(n,v,5),p=ze.getFontSize()+10,y=Math.max(m,p)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},ht=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,handles:{start:dt(n,a,0),end:dt(n,a,1,{active:!0}),perpendicularStart:dt(n,a,2,{locked:!0}),perpendicularEnd:dt(n,a,3),textBox:dt(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},vt=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=f.cornerstone,i=f.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ne(r.textBox,n))return!0;var c=\"mouse\"===a?S.clickProximity:S.touchProximity;return!!function(e,t,n,a){var o=f.cornerstone,i=f.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)u){var g=u;u=v,v=g}e.longestDiameter=u.toFixed(1),e.shortestDiameter=v.toFixed(1)},ft=function(e,t,n){var a=\" mm\";return t&&n||(a=\" pixels\"),[\" L \".concat(e.longestDiameter).concat(a),\" W \".concat(e.shortestDiameter).concat(a)]},pt=function(e,t){var n=this,a=e.detail,o=a.element,i=a.image,r=this.configuration;if(!yt(i)){var s=this.createNewMeasurement(a),l=function(){s.active=!1,f.cornerstone.updateImage(o)};J(o,this.name,s),f.cornerstone.updateImage(o);var c=(new Date).getTime(),u=s.handles,d=u.end,h=u.perpendicularStart;ye(a,this.name,s,d,{doneMovingCallback:function(){var e=s.handles,t=s.longestDiameter,i=s.shortestDiameter,u=re(a,e),d=parseFloat(t)||0,v=parseFloat(i)||0,g=d<1||v<1,m=(new Date).getTime()-c<150;u||g||m?(s.cancelled=!0,$(o,n.name,s)):r.getMeasurementLocationCallback(s,a,l),h.locked=!1,f.cornerstone.updateImage(o)}},t)}},yt=function(e){var t=f.cornerstone.metaData.get(\"imagePlaneModule\",e.imageId),n=e.rowPixelSpacing,a=e.columnPixelSpacing;return t&&(n=t.rowPixelSpacing||t.rowImagePixelSpacing,a=t.columnPixelSpacing||t.colImagePixelSpacing),!n||!a};var xt={setCoords:function(e){lt=e.currentPoints.canvas},getCoords:function(){return lt}},Tt=function(e){var t=this,n=e.detail,a=n.element;xt.setCoords(n);var o=Q(a,this.name);if(o){for(var i=!1,r=function(e){var r=n.currentPoints.canvas,s=o.data[e],l=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=oe(e,t,n,a),i=!1;return Object.keys(t).forEach(function(e){if(\"textBox\"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}}),i}(a,s.handles,r);Object.keys(s.handles).forEach(function(e){if(\"textBox\"!==e){var t=s.handles[e];t.hover=t.active}}),l&&(i=!0);var c=t.pointNearTool(a,s,r,\"mouse\"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;sn(e,i)?(r.x=y+u*g,r.y=x-u*v,s.x=r.x-d*g,s.y=r.y+d*v):(r.x=m+u*g,r.y=p-u*v,s.x=r.x-d*g,s.y=r.y+d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=f.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=f.cornerstoneMath.lineSegment.intersectLine(l,c),r=f.cornerstoneMath.point.distance(i,n.handles.start),s=f.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||function(e,t){var n=f.cornerstoneMath.point.distance,a=t.handles,o=a.start,i=a.end,r=a.perpendicularStart,s=a.perpendicularEnd,l=r,c=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,l),u=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,e),d=c+u;if(n(l,e)<=c)return!1;var h=n(o,i),v=(o.x-i.x)/h,g=(o.y-i.y)/h,m=o.x-1*v,p=o.y-1*g,y=i.x+1*v,x=i.y+1*g;r.x=e.x+d*g,r.y=e.y-d*v,s.x=e.x,s.y=e.y,s.locked=!1,r.locked=!1;var T={start:{x:o.x,y:o.y},end:{x:i.x,y:i.y}},b={start:{x:r.x,y:r.y},end:{x:s.x,y:s.y}};return f.cornerstoneMath.lineSegment.intersectLine(T,b)||(n(e,o)>n(e,i)?(s.x=y-u*g,s.y=x+u*v,r.x=s.x+d*g,r.y=s.y-d*v):(s.x=m-u*g,s.y=p+u*v,r.x=s.x+d*g,r.y=s.y-d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Et=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mt=function(e,t){Et(e,t,\"x\"),Et(e,t,\"y\"),Et(e,t,\"moving\"),Et(e,t,\"hover\"),Et(e,t,\"active\"),Et(e,t,\"selected\")};var Ct=function(e){var t,n=this,a=e.detail,o=a.element,i=S.clickProximity,r=function(e){t.invalidated=!0,re(a,t.handles)&&$(o,n.name,t),e&&(e.moving=!1,e.selected=!0),o.style.cursor=\"\",f.cornerstone.updateImage(o),o.addEventListener(x.MOUSE_MOVE,n._moveCallback),o.addEventListener(x.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=Q(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=oe.apply(void 0,u);if(d)return o.removeEventListener(x.MOUSE_MOVE,n._moveCallback),o.removeEventListener(x.TOUCH_START,n._moveCallback),t.active=!0,wt(t.handles),d.moving=!0,d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),m=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+m*m)||0)>v?(Mt(s,l),Mt(s,c),Mt(l,u),Object.values(r).find(function(e){return!0===e.moving})):n}(a,t,d),o.style.cursor=d.hasBoundingBox?\"move\":\"none\",function(e,t,n,a,o,i){var r=e.element,s={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},l=function(e){var o=e.detail;a.active=!0,a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+s.x,a.y=o.currentPoints.image.y+s.y):bt(a,o,n,s),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),f.cornerstone.updateImage(r);var l={toolType:t,element:r,measurementData:n};f.cornerstone.triggerEvent(r,x.MEASUREMENT_MODIFIED,l)};r.addEventListener(x.MOUSE_DRAG,l),r.addEventListener(x.TOUCH_DRAG,l);var c=f.cornerstone.getImage(r),u=function(){f.cornerstone.getImage(r).imageId!==c.imageId&&d()};r.addEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u);var d=function e(){r.removeEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u),r.removeEventListener(x.MOUSE_DRAG,l),r.removeEventListener(x.MOUSE_UP,e),r.removeEventListener(x.MOUSE_CLICK,e),r.removeEventListener(x.TOUCH_DRAG,l),r.removeEventListener(x.TOUCH_DRAG_END,e),r.removeEventListener(x.TAP,e),f.cornerstone.updateImage(r),\"function\"==typeof o&&o()};r.addEventListener(x.MOUSE_UP,d),r.addEventListener(x.MOUSE_CLICK,d),r.addEventListener(x.TOUCH_DRAG_END,d),r.addEventListener(x.TAP,d)}(a,n.name,t,d,function(){return r(d)}),St(e),{v:!0}},u=0;u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Bidirectional\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{changeMeasurementLocationCallback:Lt,getMeasurementLocationCallback:Lt,textBox:\"\",shadow:\"\",drawHandlesOnHover:!0,additionalData:[]}},i=Object.assign(a.configuration,n),r=Object.assign(a,{configuration:i});return(e=l()(this,u()(t).call(this,r))).createNewMeasurement=ht.bind(ut()(ut()(e))),e.pointNearTool=vt.bind(ut()(ut()(e))),e.renderToolData=gt.bind(ut()(ut()(e))),e.addNewMeasurement=pt.bind(ut()(ut()(e))),e._moveCallback=Tt.bind(ut()(ut()(e))),e.preMouseDownCallback=Ct.bind(ut()(ut()(e))),e.preTouchStartCallback=Pt.bind(ut()(ut()(e))),e}return h()(t,e),t}(Me),Ht=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"CobbAngle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.hasIncomplete=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,complete:!1,value:\"\",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(tt(e,t.handles.start,t.handles.end,n)<25||tt(e,t.handles.start2,t.handles.end2,n)<25))}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r)for(var s=Ze(n.canvasContext.canvas),l=Ie.getToolWidth(),c=ze.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(s,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Le(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Xe(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)})},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"EllipticalRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x)+7.5,top:Math.min(o.y,i.y)+7.5,width:Math.abs(o.x-i.x)-15,height:Math.abs(o.y-i.y)-15},s={left:Math.min(o.x,i.x)-7.5,top:Math.min(o.y,i.y)-7.5,width:Math.abs(o.x-i.x)+15,height:Math.abs(o.y-i.y)+15},l=Vt(r,n);return!(!Vt(s,n)||l)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ue(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.round(Math.min(a.handles.start.x,a.handles.end.x)),top:Math.round(Math.min(a.handles.start.y,a.handles.end.y)),width:Math.round(Math.abs(a.handles.start.x-a.handles.end.x)),height:Math.round(Math.abs(a.handles.start.y-a.handles.end.y))};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=jt(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=Math.PI*(y.width*(m||1)/2)*(y.height*(g||1)/2),isNaN(l)||(a.area=l),a.invalidated=!1}a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2);var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;ye.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.x+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>o.value}(e,t,n));var a,o,i}function Xt(e,t,n,a){qt(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var Kt=function e(t,n){o()(this,e),this.toolIndex=t,this.handleIndexArray=n},Zt=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];o()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function Jt(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function tn(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var nn={newHandle:function(e,t){var n=t.length-1;return Jt(t,$t(t[n]),$t(e),[n])},end:function(e){var t=e.length-1;return Jt(e,$t(e[t]),$t(e[0]),[t,0])},modify:function(e,t){var n=$t(e[t]),a=t-1;0===t&&(a=e.length-1);var o=$t(e[a]);return!!Jt(e,n,o,[t,a])||Jt(e,n,o=$t(e[a=t===e.length-1?0:t+1]),[t,a])}},an=function(){function e(t){o()(this,e),this._eventData=t}return r()(e,[{key:\"findLine\",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:\"findTool\",value:function(){return this._toolData=Q(this._eventData.element,\"FreehandMouse\"),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:\"_nearestHandleToPointAllTools\",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:5,activeHandleRadius:3,completeHandleRadius:6,alwaysShowHandles:!1,invalidColor:\"crimson\",currentHandle:0,currentTool:-1}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(ut()(ut()(e))),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(ut()(ut()(e))),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(ut()(ut()(e))),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(ut()(ut()(e))),e._editMouseUpCallback=e._editMouseUpCallback.bind(ut()(ut()(e))),e._editMouseDragCallback=e._editMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:[]};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles;if(!a)throw new Error(\"invalid parameters supplied to tool \".concat(this.name,\"'s pointNearTool\"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:\"distanceFromPoint\",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=e.detail,i=o.element;if(n.hasBoundingBox)Te(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};var s=this._pointNearHandleAllTools(o),l=s.handleNearby,c=s.toolIndex;this._modifying=!0,r.currentHandle=l,r.currentTool=c,this._activateModify(i),S.isToolLocked=!0,vn(e)}}},{key:\"_drawingMouseMoveCallback\",value:function(e){var t=e.detail,n=t.element,a=Q(t.element,this.name),o=this.configuration,i=o.currentTool,r=a.data[i],s=t.currentPoints.canvas;this._getMouseLocation(t),this._checkInvalidHandleLocation(r,t);var l=this._pointNearHandle(n,r,s);void 0!==l&&!l.hasBoundingBox&&l\")}},{key:\"_compareDistanceToSpacingCanvas\",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\">\",o=this.configuration;f.cornerstone.pixelToCanvas(e,t),f.cornerstone.pixelToCanvas(e,n);return\">\"===a?f.cornerstoneMath.point.distance(t,n)>o.spacing:f.cornerstoneMath.point.distance(t,n)0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Length\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;return a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!(!a||!1===t.visible)&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l,c=Ze(n.canvasContext.canvas),u=n.image,d=n.element,h=Ie.getToolWidth(),v=f.cornerstone.metaData.get(\"imagePlaneModule\",u.imageId);v?(s=v.rowPixelSpacing||v.rowImagePixelSpacing,l=v.columnPixelSpacing||v.colImagePixelSpacing):(s=u.rowPixelSpacing,l=u.columnPixelSpacing);for(var g=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(c,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,d,a.handles.start,a.handles.end,{color:r});var c={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,c);var u=(a.handles.end.x-a.handles.start.x)*(l||1),v=(a.handles.end.y-a.handles.start.y)*(s||1),g=Math.sqrt(u*u+v*v);if(a.length=g,!a.handles.textBox.hasMoved){var m={x:Math.max(a.handles.start.x,a.handles.end.x)};m.x===a.handles.start.x?m.y=a.handles.start.y:m.y=a.handles.end.y,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}var f=function(e,t,n){var a=\" mm\";t&&n||(a=\" pixels\");return\"\".concat(e.length.toFixed(2)).concat(a)}(a,s,l);Xe(e,d,a.handles.textBox,f,a.handles,p,r,h,10,!0)})},m=0;m0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Probe\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};console.error(\"required eventData not supplieed to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.end);return f.cornerstoneMath.point.distance(o,n)<5}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration.handleRadius,a=Q(e.currentTarget,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=t.image,r=ze.getFontSize(),s=function(e){var s=a.data[e];if(!1===s.visible)return\"continue\";Oe(o,function(e){var a=_e.getColorIfActive(s);Ne(e,t,s.handles,{handleRadius:n,color:a});var o,l,c,u=Math.round(s.handles.end.x),d=Math.round(s.handles.end.y);if(u>=0&&d>=0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RectangleRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x),top:Math.min(o.y,i.y),width:Math.abs(o.x-i.x),height:Math.abs(o.y-i.y)};return f.cornerstoneMath.rect.distanceToPoint(r,n)<5}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ke(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.min(a.handles.start.x,a.handles.end.x),top:Math.min(a.handles.start.y,a.handles.end.y),width:Math.abs(a.handles.start.x-a.handles.end.x),height:Math.abs(a.handles.start.y-a.handles.end.y)};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=yn(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=y.width*(m||1)*(y.height*(g||1)),isNaN(l)||(a.area=l),a.invalidated=!1}var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2),Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"TextMarker\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{markers:[],current:\"\",ascending:!0,loop:!1,changeTextCallback:Tn}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.touchPressCallback=e._changeText.bind(ut()(ut()(e))),e.doubleClickCallback=e._changeText.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(f.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:\"pointNearTool\",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=f.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ne(t.handles.end,n);return a<10||o}}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration,a=Q(t.element,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return\"continue\";var r=_e.getColorIfActive(i);Oe(o,function(e){Qe(e,n);var a=f.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=Ye(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})})},r=0;r3&&void 0!==arguments[3]&&arguments[3];e.forEach(function(e){var o,i=(o=e[0],e[1]*n+o);t[i]=a?0:1})},drawBrushOnCanvas:function(e,t,n,a){var o=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),i=f.cornerstone.pixelToCanvas(a,{x:1,y:1}),r=i.x-o.x,s=i.y-o.y;Oe(t,function(t){e.forEach(function(e){var o=f.cornerstone.pixelToCanvas(a,{x:e[0],y:e[1]}),i={left:o.x,top:o.y,width:r,height:s};Ge(t,i,n)})})},getCircle:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.round(a),r=Math.round(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>n||h<0||d*d+c*c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Brush\",supportedInteractionTypes:[\"Mouse\"],strategies:{overlapping:_n,nonOverlapping:On},defaultStrategy:\"overlapping\",configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"renderBrush\",value:function(e){var t,n=e.detail,a=n.viewport;if(this._drawing?t=this._lastImageCoords:this._mouseUpRender?(t=this._lastImageCoords,this._mouseUpRender=!1):t=_.state.mousePositionImage,t){var o=n.image,i=o.rows,r=o.columns,s=t,l=s.x,c=s.y;if(!(l<0||l>r||c<0||c>i)){this._configuration;var u=kn.radius,d=n.canvasContext,h=n.element,v=kn.drawColorId,g=this._getBrushColor(v);d.setTransform(1,0,0,1,0,0);var m=f.cornerstone,p=u*a.scale,y=m.pixelToCanvas(h,t);d.beginPath(),d.strokeStyle=g,d.ellipse(y.x,y.y,p,p,0,0,2*Math.PI),d.stroke()}}}},{key:\"_paint\",value:function(e){this.applyActiveStrategy(e,this.configuration),f.cornerstone.updateImage(e.detail.element)}}]),t}(Cn);function _n(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData),d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u.data[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u.data[h].pixelData=v}var g=u.data[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u.data[h].invalidated=!0}}function On(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData).data,d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u[h].pixelData=v}var g=u[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u[h].invalidated=!0;for(var p=Cn.getNumberOfColors(),y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Crosshairs\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDownCallback=e._chooseLocation.bind(ut()(ut()(e))),e.mouseDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e.touchDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_chooseLocation\",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=Q(n,this.name);if(a){var o=n,i=f.cornerstone.getEnabledElement(o).image.imageId,r=f.cornerstone.metaData.get(\"imagePlaneModule\",i);if(r){var s=Bn(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach(function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=Q(e,\"stack\");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach(function(e,a){var o=f.cornerstone.metaData.get(\"imagePlaneModule\",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Un(o.imagePositionPatient),r=Un(o.rowCosines),l=Un(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"DoubleTapFitToWindow\",supportedInteractionTypes:[\"DoubleTap\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"doubleTapCallback\",value:function(e){var t=e.detail;f.cornerstone.fitToWindow(t.element)}}]),t}(Y),qn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"DragProbe\",strategies:{default:Yn,minimal:Xn},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).touchDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.touchEndCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.mouseUpCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.initialConfiguration=i,e.dragEventData={},e}return h()(t,e),r()(t,[{key:\"_movingEventCallback\",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,f.cornerstone.updateImage(n)}},{key:\"_endMovingEventCallback\",value:function(e){var t=e.detail.element;this.dragEventData={},f.cornerstone.updateImage(t)}},{key:\"renderToolData\",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(Y),Yn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Ze(s.canvas),c=_e.getActiveColor(),u=ze.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Oe(l,function(e){Qe(e,t);var a,s,l=\"\".concat(d,\", \").concat(h);if(i.color)a=mn(o,d,h,1,1),s=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2],\" A: \").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,m=Rt(i,v);s=\"SP: \".concat(v,\" MO: \").concat(parseFloat(g.toFixed(3))),m&&(s+=\" SUV: \".concat(parseFloat(m.toFixed(3))))}var f={x:r.canvas.x+5,y:r.canvas.y-5};Ye(e,s,f.x,f.y+u+5,c),Ye(e,l,f.x,f.y,c)})},Xn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Ze(s.canvas),u=_e.getActiveColor(),d=r.page.y-ze.getFontSize()/2;l&&(d=r.page.y-4*ze.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Oe(c,function(e){Qe(e,t);var a,r=n.metaData.get(\"generalSeriesModule\",i.imageId),s=r&&r.modality,c=\"\";if(i.color)a=mn(o,h.x,h.y,1,1),c=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if(\"CT\"===s)c+=\"HU: \".concat(g);else if(\"PT\"===s){c+=g;var m=Rt(i,d);m&&(c+=\" SUV: \".concat(parseFloat(m.toFixed(2))))}else c+=g}var f=n.pixelToCanvas(o,h),p={x:12,y:-(ze.getFontSize()+10)/2},y=qe(e,c,5);l&&(p={x:-y/2,y:-ze.getFontSize()-10-12}),Re(e,o,f,6,{color:u},\"canvas\"),Ye(e,c,f.x+p.x,f.y+p.y,u)})},Kn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Eraser\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preMouseDownCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_deleteAllNearbyTools\",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;S.tools.forEach(function(e){var a=Q(n,e.name);a&&a.data.forEach(function(a){\"function\"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&($(n,e.name,a),f.cornerstone.updateImage(n))})});return!0}}]),t}(Y),Zn=rn.FreehandHandleData,Jn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandSculpterMouse\",referencedToolName:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],mixins:[\"activeOrDisabledBinaryTool\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:5,maxSpacing:20,currentTool:null,dragColor:_e.getActiveColor(),hoverColor:_e.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).hasCursor=!0,e.initialConfiguration=i,e.referencedToolName=i.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(ut()(ut()(e))),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;if(this._active){var n=t.canvasContext.canvas.getContext(\"2d\"),a={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};Ne(n,t,this.configuration.mouseLocation.handles,a)}else this.configuration.showCursorOnHover&&this._renderHoverCursor(e)}},{key:\"doubleClickCallback\",value:function(e){var t=e.detail;this._selectFreehandTool(t),f.cornerstone.updateImage(t.element)}},{key:\"preMouseDownCallback\",value:function(e){var t=e.detail;return null===this.configuration.currentTool?this._selectFreehandTool(t):this._initialiseSculpting(t),f.cornerstone.updateImage(t.element),!0}},{key:\"activeMouseDragCallback\",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=Q(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles;this._getMouseLocation(n),this._sculpt(n,o),f.cornerstone.updateImage(n.element)}}}},{key:\"activeMouseUpCallback\",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,S.isToolLocked=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),f.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:\"_renderHoverCursor\",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext(\"2d\"),i=Q(a,this.referencedToolName).data[this.configuration.currentTool];this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=S.mousePositionImage;var r=O(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};Ne(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:\"newImageCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"enabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"passiveCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"disabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"_selectFreehandTool\",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a)}},{key:\"_activateFreehandTool\",value:function(e,t){var n=Q(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;ae.maxSpacing&&a.push(o)}return a}},{key:\"_insertHandleRadially\",value:function(e,t){var n=e.dataHandles,a=t-1,o=this.constructor._getNextHandleIndexBeforeInsert(t,n.length),i=this.constructor._getInsertPosition(e,t,a,o),r=new Zn(i);n.splice(t,0,r),n[a].lines.pop(),n[a].lines.push(n[t]),t===n.length-1?n[t].lines.push(n[0]):n[t].lines.push(n[t+1])}},{key:\"_consolidateHandles\",value:function(e){if(e.dataHandles.length>3){var t=this._findCloseHandlePairs(e);this._mergeCloseHandles(e,t)}}},{key:\"_findCloseHandlePairs\",value:function(e){for(var t=e.dataHandles,n=e.element,a=e.minSpacing,o=[],i=t.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=Q(a,this.referencedToolName).data[i.currentTool],s=1;if(n){var l=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),c=f.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height});s=(c.x-l.x)*(c.y-l.y)/(o.width*o.height)}var u=r.area*s,d=Math.pow(u/Math.PI,.5);return Math.min(t,d)}},{key:\"_getClosestFreehandToolOnElement\",value:function(e,t){var n=O(e,this.referencedToolName),a=Q(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Magnify\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{magnifySize:300,magnificationLevel:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.enabledCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.disabledCallback=e._destroyMagnificationCanvas.bind(ut()(ut()(e))),e.postTouchStartCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.touchEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.postMouseDownCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.mouseDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.mouseUpCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.mouseClickCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.newImageCallback=e._drawMagnificationTool.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_addMagnifyingGlass\",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame(function(){return t._drawMagnificationTool(e)}),e.preventDefault(),e.stopPropagation()}},{key:\"_updateMagnifyingGlass\",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:\"_removeMagnifyingGlass\",value:function(e){e.detail.element.querySelector(\".magnifyTool\").style.display=\"none\",document.body.style.cursor=\"default\",this._removeZoomElement()}},{key:\"_drawMagnificationTool\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector(\"canvas:not(.magnifyTool)\"),o=Ze(n),i=f.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top=\"\".concat(u.top,\"px\"),n.style.left=\"\".concat(u.left,\"px\"),n.style.display=\"block\",document.body.style.cursor=\"none\"}}},{key:\"_drawZoomedElement\",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=f.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement=document.createElement(\"div\"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,f.cornerstone.enable(this.zoomElement,n.options);var r=f.cornerstone.getEnabledElement(this.zoomElement),s=f.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,f.cornerstone.displayImage(this.zoomElement,i),f.cornerstone.setViewport(this.zoomElement,s)}},{key:\"_removeZoomElement\",value:function(){void 0!==this.zoomElement&&(f.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:\"_createMagnificationCanvas\",value:function(e){if(null===e.querySelector(\".magnifyTool\")){var t=document.createElement(\"canvas\");t.classList.add(\"magnifyTool\"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position=\"absolute\",t.style.display=\"none\",e.appendChild(t)}}},{key:\"_destroyMagnificationCanvas\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");n&&t.removeChild(n)}}]),t}(Y),$n=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"PanMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{touchPointers:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Pan\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ReferenceLines\",mixins:[\"enabledOrDisabledBinaryTool\"],configuration:{renderer:ia}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.renderer=null,e.synchronizationContext=null,e}var n;return h()(t,e),r()(t,[{key:\"enabledCallback\",value:(n=oa()(na.a.mark(function e(t){var n,a,o,i=arguments;return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,sa(t);case 4:if(e.sent&&o&&a){e.next=8;break}return console.warn(\"Unable to enable \".concat(this.name,\". Exiting enable callback. Tool will be enabled, but will not render.\")),e.abrupt(\"return\");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case\"end\":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Ze(n.canvasContext.canvas);f.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach(function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)})}}}]),t}(Y),ua=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},da=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Rotate\",strategies:{default:ha,horizontal:va,vertical:ga},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"mouseDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"postMouseDownCallback\",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:\"dragCallback\",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y),ha=function(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=ua(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle},va=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},ga=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},ma=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RotateTouch\",supportedInteractionTypes:[\"TouchRotate\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchRotateCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,f.cornerstone.setViewport(n,a)}}]),t}(Y),fa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ScaleOverlay\",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:[\"enabledOrDisabledBinaryTool\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"enabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=Ze(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=f.cornerstone.metaData.get(\"imagePlaneModule\",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=pa(c,.25,.05),v=pa(c,.05,.15);if(c.width&&c.height&&h&&v){var g=_e.getToolColor(),m=Ie.getToolWidth(),p=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:m},this.configuration);Oe(n,function(e){Qe(e,p),Le(e,i,p.verticalLine.start,p.verticalLine.end,{color:g,lineWidth:m},\"canvas\"),ya(e,i,p),Le(e,i,p.horizontalLine.start,p.horizontalLine.end,{color:g,lineWidth:m},\"canvas\"),xa(e,i,p)})}}else console.warn(\"unable to define rowPixelSpacing or colPixelSpacing from data on \".concat(this.name,\"'s renderToolData\"))}}]),t}(Y),pa=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},ya=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},xa=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},Ta={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function ba(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];return/trident/i.test(n[1])?(e=/\\brv[ :]+(\\d+)/g.exec(t)||[],\"IE \".concat(e[1]||\"\")):\"Chrome\"===n[1]&&null!==(e=t.match(/\\b(OPR|Edge)\\/(\\d+)/))?e.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(e=t.match(/version\\/(\\d+)/i))&&n.splice(1,1,e[1]),n.join(\" \"))}function Ea(){return la||Ma()}function Ma(){var e=ba().split(\" \"),t=e[0],n=e[1],a=Ta[t];return a?a[n]?a[n]:a.default:Ta.default}var Ca={interaction:[],thumbnail:[],prefetch:[]},wa={interaction:0,thumbnail:0,prefetch:0},Ia={interaction:6,thumbnail:6,prefetch:5},Sa=!1,ka=20;function Pa(){Sa&&setTimeout(function(){Oa()},ka)}function _a(e){var t=f.cornerstone,n=e.type;wa[n]++,Sa=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()});else{var s=function(e){return\"prefetch\"===e.type?-5:\"interactive\"===e.type?0:\"thumbnail\"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()})}}function Oa(){var e=Ea();Ia={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(wa.interaction+wa.thumbnail+wa.prefetch),n=0;n1){var i=Q(e,\"stackRenderer\");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=Rn.getStartLoadHandler(),l=Rn.getEndLoadHandler(),c=Rn.getErrorLoadingHandler();if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then(function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}},function(n){var a=r.imageIds[t];c&&c(e,a,n)}),La.startGrabbing(),T(e,x.STACK_SCROLL,u)}}},Ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n)r%=i.imageIds.length;else r=se(r,0,i.imageIds.length-1);if(a)Aa(e,r);else{var s={index:r};i.pending.push(s),function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function e(o){t.imageIds.indexOf(o.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,e),t.pending.length>0&&function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function o(i){t.imageIds.indexOf(i.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,o),t.pending.length>0&&e(t,t.pending[0],a))}),Aa(a,n.index)}}(t,t.pending[0],a))}),Aa(a,n.index)}}(i,s,e)}}};function Ra(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index){e.pending.splice(e.pending.indexOf(t),1);if(e.pending.length>0){Ra(e,e.pending[0],n)}return}var a=function a(o){var i;if(e.imageIds.indexOf(o.detail.image.imageId)===t.index){e.pending.splice(e.pending.indexOf(t),1);n.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);if(e.pending.length>0){Ra(e,e.pending[0],n)}}};n.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);Aa(n,t.index)}}var Ua=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{loop:!1,allowSkipping:!0,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;Ha(a,s?-n:n,i,r)}}]),t}(Y),Na=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Ba=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScroll\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{loop:!1,allowSkipping:!0}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Fa=function(e,t,n,a,o){if(!e)throw new Error(\"getLuminance: parameter element must not be undefined\");t=Math.round(t),n=Math.round(n);var i,r,s,l=f.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"WwwcRegion\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{minWindowWidth:10}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.touchDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.touchEndCallback=e._applyStrategy.bind(ut()(ut()(e))),e.postMouseDownCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseClickCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseUpCallback=e._applyStrategy.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=_e.getColorIfActive({active:!0}),i=Ze(n.canvasContext.canvas);Oe(i,function(e){Ke(e,a,t.handles.start,t.handles.end,{color:o})})}},{key:\"_startOutliningRegion\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return ja(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),f.cornerstone.updateImage(t),!0}},{key:\"_setHandlesAndUpdate\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,f.cornerstone.updateImage(t)}},{key:\"_applyStrategy\",value:function(e){ja(this.handles.start)||ja(this.handles.end)||(e.detail.handles=this.handles,za(e,this.configuration),this._resetHandles())}},{key:\"_resetHandles\",value:function(){this.handles={start:{},end:{}}}}]),t}(Y),ja=function(e){return 0===Object.keys(e).length&&e.constructor===Object},za=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=se(l,0,a.width),c=se(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Fa(o,l,c,u,d),v=Wa(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,f.cornerstone.setViewport(o,g),f.cornerstone.updateImage(o)},Wa=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Wwwc\",strategies:{basicLevelingStrategy:qa},supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{orientation:0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"mouseDragCallback\",value:function(e){this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:\"touchDragCallback\",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y);function qa(e,t){var n=t.orientation,a=e.detail,o=(a.image.maxPixelValue*a.image.slope+a.image.intercept-(a.image.minPixelValue*a.image.slope+a.image.intercept))/1024,i=a.deltaPoints.page.x*o,r=a.deltaPoints.page.y*o;0===n?(a.viewport.voi.windowWidth+=i,a.viewport.voi.windowCenter+=r):(a.viewport.voi.windowWidth+=r,a.viewport.voi.windowCenter+=i)}var Ya=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{minScale:.25,maxScale:20,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Ya(a,r?o/4:-o/4,{maxScale:s,minScale:l});f.cornerstone.setViewport(n,c)}}]),t}(Y),Za=Xa.correctShift,Ja=Xa.changeViewportScale,Qa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Zoom\",strategies:{default:eo,translate:to,zoomToCenter:no},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){$a.call(this,e)}},{key:\"mouseDragCallback\",value:function(e){$a.call(this,e)}}]),t}(Y),$a=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function eo(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],m=Ja(c,r,{maxScale:a,minScale:o});f.cornerstone.setViewport(l,m);var p=f.cornerstone.pageToPixel(l,d,h),y={x:v-p.x,y:g-p.y};y=Za(y,m),c.translation.x-=y.x,c.translation.y-=y.y}function to(e,t){var n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=Ja(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&le(e.detail.startPoints.image,l);var m={x:l.width/2-d,y:l.height/2-h};m=Za(m,v);var f={x:v.translation.x-m.x,y:v.translation.y-m.y};Math.abs(f.x)<.01?v.translation.x=m.x:g.x=f.x/8,Math.abs(f.y)<.01?v.translation.y=m.y:g.y=f.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function no(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;Ja(s,r,{maxScale:a,minScale:o})}var ao=Xa.correctShift,oo=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomTouchPinch\",supportedInteractionTypes:[\"TouchPinch\"],configuration:{minScale:.25,maxScale:20}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchPinchCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var so,lo={48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",13:\"RETURN\",8:\"BACKSPACE\",9:\"TAB\",46:\"DELETE\",12:\"DELETE\",27:\"ESCAPE\",20:\"CAPSLOCK\",173:\"-\",189:\"-\",109:\"-\",61:\"+\",187:\"+\",107:\"+\",219:\"[\",221:\"]\",59:\";\",186:\";\",188:\",\",190:\".\",199:\"/\"},co={\"base/BaseTool\":Y,\"base/BaseAnnotationTool\":Me,\"base/BaseBrushTool\":Cn,\"manipulators/anyHandlesOutsideImage\":re,\"manipulators/getHandleNearImagePoint\":oe,\"manipulators/handleActivator\":ie,\"manipulators/moveAllHandles\":de,\"manipulators/moveHandle\":me,\"manipulators/moveNewHandle\":ye,\"manipulators/moveHandleNearImagePoint\":Te,\"manipulators/findHandleDataNearImagePoint\":be,\"manipulators/moveAnnotation\":Ee,\"mixins/activeOrDisabledBinaryTool\":q.activeOrDisabledBinaryTool,\"mixins/enabledOrDisabledBinaryTool\":q.enabledOrDisabledBinaryTool,\"drawing/getNewContext\":Ze,\"drawing/draw\":Oe,\"drawing/path\":De,\"drawing/setShadow\":Qe,\"drawing/drawLine\":Le,\"drawing/drawLines\":function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"pixel\";De(e,a,function(e){n.forEach(function(n){var a=n.start,i=n.end;if(\"pixel\"===o){var r=f.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)})})},\"drawing/drawJoinedLines\":Ae,\"drawing/drawCircle\":Re,\"drawing/drawEllipse\":Ue,\"drawing/drawRect\":Ke,\"drawing/fillOutsideRect\":function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(r+l,s,-l,c)})},\"drawing/drawTextBox\":Ye,\"drawing/drawArrow\":He,\"drawing/fillBox\":Ge,\"drawing/fillTextLines\":We,\"drawing/drawLink\":Be,\"drawing/drawLinkedTextBox\":Xe,\"drawing/drawHandles\":Ne,\"drawing/textBoxWidth\":qe,\"util/getLuminance\":Fa,\"util/copyPoints\":io,\"util/calculateSUV\":Rt,\"util/setContextToDisplayFontSize\":function(e,t,n){return f.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},\"util/scrollToIndex\":Aa,\"util/scroll\":Ha,\"util/roundToDecimal\":nt,\"util/projectPatientPointToImagePlane\":Nn,\"util/imagePointToPatientPoint\":Bn,\"util/planePlaneIntersection\":Fn,\"util/pointInsideBoundingBox\":ne,\"util/makeUnselectable\":function(e,t){e.style.webkitUserSelect=\"none\",e.style.webkitTouchCallout=\"none\",e.style.mozUserSelect=\"none\",e.style.msUserSelect=\"none\",e.style.oUserSelect=\"none\",e.style.khtmlUserSelect=\"none\",e.style.userSelect=\"none\",e.unselectable=\"on\",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents=\"none\")},\"util/getRGBPixels\":mn,\"util/getDefaultSimultaneousRequests\":Ma,\"util/getMaxSimultaneousRequests\":Ea,\"util/getBrowserInfo\":ba,\"util/isMobileDevice\":function(){return new RegExp(\"Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\").test(navigator.userAgent)},\"util/angleBetweenPoints\":ua,\"util/getKeyFromKeyCode\":function(e){return lo[e]},\"util/numbersWithCommas\":Nt,\"util/lineSegDistance\":tt,\"util/triggerEvent\":T,\"util/convertToVectro3\":Un,\"util/ellipseUtils\":Ft,\"util/freehandUtils\":rn,\"util/brushUtils\":wn,\"util/zoomUtils\":Xa},uo=function(e){return co[e]},ho=!0,vo=200;function go(e){if(\"number\"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function mo(){ho=!1}function fo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_DOUBLE_CLICK,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o);console.log(\"double-click: \".concat(go(e))),T(t,a,{event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function po(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){so=setTimeout(mo,vo),t.removeEventListener(\"mousemove\",yo);var a={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=f.cornerstone.pixelToCanvas(t,a.image);var o=io(a),i={event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:x.MOUSE_DOWN};T(i.element,x.MOUSE_DOWN,i)&&(i.type=x.MOUSE_DOWN_ACTIVATE,T(i.element,x.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",function e(i){clearTimeout(so);var s=x.MOUSE_UP;ho&&(s=x.MOUSE_CLICK);var l={page:f.cornerstoneMath.point.pageToPoint(i),image:f.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=f.cornerstone.pixelToCanvas(t,l.image);var c={page:f.cornerstoneMath.point.subtract(l.page,o.page),image:f.cornerstoneMath.point.subtract(l.image,o.image),client:f.cornerstoneMath.point.subtract(l.client,o.client),canvas:f.cornerstoneMath.point.subtract(l.canvas,o.canvas)};console.log(\"mouseup: \".concat(go(i)));var u={event:i,buttons:go(i),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};T(u.element,s,u),document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e),t.addEventListener(\"mousemove\",yo),ho=!0})}function r(e){var i=x.MOUSE_DRAG,r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,o.page),image:f.cornerstoneMath.point.subtract(r.image,o.image),client:f.cornerstoneMath.point.subtract(r.client,o.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,o.canvas)};console.log(\"mousemove \".concat(go(e)));var l={buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};T(l.element,i,l),o=io(r)}}function yo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_MOVE,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o),r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,i.page),image:f.cornerstoneMath.point.subtract(r.image,i.image),client:f.cornerstoneMath.point.subtract(r.client,i.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,i.canvas)};T(t,a,{viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=io(r)}}function xo(e){e.removeEventListener(\"mousedown\",po),e.removeEventListener(\"mousemove\",yo),e.removeEventListener(\"dblclick\",fo)}var To={enable:function(e){xo(e),e.addEventListener(\"mousedown\",po),e.addEventListener(\"mousemove\",yo),e.addEventListener(\"dblclick\",fo)},disable:xo},bo=function(e){var t=0,n=0,a=0,o=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),a=10*t,o=10*n,\"deltaY\"in e&&(o=e.deltaY),\"deltaX\"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function Eo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){e.preventDefault();var a=e.pageX,o=e.pageY,i=f.cornerstone.pageToPixel(t,a,o),r=bo(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:f.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};T(t,x.MOUSE_WHEEL,h)}}function Mo(e){e.removeEventListener(\"wheel\",Eo,{passive:!1})}var Co,wo,Io={enable:function(e){Mo(e),e.addEventListener(\"wheel\",Eo,{passive:!1})},disable:Mo},So=2e3,ko={mouse:0,touch:1};function Po(e,t){var n=Date.now();if(e!==Co){if(n-wo<=So)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Co=e}wo=n}var _o=Po.bind(null,ko.mouse),Oo=Po.bind(null,ko.touch);function Do(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.addEventListener(t,a,{passive:!1})})}function Lo(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.removeEventListener(t,a)})}var Ao=[\"mousedown\",\"mouseup\"],Ho=[\"touchstart\",\"touchend\"];function Ro(e){Lo(e,Ao,ko.mouse),Lo(e,Ho,ko.touch)}var Uo,No,Bo,Fo,Vo,jo,zo,Wo,Go,qo={enable:function(e){Ro(e),Do(e,Ao,ko.mouse),Do(e,Ho,ko.touch)},disable:Ro},Yo=1,Xo=0,Ko=!1,Zo=!1,Jo=700,Qo=5,$o=\"touchInput\";function ei(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Zo=!1,clearTimeout(zo)),e.type){case\"tap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"doubletap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.DOUBLE_TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"pinchstart\":Zo=!1,clearTimeout(zo),Yo=1;break;case\"pinchmove\":if(Zo=!1,clearTimeout(zo),!0===Ko){Yo=e.scale,Ko=!1;break}o=(e.scale-Yo)/Yo,(Uo={page:e.center,image:f.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PINCH,Vo={event:e,startPoints:Uo,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},T(t,a,Vo),Yo=e.scale;break;case\"touchstart\":Yo=1,clearTimeout(zo),clearTimeout(jo),jo=setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_START,e.touches.length>1&&(a=x.MULTI_TOUCH_START),Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},!0===T(t,a,Vo)&&(a=x.TOUCH_START_ACTIVE,e.touches.length>1&&(a=x.MULTI_TOUCH_START_ACTIVE),Vo.type=a,T(t,a,Vo)),Bo=io(Uo)},50),Zo=!0,Wo=0,zo=setTimeout(function(){Zo&&((No={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PRESS,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo))},Jo);break;case\"touchend\":Yo=1,Zo=!1,clearTimeout(zo),setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:f.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_END,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},T(t,a,Vo)},50);break;case\"panmove\":i={x:e.deltaX-Go.x,y:e.deltaY-Go.y},Go={x:e.deltaX,y:e.deltaY},(No={page:{x:Bo.page.x+i.x,y:Bo.page.y+i.y},image:f.cornerstone.pageToPixel(t,Bo.page.x+i.x,Bo.page.y+i.y),client:{x:Bo.client.x+i.x,y:Bo.client.y+i.y}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},(Wo+=Math.sqrt(Fo.page.x*Fo.page.x+Fo.page.y*Fo.page.y))>Qo&&(Zo=!1,clearTimeout(zo)),a=x.TOUCH_DRAG,e.pointers.length>1&&(a=x.MULTI_TOUCH_DRAG),Vo={viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,numPointers:e.pointers.length,type:a,isTouchEvent:!0},T(t,a,Vo),Bo=io(No);break;case\"panstart\":Go={x:e.deltaX,y:e.deltaY},(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Bo=io(No);break;case\"panend\":if(Zo=!1,clearTimeout(zo),!Bo)return!1;(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},a=x.TOUCH_DRAG_END,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,type:a,isTouchEvent:!0},T(t,a,Vo),2===e.pointers.length-e.changedPointers.length&&(Ko=!0);break;case\"rotatemove\":Zo=!1,clearTimeout(zo),r=e.rotation-Xo,Xo=e.rotation,a=x.TOUCH_ROTATE,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},T(t,a,Vo)}return!1}}function ti(e){qo.disable(e);[\"touchstart\",\"touchend\"].forEach(function(t){e.removeEventListener(t,ei)});var t=jn($o,e).hammer;t&&t.off(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei)}var ni={enable:function(e){ti(e);var t=f.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:\"doubletap\",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei),qo.enable(e),[\"touchstart\",\"touchend\"].forEach(function(t){e.addEventListener(t,ei,{passive:!1})});var c=jn($o,e);c.hammer=a,zn($o,e,c)},disable:ti},ai=function(e,t,n){return t.filter(function(t){return t.element===e&&\"active\"===t.mode&&(void 0===n||t.options[\"is\".concat(n,\"Active\")])})};\"createImageBitmap\"in window||(window.createImageBitmap=function(){var e=oa()(na.a.mark(function e(t){return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e){var n=document.createElement(\"img\");n.addEventListener(\"load\",function(){e(this)});var a=document.createElement(\"canvas\");a.width=t.width,a.height=t.height,a.getContext(\"2d\").putImageData(t,0,0,0,0,a.width,a.height),n.src=a.toDataURL()}));case 1:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}());var oi=_.modules.brush,ii=oi.state,ri=oi.getters,si=oi.setters;function li(e,t,n){var a=e.detail.element,o=n.toolData,i=n.visibleSegmentations;return!!o.data[t].pixelData&&(!!i[t]||ii.drawColorId===t&&ai(a,_.state.tools).filter(function(e){return e instanceof Cn}).length>0)}function ci(e,t,n){var a=n.toolData,o=n.imageBitmapCache,i=n.visibleSegmentations;o&&o[t]&&function(e,t,n){var a=e.detail,o=Ze(a.canvasContext.canvas),i=f.cornerstone.pixelToCanvas(a.element,{x:0,y:0}),r=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:0}),s=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:a.image.height}),l=f.cornerstoneMath.point.distance(i,r),c=f.cornerstoneMath.point.distance(r,s),u=a.canvasContext.canvas,d=a.viewport;o.imageSmoothingEnabled=!1,o.globalAlpha=function(e){if(e)return ii.alpha;return ii.hiddenButActiveAlpha}(n),$e(o,u,d);var h={x:d.translation.x*d.scale,y:d.translation.y*d.scale};o.drawImage(t,u.width/2-l/2+h.x,u.height/2-c/2+h.y,l,c),o.globalAlpha=1,et(o)}(e,o[t],i[t]),a.data[t].invalidated&&function(e,t,n){var a=e.detail,o=a.element,i=f.cornerstone.getEnabledElement(o),r=t.data[n].pixelData,s=ii.colorMapId,l=[[0,0,0,0],f.cornerstone.colors.getColormap(s).getColor(n)],c=new ImageData(a.image.width,a.image.height),u={stats:{},minPixelValue:0,getPixelData:function(){return r}};f.cornerstone.storedPixelDataToCanvasImageDataColorLUT(u,l,c.data),window.createImageBitmap(c).then(function(e){si.imageBitmapCacheForElement(i.uuid,n,e),t.data[n].invalidated=!1,f.cornerstone.updateImage(a.element)})}(e,a,t)}var ui=function(e){var t=e.detail.element,n=S.tools.filter(function(e){return e.element===t&&(\"active\"===e.mode||\"passive\"===e.mode||\"enabled\"===e.mode)});n.filter(function(e){return e instanceof Cn}).length>0&&function(e){var t=e.detail,n=t.element,a=Cn.getNumberOfColors(),o=Q(n,Cn.getReferencedToolDataName());if(!o){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\")?S.clickProximity:S.touchProximity;return t.filter(function(t){for(var o=Q(e,t.name),i=0;i0})},pi=function(e){if(!S.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mi(n,k.mouseTools()),i=o.filter(function(e){return\"active\"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preMouseDownCallback});if(r)if(r.preMouseDownCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"mouse\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"mouse\")}else{var g=o.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"mouse\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"mouse\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postMouseDownCallback});if(p)if(p.postMouseDownCallback(e))return}}}},yi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=ai(n,k.mouseTools());if(0!==(a=a.filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive})).length){var o=a[0];if(\"function\"==typeof o.preMouseDownActivateCallback)if(o.preMouseDownActivateCallback(e))return;o.addNewMeasurement?o.addNewMeasurement(e,\"mouse\"):o instanceof Me&&function(e,t){e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(J(a,t.name,o),f.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?me:ye)(n,t.name,o,o.handles.end,t.options,\"mouse\"))}(e,o)}}},xi=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element;if(0!==(t=(t=(t=ai(a,k.mouseTools())).filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive})).filter(function(e){return\"function\"==typeof e.mouseDragCallback})).length)t[0].mouseDragCallback(e)}},Ti=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element,o=n.currentPoints;S.mousePositionImage=o.image;var i=(t=mi(a,k.mouseTools())).filter(function(e){return\"active\"===e.mode&&e.options.isMouseActive}),r=!1;i.length>0&&(r=i.some(function(e){return e.hasCursor})),t=fi(a,t);for(var s=0;s0&&function(e){var t=e.detail,n=t.element,a=Q(n,Cn.getReferencedToolDataName());if(!a){for(var o=Cn.getNumberOfColors(),i=0;i0){var i=o[0],r=Q(n,i.name),s=r.data.find(function(e){return void 0!==oe(n,e.handles,a,28)});r.data.active=!0,s.active=!0,f.cornerstone.updateImage(n);var l=Object.assign({},{doneMovingCallback:function(){Di(r)}},i.options);return me(e.detail,i.name,r.data,s,l,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var c=t.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a)})});if(c.length>0){var u=c[0],d=Q(n,u.name),h=d.data.find(function(e){return u.pointNearTool(n,e,a)});h.active=!0,f.cornerstone.updateImage(n);var v=Object.assign({},{doneMovingCallback:function(){Di(d)}},u.options);return de(e.detail,u.name,h,null,v,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var g=ai(n,k.touchTools());return g.length>0&&g[0].touchStartActiveCallback?g[0].touchStartActiveCallback(e):Oi(e),!1}},Hi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mi(n,k.touchTools()),i=o.filter(function(e){return\"active\"===e.mode&&e.options.isTouchActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preTouchStartCallback});if(r)if(r.preTouchStartCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"touch\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a,\"touch\"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"touch\")}else{var g=s.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"touch\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"touch\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postTouchStartCallback});if(p)if(p.postTouchStartCallback(e))return}}}},Ri=vi.bind(null,\"DoubleTap\",\"doubleTapCallback\"),Ui=vi.bind(null,\"Touch\",\"touchDragCallback\"),Ni=vi.bind(null,\"Touch\",\"touchEndCallback\"),Bi=vi.bind(null,\"TouchPinch\",\"touchPinchCallback\"),Fi=vi.bind(null,\"Touch\",\"touchPressCallback\"),Vi=vi.bind(null,\"TouchRotate\",\"touchRotateCallback\"),ji=function(e){e.addEventListener(x.TAP,Ai),e.addEventListener(x.TOUCH_START,Hi,{passive:!1}),e.addEventListener(x.TOUCH_DRAG,Ui,{passive:!1}),e.addEventListener(x.TOUCH_END,Ni),e.addEventListener(x.TOUCH_START_ACTIVE,Oi),e.addEventListener(x.TOUCH_PRESS,Fi),e.addEventListener(x.DOUBLE_TAP,Ri),e.addEventListener(x.TOUCH_PINCH,Bi),e.addEventListener(x.TOUCH_ROTATE,Vi),e.addEventListener(x.MULTI_TOUCH_DRAG,_i)},zi=function(e){e.removeEventListener(x.TAP,Ai),e.removeEventListener(x.TOUCH_START,Hi),e.removeEventListener(x.TOUCH_DRAG,Ui),e.removeEventListener(x.TOUCH_END,Ni),e.removeEventListener(x.TOUCH_START_ACTIVE,Oi),e.removeEventListener(x.TOUCH_PRESS,Fi),e.removeEventListener(x.DOUBLE_TAP,Ri),e.removeEventListener(x.TOUCH_PINCH,Bi),e.removeEventListener(x.TOUCH_ROTATE,Vi),e.removeEventListener(x.MULTI_TOUCH_DRAG,_i)},Wi=function(e,t,n){var a=new t(n);O(e,a.name)?console.warn(\"\".concat(a.name,\" has already been added to the target element\")):(a.element=e,_.state.tools.push(a))},Gi=function(e,t){qi(e,t),_.state.enabledElements.forEach(function(n){Wi(n,e,t)})},qi=function(e,t){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var n=new e(t);void 0!==_.state.globalTools[n.name]?console.warn(\"\".concat(n.name,\" has already been added globally\")):_.state.globalTools[n.name]={tool:e,configuration:t,activeBindings:[]}}},Yi=function(e){console.log(\"EVENT:ELEMENT_ENABLED\");var t=e.detail.element;di(t),ki(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.enable(t),Io.enable(t),wi(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.enable(t),ji(t)),Xi(t)},Xi=function(e){_.state.enabledElements.push(e),_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;Object.keys(_.state.globalTools).forEach(function(t){var n=_.state.globalTools[t],a=n.tool,o=n.configuration;Wi(e,a,o)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;var t={active:D,passive:N,enabled:R,disabled:A};_.state.globalToolChangeHistory.forEach(function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)})}(e)};var Ki=function(e){console.info(\"EVENT:ELEMENT_DISABLED\");var t=e.detail.element;hi(t),Pi(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.disable(t),Io.disable(t),Ii(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.disable(t),zi(t)),Zi(t),Ji(t)},Zi=function(e){_.state.tools=_.state.tools.filter(function(t){return t.element!==e})},Ji=function(e){_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)})}(e);var t=_.state.enabledElements.findIndex(function(t){return t===e});t>-1?_.state.enabledElements.splice(t,1):console.warn(\"unable to remove element\")};var Qi,$i=function(){window.removeEventListener(\"resize\",er,!1)};function er(){Qi||(Qi=setTimeout(function(){Qi=null,tr()},66))}var tr=function(){S.enabledElements.forEach(function(e){f.cornerstone.resize(e)})},nr=function(){$i(),window.addEventListener(\"resize\",er,!1)},ar=function(e){var t;!function(){!function(){var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Yi),e.events.removeEventListener(n,Ki)}();var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Yi),e.events.addEventListener(n,Ki)}(),t=_.modules,Object.keys(t).forEach(function(e){\"function\"==typeof t[e].onRegisterCallback&&t[e].onRegisterCallback()}),nr(),_.modules.globalConfiguration.state=Object.assign({},_.modules.globalConfiguration.state,e)};var or,ir=\"stackPrefetch\",rr=\"prefetch\",sr={maxImagesToPrefetch:1/0},lr=10;var cr=function(e){return Math.max.apply(null,e)},ur=function(e){return Math.min.apply(null,e)};function dr(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0],a=Q(e,ir);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort(function(e,t){return e-t}),o.indicesToRequest.slice().forEach(function(e){var t=n.imageIds[e];t&&(f.cornerstone.imageCache.getImageLoadObject(t)&&b(e))}),o.indicesToRequest.length){La.clearRequestStack(rr);for(var i,r,s,l,c,u,d=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=[],l=[],i.forEach(function(e){er&&l.push(e)}),{low:i.indexOf(cr(s)),high:i.indexOf(ur(l))}),h=Rn.getErrorLoadingHandler(),v=d.low,g=d.high;v>=0||gsr.maxImagesToPrefetch,y=o.indicesToRequest[g]-m>sr.maxImagesToPrefetch,x=!p&&v>=0,T=!y&&g-1&&o.indicesToRequest.splice(t,1)}function E(e){b(n.imageIds.indexOf(e.imageId))}function M(t){console.log(\"prefetch errored: \".concat(t)),h&&h(e,c,t,\"stackPrefetch\")}}function hr(e){return function(t){var n,a=t.detail;try{n=Q(e,\"stack\")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=Q(e,ir);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function vr(e){clearTimeout(or),or=setTimeout(function(){var t=e.target;try{dr(t)}catch(e){return}},lr)}var gr={enable:function(e){Q(e,ir).data=[];var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:function(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),J(e,ir,a),dr(e),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr),e.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var i=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),f.cornerstone.events.addEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else console.warn(\"A stack that should not be cached was given the stackPrefetch\")}},disable:function(e){clearTimeout(or),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var t=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=Q(e,ir);n&&n.data.length&&(n.data[0].enabled=!1,La.clearRequestStack(rr))},getConfiguration:function(){return sr},setConfiguration:function(e){var t;sr=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,la=t)}},mr=function(){function e(){o()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return r()(e,[{key:\"render\",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error(\"FusionRenderer: render - Image ID Index is not an integer\");if(!this.findImageFn)throw new Error(\"No findImage function has been defined\");t||(t=Q(e,\"stack\").data);var a=f.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then(function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach(function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then(function(t){a.setLayerImage(e,t,c),a.updateImage(e)}):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))})})}}]),e}(),fr={};fr.FusionRenderer=mr;var pr=fr,yr=\"playClip\";function xr(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Tr(e,t){var n,a;if(void 0===e)throw new Error(\"playClip: element must not be undefined\");var o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i,r=f.cornerstone;if(o.data.length>1){var s=Q(e,\"stackRenderer\");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=Q(e,yr);c&&c.data&&c.data.length?xr(n=c.data[0]):J(e,yr,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,(\"number\"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return xr(n),void function(e){var t={element:e};T(e,x.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rn.getStartLoadHandler(),a=Rn.getEndLoadHandler(),s=Rn.getErrorLoadingHandler(),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then(function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}},function(t){var n=l.imageIds[c];s&&s(e,n,t)}))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout(function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()},0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function br(e){var t=Q(e,yr);t&&t.data&&t.data.length&&xr(t.data[0])}var Er=function(e,t){var n=_.state.tools.findIndex(function(n){return n.element===e&&n.name===t});n>=0&&_.state.tools.splice(n,1)},Mr=function(e){Cr(e),_.state.enabledElements.forEach(function(t){Er(t,e)})},Cr=function(e){_.modules.globalConfiguration.state.globalToolSyncEnabled&&_.state.globalTools[e]&&delete _.state.globalTools[e]},wr=function(e,t,n){var a=O(e,t);a&&a.mergeOptions(n)},Ir=function(e,t){S.enabledElements.forEach(function(e){wr(e,t)})};function Sr(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var kr=[];function Pr(e,t){var n=Z(e);n||(n=K);var a=[\"stack\",\"stackPrefetch\",\"playClip\",\"volume\",\"slab\",\"referenceLines\",\"crosshairs\",\"stackRenderer\"];t&&(a=a.concat(t));var o=Sr(a,n);kr.push(o),te(e,o)}var _r={newStackSpecificToolStateManager:Sr,addStackStateManager:Pr};function Or(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else{if(!(r.z>1e-4&&r.z>r.x&&r.z>r.y))break;n+=i,r.z=0}return n},invertOrientationString:function(e){var t=e.replace(\"H\",\"f\");return t=(t=(t=(t=(t=(t=t.replace(\"F\",\"h\")).replace(\"R\",\"l\")).replace(\"L\",\"r\")).replace(\"A\",\"p\")).replace(\"P\",\"a\")).toUpperCase()}},Ar=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"image/png\",a=e.querySelector(\"canvas\");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement(\"a\");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent(\"MouseEvents\");r.initMouseEvent(\"click\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent(\"onclick\")},Hr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return Object.keys(P).some(function(t){return t===e})}(e)){if(console.warn(\"A module with the name \".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting module \".concat(e))}P[e]=t};var Rr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return void 0!==q[e]}(e)){if(console.warn(\"mixins/\".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting mixins/\".concat(e))}q[e]=t,co[\"mixins/\".concat(e)]=q[e]};var Ur=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t){return void 0!==co[\"\".concat(e,\"/\").concat(t)]}(e,t)){if(console.warn(\"\".concat(e,\"/\").concat(t,\" is already registered\")),!a)return;console.warn(\"Overwriting \".concat(e,\"/\").concat(t))}co[\"\".concat(e,\"/\").concat(t)]=n};var Nr=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t,n){if(!e)return console.warn(\"The type must be given in order to register.\"),!1;if(!t)return console.warn(\"The \".concat(e,\" must have a name in order to register.\")),!1;if(\"object\"!==y()(n)&&\"function\"!=typeof n)return console.warn(\"The \".concat(n,\" is a \").concat(y()(n),\", it should be an Object or a function.\")),!1;return!0}(e,t,n))switch(e){case\"module\":Hr(t,n,a);break;case\"mixin\":Rr(t,n,a);break;default:Ur(e,t,n,a),console.warn(\"unrecognised type \".concat(e,\", not registering \").concat(t))}};var Br=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=0;n=0;--i){var r=this.tryEntries[i],s=r.completion;if(\"root\"===r.tryLoc)return a(\"end\");if(r.tryLoc<=this.prev){var l=o.call(r,\"catchLoc\"),c=o.call(r,\"finallyLoc\");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,\"finallyLoc\")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if(\"throw\"===a.type){var o=a.arg;P(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:O(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=n),m}}}function T(e,t,n,a){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),r=new _(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error(\"Generator is already running\");if(a===g){if(\"throw\"===o)throw i;return D()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===m)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);a=v;var l=b(e,t,n);if(\"normal\"===l.type){if(a=n.done?g:h,l.arg===m)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(a=g,n.method=\"throw\",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}function E(){}function M(){}function C(){}function w(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise(function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if(\"throw\"!==s.type){var l=s.arg,c=l.value;return c&&\"object\"==typeof c&&o.call(c,\"__await\")?Promise.resolve(c.__await).then(function(e){t(\"next\",e,i,r)},function(e){t(\"throw\",e,i,r)}):Promise.resolve(c).then(function(e){l.value=e,i(l)},function(e){return t(\"throw\",e,i,r)})}r(s.arg)}(n,a,t,i)})}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=n,S(e,t),\"throw\"===t.method))return m;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return m}var o=b(a,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,m;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,m):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,m)}function k(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 P(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function O(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(11),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t\\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","import dicomParser from 'dicom-parser';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';\nimport cornerstoneMath from 'cornerstone-math';\nimport cornerstoneTools from 'cornerstone-tools';\nimport Hammer from 'hammerjs';\nimport OHIF from 'ohif-core';\n//import sha from './sha.js';\n//import version from './version.js';\nimport { homepage } from '../package.json';\n\nwindow.info = {\n //sha,\n //version,\n homepage\n};\n\n// For debugging\nwindow.cornerstone = cornerstone;\nwindow.cornerstoneTools = cornerstoneTools;\nwindow.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\ncornerstoneTools.external.cornerstone = cornerstone;\ncornerstoneTools.external.Hammer = Hammer;\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\ncornerstoneTools.init();\n\ncornerstoneWADOImageLoader.external.cornerstone = cornerstone;\ncornerstoneWADOImageLoader.external.dicomParser = dicomParser;\n\nOHIF.external.cornerstone = cornerstone;\nOHIF.external.cornerstoneTools = cornerstoneTools;\nOHIF.external.cornerstoneMath = cornerstoneMath;\nOHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\n// TODO: Is there a better way to guess ROOT_URL?\nlet ROOT_URL = window.location.pathname;\n\nconst config = {\n maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),\n startWebWorkersOnDemand: true,\n webWorkerPath: ROOT_URL + '/cornerstoneWADOImageLoaderWebWorker.min.js',\n taskConfiguration: {\n decodeTask: {\n loadCodecsOnStartup: true,\n initializeCodecsOnStartup: false,\n codecsPath: ROOT_URL + '/cornerstoneWADOImageLoaderCodecs.min.js',\n usePDFJS: false,\n strict: false\n }\n }\n};\n\ncornerstoneWADOImageLoader.webWorkerManager.initialize(config);\n\n\nOHIF.user.getAccessToken = () => {\n // TODO: Get the Redux store from somewhere else\n const state = window.store.getState();\n if (!state.oidc || !state.oidc.user) {\n return;\n }\n\n return state.oidc.user.access_token;\n}\n\ncornerstoneWADOImageLoader.configure({\n beforeSend: function(xhr) {\n const headers = OHIF.DICOMWeb.getAuthorizationHeader();\n\n if (headers.Authorization) {\n xhr.setRequestHeader(\"Authorization\", headers.Authorization);\n }\n }\n});\n\n// Set the tool font and font size\n// context.font = \"[style] [variant] [weight] [size]/[line height] [font family]\";\nconst fontFamily =\n 'Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif';\ncornerstoneTools.textStyle.setFont(`16px ${fontFamily}`);\n\n// Set the tool width\ncornerstoneTools.toolStyle.setToolWidth(2);\n// Set color for inactive tools\ncornerstoneTools.toolColors.setToolColor('rgb(255, 255, 0)');\n\n// Set color for active tools\ncornerstoneTools.toolColors.setActiveColor('rgb(0, 255, 0)');\n\ncornerstoneTools.store.state.touchProximity = 40;\n","const defaultState = {\n leftSidebarOpen: true,\n rightSidebarOpen: false,\n}\n\nconst ui = (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LEFT_SIDEBAR_OPEN':\n return Object.assign({}, state, { leftSidebarOpen: action.state });\n case 'SET_RIGHT_SIDEBAR_OPEN':\n return Object.assign({}, state, { rightSidebarOpen: action.state });\n default:\n return state;\n }\n};\n\nexport default ui;\n","import React, { PureComponent, Component } from 'react';\nimport reactDom from 'react-dom';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".CineDialog {\\n background: var(--ui-gray-darkest);\\n color: var(--text-secondary-color);\\n filter: drop-shadow(0 0 3px var(--ui-gray-darkest));\\n border: none;\\n border-radius: 8px;\\n width: inherit;\\n}\\n.CineDialog h5 {\\n font-size: 20px;\\n line-height: 35px;\\n margin: 0;\\n}\\n.CineDialog h5,\\n.CineDialog label {\\n font-weight: 400;\\n}\\n.CineDialog .cine-navigation,\\n.CineDialog .cine-controls,\\n.CineDialog .cine-options {\\n cursor: default;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"] {\\n background-color: transparent;\\n border: 0 none;\\n outline: 0 none;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"]::-ms-tooltip {\\n display: none;\\n}\\n.CineDialog .double-row-style {\\n box-sizing: border-box;\\n width: 290px;\\n height: 80px;\\n padding: 10px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .double-row-style .cine-navigation {\\n position: absolute;\\n right: 16px;\\n top: 10px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn {\\n padding: 0 4px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 32px;\\n}\\n.CineDialog .double-row-style .cine-controls {\\n left: 0px;\\n}\\n.CineDialog .double-row-style .cine-options {\\n padding: 0px 0;\\n}\\n.CineDialog .double-row-style .cine-options .fps-section {\\n width: 175px;\\n float: left;\\n}\\n.CineDialog .double-row-style .cine-options .fps {\\n float: right;\\n margin: 5px 20px 0 0;\\n}\\n.CineDialog .single-row-style {\\n box-sizing: content-box;\\n width: 425px;\\n height: 45px;\\n padding: 4px 8px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .single-row-style .cine-navigation {\\n float: right;\\n overflow: hidden;\\n padding-right: 12px;\\n position: relative;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn {\\n padding: 0 2px;\\n margin: 0 0 0 2px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn:first-of-type {\\n margin-left: 0;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 45px;\\n}\\n.CineDialog .single-row-style .cine-controls {\\n position: relative;\\n float: left;\\n overflow: hidden;\\n}\\n.CineDialog .single-row-style .cine-controls .btn {\\n font-size: 22px;\\n line-height: 45px;\\n min-width: 28px;\\n padding: 0 0px;\\n margin: 0 4px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-options {\\n display: block;\\n position: relative;\\n width: 150px;\\n float: left;\\n overflow: hidden;\\n padding: 0;\\n margin: 0 0 0 10px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section {\\n display: block;\\n float: left;\\n width: 80px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section input[type=\\\"range\\\"] {\\n line-height: 45px;\\n height: 45px;\\n}\\n.CineDialog .single-row-style .cine-options .fps {\\n display: block;\\n width: 68px;\\n float: left;\\n padding: 0;\\n margin: 0 0 0 2px;\\n text-align: center;\\n line-height: 45px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n}\\n.CineDialog .btn {\\n color: var(--text-secondary-color);\\n background-color: transparent;\\n border: 0;\\n border-radius: 4px;\\n font-size: 15px;\\n font-weight: normal;\\n height: 37px;\\n line-height: 37px;\\n padding: 0 12px;\\n}\\n.CineDialog .btn:hover,\\n.CineDialog .btn:active,\\n.CineDialog .btn.active {\\n color: var(--hover-color);\\n}\\n.CineDialog .btn[disabled]:hover {\\n color: inherit;\\n}\\n.CineDialog .btn[disabled]:active {\\n color: var(--text-secondary-color);\\n}\\n.CineDialog .btn.btn-primary,\\n.CineDialog .btn.btn-secondary,\\n.CineDialog .btn.btn-danger {\\n transition: background-color 0.3s ease;\\n}\\n.CineDialog .btn.btn-primary:hover,\\n.CineDialog .btn.btn-secondary:hover,\\n.CineDialog .btn.btn-danger:hover,\\n.CineDialog .btn.btn-primary:active,\\n.CineDialog .btn.btn-secondary:active,\\n.CineDialog .btn.btn-danger:active,\\n.CineDialog .btn.btn-primary:focus,\\n.CineDialog .btn.btn-secondary:focus,\\n.CineDialog .btn.btn-danger:focus {\\n opacity: 0.8;\\n}\\n.CineDialog .btn.btn-primary {\\n background-color: var(--active-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-secondary {\\n background-color: var(--text-secondary-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-danger {\\n background-color: var(--text-destructive-color);\\n color: var(--text-primary-color);\\n}\\n.CineDialog .btn.active {\\n box-shadow: inset 1px 1px 2px var(--ui-gray-darkest);\\n}\\n\";\nstyleInject(css);\n\nvar CineDialog =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CineDialog, _PureComponent);\n\n function CineDialog(props) {\n var _this;\n\n _classCallCheck(this, CineDialog);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CineDialog).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var target = event.target;\n var value = target.value;\n\n if (target.type === 'range') {\n value = parseFloat(target.value);\n }\n\n var name = target.name;\n\n _this.setState(_defineProperty({}, name, value));\n\n if (name === 'cineFrameRate' && _this.props.onFrameRateChanged) {\n _this.props.onFrameRateChanged(parseFloat(value));\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickPlayPause\", function () {\n var value = !_this.state.isPlaying;\n\n _this.setState({\n isPlaying: value\n });\n\n if (_this.props.onPlayPauseChanged) {\n _this.props.onPlayPauseChanged(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickNextButton\", function (event) {\n if (_this.props.onClickNextButton) {\n _this.props.onClickNextButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickBackButton\", function (event) {\n if (_this.props.onClickBackButton) {\n _this.props.onClickBackButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToStart\", function (event) {\n if (_this.props.onClickSkipToStart) {\n _this.props.onClickSkipToStart(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToEnd\", function (event) {\n if (_this.props.onClickSkipToEnd) {\n _this.props.onClickSkipToEnd(event);\n }\n });\n\n _this.state = {\n cineFrameRate: props.cineFrameRate,\n isPlaying: props.isPlaying\n };\n return _this;\n }\n\n _createClass(CineDialog, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // TODO: Not sure if we should just switch this to a stateless\n // fully-controlled component instead\n if (this.props.isPlaying !== prevProps.isPlaying || this.props.isPlaying !== this.state.isPlaying) {\n this.setState({\n isPlaying: this.props.isPlaying\n });\n }\n\n if (this.props.cineFrameRate !== prevProps.cineFrameRate || this.props.cineFrameRate !== this.state.cineFrameRate) {\n this.setState({\n cineFrameRate: this.props.cineFrameRate\n });\n }\n }\n }, {\n key: \"render\",\n // TODO:\n // - Add next / previous display set buttons which just call\n // onClickNextDisplaySet and onClickPreviousDisplaySet which are passed in as props.\n // See https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.html#L38\n // - Add 'isEnabled' prop: https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.js#L301\n value: function render() {\n return React.createElement(\"div\", {\n className: \"CineDialog\"\n }, React.createElement(\"div\", {\n className: \"noselect double-row-style\"\n }, React.createElement(\"div\", {\n className: \"cine-controls\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"cineFirstButton\",\n title: \"Skip to first image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToStart\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-backward\"\n })), React.createElement(\"button\", {\n id: \"cineBackButton\",\n title: \"Previous image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickBackButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-backward\"\n })), React.createElement(\"button\", {\n id: \"cinePlayButton\",\n title: \"Play / Stop\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickPlayPause\n }, React.createElement(\"i\", {\n className: this.state.isPlaying ? 'fa fa-lg fa-stop' : 'fa fa-lg fa-play'\n })), React.createElement(\"button\", {\n id: \"cineNextButton\",\n title: \"Next image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickNextButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-forward\"\n })), React.createElement(\"button\", {\n id: \"cineLastButton\",\n title: \"Skip to last image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToEnd\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-forward\"\n })))), React.createElement(\"div\", {\n className: \"cine-options\"\n }, React.createElement(\"div\", {\n className: \"fps-section\"\n }, React.createElement(\"input\", {\n type: \"range\",\n name: \"cineFrameRate\",\n id: \"cineSlider\",\n min: this.props.cineMinFrameRate,\n max: this.props.cineMaxFrameRate,\n step: this.props.cineStepFrameRate,\n value: this.state.cineFrameRate,\n onChange: this.handleInputChange\n })), React.createElement(\"span\", {\n className: \"fps\"\n }, this.state.cineFrameRate.toFixed(1), \" fps\"))));\n }\n }]);\n\n return CineDialog;\n}(PureComponent);\n\n_defineProperty(CineDialog, \"propTypes\", {\n cineMinFrameRate: propTypes.number.isRequired,\n cineMaxFrameRate: propTypes.number.isRequired,\n cineStepFrameRate: propTypes.number.isRequired,\n cineFrameRate: propTypes.number.isRequired,\n isPlaying: propTypes.bool.isRequired,\n onPlayPauseChanged: propTypes.func,\n onFrameRateChanged: propTypes.func,\n onClickNextButton: propTypes.func,\n onClickBackButton: propTypes.func,\n onClickSkipToStart: propTypes.func,\n onClickSkipToEnd: propTypes.func\n});\n\n_defineProperty(CineDialog, \"defaultProps\", {\n cineMinFrameRate: 1,\n cineMaxFrameRate: 90,\n cineStepFrameRate: 1,\n cineFrameRate: 24,\n isPlaying: false\n});\n\nvar interfaces = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n});\n\nunwrapExports(interfaces);\nvar interfaces_1 = interfaces.HandlerRole;\n\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n}\n\n/* global window */\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread$1({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n createStore: createStore,\n combineReducers: combineReducers,\n bindActionCreators: bindActionCreators,\n applyMiddleware: applyMiddleware,\n compose: compose,\n __DO_NOT_USE__ActionTypes: ActionTypes\n});\n\nvar types = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n});\n\nunwrapExports(types);\nvar types_1 = types.INIT_COORDS;\nvar types_2 = types.BEGIN_DRAG;\nvar types_3 = types.PUBLISH_DRAG_SOURCE;\nvar types_4 = types.HOVER;\nvar types_5 = types.DROP;\nvar types_6 = types.END_DRAG;\n\nvar setClientOffset_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n});\n\nunwrapExports(setClientOffset_1);\nvar setClientOffset_2 = setClientOffset_1.setClientOffset;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\nvar beginDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar ResetCoordinatesAction = {\n type: types.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1(isObject_1(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n});\n\nunwrapExports(beginDrag);\n\nvar publishDragSource = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n});\n\nunwrapExports(publishDragSource);\n\nvar matchesType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n});\n\nunwrapExports(matchesType_1);\n\nvar hover = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n});\n\nunwrapExports(hover);\n\nvar drop = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target.drop(monitor, targetId);\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1(typeof dropResult === 'undefined' || isObject_1(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n});\n\nunwrapExports(drop);\n\nvar endDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n});\n\nunwrapExports(endDrag);\n\nvar dragDrop = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n__export(types);\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag.default(manager),\n publishDragSource: publishDragSource.default(manager),\n hover: hover.default(manager),\n drop: drop.default(manager),\n endDrag: endDrag.default(manager),\n };\n}\nexports.default = createDragDropActions;\n});\n\nunwrapExports(dragDrop);\n\nvar equality = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n});\n\nunwrapExports(equality);\nvar equality_1 = equality.strictEquality;\nvar equality_2 = equality.areCoordsEqual;\nvar equality_3 = equality.areArraysEqual;\n\nvar dragOffset_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.INIT_COORDS:\n case dragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop.HOVER:\n if (equality.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n});\n\nunwrapExports(dragOffset_1);\n\nvar registry = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n});\n\nunwrapExports(registry);\nvar registry_1 = registry.ADD_SOURCE;\nvar registry_2 = registry.ADD_TARGET;\nvar registry_3 = registry.REMOVE_SOURCE;\nvar registry_4 = registry.REMOVE_TARGET;\nvar registry_5 = registry.addSource;\nvar registry_6 = registry.addTarget;\nvar registry_7 = registry.removeSource;\nvar registry_8 = registry.removeTarget;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$1 = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$1;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$1.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = _getNative(_root, 'Map');\n\nvar _Map = Map$1;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\nvar _setCacheAdd = setCacheAdd;\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nvar _setCacheHas = setCacheHas;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\n\nvar _SetCache = SetCache;\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nvar _baseFindIndex = baseFindIndex;\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nvar _baseIsNaN = baseIsNaN;\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nvar _strictIndexOf = strictIndexOf;\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? _strictIndexOf(array, value, fromIndex)\n : _baseFindIndex(array, _baseIsNaN, fromIndex);\n}\n\nvar _baseIndexOf = baseIndexOf;\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && _baseIndexOf(array, value, 0) > -1;\n}\n\nvar _arrayIncludes = arrayIncludes;\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nvar _arrayIncludesWith = arrayIncludesWith;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nvar _arrayMap = arrayMap;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nvar _cacheHas = cacheHas;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = _arrayMap(values, _baseUnary(iteratee));\n }\n if (comparator) {\n includes = _arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = _cacheHas;\n isCommon = false;\n values = new _SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseDifference = baseDifference;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$2 = defineProperty;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$2 ? identity_1 : function(func, string) {\n return _defineProperty$2(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = _baseRest(function(array, values) {\n return isArrayLikeObject_1(array)\n ? _baseDifference(array, values)\n : [];\n});\n\nvar without_1 = without;\n\nvar dragOperation_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: without_1(state.targetIds, payload.targetId) });\n case dragDrop.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n});\n\nunwrapExports(dragOperation_1);\n\nvar refCount_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n return state + 1;\n case registry.REMOVE_SOURCE:\n case registry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n});\n\nunwrapExports(refCount_1);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? _arrayIncludesWith : _arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = _arrayMap(array, _baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new _SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? _cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? _cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseIntersection = baseIntersection;\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject_1(value) ? value : [];\n}\n\nvar _castArrayLikeObject = castArrayLikeObject;\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = _baseRest(function(arrays) {\n var mapped = _arrayMap(arrays, _castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? _baseIntersection(mapped)\n : [];\n});\n\nvar intersection_1 = intersection;\n\nvar dirtiness = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.NONE = [];\nexports.ALL = [];\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n return intersection_1(handlerIds, dirtyIds).length > 0;\n}\nexports.areDirty = areDirty;\n});\n\nunwrapExports(dirtiness);\nvar dirtiness_1 = dirtiness.NONE;\nvar dirtiness_2 = dirtiness.ALL;\nvar dirtiness_3 = dirtiness.areDirty;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nvar _arrayFilter = arrayFilter;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nvar _arrayPush = arrayPush;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nvar _isFlattenable = isFlattenable;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nvar _baseFlatten = baseFlatten;\n\n/* Built-in method references that are verified to be native. */\nvar Set = _getNative(_root, 'Set');\n\nvar _Set = Set;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nvar noop_1 = noop;\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nvar _setToArray = setToArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY) ? noop_1 : function(values) {\n return new _Set(values);\n};\n\nvar _createSet = createSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE$1 = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE$1) {\n var set = iteratee ? null : _createSet(array);\n if (set) {\n return _setToArray(set);\n }\n isCommon = false;\n includes = _cacheHas;\n seen = new _SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseUniq = baseUniq;\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? _baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = _baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return _baseUniq(_baseFlatten(result, 1), iteratee, comparator);\n}\n\nvar _baseXor = baseXor;\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = _baseRest(function(arrays) {\n return _baseXor(_arrayFilter(arrays, isArrayLikeObject_1));\n});\n\nvar xor_1 = xor;\n\nvar dirtyHandlerIds_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness.NONE; }\n switch (action.type) {\n case dragDrop.HOVER:\n break;\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n case registry.REMOVE_TARGET:\n case registry.REMOVE_SOURCE:\n return dirtiness.NONE;\n case dragDrop.BEGIN_DRAG:\n case dragDrop.PUBLISH_DRAG_SOURCE:\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n default:\n return dirtiness.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = xor_1(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n});\n\nunwrapExports(dirtyHandlerIds_1);\n\nvar stateId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n});\n\nunwrapExports(stateId_1);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol;\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nvar _isKey = isKey;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache;\n\nvar memoize_1 = memoize;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nvar _memoizeCapped = memoizeCapped;\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nvar _stringToPath = stringToPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n}\n\nvar _baseToString = baseToString;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : _baseToString(value);\n}\n\nvar toString_1 = toString;\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\n\nvar _castPath = castPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;\n}\n\nvar _toKey = toKey;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nvar _baseGet = baseGet;\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar get_1 = get;\n\nvar reducers = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: get_1(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n});\n\nunwrapExports(reducers);\n\nvar coords = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n});\n\nunwrapExports(coords);\nvar coords_1 = coords.add;\nvar coords_2 = coords.subtract;\nvar coords_3 = coords.getSourceClientOffset;\nvar coords_4 = coords.getDifferenceFromInitialOffset;\n\nvar DragDropMonitorImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n invariant_1(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n var source = this.registry.getSource(sourceId);\n invariant_1(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n var target = this.registry.getTarget(targetId);\n invariant_1(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n var source = this.registry.getSource(sourceId, true);\n invariant_1(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n});\n\nunwrapExports(DragDropMonitorImpl_1);\n\nvar getNextUniqueId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n});\n\nunwrapExports(getNextUniqueId_1);\n\nvar contracts = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction validateSourceContract(source) {\n invariant_1(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n});\n\nunwrapExports(contracts);\nvar contracts_1 = contracts.validateSourceContract;\nvar contracts_2 = contracts.validateTargetContract;\nvar contracts_3 = contracts.validateType;\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/*\n\n\n

License

\n\nUnless stated otherwise all works are:\n\n
\n\nand licensed under:\n\n\n\n

MIT License

\n\n
\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n\n\n*/\ninherits$1(Domain, EventEmitter);\nfunction createEmitError(d) {\n return emitError;\n function emitError(e) {\n d.emit('error', e);\n }\n}\n\nfunction Domain() {\n EventEmitter.call(this);\n this.__emitError = createEmitError(this);\n}\nDomain.prototype.add = function (emitter) {\n emitter.on('error', this.__emitError);\n};\nDomain.prototype.remove = function(emitter) {\n emitter.removeListener('error', this.__emitError);\n};\nDomain.prototype.bind = function(fn) {\n var emitError = this.__emitError;\n return function() {\n var args = Array.prototype.slice.call(arguments);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n};\nDomain.prototype.intercept = function(fn) {\n var emitError = this.__emitError;\n return function(err) {\n if (err) {\n emitError(err);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n }\n};\nDomain.prototype.run = function(fn) {\n var emitError = this.__emitError;\n try {\n fn();\n } catch (err) {\n emitError(err);\n }\n return this\n};\nDomain.prototype.dispose = function() {\n this.removeAllListeners();\n return this\n};\nDomain.prototype.enter = Domain.prototype.exit = function() {\n return this\n};\nfunction createDomain() {\n return new Domain();\n}\nvar create = createDomain;\n\nvar require$$0 = {\n Domain: Domain,\n createDomain: createDomain,\n create: create\n};\n\nvar domain$1; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nvar raw = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index$2 = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index$2 < queue.length) {\n var currentIndex = index$2;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index$2 = index$2 + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index$2 > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index$2; scan < newLength; scan++) {\n queue[scan] = queue[scan + index$2];\n }\n queue.length -= index$2;\n index$2 = 0;\n }\n }\n queue.length = 0;\n index$2 = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain$1) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain$1 = require$$0;\n }\n domain$1.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain$1.active = process.domain = parentDomain;\n }\n}\n\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nvar asap_1 = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n raw(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n raw.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\nvar HandlerRegistryImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces.HandlerRole.SOURCE;\n case 'T':\n return interfaces.HandlerRole.TARGET;\n default:\n invariant_1(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts.validateType(type);\n contracts.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts.validateType(type, true);\n contracts.validateTargetContract(target);\n var targetId = this.addHandler(interfaces.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry.removeSource(sourceId));\n asap_1(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n});\n\nunwrapExports(HandlerRegistryImpl_1);\n\nvar DragDropManagerImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux.createStore(reducers.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(createBackend, context, debugMode) {\n if (context === void 0) { context = {}; }\n if (debugMode === void 0) { debugMode = false; }\n var _this = this;\n this.context = context;\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n this.backend = createBackend(this);\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.getContext = function () {\n return this.context;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n});\n\nunwrapExports(DragDropManagerImpl_1);\n\nvar factories = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createDragDropManager(backend, context, debugMode) {\n return new DragDropManagerImpl_1.default(backend, context, debugMode);\n}\nexports.createDragDropManager = createDragDropManager;\n});\n\nunwrapExports(factories);\nvar factories_1 = factories.createDragDropManager;\n\nvar lib = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(interfaces);\n__export(factories);\n});\n\nunwrapExports(lib);\n\nvar checkDecoratorArguments_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction checkDecoratorArguments(functionName, signature) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (process.env.NODE_ENV !== 'production') {\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg && arg.prototype && arg.prototype.render) {\n // tslint:disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' +\n (\"It should be \" + functionName + \"(\" + signature + \")(Component), not the other way around. \") +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}\nexports.default = checkDecoratorArguments;\n});\n\nunwrapExports(checkDecoratorArguments_1);\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty$1 = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar isClassComponent_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar _default = isClassComponent;\nexports.default = _default;\n});\n\nunwrapExports(isClassComponent_1);\n\nvar DragDropContext_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n/**\n * Create the React Context\n */\nexports.Consumer = (_a = React.createContext({ dragDropManager: undefined }), _a.Consumer), exports.Provider = _a.Provider;\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createChildContext(backend, context, debugMode) {\n return {\n dragDropManager: lib.createDragDropManager(backend, context, debugMode),\n };\n}\nexports.createChildContext = createChildContext;\n/**\n * A React component that provides the React-DnD context\n */\nexports.DragDropContextProvider = function (_a) {\n var backend = _a.backend, context = _a.context, debugMode = _a.debugMode, children = _a.children;\n var contextValue = createChildContext(backend, context, debugMode);\n return React.createElement(exports.Provider, { value: contextValue }, children);\n};\n/**\n * Wrap the root component of your application with DragDropContext decorator to set up React DnD.\n * This lets you specify the backend, and sets up the shared DnD state behind the scenes.\n * @param backendFactory The DnD backend factory\n * @param backendContext The backend context\n */\nfunction DragDropContext(backendFactory, backendContext, debugMode) {\n checkDecoratorArguments_1.default('DragDropContext', 'backend', backendFactory);\n var childContext = createChildContext(backendFactory, backendContext, debugMode);\n return function decorateContext(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragDropContextContainer = /** @class */ (function (_super) {\n __extends(DragDropContextContainer, _super);\n function DragDropContextContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = React.createRef();\n _this.getManager = function () { return childContext.dragDropManager; };\n return _this;\n }\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragDropContextContainer.prototype.render = function () {\n return (React.createElement(exports.Provider, { value: childContext },\n React.createElement(Decorated, __assign({}, this.props, { ref: isClassComponent(Decorated) ? this.ref : undefined }))));\n };\n DragDropContextContainer.DecoratedComponent = DecoratedComponent;\n DragDropContextContainer.displayName = \"DragDropContext(\" + displayName + \")\";\n return DragDropContextContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContextContainer, DecoratedComponent);\n };\n}\nexports.DragDropContext = DragDropContext;\n});\n\nunwrapExports(DragDropContext_1);\nvar DragDropContext_2 = DragDropContext_1.Consumer;\nvar DragDropContext_3 = DragDropContext_1.Provider;\nvar DragDropContext_4 = DragDropContext_1.createChildContext;\nvar DragDropContext_5 = DragDropContext_1.DragDropContextProvider;\nvar DragDropContext_6 = DragDropContext_1.DragDropContext;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$6 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject$1(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$6.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject$1;\n\n//\n\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar DragLayer_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\nfunction DragLayer(collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragLayer', 'collect[, options]', collect, options);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' +\n 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _a = options.arePropsEqual, arePropsEqual = _a === void 0 ? shallowequal : _a;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragLayerContainer = /** @class */ (function (_super) {\n __extends(DragLayerContainer, _super);\n function DragLayerContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n return _this;\n }\n DragLayerContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragLayerContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragLayerContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.handleChange();\n };\n DragLayerContainer.prototype.componentWillUnmount = function () {\n this.isCurrentlyMounted = false;\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n };\n DragLayerContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: isClassComponent(Decorated) ? _this.ref : undefined })));\n }));\n };\n DragLayerContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n };\n DragLayerContainer.prototype.getCurrentState = function () {\n if (!this.manager) {\n return {};\n }\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n };\n DragLayerContainer.displayName = \"DragLayer(\" + displayName + \")\";\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragLayerContainer, DecoratedComponent);\n };\n}\nexports.default = DragLayer;\n});\n\nunwrapExports(DragLayer_1);\n\nvar Disposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable(action) {\n this.isDisposed = false;\n this.action = isFunction_1(action) ? action : noop_1;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n Disposable.isDisposable = function (d) {\n return d && isFunction_1(d.dispose);\n };\n Disposable._fixup = function (result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n };\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n Disposable.create = function (action) {\n return new Disposable(action);\n };\n /** Performs the task of cleaning up resources. */\n Disposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n };\n /**\n * Gets the disposable that does nothing when disposed.\n */\n Disposable.empty = { dispose: noop_1 };\n return Disposable;\n}());\nexports.Disposable = Disposable;\n});\n\nunwrapExports(Disposable_1);\nvar Disposable_2 = Disposable_1.Disposable;\n\nvar SerialDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\nvar SerialDisposable = /** @class */ (function () {\n function SerialDisposable() {\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n SerialDisposable.prototype.getDisposable = function () {\n return this.current;\n };\n SerialDisposable.prototype.setDisposable = function (value) {\n var shouldDispose = this.isDisposed;\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n if (old) {\n old.dispose();\n }\n }\n if (shouldDispose && value) {\n value.dispose();\n }\n };\n /** Performs the task of cleaning up resources. */\n SerialDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n if (old) {\n old.dispose();\n }\n }\n };\n return SerialDisposable;\n}());\nexports.SerialDisposable = SerialDisposable;\n});\n\nunwrapExports(SerialDisposable_1);\nvar SerialDisposable_2 = SerialDisposable_1.SerialDisposable;\n\nvar CompositeDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\nvar CompositeDisposable = /** @class */ (function () {\n function CompositeDisposable() {\n var disposables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n disposables[_i] = arguments[_i];\n }\n this.isDisposed = false;\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n CompositeDisposable.prototype.add = function (item) {\n if (this.isDisposed) {\n item.dispose();\n }\n else {\n this.disposables.push(item);\n }\n };\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n CompositeDisposable.prototype.remove = function (item) {\n var shouldDispose = false;\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n return shouldDispose;\n };\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n CompositeDisposable.prototype.clear = function () {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n CompositeDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n return CompositeDisposable;\n}());\nexports.CompositeDisposable = CompositeDisposable;\n});\n\nunwrapExports(CompositeDisposable_1);\nvar CompositeDisposable_2 = CompositeDisposable_1.CompositeDisposable;\n\nvar disposables = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(Disposable_1);\n__export(SerialDisposable_1);\n__export(CompositeDisposable_1);\n});\n\nunwrapExports(disposables);\n\nvar decorateHandler_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n\n\n\n\nfunction decorateHandler(_a) {\n var DecoratedComponent = _a.DecoratedComponent, createHandler = _a.createHandler, createMonitor = _a.createMonitor, createConnector = _a.createConnector, registerHandler = _a.registerHandler, containerDisplayName = _a.containerDisplayName, getType = _a.getType, collect = _a.collect, options = _a.options;\n var _b = options.arePropsEqual, arePropsEqual = _b === void 0 ? shallowequal : _b;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n var DragDropContainer = /** @class */ (function (_super) {\n __extends(DragDropContainer, _super);\n function DragDropContainer(props) {\n var _this = _super.call(this, props) || this;\n _this.isCurrentlyMounted = false;\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n _this.disposable = new disposables.SerialDisposable();\n _this.receiveProps(props);\n _this.dispose();\n return _this;\n }\n DragDropContainer.prototype.getHandlerId = function () {\n return this.handlerId;\n };\n DragDropContainer.prototype.getDecoratedComponentInstance = function () {\n if (!this.handler) {\n return null;\n }\n return this.handler.ref.current;\n };\n DragDropContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragDropContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.disposable = new disposables.SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n };\n DragDropContainer.prototype.componentDidUpdate = function (prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n };\n DragDropContainer.prototype.componentWillUnmount = function () {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n DragDropContainer.prototype.receiveProps = function (props) {\n if (!this.handler) {\n return;\n }\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n DragDropContainer.prototype.receiveType = function (type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n if (type === this.currentType) {\n return;\n }\n this.currentType = type;\n var _a = registerHandler(type, this.handler, this.manager), handlerId = _a.handlerId, unregister = _a.unregister;\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n this.disposable.setDisposable(new disposables.CompositeDisposable(new disposables.Disposable(unsubscribe), new disposables.Disposable(unregister)));\n };\n DragDropContainer.prototype.dispose = function () {\n this.disposable.dispose();\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n };\n DragDropContainer.prototype.getCurrentState = function () {\n if (!this.handlerConnector) {\n return {};\n }\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(nextState), 'Expected `collect` specified as the second argument to ' +\n '%s for %s to return a plain object of props to inject. ' +\n 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n return nextState;\n };\n DragDropContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: _this.handler && isClassComponent(Decorated)\n ? _this.handler.ref\n : undefined })));\n }));\n };\n DragDropContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n };\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = containerDisplayName + \"(\" + displayName + \")\";\n return DragDropContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContainer, DecoratedComponent);\n}\nexports.default = decorateHandler;\n});\n\nunwrapExports(decorateHandler_1);\n\nvar registerSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n return {\n handlerId: sourceId,\n unregister: unregisterSource,\n };\n}\nexports.default = registerSource;\n});\n\nunwrapExports(registerSource_1);\n\nvar createSourceFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n var SourceImpl = /** @class */ (function () {\n function SourceImpl(monitor) {\n var _this = this;\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n var item = spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(item), 'beginDrag() must return a plain object that represents the dragged item. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n }\n SourceImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n SourceImpl.prototype.canDrag = function () {\n if (!this.props) {\n return false;\n }\n if (!spec.canDrag) {\n return true;\n }\n return spec.canDrag(this.props, this.monitor);\n };\n SourceImpl.prototype.isDragging = function (globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n return spec.isDragging(this.props, this.monitor);\n };\n SourceImpl.prototype.endDrag = function () {\n if (!this.props) {\n return;\n }\n if (!spec.endDrag) {\n return;\n }\n spec.endDrag(this.props, this.monitor, this.ref.current);\n };\n return SourceImpl;\n }());\n return function createSource(monitor) {\n return new SourceImpl(monitor);\n };\n}\nexports.default = createSourceFactory;\n});\n\nunwrapExports(createSourceFactory_1);\n\nvar createSourceMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar SourceMonitor = /** @class */ (function () {\n function SourceMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n SourceMonitor.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n SourceMonitor.prototype.canDrag = function () {\n invariant_1(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n SourceMonitor.prototype.isDragging = function () {\n invariant_1(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n SourceMonitor.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n SourceMonitor.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n SourceMonitor.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n SourceMonitor.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n SourceMonitor.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n SourceMonitor.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n SourceMonitor.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n SourceMonitor.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n SourceMonitor.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n SourceMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n SourceMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n SourceMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n SourceMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n SourceMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n SourceMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n SourceMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n SourceMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return SourceMonitor;\n}());\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\nexports.default = createSourceMonitor;\n});\n\nunwrapExports(createSourceMonitor_1);\n\nvar cloneWithRef_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return React.cloneElement(element, {\n ref: newRef,\n });\n }\n return React.cloneElement(element, {\n ref: function (node) {\n newRef(node);\n if (previousRef) {\n previousRef(node);\n }\n },\n });\n}\nexports.default = cloneWithRef;\n});\n\nunwrapExports(cloneWithRef_1);\n\nvar wrapConnectorHooks_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a
, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!React.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return undefined;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.default(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook; };\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n});\n\nunwrapExports(wrapConnectorHooks_1);\n\nvar createSourceConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createSourceConnector(backend) {\n var currentHandlerId;\n var currentDragSourceNode;\n var currentDragSourceOptions;\n var disconnectCurrentDragSource;\n var currentDragPreviewNode;\n var currentDragPreviewOptions;\n var disconnectCurrentDragPreview;\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = undefined;\n }\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = undefined;\n }\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n var hooks = wrapConnectorHooks_1.default({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode &&\n shallowequal(options, currentDragSourceOptions)) {\n return;\n }\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n reconnectDragSource();\n },\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode &&\n shallowequal(options, currentDragPreviewOptions)) {\n return;\n }\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n reconnectDragPreview();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createSourceConnector;\n});\n\nunwrapExports(createSourceConnector_1);\n\nvar isValidType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isValidType(type, allowArray) {\n return (typeof type === 'string' ||\n typeof type === 'symbol' ||\n (!!allowArray &&\n Array.isArray(type) &&\n type.every(function (t) { return isValidType(t, false); })));\n}\nexports.default = isValidType;\n});\n\nunwrapExports(isValidType_1);\n\nvar DragSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\nfunction DragSource(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type), 'Expected \"type\" provided as the first argument to DragSource to be ' +\n 'a string, or a function that returns a string given the current props. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = createSourceFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource_1.default,\n createMonitor: createSourceMonitor_1.default,\n createConnector: createSourceConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DragSource;\n});\n\nunwrapExports(DragSource_1);\n\nvar registerTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n return {\n handlerId: targetId,\n unregister: unregisterTarget,\n };\n}\nexports.default = registerTarget;\n});\n\nunwrapExports(registerTarget_1);\n\nvar createTargetFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n var TargetImpl = /** @class */ (function () {\n function TargetImpl(monitor) {\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n }\n TargetImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n TargetImpl.prototype.receiveMonitor = function (monitor) {\n this.monitor = monitor;\n };\n TargetImpl.prototype.canDrop = function () {\n if (!spec.canDrop) {\n return true;\n }\n return spec.canDrop(this.props, this.monitor);\n };\n TargetImpl.prototype.hover = function () {\n if (!spec.hover) {\n return;\n }\n spec.hover(this.props, this.monitor, this.ref.current);\n };\n TargetImpl.prototype.drop = function () {\n if (!spec.drop) {\n return undefined;\n }\n var dropResult = spec.drop(this.props, this.monitor, this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(typeof dropResult === 'undefined' || isPlainObject_1(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n return TargetImpl;\n }());\n return function createTarget(monitor) {\n return new TargetImpl(monitor);\n };\n}\nexports.default = createTargetFactory;\n});\n\nunwrapExports(createTargetFactory_1);\n\nvar createTargetMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrop = false;\nvar TargetMonitor = /** @class */ (function () {\n function TargetMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n TargetMonitor.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n TargetMonitor.prototype.canDrop = function () {\n invariant_1(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n TargetMonitor.prototype.isOver = function (options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n TargetMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n TargetMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n TargetMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n TargetMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n TargetMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n TargetMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n TargetMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n TargetMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return TargetMonitor;\n}());\nexports.TargetMonitor = TargetMonitor;\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\nexports.default = createTargetMonitor;\n});\n\nunwrapExports(createTargetMonitor_1);\nvar createTargetMonitor_2 = createTargetMonitor_1.TargetMonitor;\n\nvar createTargetConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createTargetConnector(backend) {\n var currentHandlerId;\n var currentDropTargetNode;\n var currentDropTargetOptions;\n var disconnectCurrentDropTarget;\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = undefined;\n }\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n var hooks = wrapConnectorHooks_1.default({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode &&\n shallowequal(options, currentDropTargetOptions)) {\n return;\n }\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n reconnectDropTarget();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createTargetConnector;\n});\n\nunwrapExports(createTargetConnector_1);\n\nvar DropTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' +\n 'a string, an array of strings, or a function that returns either given ' +\n 'the current props. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = createTargetFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget_1.default,\n createMonitor: createTargetMonitor_1.default,\n createConnector: createTargetConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DropTarget;\n});\n\nunwrapExports(DropTarget_1);\n\nvar lib$1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.DragDropContext = DragDropContext_1.DragDropContext;\nexports.DragDropContextProvider = DragDropContext_1.DragDropContextProvider;\n\nexports.DragLayer = DragLayer_1.default;\n\nexports.DragSource = DragSource_1.default;\n\nexports.DropTarget = DropTarget_1.default;\n});\n\nunwrapExports(lib$1);\nvar lib_1 = lib$1.DragDropContext;\nvar lib_2 = lib$1.DragDropContextProvider;\nvar lib_3 = lib$1.DragLayer;\nvar lib_4 = lib$1.DragSource;\nvar lib_5 = lib$1.DropTarget;\n\nvar css$1 = \".ExampleDropTarget {\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\\n width: 100%;\\n min-height: 100px;\\n\\n border: 2px dashed black;\\n padding: 20px;\\n transition: 0.2s all ease;\\n}\\n\\n.ExampleDropTarget h4,\\n.ExampleDropTarger p {\\n text-align: center;\\n word-break: break-word;\\n}\\n\\n.ExampleDropTarget.can-drop {\\n border: 2px dashed #20a5d6;\\n background-color: #fafafa;\\n color: black;\\n}\\n\\n.ExampleDropTarget.hovered {\\n border: 2px dashed #20a5d6;\\n background-color: black;\\n color: #91b9cd;\\n}\\n\";\nstyleInject(css$1);\n\n// if they have the same string type.\n\nvar Types = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget = {\n drop: function drop(props, monitor, component) {\n // Note: For this example we use setState, but in\n // OHIF we will update the redux store instead\n var item = monitor.getItem();\n component.setState({\n item: {\n id: item.id,\n seriesDescription: item.seriesDescription\n }\n });\n return {\n id: 'ExampleDropTarget'\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar ExampleDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ExampleDropTarget, _Component);\n\n function ExampleDropTarget() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ExampleDropTarget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ExampleDropTarget)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n item: null\n });\n\n return _this;\n }\n\n _createClass(ExampleDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = ExampleDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, React.createElement(\"h4\", null, isActive ? 'Release to drop' : 'Drag / Drop something from the Study Browser here'), React.createElement(\"p\", {\n className: \"study-drop-results\"\n }, this.state.item && JSON.stringify(this.state.item))));\n }\n }]);\n\n return ExampleDropTarget;\n}(Component);\n\n_defineProperty(ExampleDropTarget, \"className\", 'ExampleDropTarget');\n\n_defineProperty(ExampleDropTarget, \"defaultProps\", {\n isOver: false\n});\n\n_defineProperty(ExampleDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired\n});\n\nvar collect = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n};\n\nvar ExampleDropTarget$1 = lib_5(Types.THUMBNAIL, divTarget, collect)(ExampleDropTarget);\n\nvar css$2 = \".layoutChooser {\\n border: 1px solid rgba(77,99,110,0.81);\\n border-radius: 8px;\\n padding: 5px 0;\\n position: absolute;\\n z-index: 5000;\\n}\\n.layoutChooser .selectedBefore {\\n background-color: #5cc3eb;\\n}\\n.layoutChooser table {\\n margin: 0 auto;\\n}\\n.layoutChooser table td {\\n cursor: pointer;\\n}\\n.layoutChooser table td:hover,\\n.layoutChooser table td.hover {\\n background-color: #209ac9;\\n}\\n\";\nstyleInject(css$2);\n\n/**\n * Adds the 'hover' class to cells above and to the left of the current cell\n * This is used to \"fill in\" the grid that the user will change the layout to,\n * if they click on a specific table cell.\n **/\n\nvar LayoutChooser =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutChooser, _PureComponent);\n\n function LayoutChooser(props) {\n var _this;\n\n _classCallCheck(this, LayoutChooser);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayoutChooser).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isRange\", function (cell, parentCell) {\n return cell.row <= parentCell.row && cell.col <= parentCell.col;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"highlightCells\", function (currentCell) {\n var table = [];\n\n for (var row = 0; row < _this.props.rows; row++) {\n var newRow = [];\n\n for (var col = 0; col < _this.props.columns; col++) {\n var cell = {\n row: row,\n col: col\n };\n\n if (_this.isRange(cell, currentCell)) {\n cell.className = 'hover';\n } else if (_this.isRange(currentCell, _this.emptyCell) && _this.isRange(cell, _this.state.selectedCell)) {\n cell.className = 'selectedBefore';\n }\n\n newRow.push(cell);\n }\n\n table.push(newRow);\n }\n\n _this.setState({\n table: table\n });\n });\n\n _this.emptyCell = {\n row: -1,\n column: -1\n };\n _this.state = {\n table: [[]],\n selectedCell: _this.props.selectedCell\n };\n return _this;\n }\n\n _createClass(LayoutChooser, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.highlightCells(this.emptyCell);\n }\n }, {\n key: \"onClick\",\n value: function onClick(currentCell) {\n this.setState({\n selectedCell: currentCell\n });\n this.highlightCells(currentCell);\n\n if (this.props.onClick) {\n this.props.onClick(currentCell);\n }\n\n if (this.props.onChange) {\n this.props.onChange(currentCell);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var columns = this.props.columns;\n var style = {\n display: this.props.visible ? 'block' : 'none',\n minWidth: columns * this.props.boxSize + (columns + 5) * this.props.cellBorder\n };\n return React.createElement(\"div\", {\n className: \"layoutChooser pull-left dropdown-menu\",\n role: \"menu\",\n style: style\n }, React.createElement(\"table\", null, React.createElement(\"tbody\", null, this.state.table.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (cell, j) {\n return React.createElement(\"td\", {\n className: cell.className,\n style: {\n width: _this2.props.boxSize,\n height: _this2.props.boxSize,\n border: 'solid 1px black'\n },\n key: j,\n onMouseEnter: function onMouseEnter() {\n return _this2.highlightCells(cell);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.highlightCells(_this2.emptyCell);\n },\n onClick: function onClick() {\n return _this2.onClick(cell);\n }\n });\n }));\n }))));\n }\n }]);\n\n return LayoutChooser;\n}(PureComponent);\n\n_defineProperty(LayoutChooser, \"propTypes\", {\n rows: propTypes.number.isRequired,\n columns: propTypes.number.isRequired,\n visible: propTypes.bool.isRequired,\n selectedCell: propTypes.object,\n boxSize: propTypes.number.isRequired,\n cellBorder: propTypes.number.isRequired,\n onClick: propTypes.func,\n onChange: propTypes.func\n});\n\n_defineProperty(LayoutChooser, \"defaultProps\", {\n rows: 3,\n columns: 3,\n visible: true,\n boxSize: 20,\n cellBorder: 1,\n selectedCell: {\n row: -1,\n col: -1\n }\n});\n\nvar LayoutButton =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutButton, _PureComponent);\n\n function LayoutButton() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutButton);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutButton)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownVisible: _this.props.dropdownVisible\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (selectedCell) {\n if (_this.props.onChange) {\n _this.props.onChange(selectedCell);\n }\n });\n\n return _this;\n }\n\n _createClass(LayoutButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.dropdownVisible !== prevProps.dropdownVisible) {\n this.setState({\n dropdownVisible: this.props.dropdownVisible\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"layout\",\n type: \"button\",\n className: \"btn btn-sm btn-default dropdown-toggle\",\n \"data-container\": \"body\",\n \"data-toggle\": \"dropdown\",\n \"aria-expanded\": \"false\",\n \"data-placement\": \"right\",\n title: \"Layout\",\n rel: \"tooltip\",\n onClick: this.onClick\n }, React.createElement(\"span\", {\n className: \"fa fa-th-large\"\n })), React.createElement(LayoutChooser, {\n visible: this.state.dropdownVisible,\n onChange: this.onChange,\n onClick: this.onClick,\n selectedCell: this.props.selectedCell\n }));\n }\n }]);\n\n return LayoutButton;\n}(PureComponent);\nLayoutButton.defaultProps = {\n dropdownVisible: false\n};\nLayoutButton.propTypes = {\n dropdownVisible: propTypes.bool.isRequired,\n onChange: propTypes.func,\n selectedCell: propTypes.object\n};\n\nvar css$3 = \".viewport-container {\\n float: left;\\n\\n border: var(--viewport-border-thickness) solid var(--ui-border-color);\\n}\\n\\n.viewport-container.active {\\n border: var(--viewport-border-thickness) solid var(--active-color);\\n}\\n\\n.EmptyViewport {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n color: var(--text-secondary-color);\\n}\\n\";\nstyleInject(css$3);\n\nvar css$4 = \".LayoutPanelDropTarget {\\n width: 100%;\\n height: 100%;\\n\\n opacity: 1;\\n transition: 0.3s all ease;\\n}\\n\\n.LayoutPanelDropTarget.hovered {\\n opacity: 0.5;\\n}\\n\";\nstyleInject(css$4);\n\n// if they have the same string type.\n\nvar Types$1 = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget$1 = {\n drop: function drop(props, monitor, component) {\n var item = monitor.getItem();\n\n if (props.onDrop) {\n props.onDrop({\n viewportIndex: props.viewportIndex,\n item: item\n });\n }\n\n return {\n id: \"LayoutPanelDropTarget-\".concat(props.viewportIndex),\n viewportIndex: props.viewportIndex,\n item: item\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar LayoutPanelDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutPanelDropTarget, _Component);\n\n function LayoutPanelDropTarget() {\n _classCallCheck(this, LayoutPanelDropTarget);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LayoutPanelDropTarget).apply(this, arguments));\n }\n\n _createClass(LayoutPanelDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = LayoutPanelDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, this.props.children));\n }\n }]);\n\n return LayoutPanelDropTarget;\n}(Component);\n\n_defineProperty(LayoutPanelDropTarget, \"className\", 'LayoutPanelDropTarget');\n\n_defineProperty(LayoutPanelDropTarget, \"defaultProps\", {\n isOver: false,\n canDrop: false\n});\n\n_defineProperty(LayoutPanelDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired,\n viewportComponent: propTypes.object\n});\n\nvar collect$1 = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n canDrop: monitor.canDrop(),\n isOver: monitor.isOver()\n };\n};\n\nvar LayoutPanelDropTarget$1 = lib_5(Types$1.THUMBNAIL, divTarget$1, collect$1)(LayoutPanelDropTarget);\n\nfunction defaultViewportPlugin(props) {\n return React.createElement(\"div\", null, JSON.stringify(props));\n}\n\nfunction EmptyViewport() {\n return React.createElement(\"div\", {\n className: \"EmptyViewport\"\n }, React.createElement(\"p\", null, \"Please drag a stack here to view images.\"));\n}\n\nvar LayoutManager =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutManager, _Component);\n\n function LayoutManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDrop\", function (_ref) {\n var viewportIndex = _ref.viewportIndex,\n item = _ref.item;\n\n if (_this.props.setViewportData) {\n _this.props.setViewportData({\n viewportIndex: viewportIndex,\n item: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPluginComponent\", function (plugin) {\n var pluginComponent = _this.props.availablePlugins[plugin || _this.props.defaultPlugin];\n\n if (!pluginComponent) {\n throw new Error(\"No Viewport Plugin available for plugin \".concat(plugin, \". Available plugins: \").concat(JSON.stringify(_this.props.availablePlugins)));\n }\n\n return pluginComponent;\n });\n\n return _this;\n }\n\n _createClass(LayoutManager, [{\n key: \"getChildComponent\",\n value: function getChildComponent(plugin, data, viewportIndex) {\n if (data.displaySet) {\n var PluginComponent = this.getPluginComponent(plugin);\n return React.createElement(PluginComponent, {\n viewportData: data,\n viewportIndex: viewportIndex\n });\n }\n\n return React.createElement(EmptyViewport, null);\n }\n }, {\n key: \"getContent\",\n value: function getContent(childComponent, supportsDragAndDrop, viewportIndex) {\n if (supportsDragAndDrop) {\n return React.createElement(LayoutPanelDropTarget$1, {\n onDrop: this.onDrop,\n viewportIndex: viewportIndex\n }, childComponent);\n }\n\n return React.createElement(\"div\", {\n className: \"LayoutPanel\"\n }, childComponent);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!this.props.viewportData.length) {\n return '';\n }\n\n var _this$props = this.props,\n supportsDragAndDrop = _this$props.supportsDragAndDrop,\n studies = _this$props.studies,\n viewportData = _this$props.viewportData;\n var viewports = this.props.layout.viewports;\n var viewportElements = viewports.map(function (layout, viewportIndex) {\n var displaySet = viewportData[viewportIndex];\n var data = {\n displaySet: displaySet,\n studies: studies\n };\n\n var childComponent = _this2.getChildComponent(layout.plugin, data, viewportIndex);\n\n var content = _this2.getContent(childComponent, supportsDragAndDrop, viewportIndex);\n\n var className = 'viewport-container';\n\n if (_this2.props.activeViewportIndex === viewportIndex) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n key: viewportIndex,\n className: className,\n style: _objectSpread({}, layout)\n }, content);\n });\n return React.createElement(\"div\", {\n className: LayoutManager.className\n }, viewportElements);\n }\n }]);\n\n return LayoutManager;\n}(Component);\n\n_defineProperty(LayoutManager, \"className\", 'LayoutManager');\n\n_defineProperty(LayoutManager, \"defaultProps\", {\n viewportData: [],\n layout: {\n viewports: [{\n top: 0,\n left: 0,\n height: '100%',\n width: '100%'\n }]\n },\n activeViewportIndex: 0,\n supportsDragAndDrop: true,\n availablePlugins: {\n defaultViewportPlugin: defaultViewportPlugin\n },\n defaultPlugin: 'defaultViewportPlugin'\n});\n\n_defineProperty(LayoutManager, \"propTypes\", {\n viewportData: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n activeViewportIndex: propTypes.number.isRequired,\n layout: propTypes.object.isRequired,\n availablePlugins: propTypes.object.isRequired,\n setViewportData: propTypes.func,\n studies: propTypes.array\n});\n\nvar css$5 = \".tableList {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n}\\n.tableList .tableListHeader {\\n background-color: var(--ui-gray-darker);\\n color: var(--text-secondary-color);\\n fill: var(--text-secondary-color);\\n display: flex;\\n height: 63px;\\n line-height: 63px;\\n margin-top: 2px;\\n overflow: hidden;\\n width: 100%;\\n}\\n.tableList .tableListHeader .tableListHeaderTitle {\\n color: var(--text-secondary-color);\\n font-size: 22px;\\n font-weight: 300;\\n line-height: 63px;\\n padding: 0 10px;\\n text-align: left;\\n flex: 1;\\n}\\n.tableList .tableListHeader .numberOfItems {\\n color: var(--ui-sky-blue);\\n float: right;\\n font-weight: 300;\\n font-size: 40px;\\n max-width: 54px;\\n height: 63px;\\n line-height: 66px;\\n flex: 1;\\n}\\n\";\nstyleInject(css$5);\n\nvar TableList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableList, _Component);\n\n function TableList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getHeader\", function () {\n if (_this.props.customHeader) {\n return _this.props.customHeader;\n } else {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, _this.props.headerTitle), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, _this.props.children.length));\n }\n });\n\n return _this;\n }\n\n _createClass(TableList, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableList\"\n }, React.createElement(\"div\", {\n className: \"tableListHeader\",\n onClick: this.onHeaderClick\n }, this.getHeader()), React.createElement(\"div\", {\n className: \"tableListContent\"\n }, this.props.children));\n }\n }]);\n\n return TableList;\n}(Component);\n\n_defineProperty(TableList, \"propTypes\", {\n customHeader: propTypes.node,\n defaultItems: propTypes.object,\n children: propTypes.node.isRequired,\n headerTitle: propTypes.string\n});\n\nvar css$6 = \".tableListItem {\\n display: flex;\\n margin-left: -6px;\\n margin-top: 2px;\\n padding-left: 6px;\\n opacity: 0.7;\\n width: calc(100% + 6px);\\n}\\n.tableListItem:hover {\\n opacity: 1;\\n}\\n.tableListItem.selected {\\n opacity: 1;\\n}\\n.tableListItem.selected .itemIndex {\\n color: $activeColor;\\n}\\n.tableListItem .itemIndex {\\n background-color: var(--ui-gray);\\n color: var(--text-secondary-color);\\n cursor: pointer;\\n flex: 1;\\n max-width: 40px;\\n font-size: 14px;\\n font-weight: 400;\\n margin-right: 5px;\\n padding: 10px;\\n text-align: center;\\n}\\n.tableListItem .itemContent {\\n flex: 1;\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n margin-left: -2px;\\n}\\n\";\nstyleInject(css$6);\n\nvar TableListItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableListItem, _Component);\n\n function TableListItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableListItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableListItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event) {\n if (_this.props.onItemClick) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onItemClick(event, _this.props);\n }\n });\n\n return _this;\n }\n\n _createClass(TableListItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableListItem \".concat(this.props.itemClass),\n onClick: this.onItemClick\n }, React.createElement(\"div\", {\n className: \"itemIndex\"\n }, this.props.itemIndex + 1), React.createElement(\"div\", {\n className: \"itemContent\"\n }, this.props.children));\n }\n }]);\n\n return TableListItem;\n}(Component);\n\n_defineProperty(TableListItem, \"propTypes\", {\n children: propTypes.node,\n itemClass: propTypes.string,\n itemIndex: propTypes.number,\n onItemClick: propTypes.func.isRequired\n});\n\nvar css$7 = \".measurementItem .rowActions {\\n background-color: var(--ui-gray-darker);\\n height: 0;\\n overflow: hidden;\\n transition: all 0.3s ease;\\n visibility: hidden;\\n padding-left: 14px;\\n}\\n.measurementItem .rowActions .btnAction {\\n background-color: transparent;\\n border: none;\\n color: var(--default-color);\\n cursor: pointer;\\n line-height: 35px;\\n transition: all 0.3s ease;\\n}\\n.measurementItem .rowActions .btnAction:hover,\\n.measurementItem .rowActions .btnAction:active {\\n color: var(--text-primary-color);\\n}\\n.measurementItem .rowActions .btnAction i {\\n margin-right: 4px;\\n}\\n.measurementItem.selected .rowActions {\\n height: 35px;\\n visibility: visible;\\n}\\n.measurementItem .measurementLocation {\\n margin-left: 9px;\\n margin-top: 9px;\\n}\\n.measurementItem .measurementDisplayText {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n\";\nstyleInject(css$7);\n\nvar MeasurementTableItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTableItem, _Component);\n\n function MeasurementTableItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MeasurementTableItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MeasurementTableItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getDataDisplayText\", function () {\n return _this.props.measurementData.data.map(function (data, index) {\n return React.createElement(\"div\", {\n key: \"displayText_\".concat(index),\n className: \"measurementDisplayText\"\n }, data.displayText ? data.displayText : '...');\n });\n });\n\n return _this;\n }\n\n _createClass(MeasurementTableItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(TableListItem, {\n itemKey: this.props.itemKey,\n itemClass: \"measurementItem \".concat(this.props.itemClass),\n itemIndex: this.props.itemIndex,\n onItemClick: this.props.onItemClick\n }, React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"measurementLocation\"\n }, this.props.measurementData.label), React.createElement(\"div\", null, this.getDataDisplayText()), React.createElement(\"div\", {\n className: \"rowActions\"\n }, React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onRelabel\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Relabel\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onEditDescription\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Description\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onDelete\n }, React.createElement(\"i\", {\n className: \"fa fa-trash-o\"\n }), \"Delete\"))));\n }\n }]);\n\n return MeasurementTableItem;\n}(Component);\n\n_defineProperty(MeasurementTableItem, \"propTypes\", {\n measurementData: propTypes.object.isRequired,\n onItemClick: propTypes.func.isRequired,\n onRelabel: propTypes.func.isRequired,\n onDelete: propTypes.func.isRequired,\n onEditDescription: propTypes.func.isRequired,\n itemKey: propTypes.string.isRequired,\n itemClass: propTypes.string,\n itemIndex: propTypes.number\n});\n\nfunction throttled(delay, fn) {\n var lastCall = 0;\n return function () {\n var now = new Date().getTime();\n\n if (now - lastCall < delay) {\n return;\n }\n\n lastCall = now;\n return fn.apply(void 0, arguments);\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar css$8 = \".scrollArea {\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollArea .scrollable {\\n max-height: inherit;\\n overflow: hidden;\\n zoom: 1;\\n}\\n.scrollArea .scrollable.scrollX {\\n overflow-x: scroll;\\n}\\n.scrollArea .scrollable.scrollY {\\n overflow-y: scroll;\\n}\\n.scrollArea.fit {\\n height: 100%;\\n width: 100%;\\n}\\n.scrollArea.fit .scrollable {\\n bottom: 0;\\n left: 0;\\n max-height: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scrollArea .scrollNav {\\n background-color: rgba(0,0,0,0.75);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.75);\\n cursor: pointer;\\n height: 24px;\\n left: 10px;\\n opacity: 0;\\n position: absolute;\\n right: 10px;\\n transition: all 0.3s ease;\\n}\\n.scrollArea .scrollNav:after {\\n color: var(--active-color);\\n display: block;\\n font-family: FontAwesome;\\n font-size: 20px;\\n text-align: center;\\n transition: color 0.3s ease;\\n}\\n.scrollArea .scrollNav:hover {\\n background-color: rgba(0,0,0,0.9);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.9);\\n}\\n.scrollArea .scrollNav:hover:after {\\n color: var(--hover-color);\\n}\\n.scrollArea .scrollNavUp {\\n border-bottom-left-radius: 24px/2;\\n border-bottom-right-radius: 24px/2;\\n top: 0;\\n transform: ranslateY(-24px);\\n}\\n.scrollArea .scrollNavUp:after {\\n content: '\\\\f102';\\n}\\n.scrollArea .scrollNavDown {\\n border-top-left-radius: 24px/2;\\n border-top-right-radius: 24px/2;\\n bottom: 0;\\n transform: translateY(24px);\\n}\\n.scrollArea .scrollNavDown:after {\\n content: '\\\\f103';\\n}\\n.scrollArea.canScrollUp .scrollNavUp,\\n.scrollArea.canScrollDown .scrollNavDown {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\";\nstyleInject(css$8);\n\nvar ScrollableArea =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollableArea, _Component);\n\n function ScrollableArea(props) {\n var _this;\n\n _classCallCheck(this, ScrollableArea);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollableArea).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavDown\", function (event) {\n var _this$scrollableEleme = _this.scrollableElement,\n currentTop = _this$scrollableEleme.scrollTop,\n height = _this$scrollableEleme.offsetHeight,\n scrollHeight = _this$scrollableEleme.scrollHeight;\n var limit = scrollHeight - height;\n var scrollTop = currentTop + _this.props.scrollStep;\n scrollTop = scrollTop > limit ? limit : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavUp\", function (event) {\n var currentTop = _this.scrollableElement.scrollTop;\n var scrollTop = currentTop - _this.props.scrollStep;\n scrollTop = scrollTop < 0 ? 0 : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"adjustMargins\", function () {\n if (_this.props.hideScrollbar) {\n var x = _this.props.scrollX ? 1 : 0;\n var y = _this.props.scrollY ? 1 : 0;\n var scrollbarSize = getScrollbarSize();\n _this.scrollableElement.style.marginRight = \"\".concat(0 - scrollbarSize[0] * y, \"px\");\n _this.scrollableElement.style.marginBottom = \"\".concat(0 - scrollbarSize[1] * x, \"px\");\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollHandler\", function () {\n var _this$scrollableEleme2 = _this.scrollableElement,\n height = _this$scrollableEleme2.offsetHeight,\n scrollTop = _this$scrollableEleme2.scrollTop,\n scrollHeight = _this$scrollableEleme2.scrollHeight;\n var scrollAreaClasses = ''; // Stop here if unable to scroll\n\n if (scrollHeight <= height) return; // Check if can scroll up\n\n if (scrollTop) {\n scrollAreaClasses += 'canScrollUp';\n } // Check if can scroll down\n\n\n if (scrollTop + height < scrollHeight) {\n scrollAreaClasses += ' canScrollDown';\n }\n\n if (_this.state.scrollAreaClasses !== scrollAreaClasses) {\n _this.setState({\n scrollAreaClasses: scrollAreaClasses\n });\n }\n });\n\n _this.state = {\n scrollAreaClasses: ''\n };\n _this.scrollHandlerThrottled = throttled(150, _this.scrollHandler);\n return _this;\n }\n\n _createClass(ScrollableArea, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var scrollableClass = 'scrollable';\n\n if (this.props.scrollableClass) {\n scrollableClass += \" \".concat(this.props.scrollableClass);\n }\n\n if (this.props.scrollX) {\n scrollableClass += \" scrollX\";\n }\n\n if (this.props.scrollY) {\n scrollableClass += \" scrollY\";\n }\n\n return React.createElement(\"div\", {\n className: \"scrollArea \".concat(this.props.class, \" \").concat(this.state.scrollAreaClasses)\n }, React.createElement(\"div\", {\n className: scrollableClass,\n ref: function ref(element) {\n _this2.scrollableElement = element;\n },\n onScroll: this.scrollHandlerThrottled,\n onMouseEnter: this.scrollHandlerThrottled,\n onTransitionEnd: this.scrollHandlerThrottled\n }, this.props.children), React.createElement(\"div\", {\n className: \"scrollNav scrollNavUp\",\n onClick: this.scrollNavUp\n }), React.createElement(\"div\", {\n className: \"scrollNav scrollNavDown\",\n onClick: this.scrollNavDown\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.adjustMargins();\n this.scrollHandler();\n window.addEventListener('resize', this.adjustMargins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.adjustMargins);\n }\n }]);\n\n return ScrollableArea;\n}(Component);\n\n_defineProperty(ScrollableArea, \"propTypes\", {\n children: propTypes.node.isRequired,\n class: propTypes.string,\n scrollableClass: propTypes.string,\n scrollX: propTypes.bool,\n scrollY: propTypes.bool,\n hideScrollbar: propTypes.bool,\n scrollStep: propTypes.number\n});\n\n_defineProperty(ScrollableArea, \"defaultProps\", {\n hideScrollbar: true,\n class: 'flex-grow fit',\n scrollY: true,\n scrollX: false,\n scrollStep: 100\n});\n\nvar css$9 = \".measurementTable {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n.measurementTable .maxMeasurements {\\n border-radius: 3px;\\n color: var(--primary-background-color);\\n font-size: 12px;\\n font-weight: 500;\\n height: 19px;\\n line-height: 17px;\\n margin-top: 22px;\\n margin-right: 15px;\\n padding: 2px 6px 0;\\n text-transform: uppercase;\\n transition: all 0.3s ease;\\n background-color: var(--default-color);\\n}\\n.measurementTable .measurementTableHeader {\\n padding-left: 45px;\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem .timepointLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n}\\n\";\nstyleInject(css$9);\n\nvar MeasurementTable =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTable, _Component);\n\n function MeasurementTable(props) {\n var _this;\n\n _classCallCheck(this, MeasurementTable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MeasurementTable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurementsGroups\", function () {\n return _this.props.measurementCollection.map(function (measureGroup, index) {\n return React.createElement(TableList, {\n key: index,\n customHeader: _this.getCustomHeader(measureGroup)\n }, _this.getMeasurements(measureGroup));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurements\", function (measureGroup) {\n return measureGroup.measurements.map(function (measurement, index) {\n var key = \"\".concat(measureGroup.groupName, \"_\").concat(index);\n return React.createElement(MeasurementTableItem, {\n key: key,\n itemIndex: index,\n itemKey: key,\n itemClass: _this.state.selectedKey === key ? 'selected' : '',\n measurementData: measurement,\n onItemClick: _this.onItemClick,\n onRelabel: function onRelabel() {\n alert('relabel');\n },\n onDelete: function onDelete() {\n alert('delete');\n },\n onEditDescription: function onEditDescription() {\n alert('editDescription');\n }\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getCustomHeader\", function (measureGroup) {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, measureGroup.groupName), measureGroup.maxMeasurements && React.createElement(\"div\", {\n className: \"maxMeasurements\"\n }, \"MAX \", measureGroup.maxMeasurements), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, measureGroup.measurements.length));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTimepointsHeader\", function () {\n return _this.props.timepoints.map(function (timepoint, index) {\n return React.createElement(\"div\", {\n key: index,\n className: \"measurementTableHeaderItem\"\n }, React.createElement(\"div\", {\n className: \"timepointLabel\"\n }, timepoint.label), React.createElement(\"div\", {\n className: \"timepointDate\"\n }, timepoint.date));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event, itemProps) {\n _this.setState({\n selectedKey: itemProps.itemKey\n });\n });\n\n _this.state = {\n selectedKey: null\n };\n return _this;\n }\n\n _createClass(MeasurementTable, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"measurementTable\"\n }, React.createElement(\"div\", {\n className: \"measurementTableHeader\"\n }, this.getTimepointsHeader()), React.createElement(ScrollableArea, null, React.createElement(\"div\", null, this.getMeasurementsGroups())));\n }\n }]);\n\n return MeasurementTable;\n}(Component);\n\n_defineProperty(MeasurementTable, \"propTypes\", {\n measurementCollection: propTypes.array.isRequired,\n timepoints: propTypes.array.isRequired\n});\n\nvar PlayClipButton =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PlayClipButton, _Component);\n\n function PlayClipButton() {\n _classCallCheck(this, PlayClipButton);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PlayClipButton).apply(this, arguments));\n }\n\n _createClass(PlayClipButton, [{\n key: \"render\",\n value: function render() {\n var playClass = 'fa-stop';\n\n if (this.props.isPlaying) {\n playClass = 'fa-play';\n }\n\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"playClip\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Play/Stop Clip\"\n }, React.createElement(\"span\", {\n className: \"fa \".concat(playClass)\n })), React.createElement(\"button\", {\n id: \"toggleCineDialog\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Toggle CINE Dialog\"\n }, React.createElement(\"span\", {\n className: \"fa fa-youtube-play\"\n })));\n }\n }]);\n\n return PlayClipButton;\n}(Component);\nPlayClipButton.propTypes = {\n isPlaying: propTypes.bool.isRequired\n};\nPlayClipButton.defaultProps = {\n isPlaying: false\n};\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css$a = \".RoundedButtonGroup {\\n --height: 25px;\\n\\n position: relative;\\n z-index: 0;\\n}\\n\\n.roundedButtonWrapper {\\n cursor: pointer;\\n display: inline-block;\\n float: left;\\n margin-left: -2px;\\n text-decoration: none;\\n text-align: center;\\n}\\n\\n.roundedButtonWrapper.disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper .roundedButton {\\n align-items: center;\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--ui-border-color-dark);\\n color: var(--text-secondary-color);\\n display: flex;\\n font-size: 11px;\\n font-weight: 500;\\n justify-content: center;\\n height: var(--height);\\n line-height: var(--height);\\n padding: 0 22px;\\n position: relative;\\n text-transform: uppercase;\\n transition: var(--sidebar-transition);\\n z-index: 1;\\n}\\n\\n.roundedButtonWrapper .roundedButton svg {\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n\\n.roundedButtonWrapper\\n .roundedButton\\n svg\\n .roundedButtonWrapper\\n .roundedButton\\n span {\\n margin: 0 2px;\\n}\\n\\n.roundedButtonWrapper .roundedButton i {\\n line-height: 15px;\\n font-size: 15px;\\n}\\n\\n.bottomLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n font-weight: 500;\\n line-height: 12px;\\n margin-top: 8px;\\n}\\n\\n.roundedButtonWrapper:first-child {\\n margin-left: 0;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:first-child .roundedButton {\\n border-bottom-left-radius: var(--height);\\n border-top-left-radius: var(--height);\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:last-child .roundedButton {\\n border-bottom-right-radius: var(--height);\\n border-top-right-radius: var(--height);\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton {\\n background-color: var(--box-background-color);\\n color: var(--ui-gray-dark);\\n}\\n\\n.roundedButtonWrapper.active .roundedButton {\\n background-color: var(--active-color);\\n border-color: var(--ui-border-color-active);\\n color: var(--ui-gray-dark);\\n z-index: 2;\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton svg,\\n.roundedButtonWrapper.active .roundedButton svg {\\n fill: var(--ui-gray-dark);\\n stroke: var(--ui-gray-dark);\\n}\\n\";\nstyleInject(css$a);\n\nvar RoundedButtonGroup =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RoundedButtonGroup, _Component);\n\n function RoundedButtonGroup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RoundedButtonGroup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RoundedButtonGroup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickOption\", function (value) {\n var newValue = value;\n\n if (_this.props.value === value) {\n newValue = null;\n }\n\n if (_this.props.onValueChanged) {\n _this.props.onValueChanged(newValue);\n }\n });\n\n return _this;\n }\n\n _createClass(RoundedButtonGroup, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classnames(RoundedButtonGroup.className, 'clearfix center-table');\n var buttons = this.props.options.map(function (option, index) {\n var className = classnames({\n roundedButtonWrapper: true,\n noselect: true,\n active: _this2.props.value === option.value\n });\n var optionSVG;\n\n if (option.svgLink) {\n var svgStyle = {\n width: \"\".concat(option.svgWidth, \"px\"),\n height: \"\".concat(option.svgHeight, \"px\")\n };\n optionSVG = React.createElement(\"svg\", {\n style: svgStyle\n }, React.createElement(\"use\", {\n xlinkHref: option.svgLink\n }));\n }\n\n var optionText = option.text && React.createElement(\"span\", null, option.text);\n var optionIcon = option.iconClasses && React.createElement(\"i\", {\n className: option.iconClasses\n });\n var bottomLabel = option.bottomLabel && React.createElement(\"div\", {\n className: \"bottomLabel\"\n }, option.bottomLabel);\n return React.createElement(\"div\", {\n key: index,\n className: className,\n onClick: function onClick() {\n return _this2.onClickOption(option.value);\n }\n }, React.createElement(\"div\", {\n className: \"roundedButton\"\n }, optionSVG, optionText, optionIcon), bottomLabel);\n });\n return React.createElement(\"div\", {\n className: className\n }, buttons);\n }\n }]);\n\n return RoundedButtonGroup;\n}(Component);\n\n_defineProperty(RoundedButtonGroup, \"className\", 'RoundedButtonGroup');\n\n_defineProperty(RoundedButtonGroup, \"propTypes\", {\n options: propTypes.array,\n value: propTypes.string,\n onValueChanged: propTypes.func\n});\n\n_defineProperty(RoundedButtonGroup, \"defaultProps\", {\n options: [],\n value: null\n});\n\nvar css$b = \".dd-menu {\\n float: left;\\n margin-right: 10px;\\n cursor: pointer;\\n position: relative;\\n z-index: 999;\\n}\\n\\n.dd-title {\\n font-size: 13px;\\n}\\n\\n.dd-menu-toggle {\\n display: inline-block;\\n}\\n\\n.dd-caret-down {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-top: 0.5rem;\\n margin-left: 0.5rem;\\n border-top: 5px solid;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n}\\n\\n.dd-menu-list {\\n position: absolute;\\n top: 100%;\\n margin-top: 10px;\\n background: white;\\n border-radius: 5px;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n overflow: hidden;\\n transition: all 300ms ease;\\n -webkit-transition: all 300ms ease;\\n -moz-transition: all 300ms ease;\\n -ms-transition: all 300ms ease;\\n -o-transition: all 300ms ease;\\n}\\n\\n.dd-menu-list.open {\\n display: inline-block;\\n}\\n\\n.dd-menu-list.left {\\n left: 0;\\n}\\n\\n.dd-menu-list.right {\\n right: 0;\\n}\\n\\n.dd-menu-list.center {\\n left: 50%;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n -moz-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n}\\n\\n.dd-item {\\n display: flex;\\n color: var(--text-color-active);\\n padding: 10px 15px;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.dd-item:hover {\\n text-decoration: none;\\n background: #eee;\\n}\\n\\n.dd-item:last-child {\\n border-bottom: none;\\n}\\n\\n.dd-item-icon {\\n width: 10px;\\n text-align: center;\\n margin-right: 10px;\\n}\\n\\n.dd-item-icon:before {\\n vertical-align: middle;\\n}\\n\";\nstyleInject(css$b);\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Dropdown, _Component);\n\n function Dropdown() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Dropdown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Dropdown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n open: false\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderList\", function () {\n var _this$props = _this.props,\n list = _this$props.list,\n align = _this$props.align;\n\n if (!_this.state.open) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"dd-menu-list \".concat(align || 'left')\n }, list.map(function (_ref, key) {\n var icon = _ref.icon,\n title = _ref.title,\n link = _ref.link,\n _onClick = _ref.onClick;\n return React.createElement(\"a\", {\n href: link || '#',\n key: key,\n className: \"dd-item\",\n onClick: function onClick() {\n return _this.handleOnClick(_onClick);\n }\n }, icon && React.createElement(\"span\", {\n className: \"dd-item-icon \".concat(icon)\n }), React.createElement(\"span\", null, title));\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleOnClick\", function (onClick) {\n _this.toggleList();\n\n if (onClick) {\n onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMouseClick\", function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n _this.toggleList();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderTitleElement\", function () {\n var _this$props2 = _this.props,\n titleElement = _this$props2.titleElement,\n title = _this$props2.title;\n\n if (titleElement) {\n return titleElement;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"span\", {\n className: \"dd-title\"\n }, title), React.createElement(\"span\", {\n className: \"dd-caret-down\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"toggleList\", function () {\n var open = _this.state.open;\n var state = true;\n document.addEventListener('mousedown', _this.handleMouseClick, false);\n\n if (open) {\n document.removeEventListener('mousedown', _this.handleMouseClick, false);\n state = false;\n }\n\n _this.setState({\n open: state\n });\n });\n\n return _this;\n }\n\n _createClass(Dropdown, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", {\n className: \"dd-menu\",\n ref: function ref(node) {\n return _this2.node = node;\n }\n }, React.createElement(\"div\", {\n className: \"dd-menu-toggle\",\n onClick: this.toggleList\n }, this.renderTitleElement()), this.renderList());\n }\n }]);\n\n return Dropdown;\n}(Component);\n\n_defineProperty(Dropdown, \"propTypes\", {\n titleElement: propTypes.node,\n title: propTypes.string,\n align: propTypes.oneOf(['left', 'center', 'right']),\n list: propTypes.arrayOf(propTypes.shape({\n title: propTypes.string.isRequired,\n icon: propTypes.string,\n onClick: propTypes.func,\n link: propTypes.string\n }))\n});\n\nvar InputRadio =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InputRadio, _Component);\n\n function InputRadio() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, InputRadio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(InputRadio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (evt) {\n _this.props.onSelected(evt, _this.props.itemData);\n });\n\n return _this;\n }\n\n _createClass(InputRadio, [{\n key: \"render\",\n value: function render() {\n var labelClass = this.props.labelClass ? this.props.labelClass : '';\n return React.createElement(\"label\", {\n className: 'wrapperLabel radioLabel ' + labelClass,\n htmlFor: this.props.id\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: this.props.id,\n className: \"radioInput\",\n value: this.props.value,\n onChange: this.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, this.props.label));\n }\n }]);\n\n return InputRadio;\n}(Component);\n\nInputRadio.propTypes = {\n value: propTypes.string,\n label: propTypes.string.isRequired,\n itemData: propTypes.object.isRequired,\n labelClass: propTypes.string,\n id: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar SelectTreeBreadcrumb =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTreeBreadcrumb, _Component);\n\n function SelectTreeBreadcrumb() {\n _classCallCheck(this, SelectTreeBreadcrumb);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SelectTreeBreadcrumb).apply(this, arguments));\n }\n\n _createClass(SelectTreeBreadcrumb, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"selectTreeBreadcrumb\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel radioLabel\",\n htmlFor: \"selectTreeBreadcrumb\"\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: \"selectTreeBreadcrumb\",\n className: \"treeNode radioInput\",\n value: this.props.value,\n onChange: this.props.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, React.createElement(\"span\", {\n className: \"backIcon\"\n }, React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: \"/icons.svg#fast-backward\"\n }))), this.props.label)));\n }\n }]);\n\n return SelectTreeBreadcrumb;\n}(Component);\n\nSelectTreeBreadcrumb.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar css$c = \".selectTreeRoot {\\n text-align: initial;\\n width: 320px;\\n max-height: inherit;\\n font-size: 14px;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeContent {\\n max-height: inherit;\\n overflow: hidden;\\n border: 1px solid #c4c4c4;\\n border-radius: 5px;\\n background-color: #fff;\\n display: flex;\\n flex-direction: column;\\n}\\n.selectTreeRoot .treeHeader {\\n background-color: #c0c0c0;\\n border-bottom: 1px solid #c4c4c4;\\n color: #303030;\\n padding: 5px;\\n text-align: center;\\n}\\n.selectTreeRoot .treeHeader .wrapperText {\\n font-weight: bold;\\n padding-bottom: 2px;\\n}\\n.selectTreeRoot .treeHeader .wrapperSearch {\\n width: 100%;\\n}\\n.selectTreeRoot .treeHeader .searchIcon {\\n position: absolute;\\n width: 18px;\\n height: 15px;\\n margin: 10px;\\n color: #a3a3a3;\\n}\\n.selectTreeRoot .treeHeader .searchInput {\\n width: 100%;\\n height: 34px;\\n padding: 6px 12px 6px 35px;\\n background-color: #fff;\\n background-image: none;\\n border: 1px solid #9b9b9b;\\n border-radius: 4px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n color: #555;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.selectTreeRoot .treeHeader .searchInput:focus {\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6);\\n}\\n.selectTreeRoot .wrapperText {\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .wrapperLabel {\\n cursor: pointer;\\n padding: 0 12px;\\n height: 41px;\\n width: 100%;\\n line-height: 41px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon {\\n padding-right: 10px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon svg {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n top: 2px;\\n color: #457fb0;\\n}\\n.selectTreeRoot .treeOptions {\\n overflow: auto;\\n height: 100%;\\n}\\n.selectTreeRoot .treeOptions .selectTreeBreadcrumb + .treeInputsWrapper .treeInputs .treeLeaf {\\n border: none;\\n height: initial;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeOptions > .treeInputsWrapper > .treeInputs .treeLeaf {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .treeNode,\\n.selectTreeRoot .treeLeaf {\\n cursor: pointer;\\n display: block;\\n overflow: hidden;\\n font-weight: normal;\\n box-shadow: 0 0 0 200px transparent;\\n padding: 0 12px;\\n}\\n.selectTreeRoot .treeNode {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .radioLabel .radioInput {\\n display: none;\\n}\\n\";\nstyleInject(css$c);\n\nvar SelectTree =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTree, _Component);\n\n function SelectTree(props) {\n var _this;\n\n _classCallCheck(this, SelectTree);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTree).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"componentDidUpdate\", function () {\n _this.props.onComponentChange();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isLeafSelected\", function (item) {\n return item && !Array.isArray(item.items);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getLabelClass\", function (item) {\n var labelClass = 'treeLeaf';\n\n if (_this.state.searchTerm || Array.isArray(item.items)) {\n labelClass = 'treeNode';\n }\n\n return labelClass;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"headerItem\", function () {\n var title = _this.props.selectTreeFirstTitle;\n\n if (_this.state.currentNode && _this.props.selectTreeSecondTitle) {\n title = _this.props.selectTreeSecondTitle;\n }\n\n return React.createElement(\"div\", {\n className: \"wrapperLabel treeHeader\"\n }, React.createElement(\"div\", {\n className: \"wrapperText\"\n }, title), _this.props.searchEnabled && React.createElement(\"div\", {\n className: \"wrapperSearch\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-search searchIcon\"\n }), React.createElement(\"input\", {\n type: \"text\",\n className: \"searchInput\",\n placeholder: \"Search labels\",\n autoFocus: true,\n onChange: _this.searchLocations,\n value: _this.state.searchTerm ? _this.state.searchTerm : ''\n })));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"searchLocations\", function (evt) {\n _this.setState({\n currentNode: null,\n searchTerm: evt.currentTarget.value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (event, item) {\n if (_this.isLeafSelected(item)) {\n _this.setState({\n searchTerm: null,\n currentNode: null,\n value: null\n });\n\n return _this.props.onSelected(event, item);\n } else {\n _this.setState({\n currentNode: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onBreadcrumbSelected\", function () {\n _this.setState({\n currentNode: null\n });\n });\n\n _this.state = {\n searchTerm: null,\n currentNode: null,\n value: null\n };\n return _this;\n }\n\n _createClass(SelectTree, [{\n key: \"render\",\n value: function render() {\n var treeItems = this.getTreeItems();\n return React.createElement(\"div\", {\n className: \"selectTree selectTreeRoot\"\n }, React.createElement(\"div\", {\n className: \"treeContent\"\n }, this.headerItem(), React.createElement(\"div\", {\n className: \"treeOptions\"\n }, this.state.currentNode && React.createElement(SelectTreeBreadcrumb, {\n onSelected: this.onBreadcrumbSelected,\n label: this.state.currentNode.label,\n value: this.state.currentNode.value\n }), React.createElement(\"div\", {\n className: \"treeInputsWrapper\"\n }, React.createElement(\"div\", {\n className: \"treeInputs\"\n }, treeItems)))));\n }\n }, {\n key: \"getTreeItems\",\n value: function getTreeItems() {\n var _this2 = this;\n\n var storageKey = 'SelectTree';\n var treeItems;\n\n if (this.state.searchTerm) {\n var filteredItems = [];\n var rawItems = lodash_clonedeep(this.props.items);\n rawItems.forEach(function (item) {\n if (Array.isArray(item.items)) {\n item.items.forEach(function (item) {\n var label = item.label.toLowerCase();\n\n var searchTerm = _this2.state.searchTerm.toLowerCase();\n\n if (label.indexOf(searchTerm) !== -1) {\n filteredItems.push(item);\n }\n });\n }\n });\n treeItems = filteredItems;\n } else if (this.state.currentNode) {\n treeItems = lodash_clonedeep(this.state.currentNode.items);\n } else {\n treeItems = lodash_clonedeep(this.props.items);\n }\n\n return treeItems.map(function (item, index) {\n var itemKey = index;\n\n if (_this2.state.currentNode) {\n itemKey += \"_\".concat(_this2.state.currentNode.value);\n }\n\n return React.createElement(InputRadio, {\n key: itemKey,\n id: \"\".concat(storageKey, \"_\").concat(item.value),\n name: index,\n itemData: item,\n value: item.value,\n label: item.label,\n labelClass: _this2.getLabelClass(item),\n onSelected: _this2.onSelected\n });\n });\n }\n }]);\n\n return SelectTree;\n}(Component);\n\n_defineProperty(SelectTree, \"defaultProps\", {\n searchEnabled: true,\n selectTreeFirstTitle: 'First Level itens',\n items: []\n});\n\nSelectTree.propTypes = {\n searchEnabled: propTypes.bool,\n selectTreeFirstTitle: propTypes.string,\n selectTreeSecondTitle: propTypes.string,\n onComponentChange: propTypes.func,\n items: propTypes.array.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar css$d = \".simpleDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n z-index: 1000;\\n border: 0;\\n border-radius: 6px;\\n background-color: var(--ui-gray-darker);\\n}\\n.simpleDialog .header {\\n border-bottom: 3px solid var(--primary-background-color);\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.simpleDialog .header .title {\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 24px;\\n padding-right: 40px;\\n color: var(--text-secondary-color);\\n margin: 0;\\n}\\n.simpleDialog .header .closeBtn {\\n -webkit-transform: translateY(-50%);\\n color: var(--text-secondary-color);\\n height: 20px;\\n opacity: 1;\\n overflow: hidden;\\n padding: 2px;\\n position: absolute;\\n right: 21px;\\n text-align: center;\\n text-shadow: none;\\n top: 50%;\\n transform: translateY(-50%);\\n transition: color 0.3s ease;\\n width: 20px;\\n}\\n.simpleDialog .header .closeIcon {\\n color: transparent;\\n display: block;\\n font-size: 0;\\n height: 100%;\\n line-height: 0;\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n}\\n.simpleDialog .header .closeIcon:after,\\n.simpleDialog .header .closeIcon:before {\\n content: ' ';\\n display: block;\\n height: 2px;\\n transition: background-color 0.3s ease;\\n width: 19px;\\n background-color: var(--text-secondary-color);\\n}\\n.simpleDialog .header .closeIcon:before {\\n left: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n -webkit-transform-origin: 1px 50%;\\n transform-origin: 1px 50%;\\n}\\n.simpleDialog .header .closeIcon:after {\\n right: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-transform-origin: calc(100% - 1px) 50%;\\n transform-origin: calc(100% - 1px) 50%;\\n}\\n.simpleDialog .content {\\n padding: 16px 22px 25px;\\n position: relative;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .content .simpleDialogSelect,\\n.simpleDialog .content .simpleDialogInput {\\n background-color: var(--input-background-color);\\n color: var(--text-primary-color);\\n border: 0;\\n border-radius: 2px;\\n font-size: 14px;\\n height: 30px;\\n width: 100%;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n margin-top: 10px;\\n display: block;\\n}\\n.simpleDialog .content .simpleDialogLabelFor {\\n font-size: 14px;\\n font-weight: 700;\\n line-height: 16px;\\n margin: 10px 0 0 0;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .footer {\\n padding: 15px;\\n text-align: right;\\n}\\n.simpleDialog .footer .btn {\\n margin-left: 5px;\\n}\\n\";\nstyleInject(css$d);\n\nvar SimpleDialog =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SimpleDialog, _Component);\n\n function SimpleDialog() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SimpleDialog);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SimpleDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClose\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onClose();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onConfirm\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onConfirm();\n });\n\n return _this;\n }\n\n _createClass(SimpleDialog, [{\n key: \"render\",\n value: function render() {\n return React.createElement(React.Fragment, null, this.props.isOpen && React.createElement(\"div\", {\n className: \"simpleDialog \".concat(this.props.rootClass, \" \"),\n ref: this.props.componentRef,\n style: this.props.componentStyle\n }, React.createElement(\"form\", null, React.createElement(\"div\", {\n className: \"header\"\n }, React.createElement(\"span\", {\n className: \"closeBtn\",\n onClick: this.onClose\n }, React.createElement(\"span\", {\n className: \"closeIcon\"\n }, \"x\")), React.createElement(\"h4\", {\n className: \"title\"\n }, this.props.headerTitle)), React.createElement(\"div\", {\n className: \"content\"\n }, this.props.children), React.createElement(\"div\", {\n className: \"footer\"\n }, React.createElement(\"button\", {\n className: \"btn btn-default\",\n onClick: this.onClose\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.onConfirm\n }, \"Confirm\")))));\n }\n }]);\n\n return SimpleDialog;\n}(Component);\n\n_defineProperty(SimpleDialog, \"defaultProps\", {\n isOpen: true,\n componentStyle: {},\n rootClass: ''\n});\n\nSimpleDialog.propTypes = {\n headerTitle: propTypes.string.isRequired,\n onClose: propTypes.func.isRequired,\n onConfirm: propTypes.func.isRequired\n};\n\nfunction ViewportLoadingIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, \"Loading \", props.percentComplete);\n}\nViewportLoadingIndicator.propTypes = {\n percentComplete: propTypes.number\n};\n\nfunction ViewportErrorIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, React.createElement(\"p\", null, \"Error\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, props.details));\n}\nViewportErrorIndicator.propTypes = {\n details: propTypes.string\n};\n\nvar css$e = \":root {\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n --primary-background-color: #000;\\n --ui-border-color-dark: #3c5d80;\\n --sidebar-transition: all 0.3s ease;\\n}\\n.ThumbnailEntry.active .ImageThumbnail {\\n border-color: var(--active-color);\\n box-shadow: none;\\n transition: var(--sidebar-transition);\\n}\\n.ImageThumbnail {\\n background-color: var(--primary-background-color);\\n box-shadow: inset 0 0 0 1px var(--ui-border-color-dark);\\n border: 5px solid transparent;\\n border-radius: 12px;\\n height: 135px;\\n margin: 0 auto;\\n padding: 5px;\\n position: relative;\\n transition: var(--sidebar-transition);\\n width: 217px;\\n -moz-background-clip: padding;\\n -webkit-background-clip: padding;\\n background-clip: padding-box;\\n}\\n.image-thumbnail-canvas {\\n height: 100%;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n}\\n.image-thumbnail-canvas img {\\n -webkit-user-drag: none;\\n}\\n.thumbnailLoadingIndicator {\\n display: none;\\n pointer-events: none;\\n color: var(--text-secondary-color);\\n height: 20px;\\n width: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n margin: auto;\\n position: absolute;\\n}\\n.thumbnailLoadingIndicator.d-block {\\n display: block;\\n}\\n.thumbnailLoadingIndicator p {\\n text-align: center;\\n font-size: 10pt;\\n}\\n.image-thumbnail-progress-bar {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n top: -5px;\\n}\\n.image-thumbnail-progress-bar .image-thumbnail-progress-bar-inner {\\n height: 100%;\\n width: 0;\\n border-radius: 5px;\\n background-color: var(--active-color);\\n}\\n\";\nstyleInject(css$e);\n\n// - Passed in as a prop?\n// - Set as external dependency?\n// - Pass in the entire load and render function as a prop?\n//import cornerstone from 'cornerstone-core';\n\n/**\n * Asynchronous wrapper around Cornerstone's renderToCanvas method.\n *\n * @param {HTMLElement} canvasElement An HTML element\n * @param {Image} image A Cornerstone Image\n *\n * @return {Promise} A promise tracking the progress of the rendering. Resolves empty.\n */\n\nfunction renderAsync(canvasElement, image) {\n return new Promise(function (resolve, reject) {\n try {\n cornerstone.renderToCanvas(canvasElement, image);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nvar ImageThumbnail =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageThumbnail, _PureComponent);\n\n function ImageThumbnail(props) {\n var _this;\n\n _classCallCheck(this, ImageThumbnail);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageThumbnail).call(this, props));\n _this.canvas = React.createRef();\n var renderIntoCanvas = _this.props.imageId && !_this.props.imageSrc;\n _this.state = {\n loading: renderIntoCanvas\n };\n return _this;\n }\n\n _createClass(ImageThumbnail, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n\n if (renderIntoCanvas) {\n var imageId = this.props.imageId;\n var canvas = this.canvas.current;\n cornerstone.loadAndCacheImage(imageId).then(function (image) {\n renderAsync(canvas, image).then(function () {\n _this2.setState({\n loading: false\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var loadingOrError;\n\n if (this.props.error) {\n loadingOrError = React.createElement(ViewportErrorIndicator, null);\n } else if (this.state.loading) {\n loadingOrError = React.createElement(ViewportLoadingIndicator, null);\n }\n\n var showStackLoadingProgressBar = this.props.stackPercentComplete !== undefined;\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n return React.createElement(\"div\", {\n className: \"ImageThumbnail\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-canvas\"\n }, renderIntoCanvas ? React.createElement(\"canvas\", {\n ref: this.canvas,\n width: this.props.width,\n height: this.props.height\n }) : React.createElement(\"img\", {\n className: \"static-image\",\n src: this.props.imageSrc //width={this.props.width}\n ,\n height: this.props.height,\n alt: ''\n })), loadingOrError, showStackLoadingProgressBar && React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar-inner\",\n style: {\n width: \"\".concat(this.props.stackPercentComplete, \"%\")\n }\n })));\n }\n }]);\n\n return ImageThumbnail;\n}(PureComponent);\n\n_defineProperty(ImageThumbnail, \"propTypes\", {\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n width: propTypes.number.isRequired,\n height: propTypes.number.isRequired,\n stackPercentComplete: propTypes.number.isRequired\n});\n\n_defineProperty(ImageThumbnail, \"defaultProps\", {\n error: false,\n stackPercentComplete: 0,\n width: 217,\n height: 123\n});\n\nvar css$f = \":root {\\n --series-count-background-color: #678696;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n}\\n.ThumbnailEntry {\\n cursor: pointer;\\n display: table;\\n}\\n.ThumbnailEntry .p-x-1 {\\n padding: 0 1rem;\\n}\\n.ThumbnailEntry .series-details {\\n display: flex;\\n flex-direction: row;\\n color: var(--text-primary-color);\\n font-size: 14px;\\n line-height: 1.3em;\\n margin-top: 5px;\\n margin-left: 1rem;\\n margin-right: 1rem;\\n max-width: 217px;\\n min-height: 36px;\\n position: relative;\\n word-wrap: break-word;\\n}\\n.ThumbnailEntry .series-details .series-description {\\n flex-grow: 1;\\n}\\n.ThumbnailEntry .series-details.info-only .series-description {\\n display: none;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information {\\n display: flex;\\n flex-grow: 1;\\n float: none;\\n max-width: none;\\n padding-right: 0;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item {\\n flex: 1;\\n text-align: center;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .icon,\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n display: inline;\\n float: none;\\n line-height: 25px;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n margin-left: 0;\\n width: auto;\\n}\\n.ThumbnailEntry .series-information {\\n padding-right: 4px;\\n max-width: 50px;\\n}\\n.ThumbnailEntry .series-information .item-frames .icon {\\n height: 18px;\\n}\\n.ThumbnailEntry .series-information .value {\\n color: var(--text-secondary-color);\\n display: inline-block;\\n float: right;\\n font-size: 12px;\\n margin-left: 4px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: calc(100% - 15px);\\n}\\n.ThumbnailEntry .series-information .icon {\\n color: var(--active-color);\\n display: inline-block;\\n float: left;\\n font-size: 10px;\\n font-weight: 900;\\n text-align: right;\\n width: 11px;\\n}\\n.ThumbnailEntry .series-information .icon div {\\n background-color: var(--series-count-background-color);\\n margin-top: 6px;\\n position: relative;\\n}\\n.ThumbnailEntry .series-information .icon div:after {\\n background-color: var(--active-color);\\n box-shadow: 1px 1px rgba(0,0,0,0.115);\\n left: -5px;\\n position: absolute;\\n top: -5px;\\n}\\n.ThumbnailEntry .series-information .icon div,\\n.ThumbnailEntry .series-information .icon div:after {\\n border: 1px solid var(--series-count-background-color);\\n content: '';\\n display: inline-block;\\n height: 11px;\\n width: 11px;\\n}\\n.image-thumbnail-clone {\\n z-index: 100000;\\n pointer-events: none;\\n}\\n.image-thumbnail-clone:hover {\\n border-color: var(--hover-color);\\n box-shadow: none;\\n}\\n\";\nstyleInject(css$f);\n\nvar ThumbnailEntry =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntry, _Component);\n\n function ThumbnailEntry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThumbnailEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThumbnailEntry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n if (_this.props.onClick) {\n _this.props.onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDoubleClick\", function () {\n if (_this.props.onDoubleClick) {\n _this.props.onDoubleClick();\n }\n });\n\n return _this;\n }\n\n _createClass(ThumbnailEntry, [{\n key: \"render\",\n value: function render() {\n var hasInstanceNumber = this.props.instanceNumber !== undefined;\n var className = classnames('ThumbnailEntry noselect', {\n active: this.props.active\n });\n return React.createElement(\"div\", {\n className: className,\n onClick: this.onClick,\n onDoubleClick: this.onDoubleClick,\n onMouseDown: this.onMouseDown\n }, React.createElement(\"div\", {\n className: \"p-x-1\"\n }, React.createElement(ImageThumbnail, {\n imageSrc: this.props.imageSrc,\n imageId: this.props.imageId,\n error: this.props.error,\n stackPercentComplete: this.props.stackPercentComplete\n })), React.createElement(\"div\", {\n className: 'series-details'\n }, React.createElement(\"div\", {\n className: \"series-description\"\n }, this.props.seriesDescription), React.createElement(\"div\", {\n className: \"series-information\"\n }, React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"S:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.seriesNumber)), hasInstanceNumber && React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"I:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.instanceNumber)), React.createElement(\"div\", {\n className: \"item item-frames clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, React.createElement(\"div\", null)), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.numImageFrames)))));\n }\n }]);\n\n return ThumbnailEntry;\n}(Component);\n\n_defineProperty(ThumbnailEntry, \"defaultProps\", {\n active: false,\n error: false,\n stackPercentComplete: 0\n});\n\n_defineProperty(ThumbnailEntry, \"propTypes\", {\n id: propTypes.string.isRequired,\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n active: propTypes.bool.isRequired,\n stackPercentComplete: propTypes.number,\n seriesDescription: propTypes.string,\n seriesNumber: propTypes.string,\n instanceNumber: propTypes.string,\n numImageFrames: propTypes.number,\n onDoubleClick: propTypes.func,\n onClick: propTypes.func\n});\n\n// if they have the same string type.\n\nvar Types$2 = {\n THUMBNAIL: 'thumbnail'\n};\nvar thumbnailSource = {\n /*canDrag(props) {\n return props.error === false;\n },*/\n beginDrag: function beginDrag(props) {\n return props;\n },\n endDrag: function endDrag(props, monitor) {\n //const item = monitor.getItem();\n var dropResult = monitor.getDropResult();\n }\n};\n\nvar ThumbnailEntryDragSource =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntryDragSource, _Component);\n\n function ThumbnailEntryDragSource() {\n _classCallCheck(this, ThumbnailEntryDragSource);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThumbnailEntryDragSource).apply(this, arguments));\n }\n\n _createClass(ThumbnailEntryDragSource, [{\n key: \"render\",\n value: function render() {\n var connectDragSource = this.props.connectDragSource;\n var dropEffect = 'copy';\n return connectDragSource(React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, this.props)), {\n dropEffect: dropEffect\n });\n }\n }]);\n\n return ThumbnailEntryDragSource;\n}(Component);\n\n_defineProperty(ThumbnailEntryDragSource, \"propTypes\", {\n connectDragSource: propTypes.func.isRequired,\n isDragging: propTypes.bool.isRequired\n});\n\n_defineProperty(ThumbnailEntryDragSource, \"defaultProps\", {\n isDragging: false\n});\n\nvar collect$2 = function collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n};\n\nvar ThumbnailEntryDragSource$1 = lib_4(Types$2.THUMBNAIL, thumbnailSource, collect$2)(ThumbnailEntryDragSource);\n\nvar css$g = \".StudyBrowser {\\n float: left;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n background-color: #000;\\n padding-bottom: 20px;\\n}\\n.StudyBrowser .scrollable-study-thumbnails {\\n height: 100%;\\n overflow-y: auto;\\n overflow-x: hidden;\\n padding-bottom: 50px;\\n padding-right: 16px;\\n padding-left: 4px;\\n margin-right: -16px;\\n display: flex;\\n flex-direction: column;\\n}\\n.StudyBrowser .scrollable-study-thumbnails::-webkit-scrollbar {\\n display: none;\\n}\\n.StudyBrowser .scrollable-study-thumbnails .ThumbnailEntryContainer {\\n margin: 0 auto;\\n padding-top: 1rem;\\n padding-bottom: 1.5rem;\\n}\\n.draggable {\\n cursor: copy;\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n}\\n\";\nstyleInject(css$g);\n\nvar StudyBrowser =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyBrowser, _Component);\n\n function StudyBrowser() {\n _classCallCheck(this, StudyBrowser);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudyBrowser).apply(this, arguments));\n }\n\n _createClass(StudyBrowser, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var studies = this.props.studies;\n var thumbnails = studies.map(function (study, studyIndex) {\n return study.thumbnails.map(function (thumb, thumbIndex) {\n if (_this.props.supportsDragAndDrop) {\n return React.createElement(ThumbnailEntryDragSource$1, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n })));\n }\n });\n });\n var components = thumbnails.flat();\n return React.createElement(\"div\", {\n className: \"StudyBrowser\"\n }, React.createElement(\"div\", {\n className: \"scrollable-study-thumbnails\"\n }, components));\n }\n }]);\n\n return StudyBrowser;\n}(Component);\n\n_defineProperty(StudyBrowser, \"defaultProps\", {\n studies: [],\n supportsDragAndDrop: true\n});\n\n_defineProperty(StudyBrowser, \"propTypes\", {\n studies: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n onThumbnailClick: propTypes.func,\n onThumbnailDoubleClick: propTypes.func\n});\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar css$h = \".studyListToolbar {\\n background-color: var(--ui-gray-darker);\\n height: 75px;\\n margin-bottom: 2px;\\n padding: 0 8%;\\n}\\n.studyListToolbar>div {\\n display: inline-block;\\n}\\n.studyListToolbar .header {\\n font-size: 22px;\\n font-weight: 300;\\n color: var(--table-text-secondary-color);\\n line-height: 75px;\\n}\\n.studyListToolbar .studylistToolbar {\\n height: 75px;\\n line-height: 75px;\\n}\\n.studyListToolbar .studyCount {\\n color: var(--large-numbers-color);\\n font-size: 40px;\\n font-weight: 100;\\n line-height: 75px;\\n}\\n.theadBackground {\\n height: 121px;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before,\\n.theadBackground:after {\\n content: '';\\n display: block;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before {\\n background-color: var(--ui-gray-darker);\\n height: 100%;\\n top: 0;\\n z-index: 1;\\n}\\n.theadBackground:after {\\n background-color: var(--large-numbers-color);\\n bottom: -1px;\\n height: 1px;\\n z-index: 3;\\n}\\n#studyListContainer {\\n width: 100%;\\n padding: 0 8%;\\n position: absolute;\\n z-index: 2;\\n}\\n#studyListContainer .loadingTextDiv {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n}\\n#studyListContainer .notFound {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n font-weight: 200;\\n text-align: center;\\n}\\n#studyListContainer table#tblStudyList tr {\\n height: 20px;\\n}\\n#studyListContainer table#tblStudyList thead {\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList thead tr th {\\n padding: 0;\\n border-bottom: solid 1px var(--ui-border-color-active);\\n width: 100%;\\n}\\n#studyListContainer table#tblStudyList thead tr th.studyDate {\\n min-width: 230px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell {\\n display: inline-block;\\n cursor: pointer;\\n width: 100%;\\n min-width: 95px;\\n margin: 0 auto;\\n color: var(--table-text-primary-color);\\n font-weight: 400;\\n padding: 20px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell span {\\n font-size: 15px;\\n float: left;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell i {\\n margin: 0 5px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:hover {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell.active,\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:active {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search {\\n height: 40px;\\n margin: 0 5px 20px 5px;\\n padding: 0 20px;\\n cursor: pointer;\\n border: none;\\n background-color: var(--input-background-color);\\n color: var(--input-placeholder-color);\\n font-size: 10pt;\\n font-weight: normal;\\n width: calc(100% - 10px);\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-webkit-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-ms-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search.invisible {\\n visibility: hidden;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:active,\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:hover {\\n background-color: var(--input-background-color);\\n}\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-year-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-month-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-day-field:not([aria-valuenow]) {\\n color: transparent;\\n}\\n#studyListContainer table#tblStudyList tbody tr {\\n padding: 5px;\\n background-color: #000;\\n}\\n#studyListContainer table#tblStudyList tbody tr:nth-child(even) {\\n background-color: var(--ui-gray-darker);\\n}\\n#studyListContainer table#tblStudyList tbody tr td {\\n height: 40px;\\n line-height: 40px;\\n color: var(--table-text-primary-color);\\n font-weight: 300;\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList tbody tr td.emptyValue {\\n color: var(--ui-gray-light);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover,\\n#studyListContainer table#tblStudyList tbody tr:active,\\n#studyListContainer table#tblStudyList tbody tr.active {\\n background-color: var(--table-hover-color);\\n color: var(--text-primary-color);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover td,\\n#studyListContainer table#tblStudyList tbody tr:active td,\\n#studyListContainer table#tblStudyList tbody tr.active td {\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n background-color: var(--table-hover-color);\\n}\\n@media only screen and (max-width: 1362px) {\\n #studyListContainer {\\n padding: 0 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 5%;\\n }\\n}\\n@media only screen and (max-width: 1161px) {\\n #studyListContainer {\\n padding: 0 $tablePaddingBigWidth;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 3%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 3%;\\n }\\n}\\n@media only screen and (max-width: 1069px) {\\n .theadBackground {\\n height: 101px;\\n }\\n .studylist-pagination > .row {\\n margin-right: 0;\\n }\\n .studyListToolbar {\\n padding: 0 5px;\\n }\\n #studyListContainer {\\n padding: 0;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th input.worklist-search {\\n padding: 10px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell {\\n padding: 10px 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell i {\\n width: auto;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer .worklistPagination .row {\\n margin-left: 0;\\n margin-right: 0;\\n }\\n}\\n\";\nstyleInject(css$h);\n\nvar css$i = \".studyListToolbar .addNewStudy {\\n margin: 0 10px;\\n}\\n.studyListToolbar .addNewStudy label {\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n cursor: pointer;\\n}\\n.studyListToolbar .addNewStudy:hover {\\n color: var(--hover-color);\\n}\\n.studyListToolbar .addNewStudy:active {\\n color: var(--active-color);\\n}\\n.studyListToolbar .addNewStudy input {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\n\";\nstyleInject(css$i);\n\nvar StudylistToolbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(StudylistToolbar, _PureComponent);\n\n function StudylistToolbar() {\n _classCallCheck(this, StudylistToolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudylistToolbar).apply(this, arguments));\n }\n\n _createClass(StudylistToolbar, [{\n key: \"clear\",\n value: function clear(e) {\n e.target.value = null;\n }\n }, {\n key: \"getImportTool\",\n value: function getImportTool() {\n if (this.props.onImport && this.props.studyListFunctionsEnabled) {\n return React.createElement(\"div\", {\n className: \"addNewStudy btn-file\"\n }, React.createElement(\"label\", {\n htmlFor: \"btnImport\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }), \"Import study\"), React.createElement(\"input\", {\n id: \"btnImport\",\n onChange: this.props.onImport,\n onClick: this.clear,\n className: \"js-import-files\",\n type: \"file\",\n webkitdirectory: \"true\",\n directory: \"true\",\n multiple: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"studylistToolbar\"\n }, this.getImportTool());\n }\n }]);\n\n return StudylistToolbar;\n}(PureComponent);\n\n_defineProperty(StudylistToolbar, \"propTypes\", {\n studyListFunctionsEnabled: propTypes.bool.isRequired,\n onImport: propTypes.func\n});\n\n_defineProperty(StudylistToolbar, \"defaultProps\", {\n studyListFunctionsEnabled: true\n});\n\nfunction LoadingText() {\n return React.createElement(\"div\", {\n className: \"loadingTextDiv\"\n }, React.createElement(\"h5\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spinner fa-pulse\"\n })));\n}\n\nvar css$j = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --primary-background-color: #000;\\n}\\n.pagination-area {\\n color: var(--text-secondary-color);\\n font-size: 13px;\\n font-weight: normal !important;\\n}\\n.pagination-area label {\\n font-weight: normal;\\n}\\n.pagination-area select {\\n margin: 5px;\\n background-color: var(--primary-background-color);\\n color: #fff;\\n}\\n.rows-per-page label.wrapperLabel {\\n display: inline-table !important;\\n margin: 0 4px;\\n}\\n.rows-per-page label.wrapperLabel select {\\n margin: 0px 4px 0px 4px;\\n width: 42px;\\n}\\n.page-buttons {\\n margin: 0;\\n text-align: right;\\n}\\n.page-buttons label {\\n font-weight: normal;\\n}\\n.page-buttons label ul.pagination-control {\\n margin: 0;\\n}\\n.page-buttons label ul.pagination-control li {\\n display: table-cell;\\n padding: 5px 2px;\\n}\\n.page-buttons label ul.pagination-control li button {\\n padding: 4px 8px;\\n background-color: var(--primary-background-color);\\n border-color: var(--ui-gray);\\n color: var(--ui-gray-darkest);\\n color: #fff;\\n text-decoration: none;\\n}\\n.page-buttons label ul.pagination-control li button:hover:enabled {\\n color: var(--active-color);\\n}\\n.page-buttons label ul.pagination-control li .active button {\\n background-color: var(--ui-gray);\\n border-color: #ddd;\\n color: #fff;\\n}\\n\";\nstyleInject(css$j);\n\nvar PaginationArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PaginationArea, _PureComponent);\n\n function PaginationArea() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PaginationArea);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationArea)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nextPage\", function () {\n _this.props.nextPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"prevPage\", function () {\n _this.props.prevPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onRowsPerPageChange\", function (event) {\n _this.props.onRowsPerPageChange(parseInt(event.target.value));\n });\n\n return _this;\n }\n\n _createClass(PaginationArea, [{\n key: \"renderPaginationButtons\",\n value: function renderPaginationButtons() {\n return React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-buttons noselect\"\n }, React.createElement(\"label\", null, React.createElement(\"ul\", {\n className: \"pagination-control no-margins\"\n }, React.createElement(\"li\", {\n className: \"page-item prev\"\n }, React.createElement(\"button\", {\n onClick: this.prevPage,\n disabled: this.props.currentPage === 0,\n className: \"btn page-link\"\n }, \"Previous\")), React.createElement(\"li\", {\n className: \"page-item next\"\n }, React.createElement(\"button\", {\n onClick: this.nextPage,\n disabled: this.props.currentPage === this.props.numberOfPages - 1,\n className: \"btn page-link\"\n }, \"Next\"))))));\n }\n }, {\n key: \"renderRowsPerPageDropdown\",\n value: function renderRowsPerPageDropdown() {\n return React.createElement(\"div\", {\n className: \"form-inline form-group rows-per-page\"\n }, React.createElement(\"span\", null, \"Show\"), React.createElement(\"select\", {\n onChange: this.onRowsPerPageChange,\n defaultValue: this.props.rowsPerPage\n }, this.props.pageOptions.map(function (pageNumber) {\n return React.createElement(\"option\", {\n key: pageNumber,\n value: pageNumber\n }, pageNumber);\n })), React.createElement(\"span\", null, \"rows per page\"));\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n name: \"paginationArea\"\n }, React.createElement(\"div\", {\n className: \"pagination-area\"\n }, React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"div\", {\n className: \"col-xs-4 col-sm-3 col-md-3\"\n }, this.renderRowsPerPageDropdown()), React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-number pull-right\"\n }, this.renderPaginationButtons())))));\n }\n }]);\n\n return PaginationArea;\n}(PureComponent);\n\n_defineProperty(PaginationArea, \"defaultProps\", {\n pageOptions: [5, 10, 25, 50, 100],\n rowsPerPage: 25,\n currentPage: 0,\n numberOfPages: 1\n});\n\n_defineProperty(PaginationArea, \"propTypes\", {\n pageOptions: propTypes.array.isRequired,\n rowsPerPage: propTypes.number.isRequired,\n currentPage: propTypes.number.isRequired,\n numberOfPages: propTypes.number.isRequired,\n nextPageFunc: propTypes.func,\n prevPageFunc: propTypes.func,\n onRowsPerPageChange: propTypes.func\n});\n\nvar StudyList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyList, _Component);\n\n function StudyList(props) {\n var _this;\n\n _classCallCheck(this, StudyList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyList).call(this, props));\n var sortData = {};\n var sortClasses = {\n patientName: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n patientId: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n accessionNumber: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDate: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n modality: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDescription: StudyList.DEFAULT_SORTABLE_ICON_CLS\n };\n\n if (props.defaultSort) {\n sortData.field = props.defaultSort.field;\n sortData.order = props.defaultSort.order;\n sortClasses[props.defaultSort.field] = props.defaultSort.order === 'desc' ? StudyList.DESC_SORT_ICON_CLS : StudyList.ASC_SORT_ICON_CLS;\n }\n\n _this.state = {\n loading: false,\n error: false,\n sortClasses: sortClasses,\n searchData: {\n sortData: sortData,\n currentPage: _this.props.currentPage,\n rowsPerPage: _this.props.rowsPerPage\n },\n highlightedItem: ''\n };\n _this.getChangeHandler = _this.getChangeHandler.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onInputKeydown = _this.onInputKeydown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.nextPage = _this.nextPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.prevPage = _this.prevPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onRowsPerPageChange = _this.onRowsPerPageChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(StudyList, [{\n key: \"getChangeHandler\",\n value: function getChangeHandler(key) {\n var _this2 = this;\n\n return function (event) {\n _this2.setSearchData(key, event.target.value);\n };\n }\n }, {\n key: \"setSearchData\",\n value: function setSearchData(key, value, callback) {\n var searchData = this.state.searchData;\n searchData[key] = value;\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"setSearchDataBatch\",\n value: function setSearchDataBatch(keyValues, callback) {\n var searchData = this.state.searchData;\n Object.keys(keyValues).forEach(function (key) {\n searchData[key] = keyValues[key];\n });\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"onInputKeydown\",\n value: function () {\n var _onInputKeydown = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(event) {\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation(); // reset the page because user is doing a new search\n\n this.setSearchData('currentPage', 0, this.search);\n }\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onInputKeydown(_x) {\n return _onInputKeydown.apply(this, arguments);\n }\n\n return onInputKeydown;\n }()\n }, {\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2() {\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n this.setState({\n loading: true,\n error: false\n });\n _context2.next = 4;\n return this.props.onSearch(this.state.searchData);\n\n case 4:\n _context2.next = 10;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2[\"catch\"](0);\n this.setState({\n error: true\n });\n throw new Error(_context2.t0);\n\n case 10:\n _context2.prev = 10;\n this.setState({\n loading: false\n });\n return _context2.finish(10);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6, 10, 13]]);\n }));\n\n function search() {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"renderNoMachingResults\",\n value: function renderNoMachingResults() {\n if (!this.props.studies.length && !this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"No matching results\");\n }\n }\n }, {\n key: \"renderHasError\",\n value: function renderHasError() {\n if (this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"There was an error fetching studies\");\n }\n }\n }, {\n key: \"renderIsLoading\",\n value: function renderIsLoading() {\n if (this.state.loading) {\n return React.createElement(\"div\", {\n className: \"loading\"\n }, React.createElement(LoadingText, null));\n }\n }\n }, {\n key: \"nextPage\",\n value: function nextPage(currentPage) {\n currentPage = currentPage + 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"prevPage\",\n value: function prevPage(currentPage) {\n currentPage = currentPage - 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"onRowsPerPageChange\",\n value: function onRowsPerPageChange(rowsPerPage) {\n this.setSearchDataBatch({\n rowsPerPage: rowsPerPage,\n currentPage: 0\n }, this.search);\n }\n }, {\n key: \"onSortClick\",\n value: function onSortClick(key) {\n var _this3 = this;\n\n return function () {\n var sortClasses = _this3.state.sortClasses;\n var order;\n\n if (sortClasses[key] === StudyList.ASC_SORT_ICON_CLS) {\n sortClasses[key] = StudyList.DESC_SORT_ICON_CLS;\n order = 'desc';\n } else {\n sortClasses[key] = StudyList.ASC_SORT_ICON_CLS;\n order = 'asc';\n }\n\n Object.keys(sortClasses).forEach(function (sortClassKey) {\n if (sortClassKey !== key) {\n sortClasses[sortClassKey] = StudyList.DEFAULT_SORTABLE_ICON_CLS;\n }\n });\n\n _this3.setState({\n sortClasses: sortClasses\n }, function () {\n _this3.setSearchData('sortData', {\n field: key,\n order: order\n }, _this3.search);\n });\n };\n }\n }, {\n key: \"onHighlightItem\",\n value: function onHighlightItem(studyItemUid) {\n this.setState({\n highlightedItem: studyItemUid\n });\n }\n }, {\n key: \"renderTableRow\",\n value: function renderTableRow(study) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: study.studyInstanceUID,\n className: this.state.highlightedItem === study.studyInstanceUID ? 'studylistStudy noselect active' : 'studylistStudy noselect',\n onClick: function onClick() {\n _this4.onHighlightItem(study.studyInstanceUID);\n },\n onMouseDown: function onMouseDown(event) {\n // middle/wheel click\n if (event.button === 1) {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n },\n onDoubleClick: function onDoubleClick() {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n }, React.createElement(\"td\", {\n className: \"patientName\"\n }, study.patientName), React.createElement(\"td\", {\n className: \"patientId\"\n }, study.patientId), React.createElement(\"td\", {\n className: \"accessionNumber\"\n }, study.accessionNumber), React.createElement(\"td\", {\n className: \"studyDate\"\n }, study.studyDate), React.createElement(\"td\", {\n className: \"modalities\"\n }, study.modalities), React.createElement(\"td\", {\n className: \"studyDescription\"\n }, study.studyDescription));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n className: \"StudyList\"\n }, React.createElement(\"div\", {\n className: \"studyListToolbar clearfix\"\n }, React.createElement(\"div\", {\n className: \"header pull-left\"\n }, \"Study List\"), React.createElement(\"div\", {\n className: \"studyCount pull-right\"\n }, this.props.studyCount), React.createElement(\"div\", {\n className: \"pull-right\"\n }, React.createElement(StudylistToolbar, {\n studyListFunctionsEnabled: this.props.studyListFunctionsEnabled,\n onImport: this.props.onImport\n }))), React.createElement(\"div\", {\n className: \"theadBackground\"\n }), React.createElement(\"div\", {\n id: \"studyListContainer\"\n }, React.createElement(\"table\", {\n id: \"tblStudyList\",\n className: \"studylistResult table noselect\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"patientName\"\n }, React.createElement(\"div\", {\n id: \"_patientName\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientName')\n }, React.createElement(\"span\", null, \"Patient Name\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientName\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientName\",\n value: this.state.patientName,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientName')\n })), React.createElement(\"th\", {\n className: \"patientId\"\n }, React.createElement(\"div\", {\n id: \"_patientId\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientId')\n }, React.createElement(\"span\", null, \"MRN\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientId\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientId\",\n value: this.state.patientId,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientId')\n })), React.createElement(\"th\", {\n className: \"accessionNumber\"\n }, React.createElement(\"div\", {\n id: \"_accessionNumber\",\n className: \"sortingCell\",\n onClick: this.onSortClick('accessionNumber')\n }, React.createElement(\"span\", null, \"Accession #\"), React.createElement(\"i\", {\n className: this.state.sortClasses.accessionNumber\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"accessionNumber\",\n value: this.state.accessionNumber,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('accessionNumber')\n })), React.createElement(\"th\", {\n className: \"studyDate\"\n }, React.createElement(\"div\", {\n id: \"_studyDate\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDate')\n }, React.createElement(\"span\", null, \"Study Date\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDate\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n name: \"daterange\",\n id: \"studyDate\",\n value: this.state.studyDateRange,\n onChange: this.getChangeHandler('studyDateRange')\n })), React.createElement(\"th\", {\n className: \"modality\"\n }, React.createElement(\"div\", {\n id: \"_modality\",\n className: \"sortingCell\",\n onClick: this.onSortClick('modality')\n }, React.createElement(\"span\", null, \"Modality\"), React.createElement(\"i\", {\n className: this.state.sortClasses.modality\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"modality\",\n onKeyDown: this.onInputKeydown,\n value: this.state.modality,\n onChange: this.getChangeHandler('modality')\n })), React.createElement(\"th\", {\n className: \"studyDescription\"\n }, React.createElement(\"div\", {\n id: \"_studyDescription\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDescription')\n }, React.createElement(\"span\", null, \"Study Description\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDescription\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"studyDescription\",\n onKeyDown: this.onInputKeydown,\n value: this.state.studyDescription,\n onChange: this.getChangeHandler('studyDescription')\n })))), React.createElement(\"tbody\", {\n id: \"studyListData\"\n }, this.props.studies.map(function (study) {\n return _this5.renderTableRow(study);\n }))), this.renderIsLoading(), this.renderHasError(), this.renderNoMachingResults(), React.createElement(PaginationArea, {\n currentPage: this.state.searchData.currentPage,\n nextPageFunc: this.nextPage,\n prevPageFunc: this.prevPage,\n onRowsPerPageChange: this.onRowsPerPageChange,\n rowsPerPage: this.state.searchData.rowsPerPage,\n numberOfPages: Math.ceil(this.props.studyCount / this.state.searchData.rowsPerPage)\n })));\n }\n }]);\n\n return StudyList;\n}(Component);\n\n_defineProperty(StudyList, \"propTypes\", {\n studies: propTypes.array.isRequired,\n onSelectItem: propTypes.func.isRequired,\n onSearch: propTypes.func.isRequired,\n studyCount: propTypes.number.isRequired,\n currentPage: propTypes.number,\n rowsPerPage: propTypes.number,\n studyListFunctionsEnabled: propTypes.bool,\n defaultSort: propTypes.shape({\n field: propTypes.string.isRequired,\n order: propTypes.oneOf(['desc', 'asc']).isRequired\n }),\n onImport: propTypes.func\n});\n\n_defineProperty(StudyList, \"defaultProps\", {\n currentPage: 0,\n rowsPerPage: 25\n});\n\n_defineProperty(StudyList, \"DEFAULT_SORTABLE_ICON_CLS\", 'fa fa-fw fa-sort');\n\n_defineProperty(StudyList, \"DESC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-desc');\n\n_defineProperty(StudyList, \"ASC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-asc');\n\nfunction SimpleToolbarButton(props) {\n var className = classnames(props.className, 'btn btn-sm btn-default');\n return React.createElement(\"button\", {\n id: props.id,\n type: \"button\",\n className: className,\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: props.title\n }, React.createElement(\"span\", {\n className: props.iconClassName\n }));\n}\nSimpleToolbarButton.propTypes = {\n iconClassName: propTypes.string,\n title: propTypes.string,\n className: propTypes.string,\n id: propTypes.string,\n onClick: propTypes.func\n};\n\nfunction getDefaultButtonData() {\n var buttonData = [];\n buttonData.push({\n id: 'wwwc',\n title: 'WW/WC',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-sun-o'\n });\n buttonData.push({\n id: 'wwwcRegion',\n title: 'Window by Region',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square'\n });\n buttonData.push({\n id: 'magnify',\n title: 'Magnify',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle'\n });\n buttonData.push({\n id: 'annotate',\n title: 'Annotation',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-h'\n });\n buttonData.push({\n id: 'invert',\n title: 'Invert',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-adjust'\n });\n buttonData.push({\n id: 'zoom',\n title: 'Zoom',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-search'\n });\n buttonData.push({\n id: 'pan',\n title: 'Pan',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows'\n });\n buttonData.push({\n id: 'stackScroll',\n title: 'Stack Scroll',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-bars'\n });\n buttonData.push({\n id: 'length',\n title: 'Length Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-v'\n });\n buttonData.push({\n id: 'angle',\n title: 'Angle Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-angle-left'\n });\n buttonData.push({\n id: 'dragProbe',\n title: 'Pixel Probe',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-dot-circle-o'\n });\n buttonData.push({\n id: 'ellipticalRoi',\n title: 'Elliptical ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle-o'\n });\n buttonData.push({\n id: 'rectangleRoi',\n title: 'Rectangle ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square-o'\n });\n buttonData.push({\n id: 'resetViewport',\n title: 'Reset Viewport',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-undo'\n });\n buttonData.push({\n id: 'clearTools',\n title: 'Clear tools',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-trash'\n });\n return buttonData;\n}\n\nvar Toolbar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Toolbar, _Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Toolbar).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: \"render\",\n value: function render() {\n var maybePlayClipButton;\n\n if (this.props.includePlayClipButton) {\n maybePlayClipButton = React.createElement(PlayClipButton, null);\n }\n\n var maybeLayoutButton;\n\n if (this.props.includeLayoutButton) {\n maybeLayoutButton = React.createElement(LayoutButton, null);\n }\n\n return React.createElement(\"div\", {\n id: \"toolbar\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, this.props.buttons.map(function (button, i) {\n return React.createElement(SimpleToolbarButton, _extends({}, button, {\n key: i\n }));\n }), maybePlayClipButton, maybeLayoutButton));\n }\n }]);\n\n return Toolbar;\n}(Component);\nToolbar.propTypes = {\n buttons: propTypes.array.isRequired,\n includeLayoutButton: propTypes.bool.isRequired,\n includePlayClipButton: propTypes.bool.isRequired\n};\nToolbar.defaultProps = {\n buttons: getDefaultButtonData(),\n includeLayoutButton: true,\n includePlayClipButton: true\n};\n\nvar css$k = \".ToolbarButton {\\n height: 48px;\\n color: var(--default-color);\\n float: left;\\n text-align: center;\\n padding: 0 1rem;\\n cursor: pointer;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none; /* Non-prefixed version, currently\\n supported by Chrome and Opera */\\n}\\n.ToolbarButton svg {\\n height: 21px;\\n width: 21px;\\n margin: 2px;\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n.ToolbarButton i {\\n font-size: 18px;\\n line-height: 30px;\\n}\\n.ToolbarButton:hover {\\n color: var(--hover-color);\\n}\\n.ToolbarButton:hover svg {\\n fill: var(--hover-color);\\n stroke: var(--hover-color);\\n}\\n.ToolbarButton:hover i {\\n color: var(--hover-color);\\n}\\n.ToolbarButton.active,\\n.ToolbarButton:active {\\n color: var(--active-color);\\n}\\n.ToolbarButton.active svg,\\n.ToolbarButton:active svg {\\n fill: var(--active-color);\\n stroke: var(--active-color);\\n}\\n.ToolbarButton.active i,\\n.ToolbarButton:active i {\\n color: var(--active-color);\\n}\\n.ToolbarButton span.toolbar-button-label {\\n font-size: 12px;\\n font-weight: 500;\\n display: block;\\n}\\n\";\nstyleInject(css$k);\n\nfunction ToolbarButton(props) {\n var onClick = function onClick(event) {\n if (props.onClick) {\n props.onClick(event, props);\n }\n\n if (props.setToolActive) {\n props.setToolActive(props);\n }\n };\n\n var className = classnames(props.className, {\n active: props.active\n });\n var active = props.active,\n svgUrlActive = props.svgUrlActive,\n iconClassesActive = props.iconClassesActive,\n textActive = props.textActive;\n var svgUrl = props.svgUrl;\n\n if (active && svgUrlActive) {\n svgUrl = svgUrlActive;\n }\n\n var iconClasses = props.iconClasses;\n\n if (active && iconClassesActive) {\n iconClasses = iconClassesActive;\n }\n\n var label = props.text;\n\n if (active && textActive) {\n label = textActive;\n }\n\n return React.createElement(\"div\", {\n className: className,\n onClick: onClick\n }, svgUrl && React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: svgUrl\n })), iconClasses && React.createElement(\"i\", {\n className: iconClasses\n }), React.createElement(\"span\", {\n className: \"toolbar-button-label\"\n }, label));\n}\nToolbarButton.defaultProps = {\n command: 'ToolbarButton',\n onClick: function onClick() {//console.log(`ToolbarButton does not have an onClick event`);\n },\n className: 'ToolbarButton'\n};\nToolbarButton.propTypes = {\n active: propTypes.bool.isRequired,\n className: propTypes.string.isRequired,\n text: propTypes.string.isRequired,\n textActive: propTypes.string,\n iconClasses: propTypes.string,\n iconClassesActive: propTypes.string,\n svgUrl: propTypes.string,\n svgUrlActive: propTypes.string,\n onClick: propTypes.func,\n setToolActive: propTypes.func\n};\n\nvar css$l = \".ToolbarSection {\\n float: left;\\n background-color: var(--primary-background-color);\\n border-radius: 8px;\\n}\\n\";\nstyleInject(css$l);\n\nvar ToolbarSection =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ToolbarSection, _PureComponent);\n\n function ToolbarSection() {\n _classCallCheck(this, ToolbarSection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ToolbarSection).apply(this, arguments));\n }\n\n _createClass(ToolbarSection, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var items = this.props.buttons.map(function (item, index) {\n return React.createElement(ToolbarButton, _extends({\n key: index\n }, item, {\n active: item.command === _this.props.activeCommand,\n setToolActive: _this.props.setToolActive\n }));\n });\n return React.createElement(\"div\", {\n className: 'ToolbarSection'\n }, items);\n }\n }]);\n\n return ToolbarSection;\n}(PureComponent);\n\nToolbarSection.propTypes = {\n buttons: propTypes.array.isRequired,\n activeCommand: propTypes.string,\n setToolActive: propTypes.func\n};\n\nvar range = function range(start, end) {\n return new Array(end - start).fill().map(function (d, i) {\n return i + start;\n });\n};\nvar allowedKeys = [8, 13, 27, 32, 46].concat([12, 106, 107, 109, 110, 111], _toConsumableArray(range(218, 220)), _toConsumableArray(range(185, 190)), _toConsumableArray(range(111, 131)), _toConsumableArray(range(32, 41)), _toConsumableArray(range(47, 58)), _toConsumableArray(range(64, 91)));\nvar specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 191: '/',\n 224: 'meta'\n};\n\nvar HotKeysPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HotKeysPreferences, _Component);\n\n function HotKeysPreferences(props) {\n var _this;\n\n _classCallCheck(this, HotKeysPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HotKeysPreferences).call(this, props));\n _this.columns = {};\n Object.keys(_this.props.hotKeysData).forEach(function (key) {\n var hotKey = _this.props.hotKeysData[key];\n\n if (_this.columns.hasOwnProperty(hotKey.column)) {\n _this.columns[hotKey.column].push(key);\n } else {\n _this.columns[hotKey.column] = [key];\n }\n });\n _this.columnClass = \"col-md-\".concat(12 / Object.keys(_this.columns).length || 1);\n _this.state = {\n hotKeys: _this.props.hotKeysData,\n errorMessages: {}\n };\n _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(HotKeysPreferences, [{\n key: \"getKeysPressedArray\",\n value: function getKeysPressedArray(event) {\n var keysPressedArray = [];\n\n if (event.ctrlKey && !event.altKey) {\n keysPressedArray.push('CTRL');\n }\n\n if (event.shiftKey && !event.altKey) {\n keysPressedArray.push('SHIFT');\n }\n\n if (event.altKey && !event.ctrlKey) {\n keysPressedArray.push('ALT');\n }\n\n return keysPressedArray;\n }\n }, {\n key: \"getConflictingCommand\",\n value: function getConflictingCommand(currentToolKey, hotKeyCommand) {\n var _this2 = this;\n\n return Object.keys(this.state.hotKeys).find(function (tool) {\n var value = _this2.state.hotKeys[tool].command;\n return value && value === hotKeyCommand && tool !== currentToolKey;\n });\n }\n }, {\n key: \"updateInputText\",\n value: function updateInputText(toolKey, event) {\n var displayPressedKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pressedKeys = this.getKeysPressedArray(event);\n\n if (displayPressedKey) {\n var specialKeyName = specialKeys[event.which];\n var keyName = specialKeyName || event.key || String.fromCharCode(event.keyCode);\n pressedKeys.push(keyName.toUpperCase());\n }\n\n this.updateHotKeysState(toolKey, pressedKeys.join('+'));\n }\n }, {\n key: \"updateHotKeysState\",\n value: function updateHotKeysState(toolKey, command) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var hotKeys = this.state.hotKeys;\n hotKeys[toolKey].command = command;\n this.setState(hotKeys, callback);\n }\n }, {\n key: \"updateErrorsState\",\n value: function updateErrorsState(toolKey, errorMessage) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var errorMessages = this.state.errorMessages;\n errorMessages[toolKey] = errorMessage;\n this.setState({\n errorMessages: errorMessages\n }, callback);\n }\n }, {\n key: \"onInputKeyDown\",\n value: function onInputKeyDown(event, toolKey) {\n // Prevent ESC key from propagating and closing the modal\n if (event.key === 'Escape') {\n event.stopPropagation();\n }\n\n if (allowedKeys.includes(event.keyCode)) {\n this.updateInputText(toolKey, event, true);\n } else {\n this.updateInputText(toolKey, event, false);\n }\n\n event.preventDefault();\n }\n }, {\n key: \"onChange\",\n value: function onChange(event, toolKey) {\n var _this3 = this;\n\n if (event.ctrlKey || event.altKey || event.shiftKey) {\n return;\n }\n\n var hotKey = this.state.hotKeys[toolKey];\n var command = hotKey.command;\n var pressedKeys = command.split('+');\n var lastPressedKey = pressedKeys[pressedKeys.length - 1].toUpperCase(); // clear the prior errors\n\n this.setState({\n errorMessages: {}\n }, function () {\n // Check if it has a valid modifier\n var isModifier = ['CTRL', 'ALT', 'SHIFT'].includes(lastPressedKey);\n\n if (isModifier) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n /*\n * Check if it has some conflict\n */\n\n\n var conflictedCommandKey = _this3.getConflictingCommand(toolKey, command);\n\n if (conflictedCommandKey) {\n var conflictedCommand = _this3.state.hotKeys[conflictedCommandKey];\n\n _this3.updateErrorsState(toolKey, \"\\\"\".concat(conflictedCommand.label, \"\\\" is already using the \\\"\").concat(conflictedCommand.command, \"\\\" shortcut.\"));\n\n _this3.updateErrorsState(conflictedCommandKey, '');\n\n _this3.updateHotKeysState(toolKey, '');\n\n return;\n }\n /*\n * Check if is a valid combination\n */\n\n\n var modifierCommand = pressedKeys.slice(0, pressedKeys.length - 1).join('+').toUpperCase();\n var disallowedCombinations$$1 = HotKeysPreferences.disallowedCombinations[modifierCommand];\n var hasDisallowedCombinations = disallowedCombinations$$1 ? disallowedCombinations$$1.includes(lastPressedKey) : false;\n\n if (hasDisallowedCombinations) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n });\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(toolKey, hotKey) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: toolKey\n }, React.createElement(\"td\", {\n className: \"text-right p-r-1\"\n }, hotKey.label), React.createElement(\"td\", {\n width: \"200\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel \".concat(this.state.errorMessages[toolKey] !== undefined ? 'state-error' : '', \" \"),\n ref: function ref(input) {\n return _this4[toolKey] = input;\n },\n \"data-key\": \"defaultTool\"\n }, React.createElement(\"input\", {\n readOnly: true,\n type: \"text\",\n value: hotKey.command,\n vali: \"true\",\n className: \"form-control hotkey text-center\",\n onKeyDown: function onKeyDown(event) {\n return _this4.onInputKeyDown(event, toolKey);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.onChange(event, toolKey);\n }\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }), React.createElement(\"span\", {\n className: \"errorMessage\"\n }, this.state.errorMessages[toolKey]))));\n }\n }, {\n key: \"renderColumn\",\n value: function renderColumn(columnIndex, hotkeysColumn) {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n key: columnIndex,\n className: this.columnClass\n }, React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"text-right p-r-1\"\n }, \"Function\"), React.createElement(\"th\", {\n className: \"text-center\"\n }, \"Shortcut\"))), React.createElement(\"tbody\", null, hotkeysColumn.map(function (keyTool) {\n return _this5.renderRow(keyTool, _this5.state.hotKeys[keyTool]);\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return React.createElement(\"div\", {\n className: \"row\"\n }, Object.keys(this.columns).sort().map(function (columnIndex) {\n return _this6.renderColumn(columnIndex, _this6.columns[columnIndex]);\n }));\n }\n }]);\n\n return HotKeysPreferences;\n}(Component);\n\n_defineProperty(HotKeysPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$m = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n.presetIndex {\\n padding: 0px 10px 0px 10px;\\n}\\n\";\nstyleInject(css$m);\n\nvar WindowLevelPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(WindowLevelPreferences, _Component);\n\n function WindowLevelPreferences(props) {\n var _this;\n\n _classCallCheck(this, WindowLevelPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WindowLevelPreferences).call(this, props));\n _this.state = {\n data: _this.props.windowLevelData\n };\n return _this;\n }\n\n _createClass(WindowLevelPreferences, [{\n key: \"onChange\",\n value: function onChange(event, key, field) {\n var data = this.state.data;\n var entry = data[key];\n entry[field] = event.target.value;\n this.setState({\n data: data\n });\n\n if (this.props.onChange) {\n this.props.onChange(data);\n }\n }\n }, {\n key: \"getWLPreferencesRows\",\n value: function getWLPreferencesRows(key) {\n var _this2 = this;\n\n var entry = this.state.data[key];\n return React.createElement(\"tr\", {\n key: key\n }, React.createElement(\"td\", {\n className: \"p-r-1 text-center\"\n }, key), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.description,\n type: \"text\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'description');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.window,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'window');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.level,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'level');\n }\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"p-x-1 text-center presetIndex\"\n }, \"Preset\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Description\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Window\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Level\"))), React.createElement(\"tbody\", null, Object.keys(this.state.data).map(function (key) {\n return _this3.getWLPreferencesRows(key);\n })));\n }\n }]);\n\n return WindowLevelPreferences;\n}(Component);\n\n_defineProperty(WindowLevelPreferences, \"propTypes\", {\n windowLevelData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$n = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n\";\nstyleInject(css$n);\n\nvar UserPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferences, _Component);\n\n function UserPreferences() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, UserPreferences);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(UserPreferences)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n tabIndex: 0\n });\n\n return _this;\n }\n\n _createClass(UserPreferences, [{\n key: \"tabClick\",\n value: function tabClick(tabIndex) {\n this.setState({\n tabIndex: tabIndex\n });\n }\n }, {\n key: \"renderHotkeysTab\",\n value: function renderHotkeysTab() {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(HotKeysPreferences, {\n hotKeysData: this.props.hotKeysData\n })));\n }\n }, {\n key: \"renderWindowLevelTab\",\n value: function renderWindowLevelTab() {\n if (this.props.windowLevelData) {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(WindowLevelPreferences, {\n windowLevelData: this.props.windowLevelData\n })));\n }\n }\n }, {\n key: \"renderTabs\",\n value: function renderTabs(tabIndex) {\n if (tabIndex === 0) {\n return this.renderHotkeysTab();\n } else {\n return this.renderWindowLevelTab();\n }\n }\n }, {\n key: \"getTabClass\",\n value: function getTabClass(tabIndex) {\n return tabIndex === this.state.tabIndex ? 'nav-link active' : 'nav-link';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"dialog-separator-after\"\n }, React.createElement(\"ul\", {\n className: \"nav nav-tabs\"\n }, React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(0);\n },\n className: this.getTabClass(0)\n }, React.createElement(\"button\", null, \"Hotkeys\")), React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(1);\n },\n className: this.getTabClass(1)\n }, React.createElement(\"button\", null, \"Window Level\")))), this.renderTabs(this.state.tabIndex));\n }\n }]);\n\n return UserPreferences;\n}(Component);\n\n_defineProperty(UserPreferences, \"defaultProps\", {\n hotKeysData: {},\n windowLevelData: {}\n});\n\n_defineProperty(UserPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n windowLevelData: propTypes.object.isRequired\n});\n\nvar createChainableTypeChecker_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(createChainableTypeChecker_1);\n\nvar componentOrElement = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(componentOrElement);\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar ownerDocument_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(ownerDocument_1);\n\nvar activeElement_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = interopRequireDefault(ownerDocument_1);\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(activeElement_1);\n\nvar inDOM = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(inDOM);\n\nvar contains = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(contains);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning$1 = function() {};\n\nif (__DEV__) {\n warning$1 = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nvar warning_1 = warning$1;\n\nvar deprecated_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecated;\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] != null) {\n var messageKey = componentName + '.' + propName;\n\n (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n warned[messageKey] = true;\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(deprecated_1);\n\nvar elementType_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(elementType_1);\n\nvar hasClass_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hasClass_1);\n\nvar addClass_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(addClass_1);\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nvar removeClass = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\nvar _class = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = interopRequireDefault(addClass_1);\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = interopRequireDefault(removeClass);\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;\n});\n\nunwrapExports(_class);\nvar _class_1 = _class.addClass;\nvar _class_2 = _class.removeClass;\nvar _class_3 = _class.hasClass;\n\nvar camelize_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelize_1);\n\nvar camelizeStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = interopRequireDefault(camelize_1);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelizeStyle);\n\nvar hyphenate_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenate_1);\n\nvar hyphenateStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = interopRequireDefault(hyphenate_1);\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenateStyle);\n\nvar getComputedStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(getComputedStyle);\n\nvar removeStyle_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(removeStyle_1);\n\nvar properties = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}\n});\n\nunwrapExports(properties);\nvar properties_1 = properties.animationEnd;\nvar properties_2 = properties.animationDelay;\nvar properties_3 = properties.animationTiming;\nvar properties_4 = properties.animationDuration;\nvar properties_5 = properties.animationName;\nvar properties_6 = properties.transitionEnd;\nvar properties_7 = properties.transitionDuration;\nvar properties_8 = properties.transitionDelay;\nvar properties_9 = properties.transitionTiming;\nvar properties_10 = properties.transitionProperty;\nvar properties_11 = properties.transform;\n\nvar isTransform_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isTransform_1);\n\nvar style_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar _hyphenateStyle = interopRequireDefault(hyphenateStyle);\n\nvar _getComputedStyle2 = interopRequireDefault(getComputedStyle);\n\nvar _removeStyle = interopRequireDefault(removeStyle_1);\n\n\n\nvar _isTransform = interopRequireDefault(isTransform_1);\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(style_1);\n\nvar scrollbarSize_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(scrollbarSize_1);\n\nvar isWindow = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isWindow);\n\nvar isOverflowing_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\n\n\nvar _isWindow2 = _interopRequireDefault(isWindow);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument2.default)(node);\n var win = (0, _isWindow2.default)(doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow2.default)(container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isOverflowing_1);\n\nvar manageAriaHidden = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n});\n\nunwrapExports(manageAriaHidden);\nvar manageAriaHidden_1 = manageAriaHidden.ariaHidden;\nvar manageAriaHidden_2 = manageAriaHidden.hideSiblings;\nvar manageAriaHidden_3 = manageAriaHidden.showSiblings;\n\nvar ModalManager_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _class2 = _interopRequireDefault(_class);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\nfunction setContainerStyle(state, container) {\n var style = { overflow: 'hidden' };\n\n // we are only interested in the actual `style` here\n // becasue we will override it\n state.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (state.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n }\n\n (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n var style = _ref.style;\n\n\n Object.keys(style).forEach(function (key) {\n return container.style[key] = style[key];\n });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n var _this = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n _ref2$handleContainer = _ref2.handleContainerOverflow,\n handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n _classCallCheck(this, ModalManager);\n\n this.add = function (modal, container, className) {\n var modalIdx = _this.modals.indexOf(modal);\n var containerIdx = _this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = _this.modals.length;\n _this.modals.push(modal);\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.hideSiblings)(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n _this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n\n overflowing: (0, _isOverflowing2.default)(container)\n };\n\n if (_this.handleContainerOverflow) {\n setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n _this.containers.push(container);\n _this.data.push(data);\n\n return modalIdx;\n };\n\n this.remove = function (modal) {\n var modalIdx = _this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(_this.data, modal);\n var data = _this.data[containerIdx];\n var container = _this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n _this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (data.modals.length === 0) {\n data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n if (_this.handleContainerOverflow) {\n removeContainerStyle(data, container);\n }\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.showSiblings)(container, modal.mountNode);\n }\n _this.containers.splice(containerIdx, 1);\n _this.data.splice(containerIdx, 1);\n } else if (_this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n (0, manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n this.isTopModal = function (modal) {\n return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n };\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ModalManager_1);\n\nvar getContainer_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getContainer;\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(getContainer_1);\n\nvar ownerDocument$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ownerDocument$1);\n\nvar LegacyPortal = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(LegacyPortal);\n\nvar Portal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\n\n\nvar _LegacyPortal2 = _interopRequireDefault(LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Portal_1);\n\nvar RefHolder_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes$$1 = {\n children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n _inherits(RefHolder, _React$Component);\n\n function RefHolder() {\n _classCallCheck(this, RefHolder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n RefHolder.prototype.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes$$1;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(RefHolder_1);\n\nvar on_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(on_1);\n\nvar off_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(off_1);\n\nvar addEventListener = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\n\n\nvar _on2 = _interopRequireDefault(on_1);\n\n\n\nvar _off2 = _interopRequireDefault(off_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addEventListener);\n\nvar addFocusListener_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = void 0;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function remove() {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function remove() {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addFocusListener_1);\n\nvar Modal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _activeElement2 = _interopRequireDefault(activeElement_1);\n\n\n\nvar _contains2 = _interopRequireDefault(contains);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _deprecated2 = _interopRequireDefault(deprecated_1);\n\n\n\nvar _elementType2 = _interopRequireDefault(elementType_1);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\n\n\nvar _ModalManager2 = _interopRequireDefault(ModalManager_1);\n\n\n\nvar _Portal2 = _interopRequireDefault(Portal_1);\n\n\n\nvar _RefHolder2 = _interopRequireDefault(RefHolder_1);\n\n\n\nvar _addEventListener2 = _interopRequireDefault(addEventListener);\n\n\n\nvar _addFocusListener2 = _interopRequireDefault(addFocusListener_1);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n function Modal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Modal.prototype.omitProps = function omitProps(props, propTypes$$1) {\n\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes$$1, prop)) {\n newProps[prop] = props[prop];\n }\n });\n\n return newProps;\n };\n\n Modal.prototype.render = function render() {\n var _props = this.props,\n show = _props.show,\n container = _props.container,\n children = _props.children,\n Transition = _props.transition,\n backdrop = _props.backdrop,\n className = _props.className,\n style = _props.style,\n onExit = _props.onExit,\n onExiting = _props.onExiting,\n onEnter = _props.onEnter,\n onEntering = _props.onEntering,\n onEntered = _props.onEntered;\n\n\n var dialog = _react2.default.Children.only(children);\n var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n var mountModal = show || Transition && !this.state.exited;\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props,\n role = _dialog$props.role,\n tabIndex = _dialog$props.tabIndex;\n\n\n if (role === undefined || tabIndex === undefined) {\n dialog = (0, React.cloneElement)(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2.default.createElement(\n Transition,\n {\n appear: true,\n unmountOnExit: true,\n 'in': show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2.default.createElement(\n _Portal2.default,\n {\n ref: this.setMountNode,\n container: container,\n onRendered: this.onPortalRendered\n },\n _react2.default.createElement(\n 'div',\n _extends({\n ref: this.setModalNodeRef,\n role: role || 'dialog'\n }, filteredProps, {\n style: style,\n className: className\n }),\n backdrop && this.renderBackdrop(),\n _react2.default.createElement(\n _RefHolder2.default,\n { ref: this.setDialogRef },\n dialog\n )\n )\n );\n };\n\n Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n if (!this.props.show && nextProps.show) {\n this.checkForFocus();\n }\n };\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n show = _props2.show,\n transition = _props2.transition;\n\n\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n Modal.prototype.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) {\n return;\n }\n\n var dialogElement = this.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n\n if (!dialogElement.hasAttribute('tabIndex')) {\n (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n dialogElement.setAttribute('tabIndex', -1);\n }\n\n dialogElement.focus();\n }\n };\n\n Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n Modal.prototype.getDialogElement = function getDialogElement() {\n return _reactDom2.default.findDOMNode(this.dialog);\n };\n\n Modal.prototype.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes2.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes2.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes2.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => }\n * ```\n */\n renderBackdrop: _propTypes2.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes2.default.func,\n\n /**\n * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n * @deprecated\n */\n onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes2.default.func,\n\n /**\n * A style object for the backdrop component.\n */\n backdropStyle: _propTypes2.default.object,\n\n /**\n * A css class or classes for the backdrop component.\n */\n backdropClassName: _propTypes2.default.string,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes2.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes2.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the dialog component.\n */\n transition: _elementType2.default,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType2.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes2.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes2.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react2.default.createElement('div', props);\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = { exited: !this.props.show };\n\n this.renderBackdrop = function () {\n var _props3 = _this2.props,\n backdropStyle = _props3.backdropStyle,\n backdropClassName = _props3.backdropClassName,\n renderBackdrop = _props3.renderBackdrop,\n Transition = _props3.backdropTransition;\n\n\n var backdropRef = function backdropRef(ref) {\n return _this2.backdrop = ref;\n };\n\n var backdrop = renderBackdrop({\n ref: backdropRef,\n style: backdropStyle,\n className: backdropClassName,\n onClick: _this2.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2.default.createElement(\n Transition,\n {\n appear: true,\n 'in': _this2.props.show\n },\n backdrop\n );\n }\n\n return backdrop;\n };\n\n this.onPortalRendered = function () {\n _this2.autoFocus();\n\n if (_this2.props.onShow) {\n _this2.props.onShow();\n }\n };\n\n this.onShow = function () {\n var doc = (0, _ownerDocument2.default)(_this2);\n var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n };\n\n this.onHide = function () {\n _this2.props.manager.remove(_this2);\n\n _this2._onDocumentKeydownListener.remove();\n\n _this2._onDocumentKeyupListener.remove();\n\n _this2._onFocusinListener.remove();\n\n if (_this2.props.restoreFocus) {\n _this2.restoreLastFocus();\n }\n };\n\n this.setMountNode = function (ref) {\n _this2.mountNode = ref ? ref.getMountNode() : ref;\n };\n\n this.setModalNodeRef = function (ref) {\n _this2.modalNode = ref;\n };\n\n this.setDialogRef = function (ref) {\n _this2.dialog = ref;\n };\n\n this.handleHidden = function () {\n _this2.setState({ exited: true });\n _this2.onHide();\n\n if (_this2.props.onExited) {\n var _props4;\n\n (_props4 = _this2.props).onExited.apply(_props4, arguments);\n }\n };\n\n this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this2.props.onBackdropClick) {\n _this2.props.onBackdropClick(e);\n }\n\n if (_this2.props.backdrop === true) {\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyDown = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyDown) {\n _this2.props.onEscapeKeyDown(e);\n }\n\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyUp = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyUp) {\n _this2.props.onEscapeKeyUp(e);\n }\n }\n };\n\n this.checkForFocus = function () {\n if (_inDOM2.default) {\n _this2.lastFocus = (0, _activeElement2.default)();\n }\n };\n\n this.enforceFocus = function () {\n if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n return;\n }\n\n var dialogElement = _this2.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n dialogElement.focus();\n }\n };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Modal_1);\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({\n polyfill: polyfill\n});\n\nvar PropTypes = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.'); // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]);\n\nexports.classNamesShape = classNamesShape;\n});\n\nunwrapExports(PropTypes);\nvar PropTypes_1 = PropTypes.transitionTimeout;\nvar PropTypes_2 = PropTypes.classNamesShape;\nvar PropTypes_3 = PropTypes.timeoutsShape;\n\nvar Transition_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes$$1 = _interopRequireWildcard(propTypes);\n\nvar _react = _interopRequireDefault(React);\n\nvar _reactDom = _interopRequireDefault(reactDom);\n\n\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {(state) => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n * this.setState({ in: true });\n * }\n *\n * render() {\n * return (\n *
\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter;\n appear = timeout.appear;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n _this2.onTransitionEnd(node, timeouts.enter, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes$$1.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element.\n * This function is called with the current transition status\n * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n * to apply context specific props to a component.\n *\n * ```jsx\n * \n * {(status) => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes$$1.oneOfType([PropTypes$$1.func.isRequired, PropTypes$$1.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes$$1.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes$$1.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes$$1.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes$$1.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes$$1.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes$$1.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided\n *\n * You may specify a single timeout for all transitions like: `timeout={500}`,\n * or individually like:\n *\n * ```jsx\n * timeout={{\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * @type {number | { enter?: number, exit?: number }}\n */\n timeout: function timeout(props) {\n var pt = process.env.NODE_ENV !== \"production\" ? PropTypes.timeoutsShape : {}; if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes$$1.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, reactLifecyclesCompat_es.polyfill)(Transition);\n\nexports.default = _default;\n});\n\nunwrapExports(Transition_1);\nvar Transition_2 = Transition_1.EXITING;\nvar Transition_3 = Transition_1.ENTERED;\nvar Transition_4 = Transition_1.ENTERING;\nvar Transition_5 = Transition_1.EXITED;\nvar Transition_6 = Transition_1.UNMOUNTED;\n\nvar Fade_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _fadeStyles;\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _Transition2 = _interopRequireDefault(Transition_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[Transition_1.ENTERING] = 'in', _fadeStyles[Transition_1.ENTERED] = 'in', _fadeStyles);\n\nvar Fade = function (_React$Component) {\n _inherits(Fade, _React$Component);\n\n function Fade(props, context) {\n _classCallCheck(this, Fade);\n\n return _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n }\n\n Fade.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['className', 'children']);\n\n return _react2.default.createElement(\n _Transition2.default,\n props,\n function (status, innerProps) {\n return _react2.default.cloneElement(children, _extends({}, innerProps, {\n className: (0, _classnames2.default)('fade', className, children.props.className, fadeStyles[status])\n }));\n }\n );\n };\n\n return Fade;\n}(_react2.default.Component);\n\nexports.default = Fade;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Fade_1);\n\nvar Body = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalBody = function (_React$Component) {\n _inherits(ModalBody, _React$Component);\n\n function ModalBody() {\n _classCallCheck(this, ModalBody);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalBody.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalBody.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalBody.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-body') }),\n children\n );\n };\n\n return ModalBody;\n}(_react2.default.Component);\n\nModalBody.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalBody;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Body);\n\nvar Dismiss_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar chain = function chain(a, b) {\n return function () {\n a && a.apply(undefined, arguments);\n b && b.apply(undefined, arguments);\n };\n};\n\nvar Dismiss = function (_React$Component) {\n _inherits(Dismiss, _React$Component);\n\n function Dismiss() {\n _classCallCheck(this, Dismiss);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Dismiss.prototype.render = function render() {\n var _props = this.props,\n Tag = _props.component,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['component', 'children']);\n\n return _react2.default.createElement(\n Tag,\n _extends({}, props, {\n onClick: chain(props.onClick, this.context.onModalHide)\n }),\n children\n );\n };\n\n return Dismiss;\n}(_react2.default.Component);\n\nDismiss.propTypes = {\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n};\nDismiss.defaultProps = {\n component: 'button'\n};\nDismiss.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = Dismiss;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Dismiss_1);\n\nvar Header = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalHeader = function (_React$Component) {\n _inherits(ModalHeader, _React$Component);\n\n function ModalHeader() {\n _classCallCheck(this, ModalHeader);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalHeader.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalHeader.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n closeButton = _props.closeButton,\n children = _props.children,\n className = _props.className,\n label = _props['aria-label'],\n props = _objectWithoutProperties(_props, ['modalPrefix', 'closeButton', 'children', 'className', 'aria-label']);\n\n var prefix = modalPrefix || ModalHeader.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-header')\n }),\n closeButton && _react2.default.createElement(\n _Dismiss2.default,\n {\n className: 'close',\n 'aria-label': label\n },\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n )\n ),\n children\n );\n };\n\n return ModalHeader;\n}(_react2.default.Component);\n\nModalHeader._isModalHeader = true;\nModalHeader.propTypes = {\n closeButton: _propTypes2.default.bool,\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string,\n\n 'aria-label': _propTypes2.default.string\n};\nModalHeader.defaultProps = {\n closeButton: false,\n 'aria-label': 'Close Modal'\n};\nModalHeader.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = ModalHeader;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Header);\n\nvar Title = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalTitle = function (_React$Component) {\n _inherits(ModalTitle, _React$Component);\n\n function ModalTitle() {\n _classCallCheck(this, ModalTitle);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalTitle.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalTitle.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'className']);\n\n var prefix = modalPrefix || ModalTitle.getDefaultPrefix();\n\n return _react2.default.createElement('h4', _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-title')\n }));\n };\n\n return ModalTitle;\n}(_react2.default.Component);\n\nModalTitle.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\nexports.default = ModalTitle;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Title);\n\nvar Footer = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalFooter = function (_React$Component) {\n _inherits(ModalFooter, _React$Component);\n\n function ModalFooter() {\n _classCallCheck(this, ModalFooter);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalFooter.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalFooter.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalFooter.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-footer') }),\n children\n );\n };\n\n return ModalFooter;\n}(_react2.default.Component);\n\nModalFooter.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalFooter;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Footer);\n\nvar Modal_1$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\n\n\nvar _Modal2 = _interopRequireDefault(Modal_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nvar _Fade2 = _interopRequireDefault(Fade_1);\n\n\n\nvar _Body2 = _interopRequireDefault(Body);\n\n\n\nvar _Header2 = _interopRequireDefault(Header);\n\n\n\nvar _Title2 = _interopRequireDefault(Title);\n\n\n\nvar _Footer2 = _interopRequireDefault(Footer);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar baseIndex = {};\nvar PREFIX = 'modal';\n\nvar getZIndex = void 0;\n\nvar omit = function omit(obj, keys) {\n return Object.keys(obj).reduce(function (o, key) {\n if (keys.indexOf(key) === -1) o[key] = obj[key];\n return o;\n }, {});\n};\n\nfunction DialogTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.TRANSITION_DURATION }));\n}\nfunction BackdropTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));\n}\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n Modal.getDefaultPrefix = function getDefaultPrefix() {\n return PREFIX;\n };\n\n Modal.prototype.getChildContext = function getChildContext() {\n return this._context || (this._context = { onModalHide: this.props.onHide });\n };\n\n function Modal() {\n _classCallCheck(this, Modal);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n _this.handleEntering = _this.handleEntering.bind(_this);\n _this.handleExiting = _this.handleExiting.bind(_this);\n\n _this.state = {\n classes: ''\n };\n return _this;\n }\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n getZIndex = getZIndex || function () {\n var modal = document.createElement('div'),\n backdrop = document.createElement('div'),\n zIndexFactor = void 0;\n\n modal.className = 'modal hide';\n backdrop.className = 'modal-backdrop hide';\n\n document.body.appendChild(modal);\n document.body.appendChild(backdrop);\n\n baseIndex.modal = +(0, _style2.default)(modal, 'z-index');\n baseIndex.backdrop = +(0, _style2.default)(backdrop, 'z-index');\n zIndexFactor = baseIndex.modal - baseIndex.backdrop;\n\n document.body.removeChild(modal);\n document.body.removeChild(backdrop);\n\n return function (type) {\n return baseIndex[type] + zIndexFactor * (_this2.props.manager.modals.length - 1);\n };\n }();\n };\n\n Modal.prototype.handleEntering = function handleEntering() {\n this._show.apply(this, arguments);\n\n if (this.props.onEntering) {\n this.props.onEntering();\n }\n };\n\n Modal.prototype.handleExiting = function handleExiting() {\n this._removeAttentionClasses();\n if (this.props.onExiting) {\n this.props.onExiting();\n }\n };\n\n Modal.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n keyboard = _props.keyboard,\n transition = _props.transition,\n modalPrefix = _props.modalPrefix,\n dialogClassName = _props.dialogClassName,\n container = _props.container,\n onEnter = _props.onEnter,\n onEntered = _props.onEntered,\n onExit = _props.onExit,\n onExited = _props.onExited,\n props = _objectWithoutProperties(_props, ['className', 'children', 'keyboard', 'transition', 'modalPrefix', 'dialogClassName', 'container', 'onEnter', 'onEntered', 'onExit', 'onExited']);\n\n var _state = this.state,\n dialog = _state.dialog,\n classes = _state.classes,\n backdrop = _state.backdrop;\n\n\n delete props.manager;\n var elementProps = omit(props, Object.keys(Modal.propTypes));\n\n var prefix = modalPrefix || Modal.getDefaultPrefix();\n\n if (transition === true) transition = DialogTransition;\n\n var modal = _react2.default.createElement(\n 'div',\n _extends({}, elementProps, {\n ref: function ref(r) {\n return _this3.dialog = r;\n },\n style: dialog,\n className: (0, _classnames2.default)(className, prefix, { in: props.show && !transition }),\n onClick: this.props.backdrop ? function (e) {\n return _this3.handleBackdropClick(e);\n } : null\n }),\n _react2.default.createElement(\n 'div',\n {\n key: 'modal',\n ref: function ref(r) {\n return _this3.innerRef = r;\n },\n className: (0, _classnames2.default)(prefix + '-dialog', dialogClassName, classes, (props.small || props.sm) && prefix + '-sm', (props.large || props.lg) && prefix + '-lg')\n },\n _react2.default.createElement(\n 'div',\n { className: prefix + '-content' },\n children\n )\n )\n );\n\n return _react2.default.createElement(\n _Modal2.default,\n {\n keyboard: keyboard,\n ref: function ref(_ref) {\n _this3.modal = _ref && _ref.modal;\n _this3.backdrop = _ref && _ref.backdrop;\n },\n container: container,\n backdrop: props.backdrop,\n show: props.show,\n backdropStyle: backdrop,\n backdropClassName: prefix + '-backdrop',\n containerClassName: prefix + '-open',\n transition: transition || undefined,\n backdropTransition: transition ? BackdropTransition : undefined,\n onHide: this.props.onHide,\n onEnter: onEnter,\n onEntering: this.handleEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: this.handleExiting,\n onExited: onExited\n },\n modal\n );\n };\n\n Modal.prototype.attention = function attention() {\n var _this4 = this;\n\n var attentionClass = this.props.attentionClass;\n\n\n if (attentionClass) this.setState({ classes: '' }, function () {\n if (_this4.props.show) {\n // eslint-disable-next-line no-unused-expressions\n _this4.innerRef.offsetWidth;\n _this4.setState({\n classes: attentionClass + ' animated'\n });\n }\n });\n };\n\n Modal.prototype.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) return;\n if (this.props.backdrop === 'static') return this.attention();\n\n this.props.onHide();\n };\n\n Modal.prototype._show = function _show() {\n if (this.props.show) this.setState(this._getStyles());\n };\n\n Modal.prototype._getStyles = function _getStyles() {\n if (!_inDOM2.default) return {};\n\n var node = (0, reactDom.findDOMNode)(this.dialog),\n doc = (0, _ownerDocument2.default)(node),\n scrollHt = node.scrollHeight,\n bodyIsOverflowing = (0, _isOverflowing2.default)(this.props.container || doc.body),\n modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;\n\n return {\n dialog: {\n zIndex: getZIndex('modal'),\n paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0,\n paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0\n },\n backdrop: {\n zIndex: getZIndex('backdrop')\n }\n };\n };\n\n Modal.prototype._removeAttentionClasses = function _removeAttentionClasses() {\n this.setState({ classes: '' });\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = {\n show: _propTypes2.default.bool,\n\n /** sizes **/\n small: _propTypes2.default.bool,\n sm: _propTypes2.default.bool,\n large: _propTypes2.default.bool,\n lg: _propTypes2.default.bool,\n /** --- **/\n\n backdrop: _propTypes2.default.oneOf(['static', true, false]),\n keyboard: _propTypes2.default.bool,\n animate: _propTypes2.default.bool,\n transition: _propTypes2.default.any,\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onHide: _propTypes2.default.func,\n onEnter: _propTypes2.default.func,\n onEntering: _propTypes2.default.func,\n onEntered: _propTypes2.default.func,\n onExit: _propTypes2.default.func,\n onExiting: _propTypes2.default.func,\n onExited: _propTypes2.default.func,\n\n modalPrefix: _propTypes2.default.string,\n dialogClassName: _propTypes2.default.string,\n attentionClass: _propTypes2.default.string\n};\nModal.defaultProps = {\n backdrop: true,\n keyboard: true,\n animate: true,\n transition: true,\n container: _inDOM2.default ? document.body : null,\n attentionClass: 'shake',\n manager: (_Modal2.default.getDefaultProps ? _Modal2.default.getDefaultProps() : _Modal2.default.defaultProps).manager\n};\nModal.childContextTypes = {\n onModalHide: _propTypes2.default.func\n};\n\n\nModal.injectCSSPrefix = function (prefix) {\n PREFIX = prefix;\n};\n\nfunction getDefaultPrefix() {\n return PREFIX;\n}\n\n_Body2.default.getDefaultPrefix = getDefaultPrefix;\n_Header2.default.getDefaultPrefix = getDefaultPrefix;\n_Title2.default.getDefaultPrefix = getDefaultPrefix;\n_Footer2.default.getDefaultPrefix = getDefaultPrefix;\n\nModal.Body = _Body2.default;\nModal.Header = _Header2.default;\nModal.Title = _Title2.default;\nModal.Footer = _Footer2.default;\nModal.Dismiss = _Dismiss2.default;\n\nModal.BaseModal = Modal;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nvar Modal$1 = unwrapExports(Modal_1$1);\n\nvar css$o = \"/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/*\\nAnimate.css - http://daneden.me/animate\\nLicensed under the ☺ license (http://licence.visualidiot.com/)\\nCopyright (c) 2012 Dan Eden*/\\n.animated {\\n -webkit-animation-duration: 1s;\\n -moz-animation-duration: 1s;\\n -o-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n@-webkit-keyframes shake {\\n 0%,\\n 100% {\\n -webkit-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -webkit-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -webkit-transform: translateX(10px);\\n }\\n}\\n@-moz-keyframes shake {\\n 0%,\\n 100% {\\n -moz-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -moz-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -moz-transform: translateX(10px);\\n }\\n}\\n@-o-keyframes shake {\\n 0%,\\n 100% {\\n -o-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -o-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -o-transform: translateX(10px);\\n }\\n}\\n@keyframes shake {\\n 0%,\\n 100% {\\n transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n transform: translateX(10px);\\n }\\n}\\n.shake {\\n -webkit-animation-name: shake;\\n -moz-animation-name: shake;\\n -o-animation-name: shake;\\n animation-name: shake;\\n}\\n.modal {\\n display: block;\\n}\\n.modal-content > .close {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n}\\n@media (min-width: 768px) {\\n .modal-sm > .modal-dialog {\\n width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg > .modal-dialog {\\n width: 900px;\\n }\\n}\\n\";\nstyleInject(css$o);\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\nvar css$p = \":root {\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --ui-border-color: #44626f;\\n}\\n.modal-dialog .modal-content {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-border-color);\\n color: var(--text-secondary-color);\\n border: 0;\\n}\\n.modal-dialog .modal-content .modal-header,\\n.modal-dialog .modal-content .modal-footer {\\n border-color: var(--ui-border-color);\\n}\\n.modal-dialog .modal-content .dialog-separator,\\n.modal-dialog .modal-content .dialog-separator-before,\\n.modal-dialog .modal-content .dialog-separator-after {\\n position: relative;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-before:before,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n background-color: #000;\\n content: ' ';\\n display: block;\\n height: 3px;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator-before:before {\\n top: -3px;\\n}\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n bottom: -3px;\\n}\\n.modal-dialog .modal-content .modal-body {\\n color: var(--text-primary-color);\\n padding: 16px 22px 0px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar {\\n width: 6px;\\n background-color: var(--ui-gray-dark);\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar-thumb {\\n background-color: var(--ui-gray-light);\\n border-radius: 5px;\\n}\\n.modal-dialog .modal-content .modal-header {\\n border-bottom-width: 3px;\\n border-bottom-style: solid;\\n border-bottom-color: #000;\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-header h4 {\\n color: var(--text-secondary-color);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 24px;\\n padding-right: 24px;\\n}\\n.modal-dialog .modal-content .modal-footer {\\n border-top: 0;\\n padding-top: 0;\\n}\\n.modal-dialog .card-round {\\n background-color: var(--ui-gray-dark);\\n padding: 10px;\\n}\\n.modal-dialog .modal-header {\\n position: relative;\\n}\\n.button-close,\\n.modal-dialog button.close {\\n color: var(--text-secondary-color);\\n height: 25px;\\n opacity: 1;\\n overflow: hidden;\\n text-align: center;\\n text-shadow: none;\\n width: 25px;\\n font-size: 25px;\\n font-weight: lighter;\\n}\\n\";\nstyleInject(css$p);\n\nvar UserPreferencesModal =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferencesModal, _Component);\n\n // TODO: Make this component more generic to allow things other than W/L and hotkeys...\n function UserPreferencesModal(props) {\n var _this;\n\n _classCallCheck(this, UserPreferencesModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UserPreferencesModal).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"save\", function () {\n _this.props.onSave({\n windowLevelData: _this.state.windowLevelData,\n hotKeysData: _this.state.hotKeysData\n });\n });\n\n _this.state = {\n windowLevelData: lodash_clonedeep(props.windowLevelData),\n hotKeysData: lodash_clonedeep(props.hotKeysData)\n };\n return _this;\n }\n\n _createClass(UserPreferencesModal, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prev, next) {\n var newStateData = {};\n\n if (!lodash_isequal(prev.windowLevelData, next.windowLevelData)) {\n newStateData.windowLevelData = prev.windowLevelData;\n }\n\n if (!lodash_isequal(prev.hotKeysData, next.hotKeysData)) {\n newStateData.hotKeysData = prev.hotKeysData;\n }\n\n if (newStateData.hotKeysData || newStateData.windowLevelData) {\n this.setState(newStateData);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Modal$1, {\n show: this.props.isOpen,\n onHide: this.props.onCancel,\n \"aria-labelledby\": \"ModalHeader\",\n className: \"modal fade themed in\",\n backdrop: false,\n large: true,\n keyboard: false\n }, React.createElement(Modal$1.Header, {\n closeButton: true\n }, React.createElement(Modal$1.Title, null, \"User Preferences\")), React.createElement(Modal$1.Body, null, React.createElement(UserPreferences, {\n windowLevelData: this.state.windowLevelData,\n hotKeysData: this.state.hotKeysData\n })), React.createElement(Modal$1.Footer, null, React.createElement(\"button\", {\n className: \"btn btn-danger pull-left\",\n onClick: this.props.onResetToDefaults\n }, \"Reset to Defaults\"), React.createElement(Modal$1.Dismiss, {\n className: \"btn btn-default\"\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.save\n }, \"Save\")));\n }\n }]);\n\n return UserPreferencesModal;\n}(Component);\n\n_defineProperty(UserPreferencesModal, \"propTypes\", {\n isOpen: propTypes.bool.isRequired,\n onCancel: propTypes.func,\n onSave: propTypes.func,\n onResetToDefaults: propTypes.func,\n windowLevelData: propTypes.object,\n hotKeysData: propTypes.object\n});\n\n_defineProperty(UserPreferencesModal, \"defaultProps\", {\n isOpen: false\n});\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = _baseRest(function(arrays) {\n return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));\n});\n\nvar union_1 = union;\n\nvar EnterLeaveCounter_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = union_1(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without_1(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n});\n\nunwrapExports(EnterLeaveCounter_1);\n\nvar BrowserDetector = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.isFirefox = memoize_1(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = memoize_1(function () { return Boolean(window.safari); });\n});\n\nunwrapExports(BrowserDetector);\nvar BrowserDetector_1 = BrowserDetector.isFirefox;\nvar BrowserDetector_2 = BrowserDetector.isSafari;\n\nvar MonotonicInterpolant_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n});\n\nunwrapExports(MonotonicInterpolant_1);\n\nvar OffsetUtils = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n});\n\nunwrapExports(OffsetUtils);\nvar OffsetUtils_1 = OffsetUtils.getNodeClientOffset;\nvar OffsetUtils_2 = OffsetUtils.getEventClientOffset;\nvar OffsetUtils_3 = OffsetUtils.getDragPreviewOffset;\n\nvar NativeTypes = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n});\n\nunwrapExports(NativeTypes);\nvar NativeTypes_1 = NativeTypes.FILE;\nvar NativeTypes_2 = NativeTypes.URL;\nvar NativeTypes_3 = NativeTypes.TEXT;\n\nvar NativeDragSources = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, null);\n return result != null ? result : defaultValue;\n}\nvar nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n },\n _a[NativeTypes.URL] = {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n _a[NativeTypes.TEXT] = {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n _a);\nfunction createNativeDragSource(type) {\n var _a = nativeTypesConfig[type], exposeProperty = _a.exposeProperty, matchesTypes = _a.matchesTypes, getData = _a.getData;\n return /** @class */ (function () {\n function NativeDragSource() {\n var _a;\n this.item = (_a = {},\n Object.defineProperty(_a, exposeProperty, {\n get: function () {\n // tslint:disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + exposeProperty + \"\\\" until the drop event.\");\n return null;\n },\n enumerable: true,\n configurable: true\n }),\n _a);\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n }());\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n});\n\nunwrapExports(NativeDragSources);\nvar NativeDragSources_1 = NativeDragSources.createNativeDragSource;\nvar NativeDragSources_2 = NativeDragSources.matchNativeItemType;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$a.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq_1(value, objectProto$a[key]) && !hasOwnProperty$9.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nvar defaults_1 = defaults;\n\nvar HTML5Backend_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return ((!!document && document.body.contains(node)) ||\n (!!_this.window && _this.window.document.body.contains(node)));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (!dataTransfer.types &&\n (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n else {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.context = manager.getContext();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n if (this.context && this.context.window) {\n return this.context.window;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return defaults_1(sourceNodeOptions || {}, {\n dropEffect: this.altKeyPressed ? 'copy' : 'move',\n });\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return defaults_1(sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false,\n });\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n var SourceType = NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n});\n\nunwrapExports(HTML5Backend_1);\n\nvar getEmptyImage_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.default = getEmptyImage;\n});\n\nunwrapExports(getEmptyImage_1);\n\nvar lib$2 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nexports.getEmptyImage = getEmptyImage_1.default;\n\nexports.NativeTypes = NativeTypes;\nfunction createHTML5Backend(manager) {\n return new HTML5Backend_1.default(manager);\n}\nexports.default = createHTML5Backend;\n});\n\nvar HTML5Backend$1 = unwrapExports(lib$2);\nvar lib_1$1 = lib$2.getEmptyImage;\nvar lib_2$1 = lib$2.NativeTypes;\n\n// TODO: Find a way for this context to be used in the parent application as well.\n\nfunction ViewerbaseDragDropContext(DecoratedClass) {\n return lib_1(HTML5Backend$1, null, true)(DecoratedClass);\n}\n\nexport { CineDialog, ExampleDropTarget$1 as ExampleDropTarget, LayoutButton, LayoutChooser, LayoutManager, LayoutPanelDropTarget$1 as LayoutPanelDropTarget, MeasurementTable, MeasurementTableItem, PlayClipButton, RoundedButtonGroup, ScrollableArea, SelectTree, SimpleDialog, StudyBrowser, StudyList, TableList, TableListItem, ThumbnailEntry, Toolbar, ToolbarSection, UserPreferences, UserPreferencesModal, ViewerbaseDragDropContext, Dropdown };\n//# sourceMappingURL=index.es.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport { Dropdown } from \"react-viewerbase\";\nimport './Header.css';\nimport list from './HeaderMenuList.json';\n//import Icons from \"../../images/icons.svg\";\n\nconst Icons = '/icons.svg';\n\nfunction Header({ home, location }) {\n const { state } = location\n\n return (\n
\n
\n {\n state && state.studyLink &&\n \n Back to Viewer\n \n }\n\n \n \n \n \n
Open Health Imaging Foundation
\n
\n\n {!home &&\n Study list\n }\n
\n\n\n
\n \n INVESTIGATIONAL USE ONLY\n \n \n
\n\n
\n )\n}\n\nHeader.propTypes = {\n home: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired\n};\n\nHeader.defaultProps = {\n home: true\n};\n\nexport default withRouter(Header)\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","import { connect } from 'react-redux';\nimport { StudyBrowser } from 'react-viewerbase';\nimport cloneDeep from 'lodash.clonedeep';\n\n// TODO\n// - Determine in which display set is active from Redux (activeViewportIndex and layout viewportData)\n// - Pass in errors and stack loading progress from Redux\nconst mapStateToProps = (state, ownProps) => {\n // If we know that the stack loading progress details have changed,\n // we can try to update the component state so that the thumbnail\n // progress bar is updated\n const stackLoadingProgressMap = state.loading.progress;\n const studiesWithLoadingData = cloneDeep(ownProps.studies);\n\n studiesWithLoadingData.forEach(study => {\n study.thumbnails.forEach(data => {\n const { displaySetInstanceUid } = data\n const stackId = `StackProgress:${displaySetInstanceUid}`;\n const stackProgressData = stackLoadingProgressMap[stackId];\n\n let stackPercentComplete = 0;\n if (stackProgressData) {\n stackPercentComplete = stackProgressData.percentComplete;\n }\n\n data.stackPercentComplete = stackPercentComplete;\n })\n });\n\n return {\n studies: studiesWithLoadingData\n };\n};\n\nconst ConnectedStudyBrowser = connect(\n mapStateToProps,\n null\n)(StudyBrowser);\n\nexport default ConnectedStudyBrowser;\n","import { connect } from 'react-redux';\nimport { LayoutManager } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\n\nconst mapStateToProps = state => {\n const viewportPluginIds = state.plugins.availablePlugins.filter(plugin => plugin.type === OHIF.plugins.PLUGIN_TYPES.VIEWPORT).map(plugin => plugin.id);\n const availablePlugins = {}\n viewportPluginIds.forEach(id => {\n const plugin = OHIF.plugins.availablePlugins.find(plugin => plugin.id === id);\n if (plugin) {\n availablePlugins[id] = plugin.component;\n }\n });\n\n // TODO Use something like state.plugins.defaultPlugin[OHIF.plugins.PLUGIN_TYPES.VIEWPORT]\n let defaultPlugin;\n if (viewportPluginIds && viewportPluginIds.length) {\n defaultPlugin = viewportPluginIds[0];\n }\n\n return {\n layout: state.viewports.layout,\n activeViewportIndex: state.viewports.activeViewportIndex,\n availablePlugins,\n defaultPlugin\n };\n};\n\nconst ConnectedLayoutManager = connect(\n mapStateToProps,\n null\n)(LayoutManager);\n\nexport default ConnectedLayoutManager;\n","import { Component } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport cornerstoneMath from \"cornerstone-math\";\nimport { OHIF } from 'ohif-core';\nimport ConnectedLayoutManager from './ConnectedLayoutManager.js';\nimport './ViewerMain.css';\n\n// Attempt to fix weird undefined dep issue\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\n\nclass ViewerMain extends Component {\n state = {\n viewportData: [],\n };\n\n static propTypes = {\n studies: PropTypes.array.isRequired\n };\n\n getDisplaySetsWithImages(studies) {\n const displaySets = [];\n studies.forEach((study) => {\n study.displaySets.forEach(dSet => {\n if (dSet.images.length) {\n displaySets.push(dSet);\n }\n });\n });\n\n return displaySets;\n }\n\n findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {\n const study = studies.find(study => {\n return study.studyInstanceUid === studyInstanceUid;\n });\n\n if (!study) {\n return;\n }\n\n return study.displaySets.find(displaySet => {\n return displaySet.displaySetInstanceUid === displaySetInstanceUid;\n });\n }\n\n componentDidMount() {\n // Add beforeUnload event handler to check for unsaved changes\n //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Get all the display sets for the viewer studies\n const displaySets = this.getDisplaySetsWithImages(this.props.studies);\n\n this.setState({\n viewportData: displaySets\n });\n }\n\n setViewportData = ({viewportIndex, item}) => {\n // TODO: Replace this with mapDispatchToProps call\n // if we decide to put viewport info into redux\n\n // Note: Use Slice because React does a shallow equality check. Mutating the array\n // would not trigger a re-render. We have to create a copy.\n debugger;\n console.warn(item);\n const updatedViewportData = this.state.viewportData.slice(0);\n\n const displaySet = this.findDisplaySet(this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid);\n\n console.warn(displaySet);\n\n updatedViewportData[viewportIndex] = Object.assign({}, displaySet);\n\n this.setState({\n viewportData: updatedViewportData\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n\n componentWillUnmount() {\n // Remove beforeUnload event handler...\n //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Destroy the synchronizer used to update reference lines\n OHIF.viewer.updateImageSynchronizer.destroy();\n\n // TODO: Instruct all plugins to clean up themselves\n //\n // Clear references to all stacks in the StackManager\n //StackManager.clearStacks();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n }\n}\n\nexport default ViewerMain;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedStudyBrowser from './ConnectedStudyBrowser.js';\nimport ViewerMain from './ViewerMain.js';\nimport './FlexboxLayout.css';\n\nclass FlexboxLayout extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n studiesForBrowser: []\n };\n\n componentDidMount() {\n const studiesForBrowser = this.getStudiesForBrowser();\n\n this.setState({\n studiesForBrowser\n });\n }\n\n getStudiesForBrowser = () => {\n const { studies } = this.props;\n\n // TODO[react]:\n // - Add sorting of display sets\n // - Add useMiddleSeriesInstanceAsThumbnail\n // - Add showStackLoadingProgressBar option\n return studies.map((study) => {\n const { studyInstanceUid } = study;\n\n const thumbnails = study.displaySets.map((displaySet) => {\n const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet;\n const imageId = displaySet.images[0].getImageId();\n\n return {\n imageId,\n displaySetInstanceUid,\n seriesDescription,\n seriesNumber,\n instanceNumber,\n numImageFrames,\n };\n });\n\n return {\n studyInstanceUid,\n thumbnails\n };\n });\n }\n\n render() {\n let mainContentClassName = \"main-content\"\n if (this.props.leftSidebarOpen) {\n mainContentClassName += ' sidebar-left-open';\n }\n\n if (this.props.rightSidebarOpen) {\n mainContentClassName += ' sidebar-right-open';\n }\n\n // TODO[react]: Add measurementLightTable\n return (\n
\n
\n \n
\n
\n \n
\n {/*
\n {{> measurementLightTable (clone this)}}\n
*/}\n
\n );\n }\n}\n\nexport default FlexboxLayout;\n","import { connect } from 'react-redux';\nimport FlexboxLayout from './FlexboxLayout';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen,\n };\n};\n\nconst ConnectedFlexboxLayout = connect(\n mapStateToProps,\n null\n)(FlexboxLayout);\n\nexport default ConnectedFlexboxLayout;\n","import { connect } from 'react-redux';\nimport { ToolbarSection } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setToolActive } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n return {\n buttons: state.tools.buttons,\n activeCommand: activeButton && activeButton.command\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n setToolActive: tool => {\n dispatch(setToolActive(tool.command))\n }\n };\n};\n\nconst ConnectedToolbarSection = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarSection);\n\nexport default ConnectedToolbarSection;\n","import { connect } from 'react-redux';\nimport { LayoutButton } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setLayout } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n return {\n currentLayout: state.viewports.layout,\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n // TODO: Change if layout switched becomes more complex\n onChange: selectedCell => {\n let viewports = [];\n const rows = selectedCell.row + 1;\n const columns = selectedCell.col + 1;\n const numViewports = rows * columns;\n for (let i = 0; i < numViewports; i++) {\n viewports.push({\n height: `${100 / rows}%`,\n width: `${100 / columns}%`\n });\n }\n const layout = {\n viewports\n };\n\n dispatch(setLayout(layout))\n }\n };\n};\n\nconst ConnectedLayoutButton = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutButton);\n\nexport default ConnectedLayoutButton;\n","import { connect } from 'react-redux';\nimport { CineDialog } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\nimport cloneDeep from 'lodash.clonedeep';\n\nconst { setViewportSpecificData } = OHIF.redux.actions;\n\n// TODO: I'm guessing this function will be used in other connect locations\n// so we might want to put it somewhere shared\nfunction getActiveViewportSpecificData(state) {\n const { viewportSpecificData, activeViewportIndex } = state.viewports;\n return viewportSpecificData[activeViewportIndex];\n}\n\nconst mapStateToProps = state => {\n // TODO:\n // - Test if including CineDialog in the toolbarRow will prevent it\n // from hovering over the rest of the UI when visible.\n //\n // - Create custom ToolbarButton which just shows Play state\n // - Connect this ToolbarButton to Redux\n const activeViewportSpecificData = getActiveViewportSpecificData(state);\n\n let stack = {\n imageIds: [],\n currentImageIdIndex: 0\n };\n if (activeViewportSpecificData && activeViewportSpecificData.stack) {\n stack = activeViewportSpecificData.stack\n }\n\n let cine = {\n isPlaying: false,\n cineFrameRate: 24\n };\n if (activeViewportSpecificData && activeViewportSpecificData.cine) {\n cine = activeViewportSpecificData.cine\n }\n\n\n // TODO: activeViewportStackData won't currently change anything on\n // CornerstoneViewport. The updates are too frequent and it's killing\n // performance. Need to revisit how we can do this.\n return {\n activeViewportStackData: stack,\n activeViewportCineData: cine,\n activeViewportIndex: state.viewports.activeViewportIndex\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n dispatchSetViewportSpecificData: (viewportIndex, data) => {\n dispatch(setViewportSpecificData(viewportIndex, data));\n },\n };\n};\n\nconst mergeProps = (propsFromState, propsFromDispatch, ownProps) => {\n const { activeViewportStackData, activeViewportCineData, activeViewportIndex } = propsFromState;\n\n return {\n cineFrameRate: activeViewportCineData.cineFrameRate,\n isPlaying: activeViewportCineData.isPlaying,\n onPlayPauseChanged: isPlaying => {\n const cine = cloneDeep(activeViewportCineData);\n cine.isPlaying = !cine.isPlaying;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onFrameRateChanged: frameRate => {\n const cine = cloneDeep(activeViewportCineData);\n cine.cineFrameRate = frameRate;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onClickNextButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n const largestPossibleIndex = stack.imageIds.length - 1;\n stack.currentImageIdIndex = Math.min(stack.currentImageIdIndex + 1, largestPossibleIndex)\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickBackButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = Math.max(stack.currentImageIdIndex - 1, 0);\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToStart: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = 0;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToEnd: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = stack.imageIds.length;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n }\n };\n};\n\nconst ConnectedCineDialog = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(CineDialog);\n\nexport default ConnectedCineDialog;\n","import React, { Component } from \"react\";\nimport ConnectedToolbarSection from './ConnectedToolbarSection';\nimport ConnectedLayoutButton from './ConnectedLayoutButton';\nimport ConnectedCineDialog from './ConnectedCineDialog.js';\nimport PropTypes from 'prop-types';\nimport { RoundedButtonGroup } from 'react-viewerbase';\nimport './ToolbarRow.css';\n//import Icons from \"../images/icons.svg\"\n\nconst Icons = '/icons.svg';\n\nclass ToolbarRow extends Component {\n static propTypes = {\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n setLeftSidebarOpen: PropTypes.func,\n setRightSidebarOpen: PropTypes.func\n };\n\n static defaultProps = {\n leftSidebarOpen: false,\n rightSidebarOpen: false\n };\n\n onLeftSidebarValueChanged = (value) => {\n this.props.setLeftSidebarOpen(!!value);\n }\n\n render() {\n const leftSidebarToggle = [{\n value: 'studies',\n svgLink: `${Icons}#icon-studies`,\n svgWidth: 15,\n svgHeight: 13,\n bottomLabel: 'Series',\n }];\n\n const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null;\n\n return (
\n
\n \n
\n \n \n {/* TODO: Putting cine dialog here for now */}\n
\n \n
\n
\n {/* > roundedButtonGroup rightSidebarToggleButtonData */}\n
\n
\n );\n }\n}\n\nexport default ToolbarRow;\n","export const setLeftSidebarOpen = state => ({\n type: 'SET_LEFT_SIDEBAR_OPEN',\n state\n});\n\nexport const setRightSidebarOpen = state => ({\n type: 'SET_RIGHT_SIDEBAR_OPEN',\n state\n});\n\nconst actions = {\n setLeftSidebarOpen,\n setRightSidebarOpen\n};\n\nexport default actions;\n","import { connect } from 'react-redux';\nimport ToolbarRow from './ToolbarRow';\nimport { setLeftSidebarOpen, setRightSidebarOpen } from '../redux/actions.js';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen\n };\n};\n\n\nconst mapDispatchToProps = dispatch => {\n return {\n setLeftSidebarOpen: state => {\n dispatch(setLeftSidebarOpen(state))\n },\n setRightSidebarOpen: state => {\n dispatch(setRightSidebarOpen(state))\n }\n };\n};\n\nconst ConnectedToolbarRow = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarRow);\n\nexport default ConnectedToolbarRow;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nclass StudyLoadingMonitor extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n setStudyLoadingProgress: PropTypes.func.isRequired,\n clearStudyLoadingProgress: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n // TODO: This is pretty ugly. The thing is that the StudyLoadingListener\n // needs to update the Redux store, but shouldn't know that it exists.\n // I am therefore passing in some functions to update the store instead,\n // but this should definitely be cleaned up somehow.\n const options = {\n _setProgressData: (progressId, progressData) => {\n this.props.setStudyLoadingProgress(progressId, progressData)\n },\n _clearProgressById: (progressId) => {\n this.props.clearStudyLoadingProgress(progressId)\n }\n }\n\n const { StudyLoadingListener } = OHIF.classes;\n this.studyLoadingListener = StudyLoadingListener.getInstance(options);\n this.studyLoadingListener.clear();\n this.studyLoadingListener.addStudies(this.props.studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Destroy stack loading listeners when we close the viewer\n this.studyLoadingListener.clear();\n }\n}\n\n\nexport default StudyLoadingMonitor;\n","import { connect } from 'react-redux';\nimport StudyLoadingMonitor from '../components/StudyLoadingMonitor.js';\nimport OHIF from 'ohif-core'\n\nconst { setStudyLoadingProgress, clearStudyLoadingProgress } = OHIF.redux.actions;\n\nconst mapDispatchToProps = dispatch => {\n return {\n setStudyLoadingProgress: (progressId, progressData) => {\n dispatch(setStudyLoadingProgress(progressId, progressData))\n },\n clearStudyLoadingProgress: progressId => {\n dispatch(clearStudyLoadingProgress(progressId))\n }\n };\n};\n\nconst ConnectedStudyLoadingMonitor = connect(\n null,\n mapDispatchToProps\n)(StudyLoadingMonitor);\n\nexport default ConnectedStudyLoadingMonitor;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nconst { StudyPrefetcher } = OHIF.classes;\n\nclass StudyPrefetcherComponent extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n componentDidMount() {\n const { studies } = this.props;\n\n this.studyPrefetcher = StudyPrefetcher.getInstance();\n this.studyPrefetcher.setStudies(studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Stop prefetching when we close the viewer\n this.studyPrefetcher.destroy();\n }\n}\n\n\nexport default StudyPrefetcherComponent;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport OHIF from 'ohif-core';\n//import { CineDialog } from 'react-viewerbase';\n\nimport Header from '../components/Header'\nimport ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';\nimport ConnectedToolbarRow from \"./ConnectedToolbarRow\";\nimport ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js';\nimport StudyPrefetcher from '../components/StudyPrefetcher.js';\nimport './Viewer.css';\n\nconst { StackManager } = OHIF.utils;\n\n/**\n * Inits OHIF Hanging Protocol's onReady.\n * It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine\n * Hanging Protocol will use OHIF LayoutManager to render viewports properly\n */\n/*const initHangingProtocol = () => {\n // When Hanging Protocol is ready\n HP.ProtocolStore.onReady(() => {\n\n // Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata\n const studyMetadataList = OHIF.viewer.StudyMetadataList.all();\n\n // Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata\n const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();\n\n // Get prior studies map\n const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);\n\n // Creates Protocol Engine object with required arguments\n const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);\n\n // Sets up Hanging Protocol engine\n HP.setEngine(ProtocolEngine);\n });\n};*/\n\n\nOHIF.viewer.defaultTool = {\n left: 'wwwc',\n right: 'zoom',\n middle: 'pan'\n};\n\nOHIF.viewer.refLinesEnabled = true;\n\n/*const viewportUtils = OHIF.viewerbase.viewportUtils;\n\nOHIF.viewer.functionList = {\n toggleCineDialog: viewportUtils.toggleCineDialog,\n toggleCinePlay: viewportUtils.toggleCinePlay,\n clearTools: viewportUtils.clearTools,\n resetViewport: viewportUtils.resetViewport,\n invert: viewportUtils.invert\n};*/\n\n// Create the synchronizer used to update reference lines\nOHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);\n\n// Metadata configuration\nconst metadataProvider = new OHIF.cornerstone.MetadataProvider();\ncornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));\n\nStackManager.setMetadataProvider(metadataProvider);\n\nclass Viewer extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n render() {\n return (<>\n
\n
\n {/**/}\n
\n
\n \n \n \n \n
\n \n );\n }\n}\n\n\nexport default Viewer;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport Viewer from \"./Viewer.js\";\n\nconst { createDisplaySets } = OHIF.utils;\n\nclass ViewerRetrieveStudyData extends Component {\n static propTypes = {\n studyInstanceUids: PropTypes.array.isRequired,\n seriesInstanceUids: PropTypes.array,\n server: PropTypes.object\n };\n\n state = {\n studies: null,\n error: null\n }\n\n componentDidMount() {\n // TODO: Avoid using timepoints here\n //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };\n const { studyInstanceUids, seriesInstanceUids, server } = this.props;\n const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)\n\n // Render the viewer when the data is ready\n promise.then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({\n studies: updatedStudies,\n });\n }).catch(error => {\n this.setState({\n error: true,\n });\n\n throw new Error(error);\n });\n\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default ViewerRetrieveStudyData;\n","import { connect } from 'react-redux';\nimport ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';\n\nconst isActive = (a) => a.active === true;\n\nconst mapStateToProps = state => {\n const activeServer = state.servers.servers.find(isActive);\n\n return {\n server: activeServer,\n };\n};\n\nconst ConnectedViewerRetrieveStudyData = connect(\n mapStateToProps,\n null\n)(ViewerRetrieveStudyData);\n\nexport default ConnectedViewerRetrieveStudyData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ConnectedViewerRetrieveStudyData from \"../connectedComponents/ConnectedViewerRetrieveStudyData\";\n\nfunction ViewerRouting({ match }) {\n const { studyInstanceUids, seriesInstanceUids } = match.params;\n\n let studyUIDs;\n let seriesUIDs;\n\n if (studyInstanceUids && !seriesInstanceUids) {\n studyUIDs = studyInstanceUids.split(';');\n } else if (studyInstanceUids && seriesInstanceUids) {\n studyUIDs = [match.params.studyInstanceUid];\n seriesUIDs = match.params.seriesInstanceUids.split(';');\n }\n\n return (\n \n );\n}\n\nViewerRouting.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n studyInstanceUids: PropTypes.string.isRequired,\n seriesInstanceUids: PropTypes.string\n })\n })\n};\n\nexport default ViewerRouting;\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport qs from 'query-string'\nimport Viewer from \"../connectedComponents/Viewer\";\nimport OHIF from 'ohif-core';\n\nconst { createDisplaySets } = OHIF.utils;\n\nfunction parseQueryAndFetchStudies(query) {\n return new Promise((resolve, reject) => {\n const url = query.url;\n\n if (!url) {\n reject(new Error('No URL was specified. Use ?url=$yourURL'));\n }\n\n // Define a request to the server to retrieve the study data\n // as JSON, given a URL that was in the Route\n const oReq = new XMLHttpRequest();\n\n // Add event listeners for request failure\n oReq.addEventListener('error', (error) => {\n OHIF.log.warn('An error occurred while retrieving the JSON data');\n reject(error)\n });\n\n // When the JSON has been returned, parse it into a JavaScript Object\n // and render the OHIF Viewer with this data\n oReq.addEventListener('load', () => {\n // Parse the response content\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText\n if (!oReq.responseText) {\n OHIF.log.warn('Response was undefined');\n reject(new Error('Response was undefined'));\n }\n\n OHIF.log.info(JSON.stringify(oReq.responseText, null, 2));\n\n const data = JSON.parse(oReq.responseText);\n if (data.servers && query.studyInstanceUids) {\n const server = data.servers.dicomWeb[0];\n server.type = 'dicomWeb';\n\n const studyInstanceUids = query.studyInstanceUids.split(';');\n const seriesInstanceUids = [];\n\n OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => {\n resolve(studies);\n }, error => {\n reject(error);\n });\n } else {\n resolve(data.studies);\n }\n });\n\n // Open the Request to the server for the JSON data\n // In this case we have a server-side route called /api/\n // which responds to GET requests with the study data\n OHIF.log.info(`Sending Request to: ${url}`);\n oReq.open('GET', url);\n oReq.setRequestHeader('Accept', 'application/json')\n\n // Fire the request to the server\n oReq.send();\n });\n}\n\nclass StandaloneRouting extends Component {\n state = {\n studies: null,\n error: null\n }\n\n static propTypes = {\n location: PropTypes.object,\n store: PropTypes.object\n };\n\n componentDidMount() {\n const query = qs.parse(this.props.location.search);\n parseQueryAndFetchStudies(query).then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({ studies: updatedStudies });\n }, error => {\n this.setState({ error });\n });\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default StandaloneRouting;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ViewerRetrieveStudyData from \"../connectedComponents/ViewerRetrieveStudyData.js\";\n\nfunction IHEInvokeImageDisplay({ match }) {\n const requestType = match.params.query.requestType;\n let studyInstanceUids;\n //let patientUids;\n let displayStudyList = false;\n\n if (requestType === \"STUDY\") {\n studyInstanceUids = match.params.query.studyUID.split(';');\n } else if (requestType === \"STUDYBASE64\") {\n const uids = this.params.query.studyUID;\n const decodedData = window.atob(uids);\n studyInstanceUids = decodedData.split(';');\n } else if (requestType === \"PATIENT\") {\n //patientUidspatientUids = this.params.query.patientID.split(';');\n displayStudyList = true\n } else {\n displayStudyList = true\n }\n\n if (displayStudyList) {\n return ('')//);\n }\n\n return (\n \n );\n}\n\nIHEInvokeImageDisplay.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n query: PropTypes.shape({\n requestType: PropTypes.string.isRequired,\n studyUID: PropTypes.string,\n patientID: PropTypes.string\n })\n })\n })\n};\n\nexport default IHEInvokeImageDisplay;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { ViewerbaseDragDropContext } from 'react-viewerbase';\nimport ViewerRouting from \"./routes/ViewerRouting.js\";\nimport StandaloneRouting from './routes/StandaloneRouting.js';\nimport IHEInvokeImageDisplay from './routes/IHEInvokeImageDisplay.js';\n//import CallbackPage from './CallbackPage.js';\n//import userManager from \"./userManager.js\";\nimport './OHIFStandaloneViewer.css';\nimport './variables.css';\nimport './theme-tide.css';\n\nconst reload = () => window.location.reload();\n\n/*function LoadingUser() {\n return (
Loading user...
);\n}*/\n\nclass App extends Component {\n static propTypes = {\n history: PropTypes.object.isRequired,\n user: PropTypes.object\n }\n\n componentDidMount() {\n this.unlisten = this.props.history.listen((location, action) => {\n if (this.props.setContext) {\n this.props.setContext(window.location.pathname);\n }\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n render() {\n const user = this.props.user;\n\n /*if (!user || user.expired) {\n // TODO: redirect to OAuth page if necessary\n return \n \n {\n userManager.signinRedirect();\n }}/>\n \n ;\n }*/\n\n return (\n \n \n \n \n \n \n\n \n \n {/* {\n userManager.signinRedirect();\n }}\n />*/\n /**/}\n \n
Sorry, this page does not exist.
}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {};\n /*return {\n user: state.oidc.user,\n };*/\n};\n\nconst ConnectedApp = connect(\n mapStateToProps,\n null\n)(App);\n\nexport default ViewerbaseDragDropContext(withRouter(ConnectedApp));\n","import React, { PureComponent, Component } from 'react';\n\n/*function metaDataProvider(type, imageId) {\n const metaData = cornerstoneWADOImageLoader.wadors.metaDataManager.get(\n imageId\n );\n\n if (!metaData) {\n return;\n }\n\n if (\n metaData[type] !== undefined &&\n metaData[type].Value !== undefined &&\n metaData[type].Value.length\n ) {\n return metaData[type].Value[0];\n }\n\n if (type === 'instance') {\n return metaData;\n }\n}\n\ncornerstone.metaData.addProvider(metaDataProvider);*/\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".scroll {\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scroll .scroll-holder {\\n height: calc(100% - 20px);\\n margin-top: 5px;\\n position: relative;\\n width: 12px;\\n}\\n.scroll .scroll-holder .imageSlider {\\n height: 12px;\\n left: 12px;\\n padding: 0;\\n position: absolute;\\n top: 0;\\n transform: rotate(90deg);\\n transform-origin: top left;\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider:focus {\\n outline: none;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-focus-outer {\\n border: none;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-runnable-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 5px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 2px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-track {\\n animate: 0.2s;\\n background: transparent;\\n border: none;\\n border-width: 15px 0;\\n color: rgba(0,0,0,0);\\n cursor: pointer;\\n height: 12px;\\n width: 100%;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-lower {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-upper {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb {\\n -webkit-appearance: none !important;\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -webkit-grab;\\n height: 12px;\\n margin-top: -4px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb:active {\\n background-color: #20a5d6;\\n cursor: -webkit-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -moz-grab;\\n height: 12px;\\n width: 39px;\\n z-index: 7;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb:active {\\n background-color: #20a5d6;\\n cursor: -moz-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: ns-resize;\\n height: 12px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb:active {\\n background-color: #20a5d6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-tooltip {\\n display: none;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .imageSlider {\\n left: 50px;\\n }\\n}\\n\";\nstyleInject(css);\n\nvar ImageScrollbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageScrollbar, _PureComponent);\n\n function ImageScrollbar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ImageScrollbar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ImageScrollbar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (event) {\n var intValue = parseInt(event.target.value, 10);\n\n _this.props.onInputCallback(intValue);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n // We don't allow direct keyboard up/down input on the\n // image sliders since the natural direction is reversed (0 is at the top)\n // Store the KeyCodes in an object for readability\n var keys = {\n DOWN: 40,\n UP: 38\n }; // TODO: Enable scroll down / scroll up without depending on ohif-core\n\n if (event.which === keys.DOWN) {\n //OHIF.commands.run('scrollDown');\n event.preventDefault();\n } else if (event.which === keys.UP) {\n //OHIF.commands.run('scrollUp');\n event.preventDefault();\n }\n });\n\n return _this;\n }\n\n _createClass(ImageScrollbar, [{\n key: \"render\",\n value: function render() {\n if (this.props.max === 0) {\n return null;\n }\n\n this.style = {\n width: \"\".concat(this.props.height)\n };\n return React.createElement(\"div\", {\n className: \"scroll\"\n }, React.createElement(\"div\", {\n className: \"scroll-holder\"\n }, React.createElement(\"input\", {\n className: \"imageSlider\",\n style: this.style,\n type: \"range\",\n min: \"0\",\n max: this.props.max,\n step: \"1\",\n value: this.props.value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown\n })));\n }\n }]);\n\n return ImageScrollbar;\n}(PureComponent);\n\n_defineProperty(ImageScrollbar, \"propTypes\", {\n value: propTypes.number.isRequired,\n max: propTypes.number.isRequired,\n height: propTypes.string.isRequired,\n onInputCallback: propTypes.func.isRequired\n});\n\n/**\n * Formats a patient name for display purposes\n */\nfunction formatPN(name) {\n if (!name) {\n return;\n } // Convert the first ^ to a ', '. String.replace() only affects\n // the first appearance of the character.\n\n\n var commaBetweenFirstAndLast = name.replace('^', ', '); // Replace any remaining '^' characters with spaces\n\n var cleaned = commaBetweenFirstAndLast.replace(/\\^/g, ' '); // Trim any extraneous whitespace\n\n return cleaned.trim();\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory();\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && ('object' !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.23.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n});\n\nfunction formatDA(date) {\n var strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';\n\n if (!date) {\n return;\n }\n\n var dateAsMoment = moment(date, 'YYYYMMDD');\n return dateAsMoment.format(strFormat);\n}\n\nfunction formatTM(time) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';\n\n if (!time) {\n return;\n } // DICOM Time is stored as HHmmss.SSS, where:\n // HH 24 hour time:\n // m mm 0..59 Minutes\n // s ss 0..59 Seconds\n // S SS SSS 0..999 Fractional seconds\n //\n // See MomentJS: http://momentjs.com/docs/#/parsing/string-format/\n\n\n var dateTime = moment(time, 'HHmmss.SSS');\n return dateTime.format(format);\n}\n\nfunction formatNumberPrecision(number, precision) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\nfunction isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar helpers = {\n formatPN: formatPN,\n formatDA: formatDA,\n formatTM: formatTM,\n formatNumberPrecision: formatNumberPrecision,\n isValidNumber: isValidNumber\n};\n\nvar css$1 = \".imageViewerViewport.empty ~ .ViewportOverlay {\\n display: none;\\n}\\n.ViewportOverlay {\\n color: #9ccef9;\\n}\\n.ViewportOverlay .overlay-element {\\n position: absolute;\\n font-weight: 400;\\n text-shadow: 1px 1px #000;\\n pointer-events: none;\\n}\\n.ViewportOverlay .top-left {\\n top: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .top-center {\\n top: 20px;\\n padding-top: 20px;\\n width: 100%;\\n text-align: center;\\n}\\n.ViewportOverlay .top-right {\\n top: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay .bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .bottom-right {\\n bottom: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay.controlsVisible .topright,\\n.ViewportOverlay.controlsVisible .bottomright {\\n right: calc(20px + 19px);\\n}\\n.ViewportOverlay svg {\\n color: #9ccef9;\\n fill: #9ccef9;\\n stroke: #9ccef9;\\n background-color: transparent;\\n margin: 2px;\\n width: 18px;\\n height: 18px;\\n}\\n\";\nstyleInject(css$1);\n\nvar formatPN$1 = helpers.formatPN,\n formatDA$1 = helpers.formatDA,\n formatNumberPrecision$1 = helpers.formatNumberPrecision,\n formatTM$1 = helpers.formatTM,\n isValidNumber$1 = helpers.isValidNumber;\n/*function getCompression(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n if (\n instance.lossyImageCompression === '01' &&\n instance.lossyImageCompressionRatio !== ''\n ) {\n const compressionMethod = instance.lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n instance.lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n\nfunction getImageDimensions(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n return `${instance.columns} x ${instance.rows}`;\n}*/\n\nvar ViewportOverlay =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOverlay, _PureComponent);\n\n function ViewportOverlay() {\n _classCallCheck(this, ViewportOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOverlay).apply(this, arguments));\n }\n\n _createClass(ViewportOverlay, [{\n key: \"render\",\n value: function render() {\n var zoom = this.props.viewport.scale * 100;\n var imageId = this.props.imageId; //const patientMetadata = cornerstone.metaData.get('patient', imageId);\n //const studyMetadata = cornerstone.metaData.get('study', imageId);\n //const seriesMetadata = cornerstone.metaData.get('generalSeriesModule', imageId);\n //const instanceMetadata = cornerstone.metaData.get('instance', imageId);\n\n var patientName = ''; //patientMetadata.name;\n\n var patientId = ''; //patientMetadata.id;\n\n /*const { studyDate, studyTime, studyDescription } = studyMetadata;\n const { seriesNumber, seriesDescription } = seriesMetadata;\n const { instanceNumber, frameTime, thickness, spacingBetweenSlices, sliceLocation } = instanceMetadata;*/\n //const frameRate = formatNumberPrecision(1000 / frameTime, 1);\n //const compression = getCompression(imageId);\n\n var windowWidth = this.props.viewport.voi.windowWidth || 0;\n var windowCenter = this.props.viewport.voi.windowCenter || 0;\n var wwwc = \"W: \".concat(windowWidth.toFixed(0), \" L: \").concat(windowCenter.toFixed(0));\n var imageIndex = this.props.stack.imageIds.indexOf(this.props.imageId) + 1;\n var numImages = this.props.stack.imageIds.length; //const imageDimensions = getImageDimensions(imageId);\n\n var studyDescription = '';\n var studyDate = null;\n var studyTime = null;\n var compression = null;\n var seriesNumber = null;\n var instanceNumber = null;\n var frameRate = null;\n var imageDimensions = null;\n var sliceLocation = null;\n var seriesDescription = null;\n var normal = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId)), React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Zoom: \", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\"), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, React.createElement(\"span\", null, isValidNumber$1(sliceLocation) ? \"Loc: \".concat(formatNumberPrecision$1(sliceLocation, 2), \" mm\") : ''), React.createElement(\"span\", null, ''), React.createElement(\"span\", null, '')), React.createElement(\"div\", null, seriesDescription))));\n var rightOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n var leftOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n return React.createElement(\"div\", {\n className: \"ViewportOverlay\"\n }, normal);\n }\n }]);\n\n return ViewportOverlay;\n}(PureComponent);\n\nViewportOverlay.propTypes = {\n viewport: propTypes.object.isRequired,\n imageId: propTypes.string.isRequired,\n stack: propTypes.object.isRequired\n};\n\nvar css$2 = \".imageViewerLoadingIndicator {\\n color: #91b9cd;\\n}\\n.faded {\\n opacity: 0.5;\\n}\\n.imageViewerErrorLoadingIndicator {\\n color: #e29e4a;\\n}\\n.imageViewerErrorLoadingIndicator p,\\n.imageViewerErrorLoadingIndicator h4 {\\n padding: 4px 0;\\n text-align: center;\\n word-wrap: break-word;\\n}\\n.imageViewerErrorLoadingIndicator p {\\n font-size: 11pt;\\n}\\n.loadingIndicator {\\n background-color: rgba(0,0,0,0.75);\\n font-size: 18px;\\n height: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index: 1;\\n}\\n.loadingIndicator .indicatorContents {\\n font-size: 30px;\\n font-weight: 300;\\n position: absolute;\\n text-align: center;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 100%;\\n}\\n\";\nstyleInject(css$2);\n\nvar LoadingIndicator =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LoadingIndicator, _PureComponent);\n\n function LoadingIndicator() {\n _classCallCheck(this, LoadingIndicator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LoadingIndicator).apply(this, arguments));\n }\n\n _createClass(LoadingIndicator, [{\n key: \"render\",\n value: function render() {\n // TODO[react]: Pass this in as a prop reactively\n //const percentComplete = Session.get('CornerstoneLoadProgress' + this.viewportIndex);\n var percComplete;\n\n if (this.props.percentComplete && this.props.percentComplete !== 100) {\n percComplete = \"\".concat(this.props.percentComplete, \"%\");\n }\n\n return React.createElement(React.Fragment, null, this.props.error ? React.createElement(\"div\", {\n className: \"imageViewerErrorLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"h4\", null, \"Error Loading Image\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, this.props.error.message))) : React.createElement(\"div\", {\n className: \"imageViewerLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"p\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spin fa-circle-o-notch fa-fw\"\n }), ' ', percComplete))));\n }\n }]);\n\n return LoadingIndicator;\n}(PureComponent);\n\n_defineProperty(LoadingIndicator, \"propTypes\", {\n percentComplete: propTypes.number,\n error: propTypes.object\n});\n\n_defineProperty(LoadingIndicator, \"defaultProps\", {\n percentComplete: 0,\n error: null\n});\n\nvar css$3 = \".ViewportOrientationMarkers {\\n pointer-events: none;\\n font-size: 15px;\\n color: #ccc;\\n line-height: 18px;\\n}\\n.ViewportOrientationMarkers .orientation-marker {\\n position: absolute;\\n}\\n.ViewportOrientationMarkers .top-mid {\\n top: 5px;\\n left: 50%;\\n}\\n.ViewportOrientationMarkers .left-mid {\\n top: 47%;\\n left: 5px;\\n}\\n\";\nstyleInject(css$3);\n\n/**\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param imageId The Cornerstone ImageId\n * @param viewport The current viewport\n */\n\nfunction getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools) {\n var imagePlane = cornerstone.metaData.get('imagePlane', imageId);\n\n if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {\n return;\n }\n\n var rowString = cornerstoneTools.orientation.getOrientationString(imagePlane.rowCosines);\n var columnString = cornerstoneTools.orientation.getOrientationString(imagePlane.columnCosines);\n var oppositeRowString = cornerstoneTools.orientation.invertOrientationString(rowString);\n var oppositeColumnString = cornerstoneTools.orientation.invertOrientationString(columnString);\n var markers = {\n top: oppositeColumnString,\n left: oppositeRowString\n }; // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n\n if (viewport.vflip) {\n markers.top = cornerstoneTools.orientation.invertOrientationString(markers.top);\n }\n\n if (viewport.hflip) {\n markers.left = cornerstoneTools.orientation.invertOrientationString(markers.left);\n } // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n\n\n if (viewport.rotation === 90 || viewport.rotation === -270) {\n return {\n top: markers.left,\n left: cornerstoneTools.orientation.invertOrientationString(markers.top)\n };\n } else if (viewport.rotation === -90 || viewport.rotation === 270) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.left),\n left: markers.top\n };\n } else if (viewport.rotation === 180 || viewport.rotation === -180) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.top),\n left: cornerstoneTools.orientation.invertOrientationString(markers.left)\n };\n }\n\n return markers;\n}\n\nvar ViewportOrientationMarkers =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOrientationMarkers, _PureComponent);\n\n function ViewportOrientationMarkers() {\n _classCallCheck(this, ViewportOrientationMarkers);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOrientationMarkers).apply(this, arguments));\n }\n\n _createClass(ViewportOrientationMarkers, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageId = _this$props.imageId,\n viewport = _this$props.viewport,\n cornerstone = _this$props.cornerstone,\n cornerstoneTools = _this$props.cornerstoneTools;\n var markers = getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools);\n\n if (!markers) {\n return '';\n }\n\n return React.createElement(\"div\", {\n className: \"ViewportOrientationMarkers noselect\"\n }, React.createElement(\"div\", {\n className: \"top-mid orientation-marker\"\n }, markers.top), React.createElement(\"div\", {\n className: \"left-mid orientation-marker\"\n }, markers.left));\n }\n }]);\n\n return ViewportOrientationMarkers;\n}(PureComponent);\n\nViewportOrientationMarkers.propTypes = {\n imageId: propTypes.string.isRequired,\n viewport: propTypes.object.isRequired\n};\n\nvar css$4 = \".CornerstoneViewport {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n\\n.viewport-element {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n background-color: black;\\n\\n /* Prevent the blue outline in Chrome when a viewport is selected */\\n outline: 0 !important;\\n\\n /* Prevents the entire page from getting larger\\n when the magnify tool is near the sides/corners of the page */\\n overflow: hidden;\\n}\\n\\n.viewportInstructions {\\n display: block;\\n font-size: 13px;\\n /*theme('color', '$textSecondaryColor')*/\\n color: #91b9cd;\\n line-height: 18px;\\n pointer-events: none; /* Necessary for drag/drop through to cornerstone element below */\\n text-align: center;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n margin: auto;\\n height: 20px;\\n}\\n\\n/* These are some good CSS settings for a circular magnifying glass\\n Try removing the border-radius to make a square magnifying glass */\\n.magnifyTool {\\n border: 4px white solid;\\n box-shadow: 2px 2px 10px #1e1e1e;\\n border-radius: 50%;\\n display: none;\\n cursor: none;\\n}\\n\";\nstyleInject(css$4);\n\nvar EVENT_RESIZE = 'resize';\n\nfunction setToolsPassive(cornerstoneTools, tools) {\n tools.forEach(function (tool) {\n cornerstoneTools.setToolPassive(tool);\n });\n}\n\nfunction initializeTools(cornerstoneTools, tools) {\n Array.from(tools).forEach(function (tool) {\n var apiTool = cornerstoneTools[\"\".concat(tool.name, \"Tool\")];\n\n if (apiTool) {\n cornerstoneTools.addTool(apiTool, tool.configuration);\n } else {\n throw new Error(\"Tool not found: \".concat(tool.name, \"Tool\"));\n }\n });\n}\n\nvar CornerstoneViewport =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CornerstoneViewport, _Component);\n\n function CornerstoneViewport(props) {\n var _this;\n\n _classCallCheck(this, CornerstoneViewport);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CornerstoneViewport).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onContextMenu\", function (event) {\n // Preventing the default behaviour for right-click is essential to\n // allow right-click tools to work.\n event.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWindowResize\", function () {\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageRendered\", function () {\n var viewport = _this.cornerstone.getViewport(_this.element);\n\n _this.setState({\n viewport: viewport\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onNewImage\", function () {\n var image = _this.cornerstone.getImage(_this.element);\n\n _this.setState({\n imageId: image.imageId\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setActiveTool\", function (activeTool) {\n // TODO: allow this config as props\n var leftMouseTools = ['Bidirectional', 'Wwwc', 'Length', 'Angle', 'StackScroll'];\n setToolsPassive(_this.cornerstoneTools, leftMouseTools); // pan is the default tool for middle mouse button\n\n var isPanToolActive = activeTool === 'Pan';\n var panOptions = {\n mouseButtonMask: isPanToolActive ? [1, 4] : [4],\n isTouchActive: isPanToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Pan', panOptions); // zoom is the default tool for right mouse button\n\n\n var isZoomToolActive = activeTool === 'Zoom';\n var zoomOptions = {\n mouseButtonMask: isZoomToolActive ? [1, 2] : [2],\n isTouchActive: isZoomToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Zoom', zoomOptions);\n\n _this.cornerstoneTools.setToolActive(activeTool, {\n mouseButtonMask: 1,\n isTouchActive: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onStackScroll\", function (event) {\n _this.setViewportActive();\n\n var element = event.currentTarget;\n\n var stackData = _this.cornerstoneTools.getToolState(element, 'stack');\n\n var stack = stackData.data[0];\n\n _this.hideExtraButtons();\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageLoaded\", function () {\n _this.setState({\n numImagesLoaded: _this.state.numImagesLoaded + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"startLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n _this.loadHandlerTimeout = setTimeout(function () {\n _this.setState({\n isLoading: true\n });\n }, CornerstoneViewport.loadIndicatorDelay);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"doneLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n\n _this.setState({\n isLoading: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMeasurementAddedOrRemoved\", function () {\n console.log('onMeasurementAddedOrRemoved');\n /* const { toolType, measurementData } = event.detail;\n // TODO: Pass in as prop?\n const toolsOfInterest = ['Bidirectional'];\n this.hideExtraButtons();\n if (toolsOfInterest.includes(toolType)) {\n const image = cornerstone.getImage(this.element);\n const viewport = cornerstone.getViewport(this.element);\n const type = {\n cornerstonetoolsmeasurementadded: 'added',\n cornerstonetoolsmeasurementremoved: 'removed'\n };\n const action = type[event.type];\n if (action === 'added') {\n measurementData._id = guid();\n measurementData.viewport = cloneDeep(viewport);\n }\n this.props.measurementsAddedOrRemoved(\n action,\n image.imageId,\n toolType,\n measurementData\n );\n }*/\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setViewportActive\", function () {\n if (!_this.props.isActive && _this.props.setViewportActive) {\n _this.props.setViewportActive();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMouseClick\", function (event) {\n _this.setViewportActive();\n\n if (event.detail.event.which === 3) {\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: false\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchPress\", function (event) {\n _this.setViewportActive();\n\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: true\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function () {\n _this.setViewportActive();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCloseToolContextMenu\", function () {\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"imageSliderOnInputCallback\", function (value) {\n _this.setViewportActive();\n\n var stack = _this.state.stack;\n stack.currentImageIdIndex = value;\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n // TODO: For some reason this isn't working?\n\n\n _this.scrollToIndex(_this.element, value);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hideExtraButtons\", function () {\n if (_this.state.bidirectionalAddLabelShow === true) {\n _this.setState({\n bidirectionalAddLabelShow: false\n });\n }\n\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _this.cornerstone = props.cornerstone;\n _this.cornerstoneTools = props.cornerstoneTools;\n _this.scrollToIndex = _this.cornerstoneTools.import('util/scrollToIndex'); // TODO: Allow viewport as a prop\n\n var _stack = props.viewportData.stack;\n _this.state = {\n stack: _stack,\n displaySetInstanceUid: props.viewportData.displaySetInstanceUid,\n imageId: _stack.imageIds[0],\n viewportHeight: '100%',\n isLoading: false,\n numImagesLoaded: 0,\n error: null,\n viewport: _this.cornerstone.getDefaultViewport(null, undefined)\n };\n var loadHandlerManager = _this.cornerstoneTools.loadHandlerManager;\n loadHandlerManager.setStartLoadHandler(_this.startLoadingHandler);\n loadHandlerManager.setEndLoadHandler(_this.doneLoadingHandler);\n _this.debouncedResize = lodash_debounce(function () {\n try {\n _this.cornerstone.getEnabledElement(_this.element);\n } catch (error) {\n console.error(error);\n return;\n }\n\n _this.cornerstone.resize(_this.element, true);\n\n _this.setState({\n viewportHeight: \"\".concat(_this.element.clientHeight - 20, \"px\")\n });\n }, 300);\n return _this;\n }\n\n _createClass(CornerstoneViewport, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var isLoading = this.state.isLoading || this.state.numImagesLoaded < 1;\n var displayLoadingIndicator = isLoading || this.state.error;\n var className = 'CornerstoneViewport';\n\n if (this.props.isActive) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"viewport-element\",\n onContextMenu: this.onContextMenu,\n ref: function ref(input) {\n _this2.element = input;\n }\n }, displayLoadingIndicator && React.createElement(LoadingIndicator, {\n error: this.state.error\n }), React.createElement(\"canvas\", {\n className: \"cornerstone-canvas\"\n }), React.createElement(ViewportOverlay, {\n stack: this.state.stack,\n viewport: this.state.viewport,\n imageId: this.state.imageId,\n numImagesLoaded: this.state.numImagesLoaded\n }), React.createElement(ViewportOrientationMarkers, {\n imageId: this.state.imageId,\n viewport: this.state.viewport,\n cornerstone: this.props.cornerstone,\n cornerstoneTools: this.props.cornerstoneTools\n })), React.createElement(ImageScrollbar, {\n onInputCallback: this.imageSliderOnInputCallback,\n max: this.state.stack.imageIds.length - 1,\n value: this.state.stack.currentImageIdIndex,\n height: this.state.viewportHeight\n }), this.props.children);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this3 = this;\n\n var element = this.element;\n this.eventHandlerData = [{\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.IMAGE_RENDERED,\n handler: this.onImageRendered\n }, {\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.NEW_IMAGE,\n handler: this.onNewImage\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.STACK_SCROLL,\n handler: this.onStackScroll\n },\n /*{\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_ADDED,\n handler: this.onMeasurementAddedOrRemoved\n },\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_REMOVED,\n handler: this.onMeasurementAddedOrRemoved\n },*/\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_CLICK,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_DOWN,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_PRESS,\n handler: this.onTouchPress\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_START,\n handler: this.onTouchStart\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_CLICK,\n handler: this.onDoubleClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_TAP,\n handler: this.onDoubleClick\n }, {\n eventTarget: window,\n eventType: EVENT_RESIZE,\n handler: this.onWindowResize\n }, {\n eventTarget: this.cornerstone.events,\n eventType: this.cornerstone.EVENTS.IMAGE_LOADED,\n handler: this.onImageLoaded\n }]; // Enable the DOM Element for use with Cornerstone\n\n this.cornerstone.enable(element, this.props.cornerstoneOptions); // Handle the case where the imageId isn't loaded correctly and the\n // imagePromise returns undefined\n // To test, uncomment the next line\n //let imageId = 'AfileThatDoesntWork'; // For testing only!\n\n var imageId = this.state.imageId;\n var imagePromise;\n\n try {\n imagePromise = this.cornerstone.loadAndCacheImage(imageId);\n } catch (error) {\n console.error(error);\n\n if (!imagePromise) {\n this.setState({\n error: error\n });\n return;\n }\n } // Load the first image in the stack\n\n\n imagePromise.then(function (image) {\n try {\n _this3.cornerstone.getEnabledElement(element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n } // Set Soft Tissue preset for all images by default\n\n\n var viewport = _this3.cornerstone.getDefaultViewportForImage(element, image);\n\n viewport.voi = {\n windowWidth: 400,\n windowCenter: 40\n }; // Display the first image\n\n _this3.cornerstone.displayImage(element, image, viewport); // Clear any previous tool state\n\n\n _this3.cornerstoneTools.clearToolState(_this3.element, 'stack');\n /* Add the stack tool state to the enabled element, and\n add stack state managers for the stack tool, CINE tool, and reference lines\n */\n\n\n var stack = _this3.state.stack;\n\n _this3.cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);\n\n _this3.cornerstoneTools.addToolState(element, 'stack', stack);\n\n if (_this3.props.enableStackPrefetch) {\n _this3.cornerstoneTools.stackPrefetch.enable(_this3.element);\n }\n\n var tools = [{\n name: 'Bidirectional',\n configuration: {\n getMeasurementLocationCallback: _this3.bidirectionalToolLabellingCallback,\n shadow: true,\n drawHandlesOnHover: true\n }\n }, {\n name: 'Wwwc'\n }, {\n name: 'Zoom',\n configuration: {\n minScale: 0.3,\n maxScale: 25,\n preventZoomOutsideImage: true\n }\n }, {\n name: 'Length'\n }, {\n name: 'Angle'\n }, {\n name: 'Pan'\n }, {\n name: 'StackScroll'\n }, {\n name: 'PanMultiTouch'\n }, {\n name: 'ZoomTouchPinch'\n }, {\n name: 'StackScrollMouseWheel'\n }, {\n name: 'StackScrollMultiTouch'\n }];\n initializeTools(_this3.cornerstoneTools, tools);\n\n _this3.setActiveTool(_this3.props.activeTool);\n /* For touch devices, by default we activate:\n - Pinch to zoom\n - Two-finger Pan\n - Three (or more) finger Stack Scroll\n */\n\n\n _this3.cornerstoneTools.setToolActive('PanMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('ZoomTouchPinch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('StackScrollMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n }); // TODO: We should probably configure this somewhere else\n\n\n _this3.cornerstoneTools.stackPrefetch.setConfiguration({\n maxImagesToPrefetch: Infinity,\n preserveExistingPool: false,\n maxSimultaneousRequests: 6\n });\n /* For mouse devices, by default we turn on:\n - Stack scrolling by mouse wheel\n - Stack scrolling by keyboard up / down arrow keys\n - Pan with middle click\n - Zoom with right click\n */\n\n\n _this3.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.addEventListener(eventType, handler);\n });\n\n _this3.setState({\n viewportHeight: \"\".concat(_this3.element.clientHeight - 20, \"px\")\n });\n }, function (error) {\n console.error(error);\n\n _this3.setState({\n error: error\n });\n });\n }\n }, {\n key: \"onDoubleClick\",\n value: function onDoubleClick() {\n console.log('onDoubleClick');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.removeEventListener(eventType, handler);\n });\n var element = this.element; // Remove all tools for the destroyed element\n // TODO[cornerstoneTools]: Make this happen internally\n // toolManager.removeToolsForElement(element);\n // Clear the stack prefetch data\n // TODO[cornerstoneTools]: Make this happen internally\n\n this.cornerstoneTools.clearToolState(element, 'stackPrefetch'); // Disable the viewport element with Cornerstone\n // This also triggers the removal of the element from all available\n // synchronizers, such as the one used for reference lines.\n\n this.cornerstone.disable(element); // Try to stop any currently playing clips\n // Otherwise the interval will continuously throw errors\n // TODO[cornerstoneTools]: Make this happen internally\n\n try {\n var enabledElement = this.cornerstone.getEnabledElement(element);\n\n if (enabledElement) {\n this.cornerstoneTools.stopClip(element);\n }\n } catch (error) {//console.warn(error);\n }\n\n if (this.props.clearViewportSpecificData) {\n this.props.clearViewportSpecificData();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n // TODO: Add a real object shallow comparison here?\n if (this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid) {\n var _this$props$viewportD = this.props.viewportData,\n displaySetInstanceUid = _this$props$viewportD.displaySetInstanceUid,\n studyInstanceUid = _this$props$viewportD.studyInstanceUid;\n var currentImageIdIndex = this.props.viewportData.stack.currentImageIdIndex; // Create shortcut to displaySet\n\n /*const study = OHIF.viewer.Studies.findBy({\n studyInstanceUid,\n });\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });*/\n\n var stack = this.props.viewportData.stack;\n var stackData = this.cornerstoneTools.getToolState(this.element, 'stack');\n var currentStack = stackData && stackData.data[0];\n\n if (!currentStack) {\n currentStack = {\n currentImageIdIndex: currentImageIdIndex,\n imageIds: stack.imageIds\n };\n this.cornerstoneTools.addStackStateManager(this.element, ['stack']);\n this.cornerstoneTools.addToolState(this.element, 'stack', currentStack);\n } else {\n // TODO: we should make something like setToolState by an ID\n currentStack.currentImageIdIndex = currentImageIdIndex;\n currentStack.imageIds = stack.imageIds;\n }\n\n var imageId = currentStack.imageIds[currentImageIdIndex];\n var viewportSpecificData = {\n displaySetInstanceUid: displaySetInstanceUid,\n studyInstanceUid: studyInstanceUid,\n stack: stack,\n imageId: imageId\n };\n this.setState(viewportSpecificData);\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData(viewportSpecificData);\n }*/\n\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n this.cornerstone.loadAndCacheImage(imageId).then(function (image) {\n try {\n _this4.cornerstone.getEnabledElement(_this4.element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n }\n\n var viewport = _this4.cornerstone.getDefaultViewportForImage(_this4.element, image); // Workaround for Cornerstone issue #304\n\n\n viewport.displayedArea.brhc = {\n x: image.width,\n y: image.height\n };\n\n _this4.cornerstone.displayImage(_this4.element, image, viewport);\n\n _this4.cornerstoneTools.stackPrefetch.enable(_this4.element);\n });\n }\n\n if (this.props.activeTool !== prevProps.activeTool) {\n this.setActiveTool(this.props.activeTool); // TODO: Why do we need to do this in v3?\n\n this.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.debouncedResize();\n }\n\n if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === true) {\n this.cornerstoneTools.stackPrefetch.enable(this.element);\n } else if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === false) {\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n }\n\n if (this.props.cineToolData.isPlaying !== prevProps.cineToolData.isPlaying) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element);\n } else {\n this.cornerstoneTools.stopClip(this.element);\n }\n }\n\n if (this.props.cineToolData.cineFrameRate !== prevProps.cineToolData.cineFrameRate) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element, this.props.cineToolData.cineFrameRate);\n } else {\n this.cornerstoneTools.stopClip(this.element, this.props.cineToolData.cineFrameRate);\n }\n }\n }\n }]);\n\n return CornerstoneViewport;\n}(Component);\n\n_defineProperty(CornerstoneViewport, \"defaultProps\", {\n activeTool: 'Wwwc',\n viewportData: {\n stack: {\n imageIds: [],\n currentImageIdIndex: 0\n }\n },\n isActive: false,\n cornerstoneOptions: {},\n enableStackPrefetch: true,\n cineToolData: {\n isPlaying: false,\n cineFrameRate: 24\n }\n});\n\n_defineProperty(CornerstoneViewport, \"propTypes\", {\n cornerstone: propTypes.object.isRequired,\n cornerstoneTools: propTypes.object.isRequired,\n children: propTypes.node,\n activeTool: propTypes.string,\n viewportData: propTypes.object.isRequired,\n measurementsAddedOrRemoved: propTypes.func,\n measurementsChanged: propTypes.func,\n isActive: propTypes.bool.isRequired,\n cornerstoneOptions: propTypes.object,\n setViewportActive: propTypes.func,\n setViewportSpecificData: propTypes.func,\n clearViewportSpecificData: propTypes.func,\n layout: propTypes.object,\n cineToolData: propTypes.object\n});\n\n_defineProperty(CornerstoneViewport, \"loadIndicatorDelay\", 45);\n\nexport default CornerstoneViewport;\n//# sourceMappingURL=index.es.js.map\n","import { connect } from 'react-redux';\nimport CornerstoneViewport from 'react-cornerstone-viewport';\nimport OHIF from 'ohif-core'\nimport cornerstone from \"cornerstone-core\";\nimport cornerstoneTools from \"cornerstone-tools\";\n\nconst { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;\n\nconst mapStateToProps = (state, ownProps) => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n // If this is the active viewport, enable prefetching.\n const { viewportIndex } = ownProps;//.viewportData;\n const isActive = viewportIndex === state.viewports.activeViewportIndex;\n const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {};\n\n return {\n layout: state.viewports.layout,\n isActive,\n activeTool: activeButton && activeButton.command,\n enableStackPrefetch: isActive,\n //stack: viewportSpecificData.stack,\n cineToolData: viewportSpecificData.cine,\n cornerstone,\n cornerstoneTools\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n const { viewportIndex } = ownProps;\n\n return {\n setViewportActive: () => {\n dispatch(setViewportActive(viewportIndex))\n },\n\n setViewportSpecificData: (data) => {\n dispatch(setViewportSpecificData(viewportIndex, data))\n },\n\n clearViewportSpecificData: () => {\n dispatch(clearViewportSpecificData(viewportIndex));\n }\n };\n};\n\nconst ConnectedCornerstoneViewport = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CornerstoneViewport);\n\nexport default ConnectedCornerstoneViewport;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction OHIFComponentPlugin(props) {\n return ({props.children});\n}\n\nOHIFComponentPlugin.propTypes = {\n id: PropTypes.string.isRequired,\n init: PropTypes.func.isRequired,\n destroy: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default OHIFComponentPlugin;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';\nimport OHIFComponentPlugin from './OHIFComponentPlugin.js';\n\nconst { StackManager } = OHIF.utils;\n\nclass OHIFCornerstoneViewportPlugin extends Component {\n static propTypes = {\n studies: PropTypes.object,\n displaySet: PropTypes.object,\n viewportIndex: PropTypes.number,\n };\n\n static id = 'CornerstoneViewportPlugin';\n\n static init() {\n console.log('CornerstoneViewportPlugin init()');\n }\n\n static destroy() {\n console.log('CornerstoneViewportPlugin destroy()');\n StackManager.clearStacks();\n }\n\n static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {\n // Create shortcut to displaySet\n const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);\n\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });\n\n // Get stack from Stack Manager\n return StackManager.findOrCreateStack(study, displaySet);\n }\n\n static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {\n const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);\n\n // Clone the stack here so we don't mutate it later\n const stack = Object.assign({}, currentStack);\n stack.currentImageIdIndex = 0;\n\n return stack;\n }\n\n render() {\n const { viewportIndex } = this.props;\n const { studies, displaySet } = this.props.viewportData;\n const { studyInstanceUid, displaySetInstanceUid } = displaySet;\n const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);\n const viewportData = {\n studyInstanceUid,\n displaySetInstanceUid,\n stack\n };\n\n const { id, init, destroy } = OHIFCornerstoneViewportPlugin;\n const pluginProps = { id, init, destroy };\n\n return (\n \n \n \n );\n }\n}\n\n\nexport default OHIFCornerstoneViewportPlugin;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers } from 'redux';\nimport PropTypes from 'prop-types';\nimport OHIF from 'ohif-core';\nimport './config';\nimport ui from './redux/ui.js'\nimport OHIFStandaloneViewer from './OHIFStandaloneViewer';\nimport OHIFCornerstoneViewportPlugin from './connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js';\n//import { loadUser, reducer as oidcReducer, OidcProvider} from 'redux-oidc';\n//import userManager from './userManager.js';\n//import Icons from \"./images/icons.svg\"\n\nconst Icons = 'icons.svg';\n\nconst reducers = OHIF.redux.reducers;\nreducers.ui = ui;\n//reducers.oidc = oidcReducer;\n\nconst combined = combineReducers(reducers)\n\nconst store = createStore(combined);\n//loadUser(store, userManager);\n\nconst defaultButtons = [\n {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: `${Icons}#icon-tools-stack-scroll`,\n active: false\n },\n {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: `${Icons}#icon-tools-zoom`,\n active: false\n },\n {\n command: 'Wwwc',\n type: 'tool',\n text: 'Levels',\n svgUrl: `${Icons}#icon-tools-levels`,\n active: true\n },\n {\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: `${Icons}#icon-tools-pan`,\n active: false\n },\n {\n command: 'Length',\n type: 'tool',\n text: 'Length',\n svgUrl: `${Icons}#icon-tools-measure-temp`,\n active: false\n },\n /*{\n command: 'Annotate',\n type: 'tool',\n text: 'Annotate',\n svgUrl: `${Icons}#icon-tools-measure-non-target`,\n active: false\n },*/\n {\n command: 'Angle',\n type: 'tool',\n text: 'Angle',\n iconClasses: 'fa fa-angle-left',\n active: false\n },\n {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: `${Icons}#icon-tools-measure-target`,\n active: false\n },\n {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: `${Icons}#icon-tools-reset`,\n active: false\n },\n];\n\nconst buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);\n\nstore.dispatch(buttonsAction);\n\nconst pluginAction = OHIF.redux.actions.addPlugin({\n id: 'cornerstone',\n type: 'viewport',\n component: OHIFCornerstoneViewportPlugin\n});\n\nstore.dispatch(pluginAction);\n\nconst servers = {\n dicomWeb: [\n {\n \"name\": \"DCM4CHEE\",\n //\"wadoUriRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoUriRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoUriRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado\",\n \"qidoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"qidoSupportsIncludeField\": true,\n \"imageRendering\": \"wadors\",\n \"thumbnailRendering\": \"wadors\",\n \"requestOptions\": {\n \"requestFromBrowser\": true,\n \"logRequests\": true,\n \"logResponses\": false,\n \"logTiming\": true,\n //\"auth\": \"admin:admin\"\n //\"auth\": \"cloud:healthcare\"\n }\n }\n ]\n};\n\nOHIF.utils.addServers(servers, store);\n\n// TODO[react] Use a provider when the whole tree is React\nwindow.store = store;\n\nclass App extends Component {\n static propTypes = {\n routerBasename: PropTypes.string\n }\n\n render() {\n return (\n \n {/**/}\n \n \n \n {/**/}\n \n );\n }\n}\n\nexport default App;\n"],"names":["_typeof","printWarning","ReactPropTypesSecret","require$$0","assign","checkPropTypes","require$$1","__DEV__","warning","_extends","invariant","HashChangeEvent","_classCallCheck","_possibleConstructorReturn","_inherits","React","PropTypes","createHistory","pathToRegexp","_objectWithoutProperties","patternCache","cacheLimit","cacheCount","addLeadingSlash","stripBasename","defineProperty","getOwnPropertySymbols","getPrototypeOf","hoistStatics","Component","_assertThisInitialized","REACT_STATICS","KNOWN_STATICS","ReactIs","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","isValidElementType","PureComponent","ponyfill","$$observable","isPlainObject","defaultSelectorFactory","cornerstone","window","cornerstoneTools","cornerstoneWADOImageLoader","cornerstoneMath","external","this","define","info","homepage","Hammer","init","dicomParser","OHIF","ROOT_URL","location","pathname","config","maxWebWorkers","Math","max","navigator","hardwareConcurrency","startWebWorkersOnDemand","webWorkerPath","taskConfiguration","decodeTask","loadCodecsOnStartup","initializeCodecsOnStartup","codecsPath","usePDFJS","strict","webWorkerManager","initialize","user","getAccessToken","state","store","getState","oidc","access_token","configure","beforeSend","xhr","headers","DICOMWeb","getAuthorizationHeader","Authorization","setRequestHeader","fontFamily","textStyle","setFont","toolStyle","setToolWidth","toolColors","setToolColor","setActiveColor","touchProximity","defaultState","leftSidebarOpen","rightSidebarOpen","ui","action","type","Object","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","objectAssign","styleInject","Icons","Header","home","studyLink","list","propTypes","bool","isRequired","object","defaultProps","withRouter","global","mapStateToProps","ownProps","stackLoadingProgressMap","loading","progress","studiesWithLoadingData","cloneDeep","studies","forEach","study","thumbnails","data","displaySetInstanceUid","stackId","stackProgressData","stackPercentComplete","percentComplete","ConnectedStudyBrowser","connect","StudyBrowser","viewportPluginIds","plugins","availablePlugins","filter","plugin","PLUGIN_TYPES","VIEWPORT","map","id","find","component","defaultPlugin","length","layout","viewports","activeViewportIndex","ConnectedLayoutManager","LayoutManager","ViewerMain","viewportData","viewportIndex","item","console","warn","updatedViewportData","slice","displaySet","findDisplaySet","props","studyInstanceUid","setState","displaySets","dSet","images","push","getDisplaySetsWithImages","setViewportData","viewer","updateImageSynchronizer","destroy","array","FlexboxLayout","studiesForBrowser","seriesDescription","seriesNumber","instanceNumber","numImageFrames","imageId","getImageId","getStudiesForBrowser","mainContentClassName","ConnectedFlexboxLayout","setToolActive","redux","actions","activeButton","tools","buttons","tool","active","activeCommand","command","mapDispatchToProps","dispatch","ConnectedToolbarSection","ToolbarSection","setLayout","currentLayout","onChange","selectedCell","rows","row","columns","col","numViewports","i","height","width","ConnectedLayoutButton","LayoutButton","setViewportSpecificData","getActiveViewportSpecificData","viewportSpecificData","activeViewportSpecificData","stack","imageIds","currentImageIdIndex","cine","isPlaying","cineFrameRate","activeViewportStackData","activeViewportCineData","dispatchSetViewportSpecificData","mergeProps","propsFromState","propsFromDispatch","onPlayPauseChanged","onFrameRateChanged","frameRate","onClickNextButton","largestPossibleIndex","min","onClickBackButton","onClickSkipToStart","onClickSkipToEnd","ConnectedCineDialog","CineDialog","ToolbarRow","value","setLeftSidebarOpen","leftSidebarToggle","svgLink","svgWidth","svgHeight","bottomLabel","leftSidebarValue","padding","onLeftSidebarValueChanged","marginLeft","display","func","setRightSidebarOpen","ConnectedToolbarRow","StudyLoadingMonitor","options","_setProgressData","progressId","progressData","setStudyLoadingProgress","_clearProgressById","clearStudyLoadingProgress","StudyLoadingListener","classes","studyLoadingListener","getInstance","clear","addStudies","ConnectedStudyLoadingMonitor","StudyPrefetcher","StudyPrefetcherComponent","studyPrefetcher","setStudies","StackManager","utils","defaultTool","left","right","middle","refLinesEnabled","Synchronizer","metadataProvider","MetadataProvider","metaData","addProvider","provider","bind","setMetadataProvider","Viewer","createDisplaySets","ViewerRetrieveStudyData","error","studyInstanceUids","seriesInstanceUids","server","promise","retrieveStudiesMetadata","then","updatedStudies","catch","Error","JSON","stringify","isActive","a","activeServer","servers","ConnectedViewerRetrieveStudyData","ViewerRouting","match","params","studyUIDs","seriesUIDs","split","shape","string","parseQueryAndFetchStudies","query","Promise","resolve","reject","url","oReq","XMLHttpRequest","addEventListener","log","responseText","parse","dicomWeb","open","send","StandaloneRouting","qs","search","IHEInvokeImageDisplay","requestType","displayStudyList","studyUID","uids","decodedData","atob","patientID","reload","App","unlisten","history","listen","setContext","ConnectedApp","ViewerbaseDragDropContext","setViewportActive","clearViewportSpecificData","activeTool","enableStackPrefetch","cineToolData","ConnectedCornerstoneViewport","CornerstoneViewport","OHIFComponentPlugin","children","node","OHIFCornerstoneViewportPlugin","getPluginViewportData","pluginProps","clearStacks","set","findOrCreateStack","number","currentStack","getCornerstoneStack","reducers","combined","combineReducers","createStore","defaultButtons","text","svgUrl","iconClasses","buttonsAction","setAvailableButtons","pluginAction","addPlugin","addServers","routerBasename"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CA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,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM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S,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAA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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CA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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAA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AAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,EAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,C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EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CA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E,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,E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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CA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CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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G,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,GAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,GAAE,CAAC,OAAO,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC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AC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACjwJ;EACD,GAAG,EAAE;IACH,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GAC9jK;EACD,YAAY,EAAE;IACZ,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GACh3J;EACD,SAAS,EAAE;IACT,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,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E,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MACjZ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CA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M,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;MAC5pC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,W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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC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AC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,C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,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,6DAA6D,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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C,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,C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AAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iCAAiC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,cAAc,GAAE,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,OAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,I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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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B;AAKA,2BAAeM,yBAAyB,CAAChP,UAAU,CAAC+O,YAAD,CAAX,CAAxC;;ACzGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file diff --git a/Packages-react/ohif-viewer/dist/index.umd.js b/Packages-react/ohif-viewer/dist/index.umd.js index f1d565345..d03ce1fff 100644 --- a/Packages-react/ohif-viewer/dist/index.umd.js +++ b/Packages-react/ohif-viewer/dist/index.umd.js @@ -20385,14 +20385,7 @@ OHIF$1.external.cornerstoneMath = cornerstoneMath$1; OHIF$1.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader$1; // TODO: Is there a better way to guess ROOT_URL? - var ROOT_URL = window.location.pathname; // If the page we are on is not a subset of the expected homepage - // provided in the package.json file, we might be doing local development. - // In this case, set the base URL to the current location's origin. - - if (homepage.includes(window.location.origin) === false) { - ROOT_URL = window.location.origin; - } - + var ROOT_URL = window.location.pathname; var config = { maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1), startWebWorkersOnDemand: true, diff --git a/Packages-react/ohif-viewer/dist/index.umd.js.map b/Packages-react/ohif-viewer/dist/index.umd.js.map index 1851b5168..33ba7abe8 100644 --- a/Packages-react/ohif-viewer/dist/index.umd.js.map +++ b/Packages-react/ohif-viewer/dist/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router-dom/node_modules/warning/warning.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/warning/warning.js","../node_modules/invariant/invariant.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/history/es/PathUtils.js","../node_modules/history/es/LocationUtils.js","../node_modules/history/es/createTransitionManager.js","../node_modules/history/es/DOMUtils.js","../node_modules/history/es/createBrowserHistory.js","../node_modules/history/es/createHashHistory.js","../node_modules/history/es/createMemoryHistory.js","../node_modules/react-router/node_modules/warning/warning.js","../node_modules/react-router/es/Router.js","../node_modules/react-router-dom/es/Router.js","../node_modules/react-router-dom/es/BrowserRouter.js","../node_modules/react-router-dom/es/HashRouter.js","../node_modules/react-router-dom/es/Link.js","../node_modules/react-router/es/MemoryRouter.js","../node_modules/react-router-dom/es/MemoryRouter.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/path-to-regexp/index.js","../node_modules/react-router/es/matchPath.js","../node_modules/react-router/es/Route.js","../node_modules/react-router-dom/es/Route.js","../node_modules/react-router-dom/es/NavLink.js","../node_modules/react-router/es/Prompt.js","../node_modules/react-router-dom/es/Prompt.js","../node_modules/react-router/es/generatePath.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router-dom/es/Redirect.js","../node_modules/react-router/es/StaticRouter.js","../node_modules/react-router-dom/es/StaticRouter.js","../node_modules/react-router/es/Switch.js","../node_modules/react-router-dom/es/Switch.js","../node_modules/react-router-dom/es/generatePath.js","../node_modules/react-router-dom/es/matchPath.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router-dom/es/withRouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/utils/isPlainObject.js","../node_modules/react-redux/es/utils/warning.js","../node_modules/react-redux/es/utils/verifyPlainObject.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/verifySubselectors.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../../ohif-core/dist/index.es.js","../node_modules/dicom-parser/dist/dicomParser.min.js","../node_modules/cornerstone-core/dist/cornerstone.js","../node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js","../node_modules/cornerstone-math/dist/cornerstoneMath.min.js","../node_modules/cornerstone-tools/dist/cornerstoneTools.min.js","../node_modules/hammerjs/hammer.js","../src/config.js","../src/redux/ui.js","../../react-viewerbase/dist/index.es.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/Header/Header.js","../node_modules/lodash.clonedeep/index.js","../src/connectedComponents/ConnectedStudyBrowser.js","../src/connectedComponents/ConnectedLayoutManager.js","../src/connectedComponents/ViewerMain.js","../src/connectedComponents/FlexboxLayout.js","../src/connectedComponents/ConnectedFlexboxLayout.js","../src/connectedComponents/ConnectedToolbarSection.js","../src/connectedComponents/ConnectedLayoutButton.js","../src/connectedComponents/ConnectedCineDialog.js","../src/connectedComponents/ToolbarRow.js","../src/redux/actions.js","../src/connectedComponents/ConnectedToolbarRow.js","../src/components/StudyLoadingMonitor.js","../src/connectedComponents/ConnectedStudyLoadingMonitor.js","../src/components/StudyPrefetcher.js","../src/connectedComponents/Viewer.js","../src/connectedComponents/ViewerRetrieveStudyData.js","../src/connectedComponents/ConnectedViewerRetrieveStudyData.js","../src/routes/ViewerRouting.js","../node_modules/strict-uri-encode/index.js","../node_modules/query-string/index.js","../src/routes/StandaloneRouting.js","../src/routes/IHEInvokeImageDisplay.js","../src/OHIFStandaloneViewer.js","../../react-cornerstone-viewport/dist/index.es.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/ConnectedCornerstoneViewport.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFComponentPlugin.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js","../src/App.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createHashHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n _inherits(HashRouter, _React$Component);\n\n function HashRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, HashRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n HashRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\");\n };\n\n HashRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n basename: PropTypes.string,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"]),\n children: PropTypes.node\n};\n\n\nexport default HashRouter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware .\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use outside a \");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n _inherits(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MemoryRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\");\n };\n\n MemoryRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default MemoryRouter;","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from \"react-router/es/MemoryRouter\";\n\nexport default MemoryRouter;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // already computed the match for us\n\n invariant(router, \"You should not use or withRouter() outside a \");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from \n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n _inherits(Prompt, _React$Component);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Prompt.prototype.enable = function enable(message) {\n if (this.unblock) this.unblock();\n\n this.unblock = this.context.router.history.block(message);\n };\n\n Prompt.prototype.disable = function disable() {\n if (this.unblock) {\n this.unblock();\n this.unblock = null;\n }\n };\n\n Prompt.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.props.when) this.enable(this.props.message);\n };\n\n Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.when) {\n if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n } else {\n this.disable();\n }\n };\n\n Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n this.disable();\n };\n\n Prompt.prototype.render = function render() {\n return null;\n };\n\n return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n when: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n when: true\n};\nPrompt.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n block: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Prompt;","// Written in this round about way for babel-transform-imports\nimport Prompt from \"react-router/es/Prompt\";\n\nexport default Prompt;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var compiledGenerator = pathToRegexp.compile(pattern);\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n\n this.perform();\n };\n\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n\n return to;\n };\n\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n\n var to = this.computeTo(this.props);\n\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n\n Redirect.prototype.render = function render() {\n return null;\n };\n\n return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n computedMatch: PropTypes.object, // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport Router from \"./Router\";\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n};\n\nvar addBasename = function addBasename(basename, location) {\n if (!basename) return location;\n\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n if (!basename) return location;\n\n var base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n};\n\nvar createURL = function createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n return function () {\n invariant(false, \"You cannot %s with \", methodName);\n };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = function (_React$Component) {\n _inherits(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, StaticRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n return addLeadingSlash(_this.props.basename + createURL(path));\n }, _this.handlePush = function (location) {\n var _this$props = _this.props,\n basename = _this$props.basename,\n context = _this$props.context;\n\n context.action = \"PUSH\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleReplace = function (location) {\n var _this$props2 = _this.props,\n basename = _this$props2.basename,\n context = _this$props2.context;\n\n context.action = \"REPLACE\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleListen = function () {\n return noop;\n }, _this.handleBlock = function () {\n return noop;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n StaticRouter.prototype.getChildContext = function getChildContext() {\n return {\n router: {\n staticContext: this.props.context\n }\n };\n };\n\n StaticRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\");\n };\n\n StaticRouter.prototype.render = function render() {\n var _props = this.props,\n basename = _props.basename,\n context = _props.context,\n location = _props.location,\n props = _objectWithoutProperties(_props, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: this.createHref,\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return React.createElement(Router, _extends({}, props, { history: history }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object.isRequired,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n basename: \"\",\n location: \"/\"\n};\nStaticRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;","// Written in this round about way for babel-transform-imports\nimport StaticRouter from \"react-router/es/StaticRouter\";\n\nexport default StaticRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport generatePath from \"react-router/es/generatePath\";\n\nexport default generatePath;","// Written in this round about way for babel-transform-imports\nimport matchPath from \"react-router/es/matchPath\";\n\nexport default matchPath;","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.state = {\n storeState: store.getState(),\n store: store\n };\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.subscribe();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n if (this.unsubscribe) this.unsubscribe();\n this.subscribe();\n }\n };\n\n _proto.subscribe = function subscribe() {\n var _this2 = this;\n\n var store = this.props.store;\n this.unsubscribe = store.subscribe(function () {\n var newStoreState = store.getState();\n\n if (!_this2._isMounted) {\n return;\n }\n\n _this2.setState(function (providerState) {\n // If the value is the same, skip the unnecessary state update.\n if (providerState.storeState === newStoreState) {\n return null;\n }\n\n return {\n storeState: newStoreState\n };\n });\n }); // Actions might have been dispatched between render and mount - handle those\n\n var postMountStoreState = store.getState();\n\n if (postMountStoreState !== this.state.storeState) {\n this.setState({\n storeState: postMountStoreState\n });\n }\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.7.0\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, PureComponent } from 'react';\nimport { isValidElementType } from 'react-is';\nimport { ReactReduxContext } from './Context';\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React-Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n var OuterBaseComponent = Component;\n var FinalWrappedComponent = WrappedComponent;\n\n if (pure) {\n OuterBaseComponent = PureComponent;\n }\n\n function makeDerivedPropsSelector() {\n var lastProps;\n var lastState;\n var lastDerivedProps;\n var lastStore;\n var sourceSelector;\n return function selectDerivedProps(state, props, store) {\n if (pure && lastProps === props && lastState === state) {\n return lastDerivedProps;\n }\n\n if (store !== lastStore) {\n lastStore = store;\n sourceSelector = selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n\n lastProps = props;\n lastState = state;\n var nextProps = sourceSelector(state, props);\n\n if (lastDerivedProps === nextProps) {\n return lastDerivedProps;\n }\n\n lastDerivedProps = nextProps;\n return lastDerivedProps;\n };\n }\n\n function makeChildElementSelector() {\n var lastChildProps, lastForwardRef, lastChildElement;\n return function selectChildElement(childProps, forwardRef) {\n if (childProps !== lastChildProps || forwardRef !== lastForwardRef) {\n lastChildProps = childProps;\n lastForwardRef = forwardRef;\n lastChildElement = React.createElement(FinalWrappedComponent, _extends({}, childProps, {\n ref: forwardRef\n }));\n }\n\n return lastChildElement;\n };\n }\n\n var Connect =\n /*#__PURE__*/\n function (_OuterBaseComponent) {\n _inheritsLoose(Connect, _OuterBaseComponent);\n\n function Connect(props) {\n var _this;\n\n _this = _OuterBaseComponent.call(this, props) || this;\n invariant(forwardRef ? !props.wrapperProps[storeKey] : !props[storeKey], 'Passing redux store in props has been removed and does not do anything. ' + customStoreWarningMessage);\n _this.selectDerivedProps = makeDerivedPropsSelector();\n _this.selectChildElement = makeChildElementSelector();\n _this.renderWrappedComponent = _this.renderWrappedComponent.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.renderWrappedComponent = function renderWrappedComponent(value) {\n invariant(value, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var storeState = value.storeState,\n store = value.store;\n var wrapperProps = this.props;\n var forwardedRef;\n\n if (forwardRef) {\n wrapperProps = this.props.wrapperProps;\n forwardedRef = this.props.forwardedRef;\n }\n\n var derivedProps = this.selectDerivedProps(storeState, wrapperProps, store);\n return this.selectChildElement(derivedProps, forwardedRef);\n };\n\n _proto.render = function render() {\n var ContextToUse = this.props.context || Context;\n return React.createElement(ContextToUse.Consumer, null, this.renderWrappedComponent);\n };\n\n return Connect;\n }(OuterBaseComponent);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, {\n wrapperProps: props,\n forwardedRef: ref\n });\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar cornerstone = window.cornerstone;\nvar cornerstoneTools = window.cornerstoneTools;\nvar cornerstoneWADOImageLoader = window.cornerstoneWADOImageLoader;\nvar cornerstoneMath = window.cornerstoneMath;\nvar external = {\n set cornerstone(cs) {\n cornerstone = cs;\n },\n\n get cornerstone() {\n return cornerstone;\n },\n\n set cornerstoneTools(tools) {\n cornerstoneTools = tools;\n },\n\n get cornerstoneTools() {\n return cornerstoneTools;\n },\n\n set cornerstoneWADOImageLoader(wado) {\n cornerstoneWADOImageLoader = wado;\n },\n\n get cornerstoneWADOImageLoader() {\n return cornerstoneWADOImageLoader;\n },\n\n set cornerstoneMath(math) {\n cornerstoneMath = math;\n },\n\n get cornerstoneMath() {\n return cornerstoneMath;\n }\n\n};\n\nfunction getBoundingBox(context, textLines, x, y, options) {\n var cornerstoneTools = external.cornerstoneTools;\n\n if (Object.prototype.toString.call(textLines) !== '[object Array]') {\n textLines = [textLines];\n }\n\n var padding = 5;\n var font = cornerstoneTools.textStyle.getFont();\n var fontSize = cornerstoneTools.textStyle.getFontSize();\n context.save();\n context.font = font;\n context.textBaseline = 'top'; // Find the longest text width in the array of text data\n\n var maxWidth = 0;\n textLines.forEach(function (text) {\n // Get the text width in the current font\n var width = context.measureText(text).width; // Find the maximum with for all the text rows;\n\n maxWidth = Math.max(maxWidth, width);\n }); // Calculate the bounding box for this text box\n\n var boundingBox = {\n width: maxWidth + padding * 2,\n height: padding + textLines.length * (fontSize + padding)\n };\n\n if (options && options.centering && options.centering.x === true) {\n x -= boundingBox.width / 2;\n }\n\n if (options && options.centering && options.centering.y === true) {\n y -= boundingBox.height / 2;\n }\n\n boundingBox.left = x;\n boundingBox.top = y;\n context.restore(); // Return the bounding box so it can be used for pointNearHandle\n\n return boundingBox;\n}\n\nfunction pixelToPage(element, position) {\n var cornerstone = external.cornerstone;\n var enabledElement = cornerstone.getEnabledElement(element);\n var result = {\n x: 0,\n y: 0\n }; // Stop here if the cornerstone element is not enabled or position is not an object\n\n if (!enabledElement || _typeof(position) !== 'object') {\n return result;\n }\n\n var canvas = enabledElement.canvas;\n var canvasOffset = $(canvas).offset();\n result.x += canvasOffset.left;\n result.y += canvasOffset.top;\n var canvasPosition = cornerstone.pixelToCanvas(element, position);\n result.x += canvasPosition.x;\n result.y += canvasPosition.y;\n return result;\n}\n\nfunction repositionTextBox(eventData, measurementData, config) {\n var cornerstone = external.cornerstone; // Stop here if it's not a measurement creating\n\n if (!measurementData.isCreating) {\n return;\n }\n\n var element = eventData.element;\n var enabledElement = cornerstone.getEnabledElement(element);\n var image = enabledElement.image;\n var allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;\n var allow = {\n T: !allowedBorders || allowedBorders.includes('T'),\n R: !allowedBorders || allowedBorders.includes('R'),\n B: !allowedBorders || allowedBorders.includes('B'),\n L: !allowedBorders || allowedBorders.includes('L')\n };\n\n var getAvailableBlankAreas = function getAvailableBlankAreas(enabledElement, labelWidth, labelHeight) {\n var element = enabledElement.element,\n canvas = enabledElement.canvas,\n image = enabledElement.image;\n var topLeft = cornerstone.pixelToCanvas(element, {\n x: 0,\n y: 0\n });\n var bottomRight = cornerstone.pixelToCanvas(element, {\n x: image.width,\n y: image.height\n });\n var $canvas = $(canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var result = {};\n result['x-1'] = allow.L && topLeft.x > labelWidth;\n result['y-1'] = allow.T && topLeft.y > labelHeight;\n result.x1 = allow.R && canvasWidth - bottomRight.x > labelWidth;\n result.y1 = allow.B && canvasHeight - bottomRight.y > labelHeight;\n return result;\n };\n\n var getRenderingInformation = function getRenderingInformation(limits, tool) {\n var mid = {};\n mid.x = limits.x / 2;\n mid.y = limits.y / 2;\n var directions = {};\n directions.x = tool.x < mid.x ? -1 : 1;\n directions.y = tool.y < mid.y ? -1 : 1;\n var diffX = directions.x < 0 ? tool.x : limits.x - tool.x;\n var diffY = directions.y < 0 ? tool.y : limits.y - tool.y;\n var cornerAxis = diffY < diffX ? 'y' : 'x';\n var map = {\n 'x-1': 'L',\n 'y-1': 'T',\n x1: 'R',\n y1: 'B'\n };\n var current = 0;\n\n while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {\n // Invert the direction for the next iteration\n directions[cornerAxis] *= -1; // Invert the tempCornerAxis\n\n cornerAxis = cornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n return {\n directions: directions,\n cornerAxis: cornerAxis\n };\n };\n\n var calculateAxisCenter = function calculateAxisCenter(axis, start, end) {\n var a = start[axis];\n var b = end[axis];\n var lowest = Math.min(a, b);\n var highest = Math.max(a, b);\n return lowest + (highest - lowest) / 2;\n };\n\n var getTextBoxSizeInPixels = function getTextBoxSizeInPixels(element, bounds) {\n var topLeft = cornerstone.pageToPixel(element, 0, 0);\n var bottomRight = cornerstone.pageToPixel(element, bounds.x, bounds.y);\n return {\n x: bottomRight.x - topLeft.x,\n y: bottomRight.y - topLeft.y\n };\n };\n\n function getTextBoxOffset(config, cornerAxis, toolAxis, boxSize) {\n config = config || {};\n var centering = config.centering || {};\n var centerX = !!centering.x;\n var centerY = !!centering.y;\n var halfBoxSizeX = boxSize.x / 2;\n var halfBoxSizeY = boxSize.y / 2;\n var offset = {\n x: [],\n y: []\n };\n\n if (cornerAxis === 'x') {\n var offsetY = centerY ? 0 : halfBoxSizeY;\n offset.x[-1] = centerX ? halfBoxSizeX : 0;\n offset.x[1] = centerX ? -halfBoxSizeX : -boxSize.x;\n offset.y[-1] = offsetY;\n offset.y[1] = offsetY;\n } else {\n var offsetX = centerX ? 0 : halfBoxSizeX;\n offset.x[-1] = offsetX;\n offset.x[1] = offsetX;\n offset.y[-1] = centerY ? halfBoxSizeY : 0;\n offset.y[1] = centerY ? -halfBoxSizeY : -boxSize.y;\n }\n\n return offset;\n }\n\n var handles = measurementData.handles;\n var textBox = handles.textBox;\n var $canvas = $(enabledElement.canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var offset = $canvas.offset();\n var canvasDimensions = {\n x: canvasWidth,\n y: canvasHeight\n };\n var bounds = {};\n bounds.x = textBox.boundingBox.width;\n bounds.y = textBox.boundingBox.height;\n\n var getHandlePosition = function getHandlePosition(key) {\n var _handles$key = handles[key],\n x = _handles$key.x,\n y = _handles$key.y;\n return {\n x: x,\n y: y\n };\n };\n\n var start = getHandlePosition('start');\n var end = getHandlePosition('end');\n var tool = {};\n tool.x = calculateAxisCenter('x', start, end);\n tool.y = calculateAxisCenter('y', start, end);\n var limits = {};\n limits.x = image.width;\n limits.y = image.height;\n\n var _getRenderingInformat = getRenderingInformation(limits, tool),\n directions = _getRenderingInformat.directions,\n cornerAxis = _getRenderingInformat.cornerAxis;\n\n var availableAreas = getAvailableBlankAreas(enabledElement, bounds.x, bounds.y);\n var tempDirections = Object.assign({}, directions);\n var tempCornerAxis = cornerAxis;\n var foundPlace = false;\n var current = 0;\n\n while (current < 4) {\n if (availableAreas[tempCornerAxis + tempDirections[tempCornerAxis]]) {\n foundPlace = true;\n break;\n } // Invert the direction for the next iteration\n\n\n tempDirections[tempCornerAxis] *= -1; // Invert the tempCornerAxis\n\n tempCornerAxis = tempCornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n var cornerAxisPosition;\n\n if (foundPlace) {\n directions = Object.assign({}, directions, tempDirections);\n cornerAxis = tempCornerAxis;\n cornerAxisPosition = directions[cornerAxis] < 0 ? 0 : limits[cornerAxis];\n } else {\n limits = Object.assign({}, limits, canvasDimensions);\n var toolPositionOnCanvas = cornerstone.pixelToCanvas(element, tool);\n var renderingInformation = getRenderingInformation(limits, toolPositionOnCanvas);\n directions = renderingInformation.directions;\n cornerAxis = renderingInformation.cornerAxis;\n var position = {\n x: directions.x < 0 ? offset.left : offset.left + canvasWidth,\n y: directions.y < 0 ? offset.top : offset.top + canvasHeight\n };\n var pixelPosition = cornerstone.pageToPixel(element, position.x, position.y);\n cornerAxisPosition = pixelPosition[cornerAxis];\n }\n\n var toolAxis = cornerAxis === 'x' ? 'y' : 'x';\n var boxSize = getTextBoxSizeInPixels(element, bounds);\n textBox[cornerAxis] = cornerAxisPosition;\n textBox[toolAxis] = tool[toolAxis]; // Adjust the text box position reducing its size from the corner axis\n\n var textBoxOffset = getTextBoxOffset(config, cornerAxis, toolAxis, boxSize);\n textBox[cornerAxis] += textBoxOffset[cornerAxis][directions[cornerAxis]]; // Preventing the text box from partially going outside the canvas area\n\n var topLeft = cornerstone.pixelToCanvas(element, textBox);\n var bottomRight = {\n x: topLeft.x + bounds.x,\n y: topLeft.y + bounds.y\n };\n var canvasBorders = {\n x0: offset.left,\n y0: offset.top,\n x1: offset.left + canvasWidth,\n y1: offset.top + canvasHeight\n };\n\n if (topLeft[toolAxis] < 0) {\n var x = canvasBorders.x0;\n var y = canvasBorders.y0;\n\n var _pixelPosition = cornerstone.pageToPixel(element, x, y);\n\n textBox[toolAxis] = _pixelPosition[toolAxis];\n } else if (bottomRight[toolAxis] > canvasDimensions[toolAxis]) {\n var _x = canvasBorders.x1 - bounds.x;\n\n var _y = canvasBorders.y1 - bounds.y;\n\n var _pixelPosition2 = cornerstone.pageToPixel(element, _x, _y);\n\n textBox[toolAxis] = _pixelPosition2[toolAxis];\n }\n}\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar REGEX_TAG = /^x[0-9a-fx]{8}$/;\nvar DICOMTagDescriptions = Object.create(Object.prototype, {\n _descriptions: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n },\n tagNumberToString: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function tagNumberToString(tag) {\n var string; // by default, undefined is returned...\n\n if (this.isValidTagNumber(tag)) {\n // if it's a number, build its hexadecimal representation...\n string = 'x' + ('00000000' + tag.toString(16)).substr(-8);\n }\n\n return string;\n }\n },\n isValidTagNumber: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTagNumber(tag) {\n return _typeof(tag) === NUMBER && tag >= 0 && tag <= 0xffffffff;\n }\n },\n isValidTag: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTag(tag) {\n return _typeof(tag) === STRING ? REGEX_TAG.test(tag) : this.isValidTagNumber(tag);\n }\n },\n find: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function find(name) {\n var description; // by default, undefined is returned...\n\n if (_typeof(name) !== STRING) {\n // if it's a number, a tag string will be returned...\n name = this.tagNumberToString(name);\n }\n\n if (_typeof(name) === STRING) {\n description = this._descriptions[name];\n }\n\n return description;\n }\n },\n init: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function init(descriptionMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _descriptions = this._descriptions;\n\n for (var tag in descriptionMap) {\n if (_hasOwn.call(descriptionMap, tag)) {\n if (!this.isValidTag(tag)) {\n // Skip in case tag is not valid...\n console.info(\"DICOMTagDescriptions: Invalid tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n }\n\n if (tag in _descriptions) {\n // Skip in case the tag is duplicated...\n console.info(\"DICOMTagDescriptions: Duplicated tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n } // Save keyword...\n\n\n var keyword = descriptionMap[tag]; // Create a description entry and freeze it...\n\n var entry = Object.create(null);\n entry.tag = tag;\n entry.keyword = keyword;\n Object.freeze(entry); // Add tag references to entry...\n\n _descriptions[tag] = entry; // Add keyword references to entry (if not present already)...\n\n if (keyword in _descriptions) {\n var currentEntry = _descriptions[keyword];\n console.info(\"DICOMTagDescriptions: Using <\".concat(currentEntry.tag, \",\").concat(currentEntry.keyword, \"> instead of <\").concat(entry.tag, \",\").concat(entry.keyword, \"> for keyword \\\"\").concat(keyword, \"\\\"...\"));\n } else {\n _descriptions[keyword] = entry;\n }\n }\n } // Freeze internal description map...\n\n\n Object.freeze(_descriptions); // Freeze itself...\n\n Object.freeze(this);\n }\n }\n});\n/**\n * Map with DICOM Tag Descriptions\n */\n\nvar initialTagDescriptionMap = {\n x00020000: 'FileMetaInfoGroupLength',\n x00020001: 'FileMetaInfoVersion',\n x00020002: 'MediaStorageSOPClassUID',\n x00020003: 'MediaStorageSOPInstanceUID',\n x00020010: 'TransferSyntaxUID',\n x00020012: 'ImplementationClassUID',\n x00020013: 'ImplementationVersionName',\n x00020016: 'SourceApplicationEntityTitle',\n x00020100: 'PrivateInformationCreatorUID',\n x00020102: 'PrivateInformation',\n x00041130: 'FileSetID',\n x00041141: 'FileSetDescriptorFileID',\n x00041142: 'SpecificCharacterSetOfFile',\n x00041200: 'FirstDirectoryRecordOffset',\n x00041202: 'LastDirectoryRecordOffset',\n x00041212: 'FileSetConsistencyFlag',\n x00041220: 'DirectoryRecordSequence',\n x00041400: 'OffsetOfNextDirectoryRecord',\n x00041410: 'RecordInUseFlag',\n x00041420: 'LowerLevelDirectoryEntityOffset',\n x00041430: 'DirectoryRecordType',\n x00041432: 'PrivateRecordUID',\n x00041500: 'ReferencedFileID',\n x00041504: 'MRDRDirectoryRecordOffset',\n x00041510: 'ReferencedSOPClassUIDInFile',\n x00041511: 'ReferencedSOPInstanceUIDInFile',\n x00041512: 'ReferencedTransferSyntaxUIDInFile',\n x0004151a: 'ReferencedRelatedSOPClassUIDInFile',\n x00041600: 'NumberOfReferences',\n x00080000: 'IdentifyingGroupLength',\n x00080001: 'LengthToEnd',\n x00080005: 'SpecificCharacterSet',\n x00080006: 'LanguageCodeSequence',\n x00080008: 'ImageType',\n x00080010: 'RecognitionCode',\n x00080012: 'InstanceCreationDate',\n x00080013: 'InstanceCreationTime',\n x00080014: 'InstanceCreatorUID',\n x00080016: 'SOPClassUID',\n x00080018: 'SOPInstanceUID',\n x0008001a: 'RelatedGeneralSOPClassUID',\n x0008001b: 'OriginalSpecializedSOPClassUID',\n x00080020: 'StudyDate',\n x00080021: 'SeriesDate',\n x00080022: 'AcquisitionDate',\n x00080023: 'ContentDate',\n x00080024: 'OverlayDate',\n x00080025: 'CurveDate',\n x0008002a: 'AcquisitionDateTime',\n x00080030: 'StudyTime',\n x00080031: 'SeriesTime',\n x00080032: 'AcquisitionTime',\n x00080033: 'ContentTime',\n x00080034: 'OverlayTime',\n x00080035: 'CurveTime',\n x00080040: 'DataSetType',\n x00080041: 'DataSetSubtype',\n x00080042: 'NuclearMedicineSeriesType',\n x00080050: 'AccessionNumber',\n x00080052: 'QueryRetrieveLevel',\n x00080054: 'RetrieveAETitle',\n x00080056: 'InstanceAvailability',\n x00080058: 'FailedSOPInstanceUIDList',\n x00080060: 'Modality',\n x00080061: 'ModalitiesInStudy',\n x00080062: 'SOPClassesInStudy',\n x00080064: 'ConversionType',\n x00080068: 'PresentationIntentType',\n x00080070: 'Manufacturer',\n x00080080: 'InstitutionName',\n x00080081: 'InstitutionAddress',\n x00080082: 'InstitutionCodeSequence',\n x00080090: 'ReferringPhysicianName',\n x00080092: 'ReferringPhysicianAddress',\n x00080094: 'ReferringPhysicianTelephoneNumber',\n x00080096: 'ReferringPhysicianIDSequence',\n x00080100: 'CodeValue',\n x00080102: 'CodingSchemeDesignator',\n x00080103: 'CodingSchemeVersion',\n x00080104: 'CodeMeaning',\n x00080105: 'MappingResource',\n x00080106: 'ContextGroupVersion',\n x00080107: 'ContextGroupLocalVersion',\n x0008010b: 'ContextGroupExtensionFlag',\n x0008010c: 'CodingSchemeUID',\n x0008010d: 'ContextGroupExtensionCreatorUID',\n x0008010f: 'ContextIdentifier',\n x00080110: 'CodingSchemeIDSequence',\n x00080112: 'CodingSchemeRegistry',\n x00080114: 'CodingSchemeExternalID',\n x00080115: 'CodingSchemeName',\n x00080116: 'CodingSchemeResponsibleOrganization',\n x00080117: 'ContextUID',\n x00080201: 'TimezoneOffsetFromUTC',\n x00081000: 'NetworkID',\n x00081010: 'StationName',\n x00081030: 'StudyDescription',\n x00081032: 'ProcedureCodeSequence',\n x0008103e: 'SeriesDescription',\n x00081040: 'InstitutionalDepartmentName',\n x00081048: 'PhysiciansOfRecord',\n x00081049: 'PhysiciansOfRecordIDSequence',\n x00081050: 'PerformingPhysicianName',\n x00081052: 'PerformingPhysicianIDSequence',\n x00081060: 'NameOfPhysicianReadingStudy',\n x00081062: 'PhysicianReadingStudyIDSequence',\n x00081070: 'OperatorsName',\n x00081072: 'OperatorIDSequence',\n x00081080: 'AdmittingDiagnosesDescription',\n x00081084: 'AdmittingDiagnosesCodeSequence',\n x00081090: 'ManufacturersModelName',\n x00081100: 'ReferencedResultsSequence',\n x00081110: 'ReferencedStudySequence',\n x00081111: 'ReferencedPerformedProcedureStepSequence',\n x00081115: 'ReferencedSeriesSequence',\n x00081120: 'ReferencedPatientSequence',\n x00081125: 'ReferencedVisitSequence',\n x00081130: 'ReferencedOverlaySequence',\n x0008113a: 'ReferencedWaveformSequence',\n x00081140: 'ReferencedImageSequence',\n x00081145: 'ReferencedCurveSequence',\n x0008114a: 'ReferencedInstanceSequence',\n x00081150: 'ReferencedSOPClassUID',\n x00081155: 'ReferencedSOPInstanceUID',\n x0008115a: 'SOPClassesSupported',\n x00081160: 'ReferencedFrameNumber',\n x00081161: 'SimpleFrameList',\n x00081162: 'CalculatedFrameList',\n x00081163: 'TimeRange',\n x00081164: 'FrameExtractionSequence',\n x00081195: 'TransactionUID',\n x00081197: 'FailureReason',\n x00081198: 'FailedSOPSequence',\n x00081199: 'ReferencedSOPSequence',\n x00081200: 'OtherReferencedStudiesSequence',\n x00081250: 'RelatedSeriesSequence',\n x00082110: 'LossyImageCompressionRetired',\n x00082111: 'DerivationDescription',\n x00082112: 'SourceImageSequence',\n x00082120: 'StageName',\n x00082122: 'StageNumber',\n x00082124: 'NumberOfStages',\n x00082127: 'ViewName',\n x00082128: 'ViewNumber',\n x00082129: 'NumberOfEventTimers',\n x0008212a: 'NumberOfViewsInStage',\n x00082130: 'EventElapsedTimes',\n x00082132: 'EventTimerNames',\n x00082133: 'EventTimerSequence',\n x00082134: 'EventTimeOffset',\n x00082135: 'EventCodeSequence',\n x00082142: 'StartTrim',\n x00082143: 'StopTrim',\n x00082144: 'RecommendedDisplayFrameRate',\n x00082200: 'TransducerPosition',\n x00082204: 'TransducerOrientation',\n x00082208: 'AnatomicStructure',\n x00082218: 'AnatomicRegionSequence',\n x00082220: 'AnatomicRegionModifierSequence',\n x00082228: 'PrimaryAnatomicStructureSequence',\n x00082229: 'AnatomicStructureOrRegionSequence',\n x00082230: 'AnatomicStructureModifierSequence',\n x00082240: 'TransducerPositionSequence',\n x00082242: 'TransducerPositionModifierSequence',\n x00082244: 'TransducerOrientationSequence',\n x00082246: 'TransducerOrientationModifierSeq',\n x00082253: 'AnatomicEntrancePortalCodeSeqTrial',\n x00082255: 'AnatomicApproachDirCodeSeqTrial',\n x00082256: 'AnatomicPerspectiveDescrTrial',\n x00082257: 'AnatomicPerspectiveCodeSeqTrial',\n x00083001: 'AlternateRepresentationSequence',\n x00083010: 'IrradiationEventUID',\n x00084000: 'IdentifyingComments',\n x00089007: 'FrameType',\n x00089092: 'ReferencedImageEvidenceSequence',\n x00089121: 'ReferencedRawDataSequence',\n x00089123: 'CreatorVersionUID',\n x00089124: 'DerivationImageSequence',\n x00089154: 'SourceImageEvidenceSequence',\n x00089205: 'PixelPresentation',\n x00089206: 'VolumetricProperties',\n x00089207: 'VolumeBasedCalculationTechnique',\n x00089208: 'ComplexImageComponent',\n x00089209: 'AcquisitionContrast',\n x00089215: 'DerivationCodeSequence',\n x00089237: 'GrayscalePresentationStateSequence',\n x00089410: 'ReferencedOtherPlaneSequence',\n x00089458: 'FrameDisplaySequence',\n x00089459: 'RecommendedDisplayFrameRateInFloat',\n x00089460: 'SkipFrameRangeFlag',\n // x00091001: 'FullFidelity',\n // x00091002: 'SuiteID',\n // x00091004: 'ProductID',\n // x00091027: 'ImageActualDate',\n // x00091030: 'ServiceID',\n // x00091031: 'MobileLocationNumber',\n // x000910e3: 'EquipmentUID',\n // x000910e6: 'GenesisVersionNow',\n // x000910e7: 'ExamRecordChecksum',\n // x000910e9: 'ActualSeriesDataTimeStamp',\n x00100000: 'PatientGroupLength',\n x00100010: 'PatientName',\n x00100020: 'PatientID',\n x00100021: 'IssuerOfPatientID',\n x00100022: 'TypeOfPatientID',\n x00100030: 'PatientBirthDate',\n x00100032: 'PatientBirthTime',\n x00100040: 'PatientSex',\n x00100050: 'PatientInsurancePlanCodeSequence',\n x00100101: 'PatientPrimaryLanguageCodeSeq',\n x00100102: 'PatientPrimaryLanguageCodeModSeq',\n x00101000: 'OtherPatientIDs',\n x00101001: 'OtherPatientNames',\n x00101002: 'OtherPatientIDsSequence',\n x00101005: 'PatientBirthName',\n x00101010: 'PatientAge',\n x00101020: 'PatientSize',\n x00101030: 'PatientWeight',\n x00101040: 'PatientAddress',\n x00101050: 'InsurancePlanIdentification',\n x00101060: 'PatientMotherBirthName',\n x00101080: 'MilitaryRank',\n x00101081: 'BranchOfService',\n x00101090: 'MedicalRecordLocator',\n x00102000: 'MedicalAlerts',\n x00102110: 'Allergies',\n x00102150: 'CountryOfResidence',\n x00102152: 'RegionOfResidence',\n x00102154: 'PatientTelephoneNumbers',\n x00102160: 'EthnicGroup',\n x00102180: 'Occupation',\n x001021a0: 'SmokingStatus',\n x001021b0: 'AdditionalPatientHistory',\n x001021c0: 'PregnancyStatus',\n x001021d0: 'LastMenstrualDate',\n x001021f0: 'PatientReligiousPreference',\n x00102201: 'PatientSpeciesDescription',\n x00102202: 'PatientSpeciesCodeSequence',\n x00102203: 'PatientSexNeutered',\n x00102210: 'AnatomicalOrientationType',\n x00102292: 'PatientBreedDescription',\n x00102293: 'PatientBreedCodeSequence',\n x00102294: 'BreedRegistrationSequence',\n x00102295: 'BreedRegistrationNumber',\n x00102296: 'BreedRegistryCodeSequence',\n x00102297: 'ResponsiblePerson',\n x00102298: 'ResponsiblePersonRole',\n x00102299: 'ResponsibleOrganization',\n x00104000: 'PatientComments',\n x00109431: 'ExaminedBodyThickness',\n x00111010: 'PatientStatus',\n x00120010: 'ClinicalTrialSponsorName',\n x00120020: 'ClinicalTrialProtocolID',\n x00120021: 'ClinicalTrialProtocolName',\n x00120030: 'ClinicalTrialSiteID',\n x00120031: 'ClinicalTrialSiteName',\n x00120040: 'ClinicalTrialSubjectID',\n x00120042: 'ClinicalTrialSubjectReadingID',\n x00120050: 'ClinicalTrialTimePointID',\n x00120051: 'ClinicalTrialTimePointDescription',\n x00120060: 'ClinicalTrialCoordinatingCenter',\n x00120062: 'PatientIdentityRemoved',\n x00120063: 'DeidentificationMethod',\n x00120064: 'DeidentificationMethodCodeSequence',\n x00120071: 'ClinicalTrialSeriesID',\n x00120072: 'ClinicalTrialSeriesDescription',\n x00120084: 'DistributionType',\n x00120085: 'ConsentForDistributionFlag',\n x00180000: 'AcquisitionGroupLength',\n x00180010: 'ContrastBolusAgent',\n x00180012: 'ContrastBolusAgentSequence',\n x00180014: 'ContrastBolusAdministrationRoute',\n x00180015: 'BodyPartExamined',\n x00180020: 'ScanningSequence',\n x00180021: 'SequenceVariant',\n x00180022: 'ScanOptions',\n x00180023: 'MRAcquisitionType',\n x00180024: 'SequenceName',\n x00180025: 'AngioFlag',\n x00180026: 'InterventionDrugInformationSeq',\n x00180027: 'InterventionDrugStopTime',\n x00180028: 'InterventionDrugDose',\n x00180029: 'InterventionDrugSequence',\n x0018002a: 'AdditionalDrugSequence',\n x00180030: 'Radionuclide',\n x00180031: 'Radiopharmaceutical',\n x00180032: 'EnergyWindowCenterline',\n x00180033: 'EnergyWindowTotalWidth',\n x00180034: 'InterventionDrugName',\n x00180035: 'InterventionDrugStartTime',\n x00180036: 'InterventionSequence',\n x00180037: 'TherapyType',\n x00180038: 'InterventionStatus',\n x00180039: 'TherapyDescription',\n x0018003a: 'InterventionDescription',\n x00180040: 'CineRate',\n x00180042: 'InitialCineRunState',\n x00180050: 'SliceThickness',\n x00180060: 'KVP',\n x00180070: 'CountsAccumulated',\n x00180071: 'AcquisitionTerminationCondition',\n x00180072: 'EffectiveDuration',\n x00180073: 'AcquisitionStartCondition',\n x00180074: 'AcquisitionStartConditionData',\n x00180075: 'AcquisitionEndConditionData',\n x00180080: 'RepetitionTime',\n x00180081: 'EchoTime',\n x00180082: 'InversionTime',\n x00180083: 'NumberOfAverages',\n x00180084: 'ImagingFrequency',\n x00180085: 'ImagedNucleus',\n x00180086: 'EchoNumber',\n x00180087: 'MagneticFieldStrength',\n x00180088: 'SpacingBetweenSlices',\n x00180089: 'NumberOfPhaseEncodingSteps',\n x00180090: 'DataCollectionDiameter',\n x00180091: 'EchoTrainLength',\n x00180093: 'PercentSampling',\n x00180094: 'PercentPhaseFieldOfView',\n x00180095: 'PixelBandwidth',\n x00181000: 'DeviceSerialNumber',\n x00181002: 'DeviceUID',\n x00181003: 'DeviceID',\n x00181004: 'PlateID',\n x00181005: 'GeneratorID',\n x00181006: 'GridID',\n x00181007: 'CassetteID',\n x00181008: 'GantryID',\n x00181010: 'SecondaryCaptureDeviceID',\n x00181011: 'HardcopyCreationDeviceID',\n x00181012: 'DateOfSecondaryCapture',\n x00181014: 'TimeOfSecondaryCapture',\n x00181016: 'SecondaryCaptureDeviceManufacturer',\n x00181017: 'HardcopyDeviceManufacturer',\n x00181018: 'SecondaryCaptureDeviceModelName',\n x00181019: 'SecondaryCaptureDeviceSoftwareVers',\n x0018101a: 'HardcopyDeviceSoftwareVersion',\n x0018101b: 'HardcopyDeviceModelName',\n x00181020: 'SoftwareVersion',\n x00181022: 'VideoImageFormatAcquired',\n x00181023: 'DigitalImageFormatAcquired',\n x00181030: 'ProtocolName',\n x00181040: 'ContrastBolusRoute',\n x00181041: 'ContrastBolusVolume',\n x00181042: 'ContrastBolusStartTime',\n x00181043: 'ContrastBolusStopTime',\n x00181044: 'ContrastBolusTotalDose',\n x00181045: 'SyringeCounts',\n x00181046: 'ContrastFlowRate',\n x00181047: 'ContrastFlowDuration',\n x00181048: 'ContrastBolusIngredient',\n x00181049: 'ContrastBolusConcentration',\n x00181050: 'SpatialResolution',\n x00181060: 'TriggerTime',\n x00181061: 'TriggerSourceOrType',\n x00181062: 'NominalInterval',\n x00181063: 'FrameTime',\n x00181064: 'CardiacFramingType',\n x00181065: 'FrameTimeVector',\n x00181066: 'FrameDelay',\n x00181067: 'ImageTriggerDelay',\n x00181068: 'MultiplexGroupTimeOffset',\n x00181069: 'TriggerTimeOffset',\n x0018106a: 'SynchronizationTrigger',\n x0018106c: 'SynchronizationChannel',\n x0018106e: 'TriggerSamplePosition',\n x00181070: 'RadiopharmaceuticalRoute',\n x00181071: 'RadiopharmaceuticalVolume',\n x00181072: 'RadiopharmaceuticalStartTime',\n x00181073: 'RadiopharmaceuticalStopTime',\n x00181074: 'RadionuclideTotalDose',\n x00181075: 'RadionuclideHalfLife',\n x00181076: 'RadionuclidePositronFraction',\n x00181077: 'RadiopharmaceuticalSpecActivity',\n x00181078: 'RadiopharmaceuticalStartDateTime',\n x00181079: 'RadiopharmaceuticalStopDateTime',\n x00181080: 'BeatRejectionFlag',\n x00181081: 'LowRRValue',\n x00181082: 'HighRRValue',\n x00181083: 'IntervalsAcquired',\n x00181084: 'IntervalsRejected',\n x00181085: 'PVCRejection',\n x00181086: 'SkipBeats',\n x00181088: 'HeartRate',\n x00181090: 'CardiacNumberOfImages',\n x00181094: 'TriggerWindow',\n x00181100: 'ReconstructionDiameter',\n x00181110: 'DistanceSourceToDetector',\n x00181111: 'DistanceSourceToPatient',\n x00181114: 'EstimatedRadiographicMagnification',\n x00181120: 'GantryDetectorTilt',\n x00181121: 'GantryDetectorSlew',\n x00181130: 'TableHeight',\n x00181131: 'TableTraverse',\n x00181134: 'TableMotion',\n x00181135: 'TableVerticalIncrement',\n x00181136: 'TableLateralIncrement',\n x00181137: 'TableLongitudinalIncrement',\n x00181138: 'TableAngle',\n x0018113a: 'TableType',\n x00181140: 'RotationDirection',\n x00181141: 'AngularPosition',\n x00181142: 'RadialPosition',\n x00181143: 'ScanArc',\n x00181144: 'AngularStep',\n x00181145: 'CenterOfRotationOffset',\n x00181146: 'RotationOffset',\n x00181147: 'FieldOfViewShape',\n x00181149: 'FieldOfViewDimensions',\n x00181150: 'ExposureTime',\n x00181151: 'XRayTubeCurrent',\n x00181152: 'Exposure',\n x00181153: 'ExposureInMicroAmpSec',\n x00181154: 'AveragePulseWidth',\n x00181155: 'RadiationSetting',\n x00181156: 'RectificationType',\n x0018115a: 'RadiationMode',\n x0018115e: 'ImageAreaDoseProduct',\n x00181160: 'FilterType',\n x00181161: 'TypeOfFilters',\n x00181162: 'IntensifierSize',\n x00181164: 'ImagerPixelSpacing',\n x00181166: 'Grid',\n x00181170: 'GeneratorPower',\n x00181180: 'CollimatorGridName',\n x00181181: 'CollimatorType',\n x00181182: 'FocalDistance',\n x00181183: 'XFocusCenter',\n x00181184: 'YFocusCenter',\n x00181190: 'FocalSpots',\n x00181191: 'AnodeTargetMaterial',\n x001811a0: 'BodyPartThickness',\n x001811a2: 'CompressionForce',\n x00181200: 'DateOfLastCalibration',\n x00181201: 'TimeOfLastCalibration',\n x00181210: 'ConvolutionKernel',\n x00181240: 'UpperLowerPixelValues',\n x00181242: 'ActualFrameDuration',\n x00181243: 'CountRate',\n x00181244: 'PreferredPlaybackSequencing',\n x00181250: 'ReceiveCoilName',\n x00181251: 'TransmitCoilName',\n x00181260: 'PlateType',\n x00181261: 'PhosphorType',\n x00181300: 'ScanVelocity',\n x00181301: 'WholeBodyTechnique',\n x00181302: 'ScanLength',\n x00181310: 'AcquisitionMatrix',\n x00181312: 'InPlanePhaseEncodingDirection',\n x00181314: 'FlipAngle',\n x00181315: 'VariableFlipAngleFlag',\n x00181316: 'SAR',\n x00181318: 'DB-Dt',\n x00181400: 'AcquisitionDeviceProcessingDescr',\n x00181401: 'AcquisitionDeviceProcessingCode',\n x00181402: 'CassetteOrientation',\n x00181403: 'CassetteSize',\n x00181404: 'ExposuresOnPlate',\n x00181405: 'RelativeXRayExposure',\n x00181450: 'ColumnAngulation',\n x00181460: 'TomoLayerHeight',\n x00181470: 'TomoAngle',\n x00181480: 'TomoTime',\n x00181490: 'TomoType',\n x00181491: 'TomoClass',\n x00181495: 'NumberOfTomosynthesisSourceImages',\n x00181500: 'PositionerMotion',\n x00181508: 'PositionerType',\n x00181510: 'PositionerPrimaryAngle',\n x00181511: 'PositionerSecondaryAngle',\n x00181520: 'PositionerPrimaryAngleIncrement',\n x00181521: 'PositionerSecondaryAngleIncrement',\n x00181530: 'DetectorPrimaryAngle',\n x00181531: 'DetectorSecondaryAngle',\n x00181600: 'ShutterShape',\n x00181602: 'ShutterLeftVerticalEdge',\n x00181604: 'ShutterRightVerticalEdge',\n x00181606: 'ShutterUpperHorizontalEdge',\n x00181608: 'ShutterLowerHorizontalEdge',\n x00181610: 'CenterOfCircularShutter',\n x00181612: 'RadiusOfCircularShutter',\n x00181620: 'VerticesOfPolygonalShutter',\n x00181622: 'ShutterPresentationValue',\n x00181623: 'ShutterOverlayGroup',\n x00181624: 'ShutterPresentationColorCIELabVal',\n x00181700: 'CollimatorShape',\n x00181702: 'CollimatorLeftVerticalEdge',\n x00181704: 'CollimatorRightVerticalEdge',\n x00181706: 'CollimatorUpperHorizontalEdge',\n x00181708: 'CollimatorLowerHorizontalEdge',\n x00181710: 'CenterOfCircularCollimator',\n x00181712: 'RadiusOfCircularCollimator',\n x00181720: 'VerticesOfPolygonalCollimator',\n x00181800: 'AcquisitionTimeSynchronized',\n x00181801: 'TimeSource',\n x00181802: 'TimeDistributionProtocol',\n x00181803: 'NTPSourceAddress',\n x00182001: 'PageNumberVector',\n x00182002: 'FrameLabelVector',\n x00182003: 'FramePrimaryAngleVector',\n x00182004: 'FrameSecondaryAngleVector',\n x00182005: 'SliceLocationVector',\n x00182006: 'DisplayWindowLabelVector',\n x00182010: 'NominalScannedPixelSpacing',\n x00182020: 'DigitizingDeviceTransportDirection',\n x00182030: 'RotationOfScannedFilm',\n x00183100: 'IVUSAcquisition',\n x00183101: 'IVUSPullbackRate',\n x00183102: 'IVUSGatedRate',\n x00183103: 'IVUSPullbackStartFrameNumber',\n x00183104: 'IVUSPullbackStopFrameNumber',\n x00183105: 'LesionNumber',\n x00184000: 'AcquisitionComments',\n x00185000: 'OutputPower',\n x00185010: 'TransducerData',\n x00185012: 'FocusDepth',\n x00185020: 'ProcessingFunction',\n x00185021: 'PostprocessingFunction',\n x00185022: 'MechanicalIndex',\n x00185024: 'BoneThermalIndex',\n x00185026: 'CranialThermalIndex',\n x00185027: 'SoftTissueThermalIndex',\n x00185028: 'SoftTissueFocusThermalIndex',\n x00185029: 'SoftTissueSurfaceThermalIndex',\n x00185030: 'DynamicRange',\n x00185040: 'TotalGain',\n x00185050: 'DepthOfScanField',\n x00185100: 'PatientPosition',\n x00185101: 'ViewPosition',\n x00185104: 'ProjectionEponymousNameCodeSeq',\n x00185210: 'ImageTransformationMatrix',\n x00185212: 'ImageTranslationVector',\n x00186000: 'Sensitivity',\n x00186011: 'SequenceOfUltrasoundRegions',\n x00186012: 'RegionSpatialFormat',\n x00186014: 'RegionDataType',\n x00186016: 'RegionFlags',\n x00186018: 'RegionLocationMinX0',\n x0018601a: 'RegionLocationMinY0',\n x0018601c: 'RegionLocationMaxX1',\n x0018601e: 'RegionLocationMaxY1',\n x00186020: 'ReferencePixelX0',\n x00186022: 'ReferencePixelY0',\n x00186024: 'PhysicalUnitsXDirection',\n x00186026: 'PhysicalUnitsYDirection',\n x00186028: 'ReferencePixelPhysicalValueX',\n x0018602a: 'ReferencePixelPhysicalValueY',\n x0018602c: 'PhysicalDeltaX',\n x0018602e: 'PhysicalDeltaY',\n x00186030: 'TransducerFrequency',\n x00186031: 'TransducerType',\n x00186032: 'PulseRepetitionFrequency',\n x00186034: 'DopplerCorrectionAngle',\n x00186036: 'SteeringAngle',\n x00186038: 'DopplerSampleVolumeXPosRetired',\n x00186039: 'DopplerSampleVolumeXPosition',\n x0018603a: 'DopplerSampleVolumeYPosRetired',\n x0018603b: 'DopplerSampleVolumeYPosition',\n x0018603c: 'TMLinePositionX0Retired',\n x0018603d: 'TMLinePositionX0',\n x0018603e: 'TMLinePositionY0Retired',\n x0018603f: 'TMLinePositionY0',\n x00186040: 'TMLinePositionX1Retired',\n x00186041: 'TMLinePositionX1',\n x00186042: 'TMLinePositionY1Retired',\n x00186043: 'TMLinePositionY1',\n x00186044: 'PixelComponentOrganization',\n x00186046: 'PixelComponentMask',\n x00186048: 'PixelComponentRangeStart',\n x0018604a: 'PixelComponentRangeStop',\n x0018604c: 'PixelComponentPhysicalUnits',\n x0018604e: 'PixelComponentDataType',\n x00186050: 'NumberOfTableBreakPoints',\n x00186052: 'TableOfXBreakPoints',\n x00186054: 'TableOfYBreakPoints',\n x00186056: 'NumberOfTableEntries',\n x00186058: 'TableOfPixelValues',\n x0018605a: 'TableOfParameterValues',\n x00186060: 'RWaveTimeVector',\n x00187000: 'DetectorConditionsNominalFlag',\n x00187001: 'DetectorTemperature',\n x00187004: 'DetectorType',\n x00187005: 'DetectorConfiguration',\n x00187006: 'DetectorDescription',\n x00187008: 'DetectorMode',\n x0018700a: 'DetectorID',\n x0018700c: 'DateOfLastDetectorCalibration',\n x0018700e: 'TimeOfLastDetectorCalibration',\n x00187010: 'DetectorExposuresSinceCalibration',\n x00187011: 'DetectorExposuresSinceManufactured',\n x00187012: 'DetectorTimeSinceLastExposure',\n x00187014: 'DetectorActiveTime',\n x00187016: 'DetectorActiveOffsetFromExposure',\n x0018701a: 'DetectorBinning',\n x00187020: 'DetectorElementPhysicalSize',\n x00187022: 'DetectorElementSpacing',\n x00187024: 'DetectorActiveShape',\n x00187026: 'DetectorActiveDimensions',\n x00187028: 'DetectorActiveOrigin',\n x0018702a: 'DetectorManufacturerName',\n x0018702b: 'DetectorManufacturersModelName',\n x00187030: 'FieldOfViewOrigin',\n x00187032: 'FieldOfViewRotation',\n x00187034: 'FieldOfViewHorizontalFlip',\n x00187040: 'GridAbsorbingMaterial',\n x00187041: 'GridSpacingMaterial',\n x00187042: 'GridThickness',\n x00187044: 'GridPitch',\n x00187046: 'GridAspectRatio',\n x00187048: 'GridPeriod',\n x0018704c: 'GridFocalDistance',\n x00187050: 'FilterMaterial',\n x00187052: 'FilterThicknessMinimum',\n x00187054: 'FilterThicknessMaximum',\n x00187060: 'ExposureControlMode',\n x00187062: 'ExposureControlModeDescription',\n x00187064: 'ExposureStatus',\n x00187065: 'PhototimerSetting',\n x00188150: 'ExposureTimeInMicroSec',\n x00188151: 'XRayTubeCurrentInMicroAmps',\n x00189004: 'ContentQualification',\n x00189005: 'PulseSequenceName',\n x00189006: 'MRImagingModifierSequence',\n x00189008: 'EchoPulseSequence',\n x00189009: 'InversionRecovery',\n x00189010: 'FlowCompensation',\n x00189011: 'MultipleSpinEcho',\n x00189012: 'MultiPlanarExcitation',\n x00189014: 'PhaseContrast',\n x00189015: 'TimeOfFlightContrast',\n x00189016: 'Spoiling',\n x00189017: 'SteadyStatePulseSequence',\n x00189018: 'EchoPlanarPulseSequence',\n x00189019: 'TagAngleFirstAxis',\n x00189020: 'MagnetizationTransfer',\n x00189021: 'T2Preparation',\n x00189022: 'BloodSignalNulling',\n x00189024: 'SaturationRecovery',\n x00189025: 'SpectrallySelectedSuppression',\n x00189026: 'SpectrallySelectedExcitation',\n x00189027: 'SpatialPresaturation',\n x00189028: 'Tagging',\n x00189029: 'OversamplingPhase',\n x00189030: 'TagSpacingFirstDimension',\n x00189032: 'GeometryOfKSpaceTraversal',\n x00189033: 'SegmentedKSpaceTraversal',\n x00189034: 'RectilinearPhaseEncodeReordering',\n x00189035: 'TagThickness',\n x00189036: 'PartialFourierDirection',\n x00189037: 'CardiacSynchronizationTechnique',\n x00189041: 'ReceiveCoilManufacturerName',\n x00189042: 'MRReceiveCoilSequence',\n x00189043: 'ReceiveCoilType',\n x00189044: 'QuadratureReceiveCoil',\n x00189045: 'MultiCoilDefinitionSequence',\n x00189046: 'MultiCoilConfiguration',\n x00189047: 'MultiCoilElementName',\n x00189048: 'MultiCoilElementUsed',\n x00189049: 'MRTransmitCoilSequence',\n x00189050: 'TransmitCoilManufacturerName',\n x00189051: 'TransmitCoilType',\n x00189052: 'SpectralWidth',\n x00189053: 'ChemicalShiftReference',\n x00189054: 'VolumeLocalizationTechnique',\n x00189058: 'MRAcquisitionFrequencyEncodeSteps',\n x00189059: 'Decoupling',\n x00189060: 'DecoupledNucleus',\n x00189061: 'DecouplingFrequency',\n x00189062: 'DecouplingMethod',\n x00189063: 'DecouplingChemicalShiftReference',\n x00189064: 'KSpaceFiltering',\n x00189065: 'TimeDomainFiltering',\n x00189066: 'NumberOfZeroFills',\n x00189067: 'BaselineCorrection',\n x00189069: 'ParallelReductionFactorInPlane',\n x00189070: 'CardiacRRIntervalSpecified',\n x00189073: 'AcquisitionDuration',\n x00189074: 'FrameAcquisitionDateTime',\n x00189075: 'DiffusionDirectionality',\n x00189076: 'DiffusionGradientDirectionSequence',\n x00189077: 'ParallelAcquisition',\n x00189078: 'ParallelAcquisitionTechnique',\n x00189079: 'InversionTimes',\n x00189080: 'MetaboliteMapDescription',\n x00189081: 'PartialFourier',\n x00189082: 'EffectiveEchoTime',\n x00189083: 'MetaboliteMapCodeSequence',\n x00189084: 'ChemicalShiftSequence',\n x00189085: 'CardiacSignalSource',\n x00189087: 'DiffusionBValue',\n x00189089: 'DiffusionGradientOrientation',\n x00189090: 'VelocityEncodingDirection',\n x00189091: 'VelocityEncodingMinimumValue',\n x00189093: 'NumberOfKSpaceTrajectories',\n x00189094: 'CoverageOfKSpace',\n x00189095: 'SpectroscopyAcquisitionPhaseRows',\n x00189096: 'ParallelReductFactorInPlaneRetired',\n x00189098: 'TransmitterFrequency',\n x00189100: 'ResonantNucleus',\n x00189101: 'FrequencyCorrection',\n x00189103: 'MRSpectroscopyFOV-GeometrySequence',\n x00189104: 'SlabThickness',\n x00189105: 'SlabOrientation',\n x00189106: 'MidSlabPosition',\n x00189107: 'MRSpatialSaturationSequence',\n x00189112: 'MRTimingAndRelatedParametersSeq',\n x00189114: 'MREchoSequence',\n x00189115: 'MRModifierSequence',\n x00189117: 'MRDiffusionSequence',\n x00189118: 'CardiacTriggerSequence',\n x00189119: 'MRAveragesSequence',\n x00189125: 'MRFOV-GeometrySequence',\n x00189126: 'VolumeLocalizationSequence',\n x00189127: 'SpectroscopyAcquisitionDataColumns',\n x00189147: 'DiffusionAnisotropyType',\n x00189151: 'FrameReferenceDateTime',\n x00189152: 'MRMetaboliteMapSequence',\n x00189155: 'ParallelReductionFactorOutOfPlane',\n x00189159: 'SpectroscopyOutOfPlanePhaseSteps',\n x00189166: 'BulkMotionStatus',\n x00189168: 'ParallelReductionFactSecondInPlane',\n x00189169: 'CardiacBeatRejectionTechnique',\n x00189170: 'RespiratoryMotionCompTechnique',\n x00189171: 'RespiratorySignalSource',\n x00189172: 'BulkMotionCompensationTechnique',\n x00189173: 'BulkMotionSignalSource',\n x00189174: 'ApplicableSafetyStandardAgency',\n x00189175: 'ApplicableSafetyStandardDescr',\n x00189176: 'OperatingModeSequence',\n x00189177: 'OperatingModeType',\n x00189178: 'OperatingMode',\n x00189179: 'SpecificAbsorptionRateDefinition',\n x00189180: 'GradientOutputType',\n x00189181: 'SpecificAbsorptionRateValue',\n x00189182: 'GradientOutput',\n x00189183: 'FlowCompensationDirection',\n x00189184: 'TaggingDelay',\n x00189185: 'RespiratoryMotionCompTechDescr',\n x00189186: 'RespiratorySignalSourceID',\n x00189195: 'ChemicalShiftsMinIntegrateLimitHz',\n x00189196: 'ChemicalShiftsMaxIntegrateLimitHz',\n x00189197: 'MRVelocityEncodingSequence',\n x00189198: 'FirstOrderPhaseCorrection',\n x00189199: 'WaterReferencedPhaseCorrection',\n x00189200: 'MRSpectroscopyAcquisitionType',\n x00189214: 'RespiratoryCyclePosition',\n x00189217: 'VelocityEncodingMaximumValue',\n x00189218: 'TagSpacingSecondDimension',\n x00189219: 'TagAngleSecondAxis',\n x00189220: 'FrameAcquisitionDuration',\n x00189226: 'MRImageFrameTypeSequence',\n x00189227: 'MRSpectroscopyFrameTypeSequence',\n x00189231: 'MRAcqPhaseEncodingStepsInPlane',\n x00189232: 'MRAcqPhaseEncodingStepsOutOfPlane',\n x00189234: 'SpectroscopyAcqPhaseColumns',\n x00189236: 'CardiacCyclePosition',\n x00189239: 'SpecificAbsorptionRateSequence',\n x00189240: 'RFEchoTrainLength',\n x00189241: 'GradientEchoTrainLength',\n x00189295: 'ChemicalShiftsMinIntegrateLimitPPM',\n x00189296: 'ChemicalShiftsMaxIntegrateLimitPPM',\n x00189301: 'CTAcquisitionTypeSequence',\n x00189302: 'AcquisitionType',\n x00189303: 'TubeAngle',\n x00189304: 'CTAcquisitionDetailsSequence',\n x00189305: 'RevolutionTime',\n x00189306: 'SingleCollimationWidth',\n x00189307: 'TotalCollimationWidth',\n x00189308: 'CTTableDynamicsSequence',\n x00189309: 'TableSpeed',\n x00189310: 'TableFeedPerRotation',\n x00189311: 'SpiralPitchFactor',\n x00189312: 'CTGeometrySequence',\n x00189313: 'DataCollectionCenterPatient',\n x00189314: 'CTReconstructionSequence',\n x00189315: 'ReconstructionAlgorithm',\n x00189316: 'ConvolutionKernelGroup',\n x00189317: 'ReconstructionFieldOfView',\n x00189318: 'ReconstructionTargetCenterPatient',\n x00189319: 'ReconstructionAngle',\n x00189320: 'ImageFilter',\n x00189321: 'CTExposureSequence',\n x00189322: 'ReconstructionPixelSpacing',\n x00189323: 'ExposureModulationType',\n x00189324: 'EstimatedDoseSaving',\n x00189325: 'CTXRayDetailsSequence',\n x00189326: 'CTPositionSequence',\n x00189327: 'TablePosition',\n x00189328: 'ExposureTimeInMilliSec',\n x00189329: 'CTImageFrameTypeSequence',\n x00189330: 'XRayTubeCurrentInMilliAmps',\n x00189332: 'ExposureInMilliAmpSec',\n x00189333: 'ConstantVolumeFlag',\n x00189334: 'FluoroscopyFlag',\n x00189335: 'SourceToDataCollectionCenterDist',\n x00189337: 'ContrastBolusAgentNumber',\n x00189338: 'ContrastBolusIngredientCodeSeq',\n x00189340: 'ContrastAdministrationProfileSeq',\n x00189341: 'ContrastBolusUsageSequence',\n x00189342: 'ContrastBolusAgentAdministered',\n x00189343: 'ContrastBolusAgentDetected',\n x00189344: 'ContrastBolusAgentPhase',\n x00189345: 'CTDIvol',\n x00189346: 'CTDIPhantomTypeCodeSequence',\n x00189351: 'CalciumScoringMassFactorPatient',\n x00189352: 'CalciumScoringMassFactorDevice',\n x00189353: 'EnergyWeightingFactor',\n x00189360: 'CTAdditionalXRaySourceSequence',\n x00189401: 'ProjectionPixelCalibrationSequence',\n x00189402: 'DistanceSourceToIsocenter',\n x00189403: 'DistanceObjectToTableTop',\n x00189404: 'ObjectPixelSpacingInCenterOfBeam',\n x00189405: 'PositionerPositionSequence',\n x00189406: 'TablePositionSequence',\n x00189407: 'CollimatorShapeSequence',\n x00189412: 'XA-XRFFrameCharacteristicsSequence',\n x00189417: 'FrameAcquisitionSequence',\n x00189420: 'XRayReceptorType',\n x00189423: 'AcquisitionProtocolName',\n x00189424: 'AcquisitionProtocolDescription',\n x00189425: 'ContrastBolusIngredientOpaque',\n x00189426: 'DistanceReceptorPlaneToDetHousing',\n x00189427: 'IntensifierActiveShape',\n x00189428: 'IntensifierActiveDimensions',\n x00189429: 'PhysicalDetectorSize',\n x00189430: 'PositionOfIsocenterProjection',\n x00189432: 'FieldOfViewSequence',\n x00189433: 'FieldOfViewDescription',\n x00189434: 'ExposureControlSensingRegionsSeq',\n x00189435: 'ExposureControlSensingRegionShape',\n x00189436: 'ExposureControlSensRegionLeftEdge',\n x00189437: 'ExposureControlSensRegionRightEdge',\n x00189440: 'CenterOfCircExposControlSensRegion',\n x00189441: 'RadiusOfCircExposControlSensRegion',\n x00189447: 'ColumnAngulationPatient',\n x00189449: 'BeamAngle',\n x00189451: 'FrameDetectorParametersSequence',\n x00189452: 'CalculatedAnatomyThickness',\n x00189455: 'CalibrationSequence',\n x00189456: 'ObjectThicknessSequence',\n x00189457: 'PlaneIdentification',\n x00189461: 'FieldOfViewDimensionsInFloat',\n x00189462: 'IsocenterReferenceSystemSequence',\n x00189463: 'PositionerIsocenterPrimaryAngle',\n x00189464: 'PositionerIsocenterSecondaryAngle',\n x00189465: 'PositionerIsocenterDetRotAngle',\n x00189466: 'TableXPositionToIsocenter',\n x00189467: 'TableYPositionToIsocenter',\n x00189468: 'TableZPositionToIsocenter',\n x00189469: 'TableHorizontalRotationAngle',\n x00189470: 'TableHeadTiltAngle',\n x00189471: 'TableCradleTiltAngle',\n x00189472: 'FrameDisplayShutterSequence',\n x00189473: 'AcquiredImageAreaDoseProduct',\n x00189474: 'CArmPositionerTabletopRelationship',\n x00189476: 'XRayGeometrySequence',\n x00189477: 'IrradiationEventIDSequence',\n x00189504: 'XRay3DFrameTypeSequence',\n x00189506: 'ContributingSourcesSequence',\n x00189507: 'XRay3DAcquisitionSequence',\n x00189508: 'PrimaryPositionerScanArc',\n x00189509: 'SecondaryPositionerScanArc',\n x00189510: 'PrimaryPositionerScanStartAngle',\n x00189511: 'SecondaryPositionerScanStartAngle',\n x00189514: 'PrimaryPositionerIncrement',\n x00189515: 'SecondaryPositionerIncrement',\n x00189516: 'StartAcquisitionDateTime',\n x00189517: 'EndAcquisitionDateTime',\n x00189524: 'ApplicationName',\n x00189525: 'ApplicationVersion',\n x00189526: 'ApplicationManufacturer',\n x00189527: 'AlgorithmType',\n x00189528: 'AlgorithmDescription',\n x00189530: 'XRay3DReconstructionSequence',\n x00189531: 'ReconstructionDescription',\n x00189538: 'PerProjectionAcquisitionSequence',\n x00189601: 'DiffusionBMatrixSequence',\n x00189602: 'DiffusionBValueXX',\n x00189603: 'DiffusionBValueXY',\n x00189604: 'DiffusionBValueXZ',\n x00189605: 'DiffusionBValueYY',\n x00189606: 'DiffusionBValueYZ',\n x00189607: 'DiffusionBValueZZ',\n x00189701: 'DecayCorrectionDateTime',\n x00189715: 'StartDensityThreshold',\n x00189722: 'TerminationTimeThreshold',\n x00189725: 'DetectorGeometry',\n x00189727: 'AxialDetectorDimension',\n x00189735: 'PETPositionSequence',\n x00189739: 'NumberOfIterations',\n x00189740: 'NumberOfSubsets',\n x00189751: 'PETFrameTypeSequence',\n x00189756: 'ReconstructionType',\n x00189758: 'DecayCorrected',\n x00189759: 'AttenuationCorrected',\n x00189760: 'ScatterCorrected',\n x00189761: 'DeadTimeCorrected',\n x00189762: 'GantryMotionCorrected',\n x00189763: 'PatientMotionCorrected',\n x00189765: 'RandomsCorrected',\n x00189767: 'SensitivityCalibrated',\n x00189801: 'DepthsOfFocus',\n x00189804: 'ExclusionStartDatetime',\n x00189805: 'ExclusionDuration',\n x00189807: 'ImageDataTypeSequence',\n x00189808: 'DataType',\n x0018980b: 'AliasedDataType',\n x0018a001: 'ContributingEquipmentSequence',\n x0018a002: 'ContributionDateTime',\n x0018a003: 'ContributionDescription',\n // x00191002: 'NumberOfCellsIInDetector',\n // x00191003: 'CellNumberAtTheta',\n // x00191004: 'CellSpacing',\n // x0019100f: 'HorizFrameOfRef',\n // x00191011: 'SeriesContrast',\n // x00191012: 'LastPseq',\n // x00191013: 'StartNumberForBaseline',\n // x00191014: 'EndNumberForBaseline',\n // x00191015: 'StartNumberForEnhancedScans',\n // x00191016: 'EndNumberForEnhancedScans',\n // x00191017: 'SeriesPlane',\n // x00191018: 'FirstScanRas',\n // x00191019: 'FirstScanLocation',\n // x0019101a: 'LastScanRas',\n // x0019101b: 'LastScanLoc',\n // x0019101e: 'DisplayFieldOfView',\n // x00191023: 'TableSpeed',\n // x00191024: 'MidScanTime',\n // x00191025: 'MidScanFlag',\n // x00191026: 'DegreesOfAzimuth',\n // x00191027: 'GantryPeriod',\n // x0019102a: 'XRayOnPosition',\n // x0019102b: 'XRayOffPosition',\n // x0019102c: 'NumberOfTriggers',\n // x0019102e: 'AngleOfFirstView',\n // x0019102f: 'TriggerFrequency',\n // x00191039: 'ScanFOVType',\n // x00191040: 'StatReconFlag',\n // x00191041: 'ComputeType',\n // x00191042: 'SegmentNumber',\n // x00191043: 'TotalSegmentsRequested',\n // x00191044: 'InterscanDelay',\n // x00191047: 'ViewCompressionFactor',\n // x0019104a: 'TotalNoOfRefChannels',\n // x0019104b: 'DataSizeForScanData',\n // x00191052: 'ReconPostProcflag',\n // x00191057: 'CTWaterNumber',\n // x00191058: 'CTBoneNumber',\n // x0019105a: 'AcquisitionDuration',\n // x0019105e: 'NumberOfChannels',\n // x0019105f: 'IncrementBetweenChannels',\n // x00191060: 'StartingView',\n // x00191061: 'NumberOfViews',\n // x00191062: 'IncrementBetweenViews',\n // x0019106a: 'DependantOnNoViewsProcessed',\n // x0019106b: 'FieldOfViewInDetectorCells',\n // x00191070: 'ValueOfBackProjectionButton',\n // x00191071: 'SetIfFatqEstimatesWereUsed',\n // x00191072: 'ZChanAvgOverViews',\n // x00191073: 'AvgOfLeftRefChansOverViews',\n // x00191074: 'MaxLeftChanOverViews',\n // x00191075: 'AvgOfRightRefChansOverViews',\n // x00191076: 'MaxRightChanOverViews',\n // x0019107d: 'SecondEcho',\n // x0019107e: 'NumberOfEchoes',\n // x0019107f: 'TableDelta',\n // x00191081: 'Contiguous',\n // x00191084: 'PeakSAR',\n // x00191085: 'MonitorSAR',\n // x00191087: 'CardiacRepetitionTime',\n // x00191088: 'ImagesPerCardiacCycle',\n // x0019108a: 'ActualReceiveGainAnalog',\n // x0019108b: 'ActualReceiveGainDigital',\n // x0019108d: 'DelayAfterTrigger',\n // x0019108f: 'Swappf',\n // x00191090: 'PauseInterval',\n // x00191091: 'PulseTime',\n // x00191092: 'SliceOffsetOnFreqAxis',\n // x00191093: 'CenterFrequency',\n // x00191094: 'TransmitGain',\n // x00191095: 'AnalogReceiverGain',\n // x00191096: 'DigitalReceiverGain',\n // x00191097: 'BitmapDefiningCVs',\n // x00191098: 'CenterFreqMethod',\n // x0019109b: 'PulseSeqMode',\n // x0019109c: 'PulseSeqName',\n // x0019109d: 'PulseSeqDate',\n // x0019109e: 'InternalPulseSeqName',\n // x0019109f: 'TransmittingCoil',\n // x001910a0: 'SurfaceCoilType',\n // x001910a1: 'ExtremityCoilFlag',\n // x001910a2: 'RawDataRunNumber',\n // x001910a3: 'CalibratedFieldStrength',\n // x001910a4: 'SATFatWaterBone',\n // x001910a5: 'ReceiveBandwidth',\n // x001910a7: 'UserData01',\n // x001910a8: 'UserData02',\n // x001910a9: 'UserData03',\n // x001910aa: 'UserData04',\n // x001910ab: 'UserData05',\n // x001910ac: 'UserData06',\n // x001910ad: 'UserData07',\n // x001910ae: 'UserData08',\n // x001910af: 'UserData09',\n // x001910b0: 'UserData10',\n // x001910b1: 'UserData11',\n // x001910b2: 'UserData12',\n // x001910b3: 'UserData13',\n // x001910b4: 'UserData14',\n // x001910b5: 'UserData15',\n // x001910b6: 'UserData16',\n // x001910b7: 'UserData17',\n // x001910b8: 'UserData18',\n // x001910b9: 'UserData19',\n // x001910ba: 'UserData20',\n // x001910bb: 'UserData21',\n // x001910bc: 'UserData22',\n // x001910bd: 'UserData23',\n // x001910be: 'ProjectionAngle',\n // x001910c0: 'SaturationPlanes',\n // x001910c1: 'SurfaceCoilIntensity',\n // x001910c2: 'SATLocationR',\n // x001910c3: 'SATLocationL',\n // x001910c4: 'SATLocationA',\n // x001910c5: 'SATLocationP',\n // x001910c6: 'SATLocationH',\n // x001910c7: 'SATLocationF',\n // x001910c8: 'SATThicknessR-L',\n // x001910c9: 'SATThicknessA-P',\n // x001910ca: 'SATThicknessH-F',\n // x001910cb: 'PrescribedFlowAxis',\n // x001910cc: 'VelocityEncoding',\n // x001910cd: 'ThicknessDisclaimer',\n // x001910ce: 'PrescanType',\n // x001910cf: 'PrescanStatus',\n // x001910d0: 'RawDataType',\n // x001910d2: 'ProjectionAlgorithm',\n // x001910d3: 'ProjectionAlgorithm',\n // x001910d5: 'FractionalEcho',\n // x001910d6: 'PrepPulse',\n // x001910d7: 'CardiacPhases',\n // x001910d8: 'VariableEchoflag',\n // x001910d9: 'ConcatenatedSAT',\n // x001910da: 'ReferenceChannelUsed',\n // x001910db: 'BackProjectorCoefficient',\n // x001910dc: 'PrimarySpeedCorrectionUsed',\n // x001910dd: 'OverrangeCorrectionUsed',\n // x001910de: 'DynamicZAlphaValue',\n // x001910df: 'UserData',\n // x001910e0: 'UserData',\n // x001910e2: 'VelocityEncodeScale',\n // x001910f2: 'FastPhases',\n // x001910f9: 'TransmissionGain',\n x00200000: 'RelationshipGroupLength',\n x0020000d: 'StudyInstanceUID',\n x0020000e: 'SeriesInstanceUID',\n x00200010: 'StudyID',\n x00200011: 'SeriesNumber',\n x00200012: 'AcquisitionNumber',\n x00200013: 'InstanceNumber',\n x00200014: 'IsotopeNumber',\n x00200015: 'PhaseNumber',\n x00200016: 'IntervalNumber',\n x00200017: 'TimeSlotNumber',\n x00200018: 'AngleNumber',\n x00200019: 'ItemNumber',\n x00200020: 'PatientOrientation',\n x00200022: 'OverlayNumber',\n x00200024: 'CurveNumber',\n x00200026: 'LookupTableNumber',\n x00200030: 'ImagePosition',\n x00200032: 'ImagePositionPatient',\n x00200035: 'ImageOrientation',\n x00200037: 'ImageOrientationPatient',\n x00200050: 'Location',\n x00200052: 'FrameOfReferenceUID',\n x00200060: 'Laterality',\n x00200062: 'ImageLaterality',\n x00200070: 'ImageGeometryType',\n x00200080: 'MaskingImage',\n x00200100: 'TemporalPositionIdentifier',\n x00200105: 'NumberOfTemporalPositions',\n x00200110: 'TemporalResolution',\n x00200200: 'SynchronizationFrameOfReferenceUID',\n x00201000: 'SeriesInStudy',\n x00201001: 'AcquisitionsInSeries',\n x00201002: 'ImagesInAcquisition',\n x00201003: 'ImagesInSeries',\n x00201004: 'AcquisitionsInStudy',\n x00201005: 'ImagesInStudy',\n x00201020: 'Reference',\n x00201040: 'PositionReferenceIndicator',\n x00201041: 'SliceLocation',\n x00201070: 'OtherStudyNumbers',\n x00201200: 'NumberOfPatientRelatedStudies',\n x00201202: 'NumberOfPatientRelatedSeries',\n x00201204: 'NumberOfPatientRelatedInstances',\n x00201206: 'NumberOfStudyRelatedSeries',\n x00201208: 'NumberOfStudyRelatedInstances',\n x00201209: 'NumberOfSeriesRelatedInstances',\n x002031xx: 'SourceImageIDs',\n x00203401: 'ModifyingDeviceID',\n x00203402: 'ModifiedImageID',\n x00203403: 'ModifiedImageDate',\n x00203404: 'ModifyingDeviceManufacturer',\n x00203405: 'ModifiedImageTime',\n x00203406: 'ModifiedImageDescription',\n x00204000: 'ImageComments',\n x00205000: 'OriginalImageIdentification',\n x00205002: 'OriginalImageIdentNomenclature',\n x00209056: 'StackID',\n x00209057: 'InStackPositionNumber',\n x00209071: 'FrameAnatomySequence',\n x00209072: 'FrameLaterality',\n x00209111: 'FrameContentSequence',\n x00209113: 'PlanePositionSequence',\n x00209116: 'PlaneOrientationSequence',\n x00209128: 'TemporalPositionIndex',\n x00209153: 'TriggerDelayTime',\n x00209156: 'FrameAcquisitionNumber',\n x00209157: 'DimensionIndexValues',\n x00209158: 'FrameComments',\n x00209161: 'ConcatenationUID',\n x00209162: 'InConcatenationNumber',\n x00209163: 'InConcatenationTotalNumber',\n x00209164: 'DimensionOrganizationUID',\n x00209165: 'DimensionIndexPointer',\n x00209167: 'FunctionalGroupPointer',\n x00209213: 'DimensionIndexPrivateCreator',\n x00209221: 'DimensionOrganizationSequence',\n x00209222: 'DimensionIndexSequence',\n x00209228: 'ConcatenationFrameOffsetNumber',\n x00209238: 'FunctionalGroupPrivateCreator',\n x00209241: 'NominalPercentageOfCardiacPhase',\n x00209245: 'NominalPercentOfRespiratoryPhase',\n x00209246: 'StartingRespiratoryAmplitude',\n x00209247: 'StartingRespiratoryPhase',\n x00209248: 'EndingRespiratoryAmplitude',\n x00209249: 'EndingRespiratoryPhase',\n x00209250: 'RespiratoryTriggerType',\n x00209251: 'RRIntervalTimeNominal',\n x00209252: 'ActualCardiacTriggerDelayTime',\n x00209253: 'RespiratorySynchronizationSequence',\n x00209254: 'RespiratoryIntervalTime',\n x00209255: 'NominalRespiratoryTriggerDelayTime',\n x00209256: 'RespiratoryTriggerDelayThreshold',\n x00209257: 'ActualRespiratoryTriggerDelayTime',\n x00209301: 'ImagePositionVolume',\n x00209302: 'ImageOrientationVolume',\n x00209308: 'ApexPosition',\n x00209421: 'DimensionDescriptionLabel',\n x00209450: 'PatientOrientationInFrameSequence',\n x00209453: 'FrameLabel',\n x00209518: 'AcquisitionIndex',\n x00209529: 'ContributingSOPInstancesRefSeq',\n x00209536: 'ReconstructionIndex',\n // x00211003: 'SeriesFromWhichPrescribed',\n // x00211005: 'GenesisVersionNow',\n // x00211007: 'SeriesRecordChecksum',\n // x00211018: 'GenesisVersionNow',\n // x00211019: 'AcqreconRecordChecksum',\n // x00211020: 'TableStartLocation',\n // x00211035: 'SeriesFromWhichPrescribed',\n // x00211036: 'ImageFromWhichPrescribed',\n // x00211037: 'ScreenFormat',\n // x0021104a: 'AnatomicalReferenceForScout',\n // x0021104f: 'LocationsInAcquisition',\n // x00211050: 'GraphicallyPrescribed',\n // x00211051: 'RotationFromSourceXRot',\n // x00211052: 'RotationFromSourceYRot',\n // x00211053: 'RotationFromSourceZRot',\n // x00211054: 'ImagePosition',\n // x00211055: 'ImageOrientation',\n // x00211056: 'IntegerSlop',\n // x00211057: 'IntegerSlop',\n // x00211058: 'IntegerSlop',\n // x00211059: 'IntegerSlop',\n // x0021105a: 'IntegerSlop',\n // x0021105b: 'FloatSlop',\n // x0021105c: 'FloatSlop',\n // x0021105d: 'FloatSlop',\n // x0021105e: 'FloatSlop',\n // x0021105f: 'FloatSlop',\n // x00211081: 'AutoWindowLevelAlpha',\n // x00211082: 'AutoWindowLevelBeta',\n // x00211083: 'AutoWindowLevelWindow',\n // x00211084: 'ToWindowLevelLevel',\n // x00211090: 'TubeFocalSpotPosition',\n // x00211091: 'BiopsyPosition',\n // x00211092: 'BiopsyTLocation',\n // x00211093: 'BiopsyRefLocation',\n x00220001: 'LightPathFilterPassThroughWavelen',\n x00220002: 'LightPathFilterPassBand',\n x00220003: 'ImagePathFilterPassThroughWavelen',\n x00220004: 'ImagePathFilterPassBand',\n x00220005: 'PatientEyeMovementCommanded',\n x00220006: 'PatientEyeMovementCommandCodeSeq',\n x00220007: 'SphericalLensPower',\n x00220008: 'CylinderLensPower',\n x00220009: 'CylinderAxis',\n x0022000a: 'EmmetropicMagnification',\n x0022000b: 'IntraOcularPressure',\n x0022000c: 'HorizontalFieldOfView',\n x0022000d: 'PupilDilated',\n x0022000e: 'DegreeOfDilation',\n x00220010: 'StereoBaselineAngle',\n x00220011: 'StereoBaselineDisplacement',\n x00220012: 'StereoHorizontalPixelOffset',\n x00220013: 'StereoVerticalPixelOffset',\n x00220014: 'StereoRotation',\n x00220015: 'AcquisitionDeviceTypeCodeSequence',\n x00220016: 'IlluminationTypeCodeSequence',\n x00220017: 'LightPathFilterTypeStackCodeSeq',\n x00220018: 'ImagePathFilterTypeStackCodeSeq',\n x00220019: 'LensesCodeSequence',\n x0022001a: 'ChannelDescriptionCodeSequence',\n x0022001b: 'RefractiveStateSequence',\n x0022001c: 'MydriaticAgentCodeSequence',\n x0022001d: 'RelativeImagePositionCodeSequence',\n x00220020: 'StereoPairsSequence',\n x00220021: 'LeftImageSequence',\n x00220022: 'RightImageSequence',\n x00220030: 'AxialLengthOfTheEye',\n x00220031: 'OphthalmicFrameLocationSequence',\n x00220032: 'ReferenceCoordinates',\n x00220035: 'DepthSpatialResolution',\n x00220036: 'MaximumDepthDistortion',\n x00220037: 'AlongScanSpatialResolution',\n x00220038: 'MaximumAlongScanDistortion',\n x00220039: 'OphthalmicImageOrientation',\n x00220041: 'DepthOfTransverseImage',\n x00220042: 'MydriaticAgentConcUnitsSeq',\n x00220048: 'AcrossScanSpatialResolution',\n x00220049: 'MaximumAcrossScanDistortion',\n x0022004e: 'MydriaticAgentConcentration',\n x00220055: 'IlluminationWaveLength',\n x00220056: 'IlluminationPower',\n x00220057: 'IlluminationBandwidth',\n x00220058: 'MydriaticAgentSequence',\n // x00231001: 'NumberOfSeriesInStudy',\n // x00231002: 'NumberOfUnarchivedSeries',\n // x00231010: 'ReferenceImageField',\n // x00231050: 'SummaryImage',\n // x00231070: 'StartTimeSecsInFirstAxial',\n // x00231074: 'NoofUpdatesToHeader',\n // x0023107d: 'IndicatesIfTheStudyHasCompleteInfo',\n // x00251006: 'LastPulseSequenceUsed',\n // x00251007: 'ImagesInSeries',\n // x00251010: 'LandmarkCounter',\n // x00251011: 'NumberOfAcquisitions',\n // x00251014: 'IndicatesNoofUpdatesToHeader',\n // x00251017: 'SeriesCompleteFlag',\n // x00251018: 'NumberOfImagesArchived',\n // x00251019: 'LastImageNumberUsed',\n // x0025101a: 'PrimaryReceiverSuiteAndHost',\n // x00271006: 'ImageArchiveFlag',\n // x00271010: 'ScoutType',\n // x0027101c: 'VmaMamp',\n // x0027101d: 'VmaPhase',\n // x0027101e: 'VmaMod',\n // x0027101f: 'VmaClip',\n // x00271020: 'SmartScanOnOffFlag',\n // x00271030: 'ForeignImageRevision',\n // x00271031: 'ImagingMode',\n // x00271032: 'PulseSequence',\n // x00271033: 'ImagingOptions',\n // x00271035: 'PlaneType',\n // x00271036: 'ObliquePlane',\n // x00271040: 'RASLetterOfImageLocation',\n // x00271041: 'ImageLocation',\n // x00271042: 'CenterRCoordOfPlaneImage',\n // x00271043: 'CenterACoordOfPlaneImage',\n // x00271044: 'CenterSCoordOfPlaneImage',\n // x00271045: 'NormalRCoord',\n // x00271046: 'NormalACoord',\n // x00271047: 'NormalSCoord',\n // x00271048: 'RCoordOfTopRightCorner',\n // x00271049: 'ACoordOfTopRightCorner',\n // x0027104a: 'SCoordOfTopRightCorner',\n // x0027104b: 'RCoordOfBottomRightCorner',\n // x0027104c: 'ACoordOfBottomRightCorner',\n // x0027104d: 'SCoordOfBottomRightCorner',\n // x00271050: 'TableStartLocation',\n // x00271051: 'TableEndLocation',\n // x00271052: 'RASLetterForSideOfImage',\n // x00271053: 'RASLetterForAnteriorPosterior',\n // x00271054: 'RASLetterForScoutStartLoc',\n // x00271055: 'RASLetterForScoutEndLoc',\n // x00271060: 'ImageDimensionX',\n // x00271061: 'ImageDimensionY',\n // x00271062: 'NumberOfExcitations',\n x00280000: 'ImagePresentationGroupLength',\n x00280002: 'SamplesPerPixel',\n x00280003: 'SamplesPerPixelUsed',\n x00280004: 'PhotometricInterpretation',\n x00280005: 'ImageDimensions',\n x00280006: 'PlanarConfiguration',\n x00280008: 'NumberOfFrames',\n x00280009: 'FrameIncrementPointer',\n x0028000a: 'FrameDimensionPointer',\n x00280010: 'Rows',\n x00280011: 'Columns',\n x00280012: 'Planes',\n x00280014: 'UltrasoundColorDataPresent',\n x00280030: 'PixelSpacing',\n x00280031: 'ZoomFactor',\n x00280032: 'ZoomCenter',\n x00280034: 'PixelAspectRatio',\n x00280040: 'ImageFormat',\n x00280050: 'ManipulatedImage',\n x00280051: 'CorrectedImage',\n x0028005f: 'CompressionRecognitionCode',\n x00280060: 'CompressionCode',\n x00280061: 'CompressionOriginator',\n x00280062: 'CompressionLabel',\n x00280063: 'CompressionDescription',\n x00280065: 'CompressionSequence',\n x00280066: 'CompressionStepPointers',\n x00280068: 'RepeatInterval',\n x00280069: 'BitsGrouped',\n x00280070: 'PerimeterTable',\n x00280071: 'PerimeterValue',\n x00280080: 'PredictorRows',\n x00280081: 'PredictorColumns',\n x00280082: 'PredictorConstants',\n x00280090: 'BlockedPixels',\n x00280091: 'BlockRows',\n x00280092: 'BlockColumns',\n x00280093: 'RowOverlap',\n x00280094: 'ColumnOverlap',\n x00280100: 'BitsAllocated',\n x00280101: 'BitsStored',\n x00280102: 'HighBit',\n x00280103: 'PixelRepresentation',\n x00280104: 'SmallestValidPixelValue',\n x00280105: 'LargestValidPixelValue',\n x00280106: 'SmallestImagePixelValue',\n x00280107: 'LargestImagePixelValue',\n x00280108: 'SmallestPixelValueInSeries',\n x00280109: 'LargestPixelValueInSeries',\n x00280110: 'SmallestImagePixelValueInPlane',\n x00280111: 'LargestImagePixelValueInPlane',\n x00280120: 'PixelPaddingValue',\n x00280121: 'PixelPaddingRangeLimit',\n x00280200: 'ImageLocation',\n x00280300: 'QualityControlImage',\n x00280301: 'BurnedInAnnotation',\n x00280400: 'TransformLabel',\n x00280401: 'TransformVersionNumber',\n x00280402: 'NumberOfTransformSteps',\n x00280403: 'SequenceOfCompressedData',\n x00280404: 'DetailsOfCoefficients',\n x002804x2: 'CoefficientCoding',\n x002804x3: 'CoefficientCodingPointers',\n x00280700: 'DCTLabel',\n x00280701: 'DataBlockDescription',\n x00280702: 'DataBlock',\n x00280710: 'NormalizationFactorFormat',\n x00280720: 'ZonalMapNumberFormat',\n x00280721: 'ZonalMapLocation',\n x00280722: 'ZonalMapFormat',\n x00280730: 'AdaptiveMapFormat',\n x00280740: 'CodeNumberFormat',\n x002808x0: 'CodeLabel',\n x002808x2: 'NumberOfTables',\n x002808x3: 'CodeTableLocation',\n x002808x4: 'BitsForCodeWord',\n x002808x8: 'ImageDataLocation',\n x00280a02: 'PixelSpacingCalibrationType',\n x00280a04: 'PixelSpacingCalibrationDescription',\n x00281040: 'PixelIntensityRelationship',\n x00281041: 'PixelIntensityRelationshipSign',\n x00281050: 'WindowCenter',\n x00281051: 'WindowWidth',\n x00281052: 'RescaleIntercept',\n x00281053: 'RescaleSlope',\n x00281054: 'RescaleType',\n x00281055: 'WindowCenterAndWidthExplanation',\n x00281056: 'VOI_LUTFunction',\n x00281080: 'GrayScale',\n x00281090: 'RecommendedViewingMode',\n x00281100: 'GrayLookupTableDescriptor',\n x00281101: 'RedPaletteColorTableDescriptor',\n x00281102: 'GreenPaletteColorTableDescriptor',\n x00281103: 'BluePaletteColorTableDescriptor',\n x00281111: 'LargeRedPaletteColorTableDescr',\n x00281112: 'LargeGreenPaletteColorTableDescr',\n x00281113: 'LargeBluePaletteColorTableDescr',\n x00281199: 'PaletteColorTableUID',\n x00281200: 'GrayLookupTableData',\n x00281201: 'RedPaletteColorTableData',\n x00281202: 'GreenPaletteColorTableData',\n x00281203: 'BluePaletteColorTableData',\n x00281211: 'LargeRedPaletteColorTableData',\n x00281212: 'LargeGreenPaletteColorTableData',\n x00281213: 'LargeBluePaletteColorTableData',\n x00281214: 'LargePaletteColorLookupTableUID',\n x00281221: 'SegmentedRedColorTableData',\n x00281222: 'SegmentedGreenColorTableData',\n x00281223: 'SegmentedBlueColorTableData',\n x00281300: 'BreastImplantPresent',\n x00281350: 'PartialView',\n x00281351: 'PartialViewDescription',\n x00281352: 'PartialViewCodeSequence',\n x0028135a: 'SpatialLocationsPreserved',\n x00281402: 'DataPathAssignment',\n x00281404: 'BlendingLUT1Sequence',\n x00281406: 'BlendingWeightConstant',\n x00281408: 'BlendingLookupTableData',\n x0028140c: 'BlendingLUT2Sequence',\n x0028140e: 'DataPathID',\n x0028140f: 'RGBLUTTransferFunction',\n x00281410: 'AlphaLUTTransferFunction',\n x00282000: 'ICCProfile',\n x00282110: 'LossyImageCompression',\n x00282112: 'LossyImageCompressionRatio',\n x00282114: 'LossyImageCompressionMethod',\n x00283000: 'ModalityLUTSequence',\n x00283002: 'LUTDescriptor',\n x00283003: 'LUTExplanation',\n x00283004: 'ModalityLUTType',\n x00283006: 'LUTData',\n x00283010: 'VOILUTSequence',\n x00283110: 'SoftcopyVOILUTSequence',\n x00284000: 'ImagePresentationComments',\n x00285000: 'BiPlaneAcquisitionSequence',\n x00286010: 'RepresentativeFrameNumber',\n x00286020: 'FrameNumbersOfInterest',\n x00286022: 'FrameOfInterestDescription',\n x00286023: 'FrameOfInterestType',\n x00286030: 'MaskPointers',\n x00286040: 'RWavePointer',\n x00286100: 'MaskSubtractionSequence',\n x00286101: 'MaskOperation',\n x00286102: 'ApplicableFrameRange',\n x00286110: 'MaskFrameNumbers',\n x00286112: 'ContrastFrameAveraging',\n x00286114: 'MaskSubPixelShift',\n x00286120: 'TIDOffset',\n x00286190: 'MaskOperationExplanation',\n x00287fe0: 'PixelDataProviderURL',\n x00289001: 'DataPointRows',\n x00289002: 'DataPointColumns',\n x00289003: 'SignalDomainColumns',\n x00289099: 'LargestMonochromePixelValue',\n x00289108: 'DataRepresentation',\n x00289110: 'PixelMeasuresSequence',\n x00289132: 'FrameVOILUTSequence',\n x00289145: 'PixelValueTransformationSequence',\n x00289235: 'SignalDomainRows',\n x00289411: 'DisplayFilterPercentage',\n x00289415: 'FramePixelShiftSequence',\n x00289416: 'SubtractionItemID',\n x00289422: 'PixelIntensityRelationshipLUTSeq',\n x00289443: 'FramePixelDataPropertiesSequence',\n x00289444: 'GeometricalProperties',\n x00289445: 'GeometricMaximumDistortion',\n x00289446: 'ImageProcessingApplied',\n x00289454: 'MaskSelectionMode',\n x00289474: 'LUTFunction',\n x00289478: 'MaskVisibilityPercentage',\n x00289501: 'PixelShiftSequence',\n x00289502: 'RegionPixelShiftSequence',\n x00289503: 'VerticesOfTheRegion',\n x00289506: 'PixelShiftFrameRange',\n x00289507: 'LUTFrameRange',\n x00289520: 'ImageToEquipmentMappingMatrix',\n x00289537: 'EquipmentCoordinateSystemID',\n // x00291004: 'LowerRangeOfPixels1a',\n // x00291005: 'LowerRangeOfPixels1b',\n // x00291006: 'LowerRangeOfPixels1c',\n // x00291007: 'LowerRangeOfPixels1d',\n // x00291008: 'LowerRangeOfPixels1e',\n // x00291009: 'LowerRangeOfPixels1f',\n // x0029100a: 'LowerRangeOfPixels1g',\n // x00291015: 'LowerRangeOfPixels1h',\n // x00291016: 'LowerRangeOfPixels1i',\n // x00291017: 'LowerRangeOfPixels2',\n // x00291018: 'UpperRangeOfPixels2',\n // x0029101a: 'LenOfTotHdrInBytes',\n // x00291026: 'VersionOfTheHdrStruct',\n // x00291034: 'AdvantageCompOverflow',\n // x00291035: 'AdvantageCompUnderflow',\n x00320000: 'StudyGroupLength',\n x0032000a: 'StudyStatusID',\n x0032000c: 'StudyPriorityID',\n x00320012: 'StudyIDIssuer',\n x00320032: 'StudyVerifiedDate',\n x00320033: 'StudyVerifiedTime',\n x00320034: 'StudyReadDate',\n x00320035: 'StudyReadTime',\n x00321000: 'ScheduledStudyStartDate',\n x00321001: 'ScheduledStudyStartTime',\n x00321010: 'ScheduledStudyStopDate',\n x00321011: 'ScheduledStudyStopTime',\n x00321020: 'ScheduledStudyLocation',\n x00321021: 'ScheduledStudyLocationAETitle',\n x00321030: 'ReasonForStudy',\n x00321031: 'RequestingPhysicianIDSequence',\n x00321032: 'RequestingPhysician',\n x00321033: 'RequestingService',\n x00321040: 'StudyArrivalDate',\n x00321041: 'StudyArrivalTime',\n x00321050: 'StudyCompletionDate',\n x00321051: 'StudyCompletionTime',\n x00321055: 'StudyComponentStatusID',\n x00321060: 'RequestedProcedureDescription',\n x00321064: 'RequestedProcedureCodeSequence',\n x00321070: 'RequestedContrastAgent',\n x00324000: 'StudyComments',\n x00380004: 'ReferencedPatientAliasSequence',\n x00380008: 'VisitStatusID',\n x00380010: 'AdmissionID',\n x00380011: 'IssuerOfAdmissionID',\n x00380016: 'RouteOfAdmissions',\n x0038001a: 'ScheduledAdmissionDate',\n x0038001b: 'ScheduledAdmissionTime',\n x0038001c: 'ScheduledDischargeDate',\n x0038001d: 'ScheduledDischargeTime',\n x0038001e: 'ScheduledPatientInstitResidence',\n x00380020: 'AdmittingDate',\n x00380021: 'AdmittingTime',\n x00380030: 'DischargeDate',\n x00380032: 'DischargeTime',\n x00380040: 'DischargeDiagnosisDescription',\n x00380044: 'DischargeDiagnosisCodeSequence',\n x00380050: 'SpecialNeeds',\n x00380060: 'ServiceEpisodeID',\n x00380061: 'IssuerOfServiceEpisodeID',\n x00380062: 'ServiceEpisodeDescription',\n x00380100: 'PertinentDocumentsSequence',\n x00380300: 'CurrentPatientLocation',\n x00380400: 'PatientInstitutionResidence',\n x00380500: 'PatientState',\n x00380502: 'PatientClinicalTrialParticipSeq',\n x00384000: 'VisitComments',\n x003a0004: 'WaveformOriginality',\n x003a0005: 'NumberOfWaveformChannels',\n x003a0010: 'NumberOfWaveformSamples',\n x003a001a: 'SamplingFrequency',\n x003a0020: 'MultiplexGroupLabel',\n x003a0200: 'ChannelDefinitionSequence',\n x003a0202: 'WaveformChannelNumber',\n x003a0203: 'ChannelLabel',\n x003a0205: 'ChannelStatus',\n x003a0208: 'ChannelSourceSequence',\n x003a0209: 'ChannelSourceModifiersSequence',\n x003a020a: 'SourceWaveformSequence',\n x003a020c: 'ChannelDerivationDescription',\n x003a0210: 'ChannelSensitivity',\n x003a0211: 'ChannelSensitivityUnitsSequence',\n x003a0212: 'ChannelSensitivityCorrectionFactor',\n x003a0213: 'ChannelBaseline',\n x003a0214: 'ChannelTimeSkew',\n x003a0215: 'ChannelSampleSkew',\n x003a0218: 'ChannelOffset',\n x003a021a: 'WaveformBitsStored',\n x003a0220: 'FilterLowFrequency',\n x003a0221: 'FilterHighFrequency',\n x003a0222: 'NotchFilterFrequency',\n x003a0223: 'NotchFilterBandwidth',\n x003a0230: 'WaveformDataDisplayScale',\n x003a0231: 'WaveformDisplayBkgCIELabValue',\n x003a0240: 'WaveformPresentationGroupSequence',\n x003a0241: 'PresentationGroupNumber',\n x003a0242: 'ChannelDisplaySequence',\n x003a0244: 'ChannelRecommendDisplayCIELabValue',\n x003a0245: 'ChannelPosition',\n x003a0246: 'DisplayShadingFlag',\n x003a0247: 'FractionalChannelDisplayScale',\n x003a0248: 'AbsoluteChannelDisplayScale',\n x003a0300: 'MultiplexAudioChannelsDescrCodeSeq',\n x003a0301: 'ChannelIdentificationCode',\n x003a0302: 'ChannelMode',\n x00400001: 'ScheduledStationAETitle',\n x00400002: 'ScheduledProcedureStepStartDate',\n x00400003: 'ScheduledProcedureStepStartTime',\n x00400004: 'ScheduledProcedureStepEndDate',\n x00400005: 'ScheduledProcedureStepEndTime',\n x00400006: 'ScheduledPerformingPhysiciansName',\n x00400007: 'ScheduledProcedureStepDescription',\n x00400008: 'ScheduledProtocolCodeSequence',\n x00400009: 'ScheduledProcedureStepID',\n x0040000a: 'StageCodeSequence',\n x0040000b: 'ScheduledPerformingPhysicianIDSeq',\n x00400010: 'ScheduledStationName',\n x00400011: 'ScheduledProcedureStepLocation',\n x00400012: 'PreMedication',\n x00400020: 'ScheduledProcedureStepStatus',\n x00400031: 'LocalNamespaceEntityID',\n x00400032: 'UniversalEntityID',\n x00400033: 'UniversalEntityIDType',\n x00400035: 'IdentifierTypeCode',\n x00400036: 'AssigningFacilitySequence',\n x00400100: 'ScheduledProcedureStepSequence',\n x00400220: 'ReferencedNonImageCompositeSOPSeq',\n x00400241: 'PerformedStationAETitle',\n x00400242: 'PerformedStationName',\n x00400243: 'PerformedLocation',\n x00400244: 'PerformedProcedureStepStartDate',\n x00400245: 'PerformedProcedureStepStartTime',\n x00400250: 'PerformedProcedureStepEndDate',\n x00400251: 'PerformedProcedureStepEndTime',\n x00400252: 'PerformedProcedureStepStatus',\n x00400253: 'PerformedProcedureStepID',\n x00400254: 'PerformedProcedureStepDescription',\n x00400255: 'PerformedProcedureTypeDescription',\n x00400260: 'PerformedProtocolCodeSequence',\n x00400261: 'PerformedProtocolType',\n x00400270: 'ScheduledStepAttributesSequence',\n x00400275: 'RequestAttributesSequence',\n x00400280: 'CommentsOnPerformedProcedureStep',\n x00400281: 'ProcStepDiscontinueReasonCodeSeq',\n x00400293: 'QuantitySequence',\n x00400294: 'Quantity',\n x00400295: 'MeasuringUnitsSequence',\n x00400296: 'BillingItemSequence',\n x00400300: 'TotalTimeOfFluoroscopy',\n x00400301: 'TotalNumberOfExposures',\n x00400302: 'EntranceDose',\n x00400303: 'ExposedArea',\n x00400306: 'DistanceSourceToEntrance',\n x00400307: 'DistanceSourceToSupport',\n x0040030e: 'ExposureDoseSequence',\n x00400310: 'CommentsOnRadiationDose',\n x00400312: 'XRayOutput',\n x00400314: 'HalfValueLayer',\n x00400316: 'OrganDose',\n x00400318: 'OrganExposed',\n x00400320: 'BillingProcedureStepSequence',\n x00400321: 'FilmConsumptionSequence',\n x00400324: 'BillingSuppliesAndDevicesSequence',\n x00400330: 'ReferencedProcedureStepSequence',\n x00400340: 'PerformedSeriesSequence',\n x00400400: 'CommentsOnScheduledProcedureStep',\n x00400440: 'ProtocolContextSequence',\n x00400441: 'ContentItemModifierSequence',\n x0040050a: 'SpecimenAccessionNumber',\n x00400512: 'ContainerIdentifier',\n x0040051a: 'ContainerDescription',\n x00400550: 'SpecimenSequence',\n x00400551: 'SpecimenIdentifier',\n x00400552: 'SpecimenDescriptionSequenceTrial',\n x00400553: 'SpecimenDescriptionTrial',\n x00400554: 'SpecimenUID',\n x00400555: 'AcquisitionContextSequence',\n x00400556: 'AcquisitionContextDescription',\n x0040059a: 'SpecimenTypeCodeSequence',\n x00400600: 'SpecimenShortDescription',\n x004006fa: 'SlideIdentifier',\n x0040071a: 'ImageCenterPointCoordinatesSeq',\n x0040072a: 'XOffsetInSlideCoordinateSystem',\n x0040073a: 'YOffsetInSlideCoordinateSystem',\n x0040074a: 'ZOffsetInSlideCoordinateSystem',\n x004008d8: 'PixelSpacingSequence',\n x004008da: 'CoordinateSystemAxisCodeSequence',\n x004008ea: 'MeasurementUnitsCodeSequence',\n x004009f8: 'VitalStainCodeSequenceTrial',\n x00401001: 'RequestedProcedureID',\n x00401002: 'ReasonForRequestedProcedure',\n x00401003: 'RequestedProcedurePriority',\n x00401004: 'PatientTransportArrangements',\n x00401005: 'RequestedProcedureLocation',\n x00401006: 'PlacerOrderNumber-Procedure',\n x00401007: 'FillerOrderNumber-Procedure',\n x00401008: 'ConfidentialityCode',\n x00401009: 'ReportingPriority',\n x0040100a: 'ReasonForRequestedProcedureCodeSeq',\n x00401010: 'NamesOfIntendedRecipientsOfResults',\n x00401011: 'IntendedRecipientsOfResultsIDSeq',\n x00401101: 'PersonIdentificationCodeSequence',\n x00401102: 'PersonAddress',\n x00401103: 'PersonTelephoneNumbers',\n x00401400: 'RequestedProcedureComments',\n x00402001: 'ReasonForImagingServiceRequest',\n x00402004: 'IssueDateOfImagingServiceRequest',\n x00402005: 'IssueTimeOfImagingServiceRequest',\n x00402006: 'PlacerOrderNumberImagingServiceRequestRetired',\n x00402007: 'FillerOrderNumberImagingServiceRequestRetired',\n x00402008: 'OrderEnteredBy',\n x00402009: 'OrderEntererLocation',\n x00402010: 'OrderCallbackPhoneNumber',\n x00402016: 'PlacerOrderNum-ImagingServiceReq',\n x00402017: 'FillerOrderNum-ImagingServiceReq',\n x00402400: 'ImagingServiceRequestComments',\n x00403001: 'ConfidentialityOnPatientDataDescr',\n x00404001: 'GenPurposeScheduledProcStepStatus',\n x00404002: 'GenPurposePerformedProcStepStatus',\n x00404003: 'GenPurposeSchedProcStepPriority',\n x00404004: 'SchedProcessingApplicationsCodeSeq',\n x00404005: 'SchedProcedureStepStartDateAndTime',\n x00404006: 'MultipleCopiesFlag',\n x00404007: 'PerformedProcessingAppsCodeSeq',\n x00404009: 'HumanPerformerCodeSequence',\n x00404010: 'SchedProcStepModificationDateTime',\n x00404011: 'ExpectedCompletionDateAndTime',\n x00404015: 'ResultingGenPurposePerfProcStepSeq',\n x00404016: 'RefGenPurposeSchedProcStepSeq',\n x00404018: 'ScheduledWorkitemCodeSequence',\n x00404019: 'PerformedWorkitemCodeSequence',\n x00404020: 'InputAvailabilityFlag',\n x00404021: 'InputInformationSequence',\n x00404022: 'RelevantInformationSequence',\n x00404023: 'RefGenPurSchedProcStepTransUID',\n x00404025: 'ScheduledStationNameCodeSequence',\n x00404026: 'ScheduledStationClassCodeSequence',\n x00404027: 'SchedStationGeographicLocCodeSeq',\n x00404028: 'PerformedStationNameCodeSequence',\n x00404029: 'PerformedStationClassCodeSequence',\n x00404030: 'PerformedStationGeogLocCodeSeq',\n x00404031: 'RequestedSubsequentWorkItemCodeSeq',\n x00404032: 'NonDICOMOutputCodeSequence',\n x00404033: 'OutputInformationSequence',\n x00404034: 'ScheduledHumanPerformersSequence',\n x00404035: 'ActualHumanPerformersSequence',\n x00404036: 'HumanPerformersOrganization',\n x00404037: 'HumanPerformerName',\n x00404040: 'RawDataHandling',\n x00408302: 'EntranceDoseInMilliGy',\n x00409094: 'RefImageRealWorldValueMappingSeq',\n x00409096: 'RealWorldValueMappingSequence',\n x00409098: 'PixelValueMappingCodeSequence',\n x00409210: 'LUTLabel',\n x00409211: 'RealWorldValueLastValueMapped',\n x00409212: 'RealWorldValueLUTData',\n x00409216: 'RealWorldValueFirstValueMapped',\n x00409224: 'RealWorldValueIntercept',\n x00409225: 'RealWorldValueSlope',\n x0040a010: 'RelationshipType',\n x0040a027: 'VerifyingOrganization',\n x0040a030: 'VerificationDateTime',\n x0040a032: 'ObservationDateTime',\n x0040a040: 'ValueType',\n x0040a043: 'ConceptNameCodeSequence',\n x0040a050: 'ContinuityOfContent',\n x0040a073: 'VerifyingObserverSequence',\n x0040a075: 'VerifyingObserverName',\n x0040a078: 'AuthorObserverSequence',\n x0040a07a: 'ParticipantSequence',\n x0040a07c: 'CustodialOrganizationSequence',\n x0040a080: 'ParticipationType',\n x0040a082: 'ParticipationDateTime',\n x0040a084: 'ObserverType',\n x0040a088: 'VerifyingObserverIdentCodeSequence',\n x0040a090: 'EquivalentCDADocumentSequence',\n x0040a0b0: 'ReferencedWaveformChannels',\n x0040a120: 'DateTime',\n x0040a121: 'Date',\n x0040a122: 'Time',\n x0040a123: 'PersonName',\n x0040a124: 'UID',\n x0040a130: 'TemporalRangeType',\n x0040a132: 'ReferencedSamplePositions',\n x0040a136: 'ReferencedFrameNumbers',\n x0040a138: 'ReferencedTimeOffsets',\n x0040a13a: 'ReferencedDateTime',\n x0040a160: 'TextValue',\n x0040a168: 'ConceptCodeSequence',\n x0040a170: 'PurposeOfReferenceCodeSequence',\n x0040a180: 'AnnotationGroupNumber',\n x0040a195: 'ModifierCodeSequence',\n x0040a300: 'MeasuredValueSequence',\n x0040a301: 'NumericValueQualifierCodeSequence',\n x0040a30a: 'NumericValue',\n x0040a353: 'AddressTrial',\n x0040a354: 'TelephoneNumberTrial',\n x0040a360: 'PredecessorDocumentsSequence',\n x0040a370: 'ReferencedRequestSequence',\n x0040a372: 'PerformedProcedureCodeSequence',\n x0040a375: 'CurrentRequestedProcEvidenceSeq',\n x0040a385: 'PertinentOtherEvidenceSequence',\n x0040a390: 'HL7StructuredDocumentRefSeq',\n x0040a491: 'CompletionFlag',\n x0040a492: 'CompletionFlagDescription',\n x0040a493: 'VerificationFlag',\n x0040a494: 'ArchiveRequested',\n x0040a496: 'PreliminaryFlag',\n x0040a504: 'ContentTemplateSequence',\n x0040a525: 'IdenticalDocumentsSequence',\n x0040a730: 'ContentSequence',\n x0040b020: 'AnnotationSequence',\n x0040db00: 'TemplateIdentifier',\n x0040db06: 'TemplateVersion',\n x0040db07: 'TemplateLocalVersion',\n x0040db0b: 'TemplateExtensionFlag',\n x0040db0c: 'TemplateExtensionOrganizationUID',\n x0040db0d: 'TemplateExtensionCreatorUID',\n x0040db73: 'ReferencedContentItemIdentifier',\n x0040e001: 'HL7InstanceIdentifier',\n x0040e004: 'HL7DocumentEffectiveTime',\n x0040e006: 'HL7DocumentTypeCodeSequence',\n x0040e010: 'RetrieveURI',\n x0040e011: 'RetrieveLocationUID',\n x00420010: 'DocumentTitle',\n x00420011: 'EncapsulatedDocument',\n x00420012: 'MIMETypeOfEncapsulatedDocument',\n x00420013: 'SourceInstanceSequence',\n x00420014: 'ListOfMIMETypes',\n // x00431001: 'BitmapOfPrescanOptions',\n // x00431002: 'GradientOffsetInX',\n // x00431003: 'GradientOffsetInY',\n // x00431004: 'GradientOffsetInZ',\n // x00431005: 'ImgIsOriginalOrUnoriginal',\n // x00431006: 'NumberOfEPIShots',\n // x00431007: 'ViewsPerSegment',\n // x00431008: 'RespiratoryRateBpm',\n // x00431009: 'RespiratoryTriggerPoint',\n // x0043100a: 'TypeOfReceiverUsed',\n // x0043100b: 'PeakRateOfChangeOfGradientField',\n // x0043100c: 'LimitsInUnitsOfPercent',\n // x0043100d: 'PSDEstimatedLimit',\n // x0043100e: 'PSDEstimatedLimitInTeslaPerSecond',\n // x0043100f: 'Saravghead',\n // x00431010: 'WindowValue',\n // x00431011: 'TotalInputViews',\n // x00431012: 'X-RayChain',\n // x00431013: 'DeconKernelParameters',\n // x00431014: 'CalibrationParameters',\n // x00431015: 'TotalOutputViews',\n // x00431016: 'NumberOfOverranges',\n // x00431017: 'IBHImageScaleFactors',\n // x00431018: 'BBHCoefficients',\n // x00431019: 'NumberOfBBHChainsToBlend',\n // x0043101a: 'StartingChannelNumber',\n // x0043101b: 'PpscanParameters',\n // x0043101c: 'GEImageIntegrity',\n // x0043101d: 'LevelValue',\n // x0043101e: 'DeltaStartTime',\n // x0043101f: 'MaxOverrangesInAView',\n // x00431020: 'AvgOverrangesAllViews',\n // x00431021: 'CorrectedAfterGlowTerms',\n // x00431025: 'ReferenceChannels',\n // x00431026: 'NoViewsRefChansBlocked',\n // x00431027: 'ScanPitchRatio',\n // x00431028: 'UniqueImageIden',\n // x00431029: 'HistogramTables',\n // x0043102a: 'UserDefinedData',\n // x0043102b: 'PrivateScanOptions',\n // x0043102c: 'EffectiveEchoSpacing',\n // x0043102d: 'StringSlopField1',\n // x0043102e: 'StringSlopField2',\n // x0043102f: 'RawDataType',\n // x00431030: 'RawDataType',\n // x00431031: 'RACordOfTargetReconCenter',\n // x00431032: 'RawDataType',\n // x00431033: 'NegScanspacing',\n // x00431034: 'OffsetFrequency',\n // x00431035: 'UserUsageTag',\n // x00431036: 'UserFillMapMSW',\n // x00431037: 'UserFillMapLSW',\n // x00431038: 'User25-48',\n // x00431039: 'SlopInt6-9',\n // x00431040: 'TriggerOnPosition',\n // x00431041: 'DegreeOfRotation',\n // x00431042: 'DASTriggerSource',\n // x00431043: 'DASFpaGain',\n // x00431044: 'DASOutputSource',\n // x00431045: 'DASAdInput',\n // x00431046: 'DASCalMode',\n // x00431047: 'DASCalFrequency',\n // x00431048: 'DASRegXm',\n // x00431049: 'DASAutoZero',\n // x0043104a: 'StartingChannelOfView',\n // x0043104b: 'DASXmPattern',\n // x0043104c: 'TGGCTriggerMode',\n // x0043104d: 'StartScanToXrayOnDelay',\n // x0043104e: 'DurationOfXrayOn',\n // x00431060: 'SlopInt10-17',\n // x00431061: 'ScannerStudyEntityUID',\n // x00431062: 'ScannerStudyID',\n // x0043106f: 'ScannerTableEntry',\n x00440001: 'ProductPackageIdentifier',\n x00440002: 'SubstanceAdministrationApproval',\n x00440003: 'ApprovalStatusFurtherDescription',\n x00440004: 'ApprovalStatusDateTime',\n x00440007: 'ProductTypeCodeSequence',\n x00440008: 'ProductName',\n x00440009: 'ProductDescription',\n x0044000a: 'ProductLotIdentifier',\n x0044000b: 'ProductExpirationDateTime',\n x00440010: 'SubstanceAdministrationDateTime',\n x00440011: 'SubstanceAdministrationNotes',\n x00440012: 'SubstanceAdministrationDeviceID',\n x00440013: 'ProductParameterSequence',\n x00440019: 'SubstanceAdminParameterSeq',\n // x00451001: 'NumberOfMacroRowsInDetector',\n // x00451002: 'MacroWidthAtISOCenter',\n // x00451003: 'DASType',\n // x00451004: 'DASGain',\n // x00451005: 'DASTemperature',\n // x00451006: 'TableDirectionInOrOut',\n // x00451007: 'ZSmoothingFactor',\n // x00451008: 'ViewWeightingMode',\n // x00451009: 'SigmaRowNumberWhichRowsWereUsed',\n // x0045100a: 'MinimumDasValueFoundInTheScanData',\n // x0045100b: 'MaximumOffsetShiftValueUsed',\n // x0045100c: 'NumberOfViewsShifted',\n // x0045100d: 'ZTrackingFlag',\n // x0045100e: 'MeanZError',\n // x0045100f: 'ZTrackingMaximumError',\n // x00451010: 'StartingViewForRow2a',\n // x00451011: 'NumberOfViewsInRow2a',\n // x00451012: 'StartingViewForRow1a',\n // x00451013: 'SigmaMode',\n // x00451014: 'NumberOfViewsInRow1a',\n // x00451015: 'StartingViewForRow2b',\n // x00451016: 'NumberOfViewsInRow2b',\n // x00451017: 'StartingViewForRow1b',\n // x00451018: 'NumberOfViewsInRow1b',\n // x00451019: 'AirFilterCalibrationDate',\n // x0045101a: 'AirFilterCalibrationTime',\n // x0045101b: 'PhantomCalibrationDate',\n // x0045101c: 'PhantomCalibrationTime',\n // x0045101d: 'ZSlopeCalibrationDate',\n // x0045101e: 'ZSlopeCalibrationTime',\n // x0045101f: 'CrosstalkCalibrationDate',\n // x00451020: 'CrosstalkCalibrationTime',\n // x00451021: 'IterboneOptionFlag',\n // x00451022: 'PeristalticFlagOption',\n x00460012: 'LensDescription',\n x00460014: 'RightLensSequence',\n x00460015: 'LeftLensSequence',\n x00460018: 'CylinderSequence',\n x00460028: 'PrismSequence',\n x00460030: 'HorizontalPrismPower',\n x00460032: 'HorizontalPrismBase',\n x00460034: 'VerticalPrismPower',\n x00460036: 'VerticalPrismBase',\n x00460038: 'LensSegmentType',\n x00460040: 'OpticalTransmittance',\n x00460042: 'ChannelWidth',\n x00460044: 'PupilSize',\n x00460046: 'CornealSize',\n x00460060: 'DistancePupillaryDistance',\n x00460062: 'NearPupillaryDistance',\n x00460064: 'OtherPupillaryDistance',\n x00460075: 'RadiusOfCurvature',\n x00460076: 'KeratometricPower',\n x00460077: 'KeratometricAxis',\n x00460092: 'BackgroundColor',\n x00460094: 'Optotype',\n x00460095: 'OptotypePresentation',\n x00460100: 'AddNearSequence',\n x00460101: 'AddIntermediateSequence',\n x00460102: 'AddOtherSequence',\n x00460104: 'AddPower',\n x00460106: 'ViewingDistance',\n x00460125: 'ViewingDistanceType',\n x00460135: 'VisualAcuityModifiers',\n x00460137: 'DecimalVisualAcuity',\n x00460139: 'OptotypeDetailedDefinition',\n x00460146: 'SpherePower',\n x00460147: 'CylinderPower',\n x00500004: 'CalibrationImage',\n x00500010: 'DeviceSequence',\n x00500014: 'DeviceLength',\n x00500015: 'ContainerComponentWidth',\n x00500016: 'DeviceDiameter',\n x00500017: 'DeviceDiameterUnits',\n x00500018: 'DeviceVolume',\n x00500019: 'InterMarkerDistance',\n x0050001b: 'ContainerComponentID',\n x00500020: 'DeviceDescription',\n x00540010: 'EnergyWindowVector',\n x00540011: 'NumberOfEnergyWindows',\n x00540012: 'EnergyWindowInformationSequence',\n x00540013: 'EnergyWindowRangeSequence',\n x00540014: 'EnergyWindowLowerLimit',\n x00540015: 'EnergyWindowUpperLimit',\n x00540016: 'RadiopharmaceuticalInformationSeq',\n x00540017: 'ResidualSyringeCounts',\n x00540018: 'EnergyWindowName',\n x00540020: 'DetectorVector',\n x00540021: 'NumberOfDetectors',\n x00540022: 'DetectorInformationSequence',\n x00540030: 'PhaseVector',\n x00540031: 'NumberOfPhases',\n x00540032: 'PhaseInformationSequence',\n x00540033: 'NumberOfFramesInPhase',\n x00540036: 'PhaseDelay',\n x00540038: 'PauseBetweenFrames',\n x00540039: 'PhaseDescription',\n x00540050: 'RotationVector',\n x00540051: 'NumberOfRotations',\n x00540052: 'RotationInformationSequence',\n x00540053: 'NumberOfFramesInRotation',\n x00540060: 'RRIntervalVector',\n x00540061: 'NumberOfRRIntervals',\n x00540062: 'GatedInformationSequence',\n x00540063: 'DataInformationSequence',\n x00540070: 'TimeSlotVector',\n x00540071: 'NumberOfTimeSlots',\n x00540072: 'TimeSlotInformationSequence',\n x00540073: 'TimeSlotTime',\n x00540080: 'SliceVector',\n x00540081: 'NumberOfSlices',\n x00540090: 'AngularViewVector',\n x00540100: 'TimeSliceVector',\n x00540101: 'NumberOfTimeSlices',\n x00540200: 'StartAngle',\n x00540202: 'TypeOfDetectorMotion',\n x00540210: 'TriggerVector',\n x00540211: 'NumberOfTriggersInPhase',\n x00540220: 'ViewCodeSequence',\n x00540222: 'ViewModifierCodeSequence',\n x00540300: 'RadionuclideCodeSequence',\n x00540302: 'AdministrationRouteCodeSequence',\n x00540304: 'RadiopharmaceuticalCodeSequence',\n x00540306: 'CalibrationDataSequence',\n x00540308: 'EnergyWindowNumber',\n x00540400: 'ImageID',\n x00540410: 'PatientOrientationCodeSequence',\n x00540412: 'PatientOrientationModifierCodeSeq',\n x00540414: 'PatientGantryRelationshipCodeSeq',\n x00540500: 'SliceProgressionDirection',\n x00541000: 'SeriesType',\n x00541001: 'Units',\n x00541002: 'CountsSource',\n x00541004: 'ReprojectionMethod',\n x00541100: 'RandomsCorrectionMethod',\n x00541101: 'AttenuationCorrectionMethod',\n x00541102: 'DecayCorrection',\n x00541103: 'ReconstructionMethod',\n x00541104: 'DetectorLinesOfResponseUsed',\n x00541105: 'ScatterCorrectionMethod',\n x00541200: 'AxialAcceptance',\n x00541201: 'AxialMash',\n x00541202: 'TransverseMash',\n x00541203: 'DetectorElementSize',\n x00541210: 'CoincidenceWindowWidth',\n x00541220: 'SecondaryCountsType',\n x00541300: 'FrameReferenceTime',\n x00541310: 'PrimaryCountsAccumulated',\n x00541311: 'SecondaryCountsAccumulated',\n x00541320: 'SliceSensitivityFactor',\n x00541321: 'DecayFactor',\n x00541322: 'DoseCalibrationFactor',\n x00541323: 'ScatterFractionFactor',\n x00541324: 'DeadTimeFactor',\n x00541330: 'ImageIndex',\n x00541400: 'CountsIncluded',\n x00541401: 'DeadTimeCorrectionFlag',\n x00603000: 'HistogramSequence',\n x00603002: 'HistogramNumberOfBins',\n x00603004: 'HistogramFirstBinValue',\n x00603006: 'HistogramLastBinValue',\n x00603008: 'HistogramBinWidth',\n x00603010: 'HistogramExplanation',\n x00603020: 'HistogramData',\n x00620001: 'SegmentationType',\n x00620002: 'SegmentSequence',\n x00620003: 'SegmentedPropertyCategoryCodeSeq',\n x00620004: 'SegmentNumber',\n x00620005: 'SegmentLabel',\n x00620006: 'SegmentDescription',\n x00620008: 'SegmentAlgorithmType',\n x00620009: 'SegmentAlgorithmName',\n x0062000a: 'SegmentIdentificationSequence',\n x0062000b: 'ReferencedSegmentNumber',\n x0062000c: 'RecommendedDisplayGrayscaleValue',\n x0062000d: 'RecommendedDisplayCIELabValue',\n x0062000e: 'MaximumFractionalValue',\n x0062000f: 'SegmentedPropertyTypeCodeSequence',\n x00620010: 'SegmentationFractionalType',\n x00640002: 'DeformableRegistrationSequence',\n x00640003: 'SourceFrameOfReferenceUID',\n x00640005: 'DeformableRegistrationGridSequence',\n x00640007: 'GridDimensions',\n x00640008: 'GridResolution',\n x00640009: 'VectorGridData',\n x0064000f: 'PreDeformationMatrixRegistSeq',\n x00640010: 'PostDeformationMatrixRegistSeq',\n x00660001: 'NumberOfSurfaces',\n x00660002: 'SurfaceSequence',\n x00660003: 'SurfaceNumber',\n x00660004: 'SurfaceComments',\n x00660009: 'SurfaceProcessing',\n x0066000a: 'SurfaceProcessingRatio',\n x0066000e: 'FiniteVolume',\n x00660010: 'Manifold',\n x00660011: 'SurfacePointsSequence',\n x00660015: 'NumberOfSurfacePoints',\n x00660016: 'PointCoordinatesData',\n x00660017: 'PointPositionAccuracy',\n x00660018: 'MeanPointDistance',\n x00660019: 'MaximumPointDistance',\n x0066001b: 'AxisOfRotation',\n x0066001c: 'CenterOfRotation',\n x0066001e: 'NumberOfVectors',\n x0066001f: 'VectorDimensionality',\n x00660020: 'VectorAccuracy',\n x00660021: 'VectorCoordinateData',\n x00660023: 'TrianglePointIndexList',\n x00660024: 'EdgePointIndexList',\n x00660025: 'VertexPointIndexList',\n x00660026: 'TriangleStripSequence',\n x00660027: 'TriangleFanSequence',\n x00660028: 'LineSequence',\n x00660029: 'PrimitivePointIndexList',\n x0066002a: 'SurfaceCount',\n x0066002f: 'AlgorithmFamilyCodeSequ',\n x00660031: 'AlgorithmVersion',\n x00660032: 'AlgorithmParameters',\n x00660034: 'FacetSequence',\n x00660036: 'AlgorithmName',\n x00700001: 'GraphicAnnotationSequence',\n x00700002: 'GraphicLayer',\n x00700003: 'BoundingBoxAnnotationUnits',\n x00700004: 'AnchorPointAnnotationUnits',\n x00700005: 'GraphicAnnotationUnits',\n x00700006: 'UnformattedTextValue',\n x00700008: 'TextObjectSequence',\n x00700009: 'GraphicObjectSequence',\n x00700010: 'BoundingBoxTopLeftHandCorner',\n x00700011: 'BoundingBoxBottomRightHandCorner',\n x00700012: 'BoundingBoxTextHorizJustification',\n x00700014: 'AnchorPoint',\n x00700015: 'AnchorPointVisibility',\n x00700020: 'GraphicDimensions',\n x00700021: 'NumberOfGraphicPoints',\n x00700022: 'GraphicData',\n x00700023: 'GraphicType',\n x00700024: 'GraphicFilled',\n x00700040: 'ImageRotationRetired',\n x00700041: 'ImageHorizontalFlip',\n x00700042: 'ImageRotation',\n x00700050: 'DisplayedAreaTopLeftTrial',\n x00700051: 'DisplayedAreaBottomRightTrial',\n x00700052: 'DisplayedAreaTopLeft',\n x00700053: 'DisplayedAreaBottomRight',\n x0070005a: 'DisplayedAreaSelectionSequence',\n x00700060: 'GraphicLayerSequence',\n x00700062: 'GraphicLayerOrder',\n x00700066: 'GraphicLayerRecDisplayGraysclValue',\n x00700067: 'GraphicLayerRecDisplayRGBValue',\n x00700068: 'GraphicLayerDescription',\n x00700080: 'ContentLabel',\n x00700081: 'ContentDescription',\n x00700082: 'PresentationCreationDate',\n x00700083: 'PresentationCreationTime',\n x00700084: 'ContentCreatorName',\n x00700086: 'ContentCreatorIDCodeSequence',\n x00700100: 'PresentationSizeMode',\n x00700101: 'PresentationPixelSpacing',\n x00700102: 'PresentationPixelAspectRatio',\n x00700103: 'PresentationPixelMagRatio',\n x00700306: 'ShapeType',\n x00700308: 'RegistrationSequence',\n x00700309: 'MatrixRegistrationSequence',\n x0070030a: 'MatrixSequence',\n x0070030c: 'FrameOfRefTransformationMatrixType',\n x0070030d: 'RegistrationTypeCodeSequence',\n x0070030f: 'FiducialDescription',\n x00700310: 'FiducialIdentifier',\n x00700311: 'FiducialIdentifierCodeSequence',\n x00700312: 'ContourUncertaintyRadius',\n x00700314: 'UsedFiducialsSequence',\n x00700318: 'GraphicCoordinatesDataSequence',\n x0070031a: 'FiducialUID',\n x0070031c: 'FiducialSetSequence',\n x0070031e: 'FiducialSequence',\n x00700401: 'GraphicLayerRecomDisplayCIELabVal',\n x00700402: 'BlendingSequence',\n x00700403: 'RelativeOpacity',\n x00700404: 'ReferencedSpatialRegistrationSeq',\n x00700405: 'BlendingPosition',\n x00720002: 'HangingProtocolName',\n x00720004: 'HangingProtocolDescription',\n x00720006: 'HangingProtocolLevel',\n x00720008: 'HangingProtocolCreator',\n x0072000a: 'HangingProtocolCreationDateTime',\n x0072000c: 'HangingProtocolDefinitionSequence',\n x0072000e: 'HangingProtocolUserIDCodeSequence',\n x00720010: 'HangingProtocolUserGroupName',\n x00720012: 'SourceHangingProtocolSequence',\n x00720014: 'NumberOfPriorsReferenced',\n x00720020: 'ImageSetsSequence',\n x00720022: 'ImageSetSelectorSequence',\n x00720024: 'ImageSetSelectorUsageFlag',\n x00720026: 'SelectorAttribute',\n x00720028: 'SelectorValueNumber',\n x00720030: 'TimeBasedImageSetsSequence',\n x00720032: 'ImageSetNumber',\n x00720034: 'ImageSetSelectorCategory',\n x00720038: 'RelativeTime',\n x0072003a: 'RelativeTimeUnits',\n x0072003c: 'AbstractPriorValue',\n x0072003e: 'AbstractPriorCodeSequence',\n x00720040: 'ImageSetLabel',\n x00720050: 'SelectorAttributeVR',\n x00720052: 'SelectorSequencePointer',\n x00720054: 'SelectorSeqPointerPrivateCreator',\n x00720056: 'SelectorAttributePrivateCreator',\n x00720060: 'SelectorATValue',\n x00720062: 'SelectorCSValue',\n x00720064: 'SelectorISValue',\n x00720066: 'SelectorLOValue',\n x00720068: 'SelectorLTValue',\n x0072006a: 'SelectorPNValue',\n x0072006c: 'SelectorSHValue',\n x0072006e: 'SelectorSTValue',\n x00720070: 'SelectorUTValue',\n x00720072: 'SelectorDSValue',\n x00720074: 'SelectorFDValue',\n x00720076: 'SelectorFLValue',\n x00720078: 'SelectorULValue',\n x0072007a: 'SelectorUSValue',\n x0072007c: 'SelectorSLValue',\n x0072007e: 'SelectorSSValue',\n x00720080: 'SelectorCodeSequenceValue',\n x00720100: 'NumberOfScreens',\n x00720102: 'NominalScreenDefinitionSequence',\n x00720104: 'NumberOfVerticalPixels',\n x00720106: 'NumberOfHorizontalPixels',\n x00720108: 'DisplayEnvironmentSpatialPosition',\n x0072010a: 'ScreenMinimumGrayscaleBitDepth',\n x0072010c: 'ScreenMinimumColorBitDepth',\n x0072010e: 'ApplicationMaximumRepaintTime',\n x00720200: 'DisplaySetsSequence',\n x00720202: 'DisplaySetNumber',\n x00720203: 'DisplaySetLabel',\n x00720204: 'DisplaySetPresentationGroup',\n x00720206: 'DisplaySetPresentationGroupDescr',\n x00720208: 'PartialDataDisplayHandling',\n x00720210: 'SynchronizedScrollingSequence',\n x00720212: 'DisplaySetScrollingGroup',\n x00720214: 'NavigationIndicatorSequence',\n x00720216: 'NavigationDisplaySet',\n x00720218: 'ReferenceDisplaySets',\n x00720300: 'ImageBoxesSequence',\n x00720302: 'ImageBoxNumber',\n x00720304: 'ImageBoxLayoutType',\n x00720306: 'ImageBoxTileHorizontalDimension',\n x00720308: 'ImageBoxTileVerticalDimension',\n x00720310: 'ImageBoxScrollDirection',\n x00720312: 'ImageBoxSmallScrollType',\n x00720314: 'ImageBoxSmallScrollAmount',\n x00720316: 'ImageBoxLargeScrollType',\n x00720318: 'ImageBoxLargeScrollAmount',\n x00720320: 'ImageBoxOverlapPriority',\n x00720330: 'CineRelativeToRealTime',\n x00720400: 'FilterOperationsSequence',\n x00720402: 'FilterByCategory',\n x00720404: 'FilterByAttributePresence',\n x00720406: 'FilterByOperator',\n x00720432: 'SynchronizedImageBoxList',\n x00720434: 'TypeOfSynchronization',\n x00720500: 'BlendingOperationType',\n x00720510: 'ReformattingOperationType',\n x00720512: 'ReformattingThickness',\n x00720514: 'ReformattingInterval',\n x00720516: 'ReformattingOpInitialViewDir',\n x00720520: 'RenderingType3D',\n x00720600: 'SortingOperationsSequence',\n x00720602: 'SortByCategory',\n x00720604: 'SortingDirection',\n x00720700: 'DisplaySetPatientOrientation',\n x00720702: 'VOIType',\n x00720704: 'PseudoColorType',\n x00720706: 'ShowGrayscaleInverted',\n x00720710: 'ShowImageTrueSizeFlag',\n x00720712: 'ShowGraphicAnnotationFlag',\n x00720714: 'ShowPatientDemographicsFlag',\n x00720716: 'ShowAcquisitionTechniquesFlag',\n x00720717: 'DisplaySetHorizontalJustification',\n x00720718: 'DisplaySetVerticalJustification',\n x00741000: 'UnifiedProcedureStepState',\n x00741002: 'UPSProgressInformationSequence',\n x00741004: 'UnifiedProcedureStepProgress',\n x00741006: 'UnifiedProcedureStepProgressDescr',\n x00741008: 'UnifiedProcedureStepComURISeq',\n x0074100a: 'ContactURI',\n x0074100c: 'ContactDisplayName',\n x00741020: 'BeamTaskSequence',\n x00741022: 'BeamTaskType',\n x00741024: 'BeamOrderIndex',\n x00741030: 'DeliveryVerificationImageSequence',\n x00741032: 'VerificationImageTiming',\n x00741034: 'DoubleExposureFlag',\n x00741036: 'DoubleExposureOrdering',\n x00741038: 'DoubleExposureMeterset',\n x0074103a: 'DoubleExposureFieldDelta',\n x00741040: 'RelatedReferenceRTImageSequence',\n x00741042: 'GeneralMachineVerificationSequence',\n x00741044: 'ConventionalMachineVerificationSeq',\n x00741046: 'IonMachineVerificationSequence',\n x00741048: 'FailedAttributesSequence',\n x0074104a: 'OverriddenAttributesSequence',\n x0074104c: 'ConventionalControlPointVerifySeq',\n x0074104e: 'IonControlPointVerificationSeq',\n x00741050: 'AttributeOccurrenceSequence',\n x00741052: 'AttributeOccurrencePointer',\n x00741054: 'AttributeItemSelector',\n x00741056: 'AttributeOccurrencePrivateCreator',\n x00741200: 'ScheduledProcedureStepPriority',\n x00741202: 'StudyListLabel',\n x00741204: 'ProcedureStepLabel',\n x00741210: 'ScheduledProcessingParametersSeq',\n x00741212: 'PerformedProcessingParametersSeq',\n x00741216: 'UPSPerformedProcedureSequence',\n x00741220: 'RelatedProcedureStepSequence',\n x00741222: 'ProcedureStepRelationshipType',\n x00741230: 'DeletionLock',\n x00741234: 'ReceivingAE',\n x00741236: 'RequestingAE',\n x00741238: 'ReasonForCancellation',\n x00741242: 'SCPStatus',\n x00741244: 'SubscriptionListStatus',\n x00741246: 'UPSListStatus',\n x00880130: 'StorageMediaFileSetID',\n x00880140: 'StorageMediaFileSetUID',\n x00880200: 'IconImageSequence',\n x00880904: 'TopicTitle',\n x00880906: 'TopicSubject',\n x00880910: 'TopicAuthor',\n x00880912: 'TopicKeywords',\n x01000410: 'SOPInstanceStatus',\n x01000420: 'SOPAuthorizationDateAndTime',\n x01000424: 'SOPAuthorizationComment',\n x01000426: 'AuthorizationEquipmentCertNumber',\n x04000005: 'MACIDNumber',\n x04000010: 'MACCalculationTransferSyntaxUID',\n x04000015: 'MACAlgorithm',\n x04000020: 'DataElementsSigned',\n x04000100: 'DigitalSignatureUID',\n x04000105: 'DigitalSignatureDateTime',\n x04000110: 'CertificateType',\n x04000115: 'CertificateOfSigner',\n x04000120: 'Signature',\n x04000305: 'CertifiedTimestampType',\n x04000310: 'CertifiedTimestamp',\n x04000401: 'DigitalSignaturePurposeCodeSeq',\n x04000402: 'ReferencedDigitalSignatureSeq',\n x04000403: 'ReferencedSOPInstanceMACSeq',\n x04000404: 'MAC',\n x04000500: 'EncryptedAttributesSequence',\n x04000510: 'EncryptedContentTransferSyntaxUID',\n x04000520: 'EncryptedContent',\n x04000550: 'ModifiedAttributesSequence',\n x04000561: 'OriginalAttributesSequence',\n x04000562: 'AttributeModificationDateTime',\n x04000563: 'ModifyingSystem',\n x04000564: 'SourceOfPreviousValues',\n x04000565: 'ReasonForTheAttributeModification',\n x1000xxx0: 'EscapeTriplet',\n x1000xxx1: 'RunLengthTriplet',\n x1000xxx2: 'HuffmanTableSize',\n x1000xxx3: 'HuffmanTableTriplet',\n x1000xxx4: 'ShiftTableSize',\n x1000xxx5: 'ShiftTableTriplet',\n x1010xxxx: 'ZonalMap',\n x20000010: 'NumberOfCopies',\n x2000001e: 'PrinterConfigurationSequence',\n x20000020: 'PrintPriority',\n x20000030: 'MediumType',\n x20000040: 'FilmDestination',\n x20000050: 'FilmSessionLabel',\n x20000060: 'MemoryAllocation',\n x20000061: 'MaximumMemoryAllocation',\n x20000062: 'ColorImagePrintingFlag',\n x20000063: 'CollationFlag',\n x20000065: 'AnnotationFlag',\n x20000067: 'ImageOverlayFlag',\n x20000069: 'PresentationLUTFlag',\n x2000006a: 'ImageBoxPresentationLUTFlag',\n x200000a0: 'MemoryBitDepth',\n x200000a1: 'PrintingBitDepth',\n x200000a2: 'MediaInstalledSequence',\n x200000a4: 'OtherMediaAvailableSequence',\n x200000a8: 'SupportedImageDisplayFormatSeq',\n x20000500: 'ReferencedFilmBoxSequence',\n x20000510: 'ReferencedStoredPrintSequence',\n x20100010: 'ImageDisplayFormat',\n x20100030: 'AnnotationDisplayFormatID',\n x20100040: 'FilmOrientation',\n x20100050: 'FilmSizeID',\n x20100052: 'PrinterResolutionID',\n x20100054: 'DefaultPrinterResolutionID',\n x20100060: 'MagnificationType',\n x20100080: 'SmoothingType',\n x201000a6: 'DefaultMagnificationType',\n x201000a7: 'OtherMagnificationTypesAvailable',\n x201000a8: 'DefaultSmoothingType',\n x201000a9: 'OtherSmoothingTypesAvailable',\n x20100100: 'BorderDensity',\n x20100110: 'EmptyImageDensity',\n x20100120: 'MinDensity',\n x20100130: 'MaxDensity',\n x20100140: 'Trim',\n x20100150: 'ConfigurationInformation',\n x20100152: 'ConfigurationInformationDescr',\n x20100154: 'MaximumCollatedFilms',\n x2010015e: 'Illumination',\n x20100160: 'ReflectedAmbientLight',\n x20100376: 'PrinterPixelSpacing',\n x20100500: 'ReferencedFilmSessionSequence',\n x20100510: 'ReferencedImageBoxSequence',\n x20100520: 'ReferencedBasicAnnotationBoxSeq',\n x20200010: 'ImageBoxPosition',\n x20200020: 'Polarity',\n x20200030: 'RequestedImageSize',\n x20200040: 'RequestedDecimate-CropBehavior',\n x20200050: 'RequestedResolutionID',\n x202000a0: 'RequestedImageSizeFlag',\n x202000a2: 'DecimateCropResult',\n x20200110: 'BasicGrayscaleImageSequence',\n x20200111: 'BasicColorImageSequence',\n x20200130: 'ReferencedImageOverlayBoxSequence',\n x20200140: 'ReferencedVOILUTBoxSequence',\n x20300010: 'AnnotationPosition',\n x20300020: 'TextString',\n x20400010: 'ReferencedOverlayPlaneSequence',\n x20400011: 'ReferencedOverlayPlaneGroups',\n x20400020: 'OverlayPixelDataSequence',\n x20400060: 'OverlayMagnificationType',\n x20400070: 'OverlaySmoothingType',\n x20400072: 'OverlayOrImageMagnification',\n x20400074: 'MagnifyToNumberOfColumns',\n x20400080: 'OverlayForegroundDensity',\n x20400082: 'OverlayBackgroundDensity',\n x20400090: 'OverlayMode',\n x20400100: 'ThresholdDensity',\n x20400500: 'ReferencedImageBoxSequenceRetired',\n x20500010: 'PresentationLUTSequence',\n x20500020: 'PresentationLUTShape',\n x20500500: 'ReferencedPresentationLUTSequence',\n x21000010: 'PrintJobID',\n x21000020: 'ExecutionStatus',\n x21000030: 'ExecutionStatusInfo',\n x21000040: 'CreationDate',\n x21000050: 'CreationTime',\n x21000070: 'Originator',\n x21000140: 'DestinationAE',\n x21000160: 'OwnerID',\n x21000170: 'NumberOfFilms',\n x21000500: 'ReferencedPrintJobSequencePullStoredPrint',\n x21100010: 'PrinterStatus',\n x21100020: 'PrinterStatusInfo',\n x21100030: 'PrinterName',\n x21100099: 'PrintQueueID',\n x21200010: 'QueueStatus',\n x21200050: 'PrintJobDescriptionSequence',\n x21200070: 'ReferencedPrintJobSequence',\n x21300010: 'PrintManagementCapabilitiesSeq',\n x21300015: 'PrinterCharacteristicsSequence',\n x21300030: 'FilmBoxContentSequence',\n x21300040: 'ImageBoxContentSequence',\n x21300050: 'AnnotationContentSequence',\n x21300060: 'ImageOverlayBoxContentSequence',\n x21300080: 'PresentationLUTContentSequence',\n x213000a0: 'ProposedStudySequence',\n x213000c0: 'OriginalImageSequence',\n x22000001: 'LabelFromInfoExtractedFromInstance',\n x22000002: 'LabelText',\n x22000003: 'LabelStyleSelection',\n x22000004: 'MediaDisposition',\n x22000005: 'BarcodeValue',\n x22000006: 'BarcodeSymbology',\n x22000007: 'AllowMediaSplitting',\n x22000008: 'IncludeNonDICOMObjects',\n x22000009: 'IncludeDisplayApplication',\n x2200000a: 'SaveCompInstancesAfterMediaCreate',\n x2200000b: 'TotalNumberMediaPiecesCreated',\n x2200000c: 'RequestedMediaApplicationProfile',\n x2200000d: 'ReferencedStorageMediaSequence',\n x2200000e: 'FailureAttributes',\n x2200000f: 'AllowLossyCompression',\n x22000020: 'RequestPriority',\n x30020002: 'RTImageLabel',\n x30020003: 'RTImageName',\n x30020004: 'RTImageDescription',\n x3002000a: 'ReportedValuesOrigin',\n x3002000c: 'RTImagePlane',\n x3002000d: 'XRayImageReceptorTranslation',\n x3002000e: 'XRayImageReceptorAngle',\n x30020010: 'RTImageOrientation',\n x30020011: 'ImagePlanePixelSpacing',\n x30020012: 'RTImagePosition',\n x30020020: 'RadiationMachineName',\n x30020022: 'RadiationMachineSAD',\n x30020024: 'RadiationMachineSSD',\n x30020026: 'RTImageSID',\n x30020028: 'SourceToReferenceObjectDistance',\n x30020029: 'FractionNumber',\n x30020030: 'ExposureSequence',\n x30020032: 'MetersetExposure',\n x30020034: 'DiaphragmPosition',\n x30020040: 'FluenceMapSequence',\n x30020041: 'FluenceDataSource',\n x30020042: 'FluenceDataScale',\n x30020051: 'FluenceMode',\n x30020052: 'FluenceModeID',\n x30040001: 'DVHType',\n x30040002: 'DoseUnits',\n x30040004: 'DoseType',\n x30040006: 'DoseComment',\n x30040008: 'NormalizationPoint',\n x3004000a: 'DoseSummationType',\n x3004000c: 'GridFrameOffsetVector',\n x3004000e: 'DoseGridScaling',\n x30040010: 'RTDoseROISequence',\n x30040012: 'DoseValue',\n x30040014: 'TissueHeterogeneityCorrection',\n x30040040: 'DVHNormalizationPoint',\n x30040042: 'DVHNormalizationDoseValue',\n x30040050: 'DVHSequence',\n x30040052: 'DVHDoseScaling',\n x30040054: 'DVHVolumeUnits',\n x30040056: 'DVHNumberOfBins',\n x30040058: 'DVHData',\n x30040060: 'DVHReferencedROISequence',\n x30040062: 'DVHROIContributionType',\n x30040070: 'DVHMinimumDose',\n x30040072: 'DVHMaximumDose',\n x30040074: 'DVHMeanDose',\n x30060002: 'StructureSetLabel',\n x30060004: 'StructureSetName',\n x30060006: 'StructureSetDescription',\n x30060008: 'StructureSetDate',\n x30060009: 'StructureSetTime',\n x30060010: 'ReferencedFrameOfReferenceSequence',\n x30060012: 'RTReferencedStudySequence',\n x30060014: 'RTReferencedSeriesSequence',\n x30060016: 'ContourImageSequence',\n x30060020: 'StructureSetROISequence',\n x30060022: 'ROINumber',\n x30060024: 'ReferencedFrameOfReferenceUID',\n x30060026: 'ROIName',\n x30060028: 'ROIDescription',\n x3006002a: 'ROIDisplayColor',\n x3006002c: 'ROIVolume',\n x30060030: 'RTRelatedROISequence',\n x30060033: 'RTROIRelationship',\n x30060036: 'ROIGenerationAlgorithm',\n x30060038: 'ROIGenerationDescription',\n x30060039: 'ROIContourSequence',\n x30060040: 'ContourSequence',\n x30060042: 'ContourGeometricType',\n x30060044: 'ContourSlabThickness',\n x30060045: 'ContourOffsetVector',\n x30060046: 'NumberOfContourPoints',\n x30060048: 'ContourNumber',\n x30060049: 'AttachedContours',\n x30060050: 'ContourData',\n x30060080: 'RTROIObservationsSequence',\n x30060082: 'ObservationNumber',\n x30060084: 'ReferencedROINumber',\n x30060085: 'ROIObservationLabel',\n x30060086: 'RTROIIdentificationCodeSequence',\n x30060088: 'ROIObservationDescription',\n x300600a0: 'RelatedRTROIObservationsSequence',\n x300600a4: 'RTROIInterpretedType',\n x300600a6: 'ROIInterpreter',\n x300600b0: 'ROIPhysicalPropertiesSequence',\n x300600b2: 'ROIPhysicalProperty',\n x300600b4: 'ROIPhysicalPropertyValue',\n x300600b6: 'ROIElementalCompositionSequence',\n x300600b7: 'ROIElementalCompAtomicNumber',\n x300600b8: 'ROIElementalCompAtomicMassFraction',\n x300600c0: 'FrameOfReferenceRelationshipSeq',\n x300600c2: 'RelatedFrameOfReferenceUID',\n x300600c4: 'FrameOfReferenceTransformType',\n x300600c6: 'FrameOfReferenceTransformMatrix',\n x300600c8: 'FrameOfReferenceTransformComment',\n x30080010: 'MeasuredDoseReferenceSequence',\n x30080012: 'MeasuredDoseDescription',\n x30080014: 'MeasuredDoseType',\n x30080016: 'MeasuredDoseValue',\n x30080020: 'TreatmentSessionBeamSequence',\n x30080021: 'TreatmentSessionIonBeamSequence',\n x30080022: 'CurrentFractionNumber',\n x30080024: 'TreatmentControlPointDate',\n x30080025: 'TreatmentControlPointTime',\n x3008002a: 'TreatmentTerminationStatus',\n x3008002b: 'TreatmentTerminationCode',\n x3008002c: 'TreatmentVerificationStatus',\n x30080030: 'ReferencedTreatmentRecordSequence',\n x30080032: 'SpecifiedPrimaryMeterset',\n x30080033: 'SpecifiedSecondaryMeterset',\n x30080036: 'DeliveredPrimaryMeterset',\n x30080037: 'DeliveredSecondaryMeterset',\n x3008003a: 'SpecifiedTreatmentTime',\n x3008003b: 'DeliveredTreatmentTime',\n x30080040: 'ControlPointDeliverySequence',\n x30080041: 'IonControlPointDeliverySequence',\n x30080042: 'SpecifiedMeterset',\n x30080044: 'DeliveredMeterset',\n x30080045: 'MetersetRateSet',\n x30080046: 'MetersetRateDelivered',\n x30080047: 'ScanSpotMetersetsDelivered',\n x30080048: 'DoseRateDelivered',\n x30080050: 'TreatmentSummaryCalcDoseRefSeq',\n x30080052: 'CumulativeDoseToDoseReference',\n x30080054: 'FirstTreatmentDate',\n x30080056: 'MostRecentTreatmentDate',\n x3008005a: 'NumberOfFractionsDelivered',\n x30080060: 'OverrideSequence',\n x30080061: 'ParameterSequencePointer',\n x30080062: 'OverrideParameterPointer',\n x30080063: 'ParameterItemIndex',\n x30080064: 'MeasuredDoseReferenceNumber',\n x30080065: 'ParameterPointer',\n x30080066: 'OverrideReason',\n x30080068: 'CorrectedParameterSequence',\n x3008006a: 'CorrectionValue',\n x30080070: 'CalculatedDoseReferenceSequence',\n x30080072: 'CalculatedDoseReferenceNumber',\n x30080074: 'CalculatedDoseReferenceDescription',\n x30080076: 'CalculatedDoseReferenceDoseValue',\n x30080078: 'StartMeterset',\n x3008007a: 'EndMeterset',\n x30080080: 'ReferencedMeasuredDoseReferenceSeq',\n x30080082: 'ReferencedMeasuredDoseReferenceNum',\n x30080090: 'ReferencedCalculatedDoseRefSeq',\n x30080092: 'ReferencedCalculatedDoseRefNumber',\n x300800a0: 'BeamLimitingDeviceLeafPairsSeq',\n x300800b0: 'RecordedWedgeSequence',\n x300800c0: 'RecordedCompensatorSequence',\n x300800d0: 'RecordedBlockSequence',\n x300800e0: 'TreatmentSummaryMeasuredDoseRefSeq',\n x300800f0: 'RecordedSnoutSequence',\n x300800f2: 'RecordedRangeShifterSequence',\n x300800f4: 'RecordedLateralSpreadingDeviceSeq',\n x300800f6: 'RecordedRangeModulatorSequence',\n x30080100: 'RecordedSourceSequence',\n x30080105: 'SourceSerialNumber',\n x30080110: 'TreatmentSessionAppSetupSeq',\n x30080116: 'ApplicationSetupCheck',\n x30080120: 'RecordedBrachyAccessoryDeviceSeq',\n x30080122: 'ReferencedBrachyAccessoryDeviceNum',\n x30080130: 'RecordedChannelSequence',\n x30080132: 'SpecifiedChannelTotalTime',\n x30080134: 'DeliveredChannelTotalTime',\n x30080136: 'SpecifiedNumberOfPulses',\n x30080138: 'DeliveredNumberOfPulses',\n x3008013a: 'SpecifiedPulseRepetitionInterval',\n x3008013c: 'DeliveredPulseRepetitionInterval',\n x30080140: 'RecordedSourceApplicatorSequence',\n x30080142: 'ReferencedSourceApplicatorNumber',\n x30080150: 'RecordedChannelShieldSequence',\n x30080152: 'ReferencedChannelShieldNumber',\n x30080160: 'BrachyControlPointDeliveredSeq',\n x30080162: 'SafePositionExitDate',\n x30080164: 'SafePositionExitTime',\n x30080166: 'SafePositionReturnDate',\n x30080168: 'SafePositionReturnTime',\n x30080200: 'CurrentTreatmentStatus',\n x30080202: 'TreatmentStatusComment',\n x30080220: 'FractionGroupSummarySequence',\n x30080223: 'ReferencedFractionNumber',\n x30080224: 'FractionGroupType',\n x30080230: 'BeamStopperPosition',\n x30080240: 'FractionStatusSummarySequence',\n x30080250: 'TreatmentDate',\n x30080251: 'TreatmentTime',\n x300a0002: 'RTPlanLabel',\n x300a0003: 'RTPlanName',\n x300a0004: 'RTPlanDescription',\n x300a0006: 'RTPlanDate',\n x300a0007: 'RTPlanTime',\n x300a0009: 'TreatmentProtocols',\n x300a000a: 'PlanIntent',\n x300a000b: 'TreatmentSites',\n x300a000c: 'RTPlanGeometry',\n x300a000e: 'PrescriptionDescription',\n x300a0010: 'DoseReferenceSequence',\n x300a0012: 'DoseReferenceNumber',\n x300a0013: 'DoseReferenceUID',\n x300a0014: 'DoseReferenceStructureType',\n x300a0015: 'NominalBeamEnergyUnit',\n x300a0016: 'DoseReferenceDescription',\n x300a0018: 'DoseReferencePointCoordinates',\n x300a001a: 'NominalPriorDose',\n x300a0020: 'DoseReferenceType',\n x300a0021: 'ConstraintWeight',\n x300a0022: 'DeliveryWarningDose',\n x300a0023: 'DeliveryMaximumDose',\n x300a0025: 'TargetMinimumDose',\n x300a0026: 'TargetPrescriptionDose',\n x300a0027: 'TargetMaximumDose',\n x300a0028: 'TargetUnderdoseVolumeFraction',\n x300a002a: 'OrganAtRiskFullVolumeDose',\n x300a002b: 'OrganAtRiskLimitDose',\n x300a002c: 'OrganAtRiskMaximumDose',\n x300a002d: 'OrganAtRiskOverdoseVolumeFraction',\n x300a0040: 'ToleranceTableSequence',\n x300a0042: 'ToleranceTableNumber',\n x300a0043: 'ToleranceTableLabel',\n x300a0044: 'GantryAngleTolerance',\n x300a0046: 'BeamLimitingDeviceAngleTolerance',\n x300a0048: 'BeamLimitingDeviceToleranceSeq',\n x300a004a: 'BeamLimitingDevicePositionTol',\n x300a004b: 'SnoutPositionTolerance',\n x300a004c: 'PatientSupportAngleTolerance',\n x300a004e: 'TableTopEccentricAngleTolerance',\n x300a004f: 'TableTopPitchAngleTolerance',\n x300a0050: 'TableTopRollAngleTolerance',\n x300a0051: 'TableTopVerticalPositionTolerance',\n x300a0052: 'TableTopLongitudinalPositionTol',\n x300a0053: 'TableTopLateralPositionTolerance',\n x300a0055: 'RTPlanRelationship',\n x300a0070: 'FractionGroupSequence',\n x300a0071: 'FractionGroupNumber',\n x300a0072: 'FractionGroupDescription',\n x300a0078: 'NumberOfFractionsPlanned',\n x300a0079: 'NumberFractionPatternDigitsPerDay',\n x300a007a: 'RepeatFractionCycleLength',\n x300a007b: 'FractionPattern',\n x300a0080: 'NumberOfBeams',\n x300a0082: 'BeamDoseSpecificationPoint',\n x300a0084: 'BeamDose',\n x300a0086: 'BeamMeterset',\n x300a0088: 'BeamDosePointDepth',\n x300a0089: 'BeamDosePointEquivalentDepth',\n x300a008a: 'BeamDosePointSSD',\n x300a00a0: 'NumberOfBrachyApplicationSetups',\n x300a00a2: 'BrachyAppSetupDoseSpecPoint',\n x300a00a4: 'BrachyApplicationSetupDose',\n x300a00b0: 'BeamSequence',\n x300a00b2: 'TreatmentMachineName',\n x300a00b3: 'PrimaryDosimeterUnit',\n x300a00b4: 'SourceAxisDistance',\n x300a00b6: 'BeamLimitingDeviceSequence',\n x300a00b8: 'RTBeamLimitingDeviceType',\n x300a00ba: 'SourceToBeamLimitingDeviceDistance',\n x300a00bb: 'IsocenterToBeamLimitingDeviceDist',\n x300a00bc: 'NumberOfLeafJawPairs',\n x300a00be: 'LeafPositionBoundaries',\n x300a00c0: 'BeamNumber',\n x300a00c2: 'BeamName',\n x300a00c3: 'BeamDescription',\n x300a00c4: 'BeamType',\n x300a00c6: 'RadiationType',\n x300a00c7: 'HighDoseTechniqueType',\n x300a00c8: 'ReferenceImageNumber',\n x300a00ca: 'PlannedVerificationImageSequence',\n x300a00cc: 'ImagingDeviceSpecificAcqParams',\n x300a00ce: 'TreatmentDeliveryType',\n x300a00d0: 'NumberOfWedges',\n x300a00d1: 'WedgeSequence',\n x300a00d2: 'WedgeNumber',\n x300a00d3: 'WedgeType',\n x300a00d4: 'WedgeID',\n x300a00d5: 'WedgeAngle',\n x300a00d6: 'WedgeFactor',\n x300a00d7: 'TotalWedgeTrayWaterEquivThickness',\n x300a00d8: 'WedgeOrientation',\n x300a00d9: 'IsocenterToWedgeTrayDistance',\n x300a00da: 'SourceToWedgeTrayDistance',\n x300a00db: 'WedgeThinEdgePosition',\n x300a00dc: 'BolusID',\n x300a00dd: 'BolusDescription',\n x300a00e0: 'NumberOfCompensators',\n x300a00e1: 'MaterialID',\n x300a00e2: 'TotalCompensatorTrayFactor',\n x300a00e3: 'CompensatorSequence',\n x300a00e4: 'CompensatorNumber',\n x300a00e5: 'CompensatorID',\n x300a00e6: 'SourceToCompensatorTrayDistance',\n x300a00e7: 'CompensatorRows',\n x300a00e8: 'CompensatorColumns',\n x300a00e9: 'CompensatorPixelSpacing',\n x300a00ea: 'CompensatorPosition',\n x300a00eb: 'CompensatorTransmissionData',\n x300a00ec: 'CompensatorThicknessData',\n x300a00ed: 'NumberOfBoli',\n x300a00ee: 'CompensatorType',\n x300a00f0: 'NumberOfBlocks',\n x300a00f2: 'TotalBlockTrayFactor',\n x300a00f3: 'TotalBlockTrayWaterEquivThickness',\n x300a00f4: 'BlockSequence',\n x300a00f5: 'BlockTrayID',\n x300a00f6: 'SourceToBlockTrayDistance',\n x300a00f7: 'IsocenterToBlockTrayDistance',\n x300a00f8: 'BlockType',\n x300a00f9: 'AccessoryCode',\n x300a00fa: 'BlockDivergence',\n x300a00fb: 'BlockMountingPosition',\n x300a00fc: 'BlockNumber',\n x300a00fe: 'BlockName',\n x300a0100: 'BlockThickness',\n x300a0102: 'BlockTransmission',\n x300a0104: 'BlockNumberOfPoints',\n x300a0106: 'BlockData',\n x300a0107: 'ApplicatorSequence',\n x300a0108: 'ApplicatorID',\n x300a0109: 'ApplicatorType',\n x300a010a: 'ApplicatorDescription',\n x300a010c: 'CumulativeDoseReferenceCoefficient',\n x300a010e: 'FinalCumulativeMetersetWeight',\n x300a0110: 'NumberOfControlPoints',\n x300a0111: 'ControlPointSequence',\n x300a0112: 'ControlPointIndex',\n x300a0114: 'NominalBeamEnergy',\n x300a0115: 'DoseRateSet',\n x300a0116: 'WedgePositionSequence',\n x300a0118: 'WedgePosition',\n x300a011a: 'BeamLimitingDevicePositionSequence',\n x300a011c: 'LeafJawPositions',\n x300a011e: 'GantryAngle',\n x300a011f: 'GantryRotationDirection',\n x300a0120: 'BeamLimitingDeviceAngle',\n x300a0121: 'BeamLimitingDeviceRotateDirection',\n x300a0122: 'PatientSupportAngle',\n x300a0123: 'PatientSupportRotationDirection',\n x300a0124: 'TableTopEccentricAxisDistance',\n x300a0125: 'TableTopEccentricAngle',\n x300a0126: 'TableTopEccentricRotateDirection',\n x300a0128: 'TableTopVerticalPosition',\n x300a0129: 'TableTopLongitudinalPosition',\n x300a012a: 'TableTopLateralPosition',\n x300a012c: 'IsocenterPosition',\n x300a012e: 'SurfaceEntryPoint',\n x300a0130: 'SourceToSurfaceDistance',\n x300a0134: 'CumulativeMetersetWeight',\n x300a0140: 'TableTopPitchAngle',\n x300a0142: 'TableTopPitchRotationDirection',\n x300a0144: 'TableTopRollAngle',\n x300a0146: 'TableTopRollRotationDirection',\n x300a0148: 'HeadFixationAngle',\n x300a014a: 'GantryPitchAngle',\n x300a014c: 'GantryPitchRotationDirection',\n x300a014e: 'GantryPitchAngleTolerance',\n x300a0180: 'PatientSetupSequence',\n x300a0182: 'PatientSetupNumber',\n x300a0183: 'PatientSetupLabel',\n x300a0184: 'PatientAdditionalPosition',\n x300a0190: 'FixationDeviceSequence',\n x300a0192: 'FixationDeviceType',\n x300a0194: 'FixationDeviceLabel',\n x300a0196: 'FixationDeviceDescription',\n x300a0198: 'FixationDevicePosition',\n x300a0199: 'FixationDevicePitchAngle',\n x300a019a: 'FixationDeviceRollAngle',\n x300a01a0: 'ShieldingDeviceSequence',\n x300a01a2: 'ShieldingDeviceType',\n x300a01a4: 'ShieldingDeviceLabel',\n x300a01a6: 'ShieldingDeviceDescription',\n x300a01a8: 'ShieldingDevicePosition',\n x300a01b0: 'SetupTechnique',\n x300a01b2: 'SetupTechniqueDescription',\n x300a01b4: 'SetupDeviceSequence',\n x300a01b6: 'SetupDeviceType',\n x300a01b8: 'SetupDeviceLabel',\n x300a01ba: 'SetupDeviceDescription',\n x300a01bc: 'SetupDeviceParameter',\n x300a01d0: 'SetupReferenceDescription',\n x300a01d2: 'TableTopVerticalSetupDisplacement',\n x300a01d4: 'TableTopLongitudinalSetupDisplace',\n x300a01d6: 'TableTopLateralSetupDisplacement',\n x300a0200: 'BrachyTreatmentTechnique',\n x300a0202: 'BrachyTreatmentType',\n x300a0206: 'TreatmentMachineSequence',\n x300a0210: 'SourceSequence',\n x300a0212: 'SourceNumber',\n x300a0214: 'SourceType',\n x300a0216: 'SourceManufacturer',\n x300a0218: 'ActiveSourceDiameter',\n x300a021a: 'ActiveSourceLength',\n x300a0222: 'SourceEncapsulationNomThickness',\n x300a0224: 'SourceEncapsulationNomTransmission',\n x300a0226: 'SourceIsotopeName',\n x300a0228: 'SourceIsotopeHalfLife',\n x300a0229: 'SourceStrengthUnits',\n x300a022a: 'ReferenceAirKermaRate',\n x300a022b: 'SourceStrength',\n x300a022c: 'SourceStrengthReferenceDate',\n x300a022e: 'SourceStrengthReferenceTime',\n x300a0230: 'ApplicationSetupSequence',\n x300a0232: 'ApplicationSetupType',\n x300a0234: 'ApplicationSetupNumber',\n x300a0236: 'ApplicationSetupName',\n x300a0238: 'ApplicationSetupManufacturer',\n x300a0240: 'TemplateNumber',\n x300a0242: 'TemplateType',\n x300a0244: 'TemplateName',\n x300a0250: 'TotalReferenceAirKerma',\n x300a0260: 'BrachyAccessoryDeviceSequence',\n x300a0262: 'BrachyAccessoryDeviceNumber',\n x300a0263: 'BrachyAccessoryDeviceID',\n x300a0264: 'BrachyAccessoryDeviceType',\n x300a0266: 'BrachyAccessoryDeviceName',\n x300a026a: 'BrachyAccessoryDeviceNomThickness',\n x300a026c: 'BrachyAccessoryDevNomTransmission',\n x300a0280: 'ChannelSequence',\n x300a0282: 'ChannelNumber',\n x300a0284: 'ChannelLength',\n x300a0286: 'ChannelTotalTime',\n x300a0288: 'SourceMovementType',\n x300a028a: 'NumberOfPulses',\n x300a028c: 'PulseRepetitionInterval',\n x300a0290: 'SourceApplicatorNumber',\n x300a0291: 'SourceApplicatorID',\n x300a0292: 'SourceApplicatorType',\n x300a0294: 'SourceApplicatorName',\n x300a0296: 'SourceApplicatorLength',\n x300a0298: 'SourceApplicatorManufacturer',\n x300a029c: 'SourceApplicatorWallNomThickness',\n x300a029e: 'SourceApplicatorWallNomTrans',\n x300a02a0: 'SourceApplicatorStepSize',\n x300a02a2: 'TransferTubeNumber',\n x300a02a4: 'TransferTubeLength',\n x300a02b0: 'ChannelShieldSequence',\n x300a02b2: 'ChannelShieldNumber',\n x300a02b3: 'ChannelShieldID',\n x300a02b4: 'ChannelShieldName',\n x300a02b8: 'ChannelShieldNominalThickness',\n x300a02ba: 'ChannelShieldNominalTransmission',\n x300a02c8: 'FinalCumulativeTimeWeight',\n x300a02d0: 'BrachyControlPointSequence',\n x300a02d2: 'ControlPointRelativePosition',\n x300a02d4: 'ControlPoint3DPosition',\n x300a02d6: 'CumulativeTimeWeight',\n x300a02e0: 'CompensatorDivergence',\n x300a02e1: 'CompensatorMountingPosition',\n x300a02e2: 'SourceToCompensatorDistance',\n x300a02e3: 'TotalCompTrayWaterEquivThickness',\n x300a02e4: 'IsocenterToCompensatorTrayDistance',\n x300a02e5: 'CompensatorColumnOffset',\n x300a02e6: 'IsocenterToCompensatorDistances',\n x300a02e7: 'CompensatorRelStoppingPowerRatio',\n x300a02e8: 'CompensatorMillingToolDiameter',\n x300a02ea: 'IonRangeCompensatorSequence',\n x300a02eb: 'CompensatorDescription',\n x300a0302: 'RadiationMassNumber',\n x300a0304: 'RadiationAtomicNumber',\n x300a0306: 'RadiationChargeState',\n x300a0308: 'ScanMode',\n x300a030a: 'VirtualSourceAxisDistances',\n x300a030c: 'SnoutSequence',\n x300a030d: 'SnoutPosition',\n x300a030f: 'SnoutID',\n x300a0312: 'NumberOfRangeShifters',\n x300a0314: 'RangeShifterSequence',\n x300a0316: 'RangeShifterNumber',\n x300a0318: 'RangeShifterID',\n x300a0320: 'RangeShifterType',\n x300a0322: 'RangeShifterDescription',\n x300a0330: 'NumberOfLateralSpreadingDevices',\n x300a0332: 'LateralSpreadingDeviceSequence',\n x300a0334: 'LateralSpreadingDeviceNumber',\n x300a0336: 'LateralSpreadingDeviceID',\n x300a0338: 'LateralSpreadingDeviceType',\n x300a033a: 'LateralSpreadingDeviceDescription',\n x300a033c: 'LateralSpreadingDevWaterEquivThick',\n x300a0340: 'NumberOfRangeModulators',\n x300a0342: 'RangeModulatorSequence',\n x300a0344: 'RangeModulatorNumber',\n x300a0346: 'RangeModulatorID',\n x300a0348: 'RangeModulatorType',\n x300a034a: 'RangeModulatorDescription',\n x300a034c: 'BeamCurrentModulationID',\n x300a0350: 'PatientSupportType',\n x300a0352: 'PatientSupportID',\n x300a0354: 'PatientSupportAccessoryCode',\n x300a0356: 'FixationLightAzimuthalAngle',\n x300a0358: 'FixationLightPolarAngle',\n x300a035a: 'MetersetRate',\n x300a0360: 'RangeShifterSettingsSequence',\n x300a0362: 'RangeShifterSetting',\n x300a0364: 'IsocenterToRangeShifterDistance',\n x300a0366: 'RangeShifterWaterEquivThickness',\n x300a0370: 'LateralSpreadingDeviceSettingsSeq',\n x300a0372: 'LateralSpreadingDeviceSetting',\n x300a0374: 'IsocenterToLateralSpreadingDevDist',\n x300a0380: 'RangeModulatorSettingsSequence',\n x300a0382: 'RangeModulatorGatingStartValue',\n x300a0384: 'RangeModulatorGatingStopValue',\n x300a038a: 'IsocenterToRangeModulatorDistance',\n x300a0390: 'ScanSpotTuneID',\n x300a0392: 'NumberOfScanSpotPositions',\n x300a0394: 'ScanSpotPositionMap',\n x300a0396: 'ScanSpotMetersetWeights',\n x300a0398: 'ScanningSpotSize',\n x300a039a: 'NumberOfPaintings',\n x300a03a0: 'IonToleranceTableSequence',\n x300a03a2: 'IonBeamSequence',\n x300a03a4: 'IonBeamLimitingDeviceSequence',\n x300a03a6: 'IonBlockSequence',\n x300a03a8: 'IonControlPointSequence',\n x300a03aa: 'IonWedgeSequence',\n x300a03ac: 'IonWedgePositionSequence',\n x300a0401: 'ReferencedSetupImageSequence',\n x300a0402: 'SetupImageComment',\n x300a0410: 'MotionSynchronizationSequence',\n x300a0412: 'ControlPointOrientation',\n x300a0420: 'GeneralAccessorySequence',\n x300a0421: 'GeneralAccessoryID',\n x300a0422: 'GeneralAccessoryDescription',\n x300a0423: 'GeneralAccessoryType',\n x300a0424: 'GeneralAccessoryNumber',\n x300c0002: 'ReferencedRTPlanSequence',\n x300c0004: 'ReferencedBeamSequence',\n x300c0006: 'ReferencedBeamNumber',\n x300c0007: 'ReferencedReferenceImageNumber',\n x300c0008: 'StartCumulativeMetersetWeight',\n x300c0009: 'EndCumulativeMetersetWeight',\n x300c000a: 'ReferencedBrachyAppSetupSeq',\n x300c000c: 'ReferencedBrachyAppSetupNumber',\n x300c000e: 'ReferencedSourceNumber',\n x300c0020: 'ReferencedFractionGroupSequence',\n x300c0022: 'ReferencedFractionGroupNumber',\n x300c0040: 'ReferencedVerificationImageSeq',\n x300c0042: 'ReferencedReferenceImageSequence',\n x300c0050: 'ReferencedDoseReferenceSequence',\n x300c0051: 'ReferencedDoseReferenceNumber',\n x300c0055: 'BrachyReferencedDoseReferenceSeq',\n x300c0060: 'ReferencedStructureSetSequence',\n x300c006a: 'ReferencedPatientSetupNumber',\n x300c0080: 'ReferencedDoseSequence',\n x300c00a0: 'ReferencedToleranceTableNumber',\n x300c00b0: 'ReferencedBolusSequence',\n x300c00c0: 'ReferencedWedgeNumber',\n x300c00d0: 'ReferencedCompensatorNumber',\n x300c00e0: 'ReferencedBlockNumber',\n x300c00f0: 'ReferencedControlPointIndex',\n x300c00f2: 'ReferencedControlPointSequence',\n x300c00f4: 'ReferencedStartControlPointIndex',\n x300c00f6: 'ReferencedStopControlPointIndex',\n x300c0100: 'ReferencedRangeShifterNumber',\n x300c0102: 'ReferencedLateralSpreadingDevNum',\n x300c0104: 'ReferencedRangeModulatorNumber',\n x300e0002: 'ApprovalStatus',\n x300e0004: 'ReviewDate',\n x300e0005: 'ReviewTime',\n x300e0008: 'ReviewerName',\n x40000000: 'TextGroupLength',\n x40000010: 'Arbitrary',\n x40004000: 'TextComments',\n x40080040: 'ResultsID',\n x40080042: 'ResultsIDIssuer',\n x40080050: 'ReferencedInterpretationSequence',\n x40080100: 'InterpretationRecordedDate',\n x40080101: 'InterpretationRecordedTime',\n x40080102: 'InterpretationRecorder',\n x40080103: 'ReferenceToRecordedSound',\n x40080108: 'InterpretationTranscriptionDate',\n x40080109: 'InterpretationTranscriptionTime',\n x4008010a: 'InterpretationTranscriber',\n x4008010b: 'InterpretationText',\n x4008010c: 'InterpretationAuthor',\n x40080111: 'InterpretationApproverSequence',\n x40080112: 'InterpretationApprovalDate',\n x40080113: 'InterpretationApprovalTime',\n x40080114: 'PhysicianApprovingInterpretation',\n x40080115: 'InterpretationDiagnosisDescription',\n x40080117: 'InterpretationDiagnosisCodeSeq',\n x40080118: 'ResultsDistributionListSequence',\n x40080119: 'DistributionName',\n x4008011a: 'DistributionAddress',\n x40080200: 'InterpretationID',\n x40080202: 'InterpretationIDIssuer',\n x40080210: 'InterpretationTypeID',\n x40080212: 'InterpretationStatusID',\n x40080300: 'Impressions',\n x40084000: 'ResultsComments',\n x4ffe0001: 'MACParametersSequence',\n x50xx0005: 'CurveDimensions',\n x50xx0010: 'NumberOfPoints',\n x50xx0020: 'TypeOfData',\n x50xx0022: 'CurveDescription',\n x50xx0030: 'AxisUnits',\n x50xx0040: 'AxisLabels',\n x50xx0103: 'DataValueRepresentation',\n x50xx0104: 'MinimumCoordinateValue',\n x50xx0105: 'MaximumCoordinateValue',\n x50xx0106: 'CurveRange',\n x50xx0110: 'CurveDataDescriptor',\n x50xx0112: 'CoordinateStartValue',\n x50xx0114: 'CoordinateStepValue',\n x50xx1001: 'CurveActivationLayer',\n x50xx2000: 'AudioType',\n x50xx2002: 'AudioSampleFormat',\n x50xx2004: 'NumberOfChannels',\n x50xx2006: 'NumberOfSamples',\n x50xx2008: 'SampleRate',\n x50xx200a: 'TotalTime',\n x50xx200c: 'AudioSampleData',\n x50xx200e: 'AudioComments',\n x50xx2500: 'CurveLabel',\n x50xx2600: 'CurveReferencedOverlaySequence',\n x50xx2610: 'ReferencedOverlayGroup',\n x50xx3000: 'CurveData',\n x52009229: 'SharedFunctionalGroupsSequence',\n x52009230: 'PerFrameFunctionalGroupsSequence',\n x54000100: 'WaveformSequence',\n x54000110: 'ChannelMinimumValue',\n x54000112: 'ChannelMaximumValue',\n x54001004: 'WaveformBitsAllocated',\n x54001006: 'WaveformSampleInterpretation',\n x5400100a: 'WaveformPaddingValue',\n x54001010: 'WaveformData',\n x56000010: 'FirstOrderPhaseCorrectionAngle',\n x56000020: 'SpectroscopyData',\n x60000000: 'OverlayGroupLength',\n x60xx0010: 'OverlayRows',\n x60xx0011: 'OverlayColumns',\n x60xx0012: 'OverlayPlanes',\n x60xx0015: 'NumberOfFramesInOverlay',\n x60xx0022: 'OverlayDescription',\n x60xx0040: 'OverlayType',\n x60xx0045: 'OverlaySubtype',\n x60xx0050: 'OverlayOrigin',\n x60xx0051: 'ImageFrameOrigin',\n x60xx0052: 'OverlayPlaneOrigin',\n x60xx0060: 'OverlayCompressionCode',\n x60xx0061: 'OverlayCompressionOriginator',\n x60xx0062: 'OverlayCompressionLabel',\n x60xx0063: 'OverlayCompressionDescription',\n x60xx0066: 'OverlayCompressionStepPointers',\n x60xx0068: 'OverlayRepeatInterval',\n x60xx0069: 'OverlayBitsGrouped',\n x60xx0100: 'OverlayBitsAllocated',\n x60xx0102: 'OverlayBitPosition',\n x60xx0110: 'OverlayFormat',\n x60xx0200: 'OverlayLocation',\n x60xx0800: 'OverlayCodeLabel',\n x60xx0802: 'OverlayNumberOfTables',\n x60xx0803: 'OverlayCodeTableLocation',\n x60xx0804: 'OverlayBitsForCodeWord',\n x60xx1001: 'OverlayActivationLayer',\n x60xx1100: 'OverlayDescriptorGray',\n x60xx1101: 'OverlayDescriptorRed',\n x60xx1102: 'OverlayDescriptorGreen',\n x60xx1103: 'OverlayDescriptorBlue',\n x60xx1200: 'OverlaysGray',\n x60xx1201: 'OverlaysRed',\n x60xx1202: 'OverlaysGreen',\n x60xx1203: 'OverlaysBlue',\n x60xx1301: 'ROIArea',\n x60xx1302: 'ROIMean',\n x60xx1303: 'ROIStandardDeviation',\n x60xx1500: 'OverlayLabel',\n x60xx3000: 'OverlayData',\n x60xx4000: 'OverlayComments',\n x7fxx0000: 'PixelDataGroupLength',\n x7fxx0010: 'PixelData',\n x7fxx0011: 'VariableNextDataGroup',\n x7fxx0020: 'VariableCoefficientsSDVN',\n x7fxx0030: 'VariableCoefficientsSDHN',\n x7fxx0040: 'VariableCoefficientsSDDN',\n xfffafffa: 'DigitalSignaturesSequence',\n xfffcfffc: 'DataSetTrailingPadding',\n xfffee000: 'StartOfItem',\n xfffee00d: 'EndOfItems',\n xfffee0dd: 'EndOfSequence'\n};\nDICOMTagDescriptions.init(initialTagDescriptionMap); // Discard original map...\n\ninitialTagDescriptionMap = null;\n\n/**\n * A small set of utilities to help parsing DICOM element values.\n * In the future the functionality provided by this library might\n * be incorporated into dicomParser library.\n */\n\nvar parsingUtils = {\n /**\n * Check if supplied argument is a valid instance of the dicomParser.DataSet class.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @returns {Boolean} Returns true if data is a valid instance of the dicomParser.DataSet class.\n */\n isValidDataSet: function isValidDataSet(data) {\n var dicomParser = external.dicomParser;\n return data instanceof dicomParser.DataSet;\n },\n\n /**\n * Parses an element tag according to the 'AT' VR definition.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {String} A string representation of a data element tag or null if the field is not present or data is not long enough.\n */\n attributeTag: function attributeTag(data, tag) {\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length === 4) {\n var parser = data.byteArrayParser.readUint16,\n bytes = data.byteArray,\n offset = element.dataOffset;\n return 'x' + ('00000000' + (parser(bytes, offset) * 256 * 256 + parser(bytes, offset + 2)).toString(16)).substr(-8);\n }\n }\n\n return null;\n },\n\n /**\n * Parses the string representation of a multi-valued element into an array of strings. If the parser\n * parameter is passed and is a function, it will be applied to each element of the resulting array.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @param parser {Function} An optional parser function that can be applied to each element of the array.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n multiValue: function multiValue(data, tag, parser) {\n var dicomParser = external.dicomParser;\n\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length > 0) {\n var string = dicomParser.readFixedString(data.byteArray, element.dataOffset, element.length);\n\n if (typeof string === 'string' && string.length > 0) {\n if (typeof parser !== 'function') {\n parser = null;\n }\n\n return string.split('\\\\').map(function (value) {\n value = value.trim();\n return parser !== null ? parser(value) : value;\n });\n }\n }\n }\n\n return null;\n },\n\n /**\n * Parses a string to an array of floats for a multi-valued element.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n floatArray: function floatArray(data, tag) {\n return this.multiValue(data, tag, parseFloat);\n }\n};\n\n/**\n * Returns the specified element as a dicom attribute group/element.\n *\n * @param element - The group/element of the element (e.g. '00280009')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getAttribute(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return convertToInt(element.Value);\n}\n\nfunction convertToInt(input) {\n function padFour(input) {\n var l = input.length;\n if (l == 0) return '0000';\n if (l == 1) return '000' + input;\n if (l == 2) return '00' + input;\n if (l == 3) return '0' + input;\n return input;\n }\n\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n for (var j = 0; j < input[i].length; j++) {\n output += padFour(input[i].charCodeAt(j).toString(16));\n }\n }\n\n return parseInt(output, 16);\n}\n\nvar btoa = function btoa(val) {\n return new Buffer(val).toString('base64');\n};\n\n// These should be overridden by the implementation\nvar user = {\n userLoggedIn: function userLoggedIn() {\n return false;\n },\n getUserId: function getUserId() {\n return null;\n },\n getName: function getName() {\n return null;\n },\n getAccessToken: function getAccessToken() {\n return null;\n },\n login: function login() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n logout: function logout() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n getData: function getData(key) {\n return null;\n },\n setData: function setData(key, value) {\n return null;\n }\n};\n\n/**\n * Returns the Authorization header as part of an Object.\n *\n * @returns {Object}\n */\n\nfunction getAuthorizationHeader(server) {\n var headers = {}; // Check for OHIF.user since this can also be run on the server\n\n var accessToken = user && user.getAccessToken && user.getAccessToken();\n\n if (server && server.requestOptions && server.requestOptions.auth) {\n // HTTP Basic Auth (user:password)\n headers.Authorization = \"Basic \".concat(btoa(server.requestOptions.auth));\n } else if (accessToken) {\n headers.Authorization = \"Bearer \".concat(accessToken);\n }\n\n return headers;\n}\n\nfunction getModalities(modality, modalitiesInStudy) {\n var modalities = {};\n\n if (modality) {\n modalities = modality;\n }\n\n if (modalitiesInStudy) {\n // Find vr in modalities\n if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {\n for (var i = 0; i < modalitiesInStudy.Value.length; i++) {\n var value = modalitiesInStudy.Value[i];\n\n if (modalities.Value.indexOf(value) === -1) {\n modalities.Value.push(value);\n }\n }\n } else {\n modalities = modalitiesInStudy;\n }\n }\n\n return modalities;\n}\n\n/**\n * Returns the Alphabetic version of a PN\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element is not found\n * @returns {*}\n */\nfunction getName(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Return the Alphabetic component group\n\n\n if (element.Value[0].Alphabetic) {\n return element.Value[0].Alphabetic;\n } // Orthanc does not return PN properly so this is a temporary workaround\n\n\n return element.Value[0];\n}\n\n/**\n * Returns the first string value as a Javascript Number\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element does not exist\n * @returns {*}\n */\nfunction getNumber(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return parseFloat(element.Value[0]);\n}\n\n/**\n * Returns the specified element as a string. Multi-valued elements will be separated by a backslash\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getString(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Join the array together separated by backslash\n // NOTE: Orthanc does not correctly split values into an array so the join is a no-op\n\n\n return element.Value.join('\\\\');\n}\n\nvar DICOMWeb = {\n getAttribute: getAttribute,\n getAuthorizationHeader: getAuthorizationHeader,\n getModalities: getModalities,\n getName: getName,\n getNumber: getNumber,\n getString: getString\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar dicomwebClient = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n factory(exports);\n}(commonjsGlobal, (function (exports) {\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Converts a Uint8Array to a String.\n * @param {Uint8Array} array that should be converted\n * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0)\n * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array)\n * @returns {String}\n */\n function uint8ArrayToString(arr, offset, limit) {\n offset = offset || 0;\n limit = limit || arr.length - offset;\n var str = '';\n\n for (var i = offset; i < offset + limit; i++) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n }\n /**\n * Converts a String to a Uint8Array.\n * @param {String} str string that should be converted\n * @returns {Uint8Array}\n */\n\n\n function stringToUint8Array(str) {\n var arr = new Uint8Array(str.length);\n\n for (var i = 0, j = str.length; i < j; i++) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n }\n /**\n * Identifies the boundary in a multipart/related message header.\n * @param {String} header message header\n * @returns {String} boundary\n */\n\n\n function identifyBoundary(header) {\n var parts = header.split('\\r\\n');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].substr(0, 2) === '--') {\n return parts[i];\n }\n }\n }\n /**\n * Checks whether a given token is contained by a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be present\n * @param {String} offset offset in message content from where search should start\n * @returns {Boolean} whether message contains token at offset\n */\n\n\n function containsToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (message + token.length > message.length) {\n return false;\n }\n\n var index = offset;\n\n for (var i = 0; i < token.length; i++) {\n if (token[i] !== message[index++]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Finds a given token in a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be found\n * @param {String} offset message body offset from where search should start\n * @returns {Boolean} whether message has a part at given offset or not\n */\n\n\n function findToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var messageLength = message.length;\n\n for (var i = offset; i < messageLength; i++) {\n // If the first value of the message matches\n // the first value of the token, check if\n // this is the full token.\n if (message[i] === token[0]) {\n if (containsToken(message, token, i)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n /**\n * @typedef {Object} MultipartEncodedData\n * @property {ArrayBuffer} data The encoded Multipart Data\n * @property {String} boundary The boundary used to divide pieces of the encoded data\n */\n\n /**\n * Encode one or more DICOM datasets into a single body so it can be\n * sent using the Multipart Content-Type.\n *\n * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers.\n * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated.\n * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it.\n */\n\n\n function multipartEncode(datasets) {\n var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid();\n var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'application/dicom';\n var contentTypeString = \"Content-Type: \".concat(contentType);\n var header = \"\\r\\n--\".concat(boundary, \"\\r\\n\").concat(contentTypeString, \"\\r\\n\\r\\n\");\n var footer = \"\\r\\n--\".concat(boundary, \"--\");\n var headerArray = stringToUint8Array(header);\n var footerArray = stringToUint8Array(footer);\n var headerLength = headerArray.length;\n var footerLength = footerArray.length;\n var length = 0; // Calculate the total length for the final array\n\n var contentArrays = datasets.map(function (datasetBuffer) {\n var contentArray = new Uint8Array(datasetBuffer);\n var contentLength = contentArray.length;\n length += headerLength + contentLength + footerLength;\n return contentArray;\n }); // Allocate the array\n\n var multipartArray = new Uint8Array(length); // Set the initial header\n\n multipartArray.set(headerArray, 0); // Write each dataset into the multipart array\n\n var position = 0;\n contentArrays.forEach(function (contentArray) {\n var contentLength = contentArray.length;\n multipartArray.set(headerArray, position);\n multipartArray.set(contentArray, position + headerLength);\n position += headerLength + contentArray.length;\n });\n multipartArray.set(footerArray, position);\n return {\n data: multipartArray.buffer,\n boundary: boundary\n };\n }\n /**\n * Decode a Multipart encoded ArrayBuffer and return the components as an Array.\n *\n * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message\n * @returns {Array} The content\n */\n\n function multipartDecode(response) {\n var message = new Uint8Array(response); // First look for the multipart mime header\n\n var separator = stringToUint8Array('\\r\\n\\r\\n');\n var headerIndex = findToken(message, separator);\n\n if (headerIndex === -1) {\n throw new Error('Response message has no multipart mime header');\n }\n\n var header = uint8ArrayToString(message, 0, headerIndex);\n var boundaryString = identifyBoundary(header);\n\n if (!boundaryString) {\n throw new Error('Header of response message does not specify boundary');\n }\n\n var boundary = stringToUint8Array(boundaryString);\n var boundaryLength = boundary.length;\n var components = [];\n var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries\n\n var boundaryIndex;\n\n while (boundaryIndex !== -1) {\n // Search for the next boundary in the message, starting\n // from the current offset position\n boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here.\n\n if (boundaryIndex === -1) {\n break;\n } // Extract data from response message, excluding \"\\r\\n\"\n\n\n var spacingLength = 2;\n var length = boundaryIndex - offset - spacingLength;\n var data = response.slice(offset, offset + length); // Add the data to the array of results\n\n components.push(data); // Move the offset to the end of the current section,\n // plus the identified boundary\n\n offset += length + spacingLength + boundaryLength;\n }\n\n return components;\n }\n /**\n * Create a random GUID\n *\n * @return {string}\n */\n\n\n function guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n function isEmptyObject(obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n }\n\n var getFirstResult = function getFirstResult(result) {\n return result[0];\n };\n\n var MIMETYPES = {\n DICOM: 'application/dicom',\n DICOM_JSON: 'application/dicom+json',\n OCTET_STREAM: 'application/octet-stream',\n JPEG: 'image/jpeg',\n PNG: 'image/png'\n };\n /**\n * Class for interacting with DICOMweb RESTful services.\n */\n\n var DICOMwebClient =\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {Object} options (choices: \"url\", \"username\", \"password\", \"headers\")\n */\n function DICOMwebClient(options) {\n _classCallCheck(this, DICOMwebClient);\n\n this.baseURL = options.url;\n\n if (!this.baseURL) {\n console.error('no DICOMweb base url provided - calls will fail');\n }\n\n if ('username' in options) {\n this.username = options.username;\n\n if (!('password' in options)) {\n console.error('no password provided to authenticate with DICOMweb service');\n }\n\n this.password = options.password;\n }\n\n if ('qidoURLPrefix' in options) {\n console.log(\"use URL prefix for QIDO-RS: \".concat(options.qidoURLPrefix));\n this.qidoURL = this.baseURL + '/' + options.qidoURLPrefix;\n } else {\n this.qidoURL = this.baseURL;\n }\n\n if ('wadoURLPrefix' in options) {\n console.log(\"use URL prefix for WADO-RS: \".concat(options.wadoURLPrefix));\n this.wadoURL = this.baseURL + '/' + options.wadoURLPrefix;\n } else {\n this.wadoURL = this.baseURL;\n }\n\n if ('stowURLPrefix' in options) {\n console.log(\"use URL prefix for STOW-RS: \".concat(options.stowURLPrefix));\n this.stowURL = this.baseURL + '/' + options.stowURLPrefix;\n } else {\n this.stowURL = this.baseURL;\n }\n\n this.headers = options.headers || {};\n }\n\n _createClass(DICOMwebClient, [{\n key: \"_httpRequest\",\n value: function _httpRequest(url, method, headers) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(method, url, true);\n\n if ('responseType' in options) {\n request.responseType = options.responseType;\n }\n\n if (_typeof(headers) === 'object') {\n Object.keys(headers).forEach(function (key) {\n request.setRequestHeader(key, headers[key]);\n });\n } // now add custom headers from the user\n // (e.g. access tokens)\n\n\n var userHeaders = _this.headers;\n Object.keys(userHeaders).forEach(function (key) {\n request.setRequestHeader(key, userHeaders[key]);\n }); // Event triggered when upload starts\n\n request.onloadstart = function (event) {//console.log('upload started: ', url)\n }; // Event triggered when upload ends\n\n\n request.onloadend = function (event) {//console.log('upload finished')\n }; // Handle response message\n\n\n request.onreadystatechange = function (event) {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.response);\n } else if (request.status === 202) {\n console.warn('some resources already existed: ', request);\n resolve(request.response);\n } else if (request.status === 204) {\n console.warn('empty response for request: ', request);\n resolve([]);\n } else {\n console.error('request failed: ', request);\n var error = new Error('request failed');\n error.request = request;\n error.response = request.response;\n error.status = request.status;\n console.error(error);\n console.error(error.response);\n reject(error);\n }\n }\n }; // Event triggered while download progresses\n\n\n if ('progressCallback' in options) {\n if (typeof options.progressCallback === 'function') {\n request.onprogress = options.progressCallback;\n }\n } // request.onprogress = function (event) {\n // const loaded = progress.loaded;\n // let total;\n // let percentComplete;\n // if (progress.lengthComputable) {\n // total = progress.total;\n // percentComplete = Math.round((loaded / total) * 100);\n // j\n // // console.log('download progress: ', percentComplete, ' %');\n // return(percentComplete);\n // };\n\n\n if ('data' in options) {\n request.send(options.data);\n } else {\n request.send();\n }\n });\n }\n }, {\n key: \"_httpGet\",\n value: function _httpGet(url, headers, responseType, progressCallback) {\n return this._httpRequest(url, 'get', headers, {\n responseType: responseType,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpGetApplicationJson\",\n value: function _httpGetApplicationJson(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var progressCallback = arguments.length > 2 ? arguments[2] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': MIMETYPES.DICOM_JSON\n };\n var responseType = 'json';\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpGetByMimeType\",\n value: function _httpGetByMimeType(url, mimeType, params) {\n var responseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'arraybuffer';\n var progressCallback = arguments.length > 4 ? arguments[4] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': \"multipart/related; type=\\\"\".concat(mimeType, \"\\\"\")\n };\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpPost\",\n value: function _httpPost(url, headers, data, progressCallback) {\n return this._httpRequest(url, 'post', headers, {\n data: data,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpPostApplicationJson\",\n value: function _httpPostApplicationJson(url, data, progressCallback) {\n var headers = {\n 'Content-Type': MIMETYPES.DICOM_JSON\n };\n return this._httpPost(url, headers, data, progressCallback);\n }\n /**\n * Searches for DICOM studies.\n * @param {Object} options options object\n * @return {Array} study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2)\n */\n\n }, {\n key: \"searchForStudies\",\n value: function searchForStudies() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.log('search for studies');\n var url = this.qidoURL + '/studies';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM study.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the study\n */\n\n }, {\n key: \"retrieveStudyMetadata\",\n value: function retrieveStudyMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of study metadata');\n }\n\n console.log(\"retrieve metadata of study \".concat(options.studyInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM series.\n * @param {Object} options options object\n * @returns {Array} series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a)\n */\n\n }, {\n key: \"searchForSeries\",\n value: function searchForSeries() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n console.log(\"search series of study \".concat(options.studyInstanceUID));\n url += '/studies/' + options.studyInstanceUID;\n }\n\n url += '/series';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM series.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the series\n */\n\n }, {\n key: \"retrieveSeriesMetadata\",\n value: function retrieveSeriesMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of series metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of series metadata');\n }\n\n console.log(\"retrieve metadata of series \".concat(options.seriesInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM instances.\n * @param {Object} options options object\n * @returns {Array} instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b)\n */\n\n }, {\n key: \"searchForInstances\",\n value: function searchForInstances() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n url += '/studies/' + options.studyInstanceUID;\n\n if ('seriesInstanceUID' in options) {\n console.log(\"search for instances of series \".concat(options.seriesInstanceUID));\n url += '/series/' + options.seriesInstanceUID;\n } else {\n console.log(\"search for instances of study \".concat(options.studyInstanceUID));\n }\n } else {\n console.log('search for instances');\n }\n\n url += '/instances';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /** Returns a WADO-URI URL for an instance\n * @param {Object} options options object\n * @returns {String} WADO-URI URL\n */\n\n }, {\n key: \"buildInstanceWadoURIUrl\",\n value: function buildInstanceWadoURIUrl(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required.');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required.');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required.');\n }\n\n var contentType = options.contentType || MIMETYPES.DICOM;\n var transferSyntax = options.transferSyntax || '*';\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(options.studyInstanceUID));\n params.push(\"seriesUID=\".concat(options.seriesInstanceUID));\n params.push(\"objectUID=\".concat(options.sopInstanceUID));\n params.push(\"contentType=\".concat(contentType));\n params.push(\"transferSyntax=\".concat(transferSyntax));\n var paramString = params.join('&');\n return \"\".concat(this.wadoURL, \"?\").concat(paramString);\n }\n /**\n * Retrieves metadata for a DICOM instance.\n *\n * @param {Object} options object\n * @returns {Object} metadata elements in DICOM JSON format\n */\n\n }, {\n key: \"retrieveInstanceMetadata\",\n value: function retrieveInstanceMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance metadata');\n }\n\n console.log(\"retrieve metadata of instance \".concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFrames\",\n value: function retrieveInstanceFrames(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of instance frames');\n }\n\n console.log(\"retrieve frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString();\n var mimeType = options.mimeType ? \"\".concat(options.mimeType) : MIMETYPES.OCTET_STREAM;\n return this._httpGetByMimeType(url, mimeType).then(multipartDecode);\n }\n /**\n * Retrieves rendered frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFramesRendered\",\n value: function retrieveInstanceFramesRendered(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of rendered instance frames');\n }\n\n console.log(\"retrieve rendered frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString() + '/rendered';\n var headers = {}; // The choice of an acceptable media type depends on a variety of things:\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/chapter_6.html#table_6.1.1-3\n\n if ('mimeType' in options) {\n headers['Accept'] = options.mimeType;\n }\n\n var responseType = 'arraybuffer';\n return this._httpGet(url, headers, responseType);\n }\n /**\n * Retrieves a DICOM instance.\n * @param {Object} options options object\n * @returns {Arraybuffer} DICOM Part 10 file as Arraybuffer\n */\n\n }, {\n key: \"retrieveInstance\",\n value: function retrieveInstance(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Retrieves a set of DICOM instance for a series.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveSeries\",\n value: function retrieveSeries(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves a set of DICOM instance for a study.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveStudy\",\n value: function retrieveStudy(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves and parses BulkData from a BulkDataURI location.\n * Decodes the multipart encoded data and returns the resulting data\n * as an ArrayBuffer.\n *\n * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html\n *\n * @param {Object} options options object\n * @return {Promise}\n */\n\n }, {\n key: \"retrieveBulkData\",\n value: function retrieveBulkData(options) {\n if (!('BulkDataURI' in options)) {\n throw new Error('BulkDataURI is required.');\n }\n\n return this._httpGetByMimeType(options.BulkDataURI, MIMETYPES.OCTET_STREAM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Stores DICOM instances.\n *\n * @param {Object} options options object\n */\n\n }, {\n key: \"storeInstances\",\n value: function storeInstances(options) {\n if (!('datasets' in options)) {\n throw new Error('datasets are required for storing');\n }\n\n var url = \"\".concat(this.stowURL, \"/studies\");\n\n if ('studyInstanceUID' in options) {\n url += \"/\".concat(options.studyInstanceUID);\n }\n\n var _multipartEncode = multipartEncode(options.datasets),\n data = _multipartEncode.data,\n boundary = _multipartEncode.boundary;\n\n var headers = {\n 'Content-Type': \"multipart/related; type=application/dicom; boundary=\".concat(boundary)\n };\n return this._httpPost(url, headers, data, options.progressCallback);\n }\n }], [{\n key: \"_parseQueryParameters\",\n value: function _parseQueryParameters() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var queryString = '?';\n Object.keys(params).forEach(function (key, index) {\n if (index !== 0) {\n queryString += '&';\n }\n\n queryString += key + '=' + encodeURIComponent(params[key]);\n });\n return queryString;\n }\n }]);\n\n return DICOMwebClient;\n }();\n\n function findSubstring(str, before, after) {\n var beforeIndex = str.lastIndexOf(before) + before.length;\n\n if (beforeIndex < before.length) {\n return null;\n }\n\n if (after !== undefined) {\n var afterIndex = str.lastIndexOf(after);\n\n if (afterIndex < 0) {\n return null;\n } else {\n return str.substring(beforeIndex, afterIndex);\n }\n }\n\n return str.substring(beforeIndex);\n }\n\n function getStudyInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"studies/\", \"/series\");\n\n if (!uid) {\n uid = findSubstring(uri, \"studies/\");\n }\n\n if (!uid) {\n console.debug('Study Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSeriesInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"series/\", \"/instances\");\n\n if (!uid) {\n uid = findSubstring(uri, \"series/\");\n }\n\n if (!uid) {\n console.debug('Series Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSOPInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"/instances/\", \"/frames\");\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\", \"/metadata\");\n }\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\");\n }\n\n if (!uid) {\n console.debug('SOP Instance UID could not be dertermined from URI\"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getFrameNumbersFromUri(uri) {\n var numbers = findSubstring(uri, \"/frames/\", \"/rendered\");\n\n if (!numbers) {\n numbers = findSubstring(uri, \"/frames/\");\n }\n\n if (numbers === undefined) {\n console.debug('Frames Numbers could not be dertermined from URI\"' + uri + '\"');\n }\n\n return numbers.split(',');\n }\n\n var version = '0.3.2';\n\n var api = {\n DICOMwebClient: DICOMwebClient\n };\n var utils = {\n getStudyInstanceUIDFromUri: getStudyInstanceUIDFromUri,\n getSeriesInstanceUIDFromUri: getSeriesInstanceUIDFromUri,\n getSOPInstanceUIDFromUri: getSOPInstanceUIDFromUri,\n getFrameNumbersFromUri: getFrameNumbersFromUri\n };\n\n exports.api = api;\n exports.utils = utils;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n});\n\nvar DICOMwebClient = unwrapExports(dicomwebClient);\n\n/**\n * Parses data returned from a QIDO search and transforms it into\n * an array of series that are present in the study\n *\n * @param server The DICOM server\n * @param studyInstanceUid\n * @param resultData\n * @returns {Array} Series List\n */\n\nfunction resultDataToStudyMetadata(server, studyInstanceUid, resultData) {\n var seriesMap = {};\n var seriesList = [];\n resultData.forEach(function (instance) {\n // Use seriesMap to cache series data\n // If the series instance UID has already been used to\n // process series data, continue using that series\n var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n var series = seriesMap[seriesInstanceUid]; // If no series data exists in the seriesMap cache variable,\n // process any available series data\n\n if (!series) {\n series = {\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getString(instance['00200011']),\n instances: []\n }; // Save this data in the seriesMap cache variable\n\n seriesMap[seriesInstanceUid] = series;\n seriesList.push(series);\n } // The uri for the dicomweb\n // NOTE: DCM4CHEE seems to return the data zipped\n // NOTE: Orthanc returns the data with multi-part mime which cornerstoneWADOImageLoader doesn't\n // know how to parse yet\n //var uri = DICOMWeb.getString(instance['00081190']);\n //uri = uri.replace('wado-rs', 'dicom-web');\n // manually create a WADO-URI from the UIDs\n // NOTE: Haven't been able to get Orthanc's WADO-URI to work yet - maybe its not configured?\n\n\n var sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n var uri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom'; // Add this instance to the current series\n\n series.instances.push({\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n sopInstanceUid: sopInstanceUid,\n uri: uri,\n instanceNumber: DICOMWeb.getString(instance['00200013'])\n });\n });\n return seriesList;\n}\n/**\n * Retrieve a set of instances using a QIDO call\n * @param server\n * @param studyInstanceUid\n * @throws ECONNREFUSED\n * @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}\n */\n\n\nfunction Instances(server, studyInstanceUid) {\n // TODO: Are we using this function anywhere?? Can we remove it?\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);\n var options = {\n studyInstanceUID: studyInstanceUid\n };\n return dicomWeb.searchForInstances(options).then(function (result) {\n return {\n wadoUriRoot: server.wadoUriRoot,\n studyInstanceUid: studyInstanceUid,\n seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)\n };\n });\n}\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$1(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString(new Date(filter.studyDateFrom));\n var dateTo = dateToString(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$1(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies);\n}\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar WADOProxy = {\n convertURL: function convertURL(url, server) {\n // TODO: Remove all WADOProxy stuff from this file\n return url;\n }\n};\n\nfunction parseFloatArray(obj) {\n var result = [];\n\n if (!obj) {\n return result;\n }\n\n var objs = obj.split('\\\\');\n\n for (var i = 0; i < objs.length; i++) {\n result.push(parseFloat(objs[i]));\n }\n\n return result;\n}\n/**\n * Simple cache schema for retrieved color palettes.\n */\n\n\nvar paletteColorCache = {\n count: 0,\n maxAge: 24 * 60 * 60 * 1000,\n // 24h cache?\n entries: {},\n isValidUID: function isValidUID(paletteUID) {\n return typeof paletteUID === 'string' && paletteUID.length > 0;\n },\n get: function get(paletteUID) {\n var entry = null;\n\n if (this.entries.hasOwnProperty(paletteUID)) {\n entry = this.entries[paletteUID]; // check how the entry is...\n\n if (Date.now() - entry.time > this.maxAge) {\n // entry is too old... remove entry.\n delete this.entries[paletteUID];\n this.count--;\n entry = null;\n }\n }\n\n return entry;\n },\n add: function add(entry) {\n if (this.isValidUID(entry.uid)) {\n var paletteUID = entry.uid;\n\n if (this.entries.hasOwnProperty(paletteUID) !== true) {\n this.count++; // increment cache entry count...\n }\n\n entry.time = Date.now();\n this.entries[paletteUID] = entry; // @TODO: Add logic to get rid of old entries and reduce memory usage...\n }\n }\n};\n/** Returns a WADO url for an instance\n *\n * @param studyInstanceUid\n * @param seriesInstanceUid\n * @param sopInstanceUid\n * @returns {string}\n */\n\nfunction buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(studyInstanceUid));\n params.push(\"seriesUID=\".concat(seriesInstanceUid));\n params.push(\"objectUID=\".concat(sopInstanceUid));\n params.push('contentType=application/dicom');\n params.push('transferSyntax=*');\n var paramString = params.join('&');\n return \"\".concat(server.wadoUriRoot, \"?\").concat(paramString);\n}\n\nfunction buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n return \"\".concat(server.wadoRoot, \"/studies/\").concat(studyInstanceUid, \"/series/\").concat(seriesInstanceUid, \"/instances/\").concat(sopInstanceUid);\n}\n\nfunction buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {\n var baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n frame = frame != null || 1;\n return \"\".concat(baseWadoRsUri, \"/frames/\").concat(frame);\n}\n/**\n * Parses the SourceImageSequence, if it exists, in order\n * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID\n * is used to refer to this image in any accompanying DICOM-SR documents.\n *\n * @param instance\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getSourceImageInstanceUid(instance) {\n // TODO= Parse the whole Source Image Sequence\n // This is a really poor workaround for now.\n // Later we should probably parse the whole sequence.\n var SourceImageSequence = instance['00082112'];\n\n if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) {\n return SourceImageSequence.Value[0]['00081155'].Value[0];\n }\n}\n\nfunction getPaletteColor(server, instance, tag, lutDescriptor) {\n var numLutEntries = lutDescriptor[0];\n var bits = lutDescriptor[2];\n var uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server); // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning\n // incorrect bulk data URIs\n\n if (server.wadoRoot.indexOf('https') === 0 && !uri.includes('https')) {\n uri = uri.replace('http', 'https');\n }\n\n var config = {\n url: server.wadoRoot,\n //BulkDataURI is absolute, so this isn't used\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var options = {\n BulkDataURI: uri\n };\n\n var readUInt16 = function readUInt16(byteArray, position) {\n return byteArray[position] + byteArray[position + 1] * 256;\n };\n\n var arrayBufferToPaletteColorLUT = function arrayBufferToPaletteColorLUT(arraybuffer) {\n var byteArray = new Uint8Array(arraybuffer);\n var lut = [];\n\n for (var i = 0; i < numLutEntries; i++) {\n if (bits === 16) {\n lut[i] = readUInt16(byteArray, i * 2);\n } else {\n lut[i] = byteArray[i];\n }\n }\n\n return lut;\n };\n\n return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT);\n}\n/**\n * Fetch palette colors for instances with \"PALETTE COLOR\" photometricInterpretation.\n *\n * @param server {Object} Current server;\n * @param instance {Object} The retrieved instance metadata;\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getPaletteColors(_x, _x2, _x3) {\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction _getPaletteColors() {\n _getPaletteColors = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(server, instance, lutDescriptor) {\n var paletteUID;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n paletteUID = DICOMWeb.getString(instance['00281199']);\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (paletteColorCache.isValidUID(paletteUID)) {\n var _entry = paletteColorCache.get(paletteUID);\n\n if (_entry) {\n return resolve(_entry);\n }\n } // no entry in cache... Fetch remote data.\n\n\n var r = getPaletteColor(server, instance, '00281201', lutDescriptor);\n var g = getPaletteColor(server, instance, '00281202', lutDescriptor);\n var b = getPaletteColor(server, instance, '00281203', lutDescriptor);\n var promises = [r, g, b];\n Promise.all(promises).then(function (args) {\n entry = {\n red: args[0],\n green: args[1],\n blue: args[2]\n }; // when paletteUID is present, the entry can be cached...\n\n entry.uid = paletteUID;\n paletteColorCache.add(entry);\n resolve(entry);\n });\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction getFrameIncrementPointer(element) {\n var frameIncrementPointerNames = {\n '00181065': 'frameTimeVector',\n '00181063': 'frameTime'\n };\n\n if (!element || !element.Value || !element.Value.length) {\n return;\n }\n\n var value = element.Value[0];\n return frameIncrementPointerNames[value];\n}\n\nfunction getRadiopharmaceuticalInfo(instance) {\n var modality = DICOMWeb.getString(instance['00080060']);\n\n if (modality !== 'PT') {\n return;\n }\n\n var radiopharmaceuticalInfo = instance['00540016'];\n\n if (radiopharmaceuticalInfo === undefined || !radiopharmaceuticalInfo.Value || !radiopharmaceuticalInfo.Value.length) {\n return;\n }\n\n var firstPetRadiopharmaceuticalInfo = radiopharmaceuticalInfo.Value[0];\n return {\n radiopharmaceuticalStartTime: DICOMWeb.getString(firstPetRadiopharmaceuticalInfo['00181072']),\n radionuclideTotalDose: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181074']),\n radionuclideHalfLife: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181075'])\n };\n}\n/**\n * Parses result data from a WADO search into Study MetaData\n * Returns an object populated with study metadata, including the\n * series list.\n *\n * @param server\n * @param studyInstanceUid\n * @param resultData\n * @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}\n */\n\n\nfunction resultDataToStudyMetadata$1(_x4, _x5, _x6) {\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n/**\n * Retrieve Study MetaData from a DICOM server using a WADO call\n *\n * @param server\n * @param studyInstanceUid\n * @returns {Promise}\n */\n\n\nfunction _resultDataToStudyMetadata() {\n _resultDataToStudyMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee3(server, studyInstanceUid, resultData) {\n var _studyData;\n\n var anInstance, studyData, seriesMap;\n return regenerator.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (resultData.length) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 2:\n anInstance = resultData[0];\n\n if (anInstance) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 5:\n studyData = (_studyData = {\n seriesList: [],\n studyInstanceUid: studyInstanceUid,\n wadoUriRoot: server.wadoUriRoot,\n patientName: DICOMWeb.getName(anInstance['00100010']),\n patientId: DICOMWeb.getString(anInstance['00100020']),\n patientAge: DICOMWeb.getNumber(anInstance['00101010']),\n patientSize: DICOMWeb.getNumber(anInstance['00101020']),\n patientWeight: DICOMWeb.getNumber(anInstance['00101030']),\n accessionNumber: DICOMWeb.getString(anInstance['00080050']),\n studyDate: DICOMWeb.getString(anInstance['00080020']),\n modalities: DICOMWeb.getString(anInstance['00080061']),\n studyDescription: DICOMWeb.getString(anInstance['00081030']),\n imageCount: DICOMWeb.getString(anInstance['00201208'])\n }, _defineProperty(_studyData, \"studyInstanceUid\", DICOMWeb.getString(anInstance['0020000D'])), _defineProperty(_studyData, \"institutionName\", DICOMWeb.getString(anInstance['00080080'])), _studyData);\n seriesMap = {};\n _context3.next = 9;\n return Promise.all(resultData.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2(instance) {\n var seriesInstanceUid, series, sopInstanceUid, wadouri, baseWadoRsUri, wadorsuri, instanceSummary, redPaletteColorLookupTableDescriptor, greenPaletteColorLookupTableDescriptor, bluePaletteColorLookupTableDescriptor, palettes;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n series = seriesMap[seriesInstanceUid];\n\n if (!series) {\n series = {\n seriesDescription: DICOMWeb.getString(instance['0008103E']),\n modality: DICOMWeb.getString(instance['00080060']),\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getNumber(instance['00200011']),\n seriesDate: DICOMWeb.getString(instance['00080021']),\n seriesTime: DICOMWeb.getString(instance['00080031']),\n instances: []\n };\n seriesMap[seriesInstanceUid] = series;\n studyData.seriesList.push(series);\n }\n\n sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n instanceSummary = {\n imageType: DICOMWeb.getString(instance['00080008']),\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n modality: DICOMWeb.getString(instance['00080060']),\n sopInstanceUid: sopInstanceUid,\n instanceNumber: DICOMWeb.getNumber(instance['00200013']),\n imagePositionPatient: DICOMWeb.getString(instance['00200032']),\n imageOrientationPatient: DICOMWeb.getString(instance['00200037']),\n frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),\n sliceLocation: DICOMWeb.getNumber(instance['00201041']),\n samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),\n photometricInterpretation: DICOMWeb.getString(instance['00280004']),\n planarConfiguration: DICOMWeb.getNumber(instance['00280006']),\n rows: DICOMWeb.getNumber(instance['00280010']),\n columns: DICOMWeb.getNumber(instance['00280011']),\n pixelSpacing: DICOMWeb.getString(instance['00280030']),\n pixelAspectRatio: DICOMWeb.getString(instance['00280034']),\n bitsAllocated: DICOMWeb.getNumber(instance['00280100']),\n bitsStored: DICOMWeb.getNumber(instance['00280101']),\n highBit: DICOMWeb.getNumber(instance['00280102']),\n pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),\n smallestPixelValue: DICOMWeb.getNumber(instance['00280106']),\n largestPixelValue: DICOMWeb.getNumber(instance['00280107']),\n windowCenter: DICOMWeb.getString(instance['00281050']),\n windowWidth: DICOMWeb.getString(instance['00281051']),\n rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),\n rescaleSlope: DICOMWeb.getNumber(instance['00281053']),\n rescaleType: DICOMWeb.getNumber(instance['00281054']),\n sourceImageInstanceUid: getSourceImageInstanceUid(instance),\n laterality: DICOMWeb.getString(instance['00200062']),\n viewPosition: DICOMWeb.getString(instance['00185101']),\n acquisitionDateTime: DICOMWeb.getString(instance['0008002A']),\n numberOfFrames: DICOMWeb.getNumber(instance['00280008']),\n frameIncrementPointer: getFrameIncrementPointer(instance['00280009']),\n frameTime: DICOMWeb.getNumber(instance['00181063']),\n frameTimeVector: parseFloatArray(DICOMWeb.getString(instance['00181065'])),\n sliceThickness: DICOMWeb.getNumber(instance['00180050']),\n lossyImageCompression: DICOMWeb.getString(instance['00282110']),\n derivationDescription: DICOMWeb.getString(instance['00282111']),\n lossyImageCompressionRatio: DICOMWeb.getString(instance['00282112']),\n lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),\n echoNumber: DICOMWeb.getString(instance['00180086']),\n contrastBolusAgent: DICOMWeb.getString(instance['00180010']),\n radiopharmaceuticalInfo: getRadiopharmaceuticalInfo(instance),\n baseWadoRsUri: baseWadoRsUri,\n wadouri: WADOProxy.convertURL(wadouri, server),\n wadorsuri: WADOProxy.convertURL(wadorsuri, server),\n imageRendering: server.imageRendering,\n thumbnailRendering: server.thumbnailRendering\n }; // Get additional information if the instance uses \"PALETTE COLOR\" photometric interpretation\n\n if (!(instanceSummary.photometricInterpretation === 'PALETTE COLOR')) {\n _context2.next = 16;\n break;\n }\n\n redPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281101']));\n greenPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281102']));\n bluePaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281103']));\n _context2.next = 14;\n return getPaletteColors(server, instance, redPaletteColorLookupTableDescriptor);\n\n case 14:\n palettes = _context2.sent;\n\n if (palettes) {\n if (palettes.uid) {\n instanceSummary.paletteColorLookupTableUID = palettes.uid;\n }\n\n instanceSummary.redPaletteColorLookupTableData = palettes.red;\n instanceSummary.greenPaletteColorLookupTableData = palettes.green;\n instanceSummary.bluePaletteColorLookupTableData = palettes.blue;\n instanceSummary.redPaletteColorLookupTableDescriptor = redPaletteColorLookupTableDescriptor;\n instanceSummary.greenPaletteColorLookupTableDescriptor = greenPaletteColorLookupTableDescriptor;\n instanceSummary.bluePaletteColorLookupTableDescriptor = bluePaletteColorLookupTableDescriptor;\n }\n\n case 16:\n series.instances.push(instanceSummary);\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x9) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n return _context3.abrupt(\"return\", studyData);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n\nfunction RetrieveMetadata(_x7, _x8) {\n return _RetrieveMetadata.apply(this, arguments);\n}\n\nfunction _RetrieveMetadata() {\n _RetrieveMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee4(server, studyInstanceUid) {\n var config, dicomWeb, options;\n return regenerator.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n config = {\n url: server.wadoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n options = {\n studyInstanceUID: studyInstanceUid\n };\n return _context4.abrupt(\"return\", dicomWeb.retrieveStudyMetadata(options).then(function (result) {\n return resultDataToStudyMetadata$1(server, studyInstanceUid, result);\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n return _RetrieveMetadata.apply(this, arguments);\n}\n\n// DICOMWeb instance, study, and metadata retrieval\nvar WADO = {\n RetrieveMetadata: RetrieveMetadata\n};\nvar QIDO = {\n Studies: Studies,\n Instances: Instances\n};\n\nvar log$1 = {\n error: console.error,\n warn: console.warn,\n info: console.log,\n debug: console.debug,\n time: console.time,\n timeEnd: console.timeEnd\n};\n\n// promises and prevent unnecessary subsequent calls to the server\n\nvar StudyMetaDataPromises = new Map();\n/**\n * Delete the cached study metadata retrieval promise to ensure that the browser will\n * re-retrieve the study metadata when it is next requested\n *\n * @param {String} studyInstanceUid The UID of the Study to be removed from cache\n *\n */\n\nfunction deleteStudyMetadataPromise(studyInstanceUid) {\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n StudyMetaDataPromises.delete(studyInstanceUid);\n }\n}\n/**\n * Retrieves study metadata using a server call\n *\n * @param {String} studyInstanceUid The UID of the Study to be retrieved\n * @returns {Promise} that will be resolved with the metadata or rejected with the error\n */\n\nfunction retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids) {\n // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all\n // and further requests for that metadata will always fail. On failure, we probably need to remove the\n // corresponding promise from the \"StudyMetaDataPromises\" map...\n // If the StudyMetaDataPromises cache already has a pending or resolved promise related to the\n // given studyInstanceUid, then that promise is returned\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n return StudyMetaDataPromises.get(studyInstanceUid);\n }\n\n var seriesKeys = Array.isArray(seriesInstanceUids) ? '|' + seriesInstanceUids.join('|') : '';\n var timingKey = \"retrieveStudyMetadata[\".concat(studyInstanceUid).concat(seriesKeys, \"]\");\n log$1.time(timingKey); // Create a promise to handle the data retrieval\n\n var promise = new Promise(function (resolve, reject) {\n // If no study metadata is in the cache variable, we need to retrieve it from\n // the server with a call.\n if (server.type === 'dicomWeb' && server.requestOptions.requestFromBrowser === true) {\n RetrieveMetadata(server, studyInstanceUid).then(function (data) {\n resolve(data);\n }, reject);\n }\n }); // Store the promise in cache\n\n StudyMetaDataPromises.set(studyInstanceUid, promise);\n return promise;\n}\n\n/**\n * Constants\n */\nvar STRING$1 = 'string';\nvar NUMBER$1 = 'number';\nvar FUNCTION = 'function';\nvar OBJECT = 'object';\n/**\n * Class Definition\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor and Instance Methods\n */\n function Metadata(data, uid) {\n _classCallCheck(this, Metadata);\n\n // Define the main \"_data\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n Object.defineProperty(this, '_data', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: data\n }); // Define the main \"_uid\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_uid', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: uid\n }); // Define \"_custom\" properties as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_custom', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n });\n }\n\n _createClass(Metadata, [{\n key: \"getData\",\n value: function getData() {\n return this._data;\n }\n }, {\n key: \"getDataProperty\",\n value: function getDataProperty(propertyName) {\n var propertyValue;\n var _data = this._data;\n\n if (_data instanceof Object || _typeof(_data) === OBJECT && _data !== null) {\n propertyValue = _data[propertyName];\n }\n\n return propertyValue;\n }\n /**\n * Get unique object ID\n */\n\n }, {\n key: \"getObjectID\",\n value: function getObjectID() {\n return this._uid;\n }\n /**\n * Set custom attribute value\n * @param {String} attribute Custom attribute name\n * @param {Any} value Custom attribute value\n */\n\n }, {\n key: \"setCustomAttribute\",\n value: function setCustomAttribute(attribute, value) {\n this._custom[attribute] = value;\n }\n /**\n * Get custom attribute value\n * @param {String} attribute Custom attribute name\n * @return {Any} Custom attribute value\n */\n\n }, {\n key: \"getCustomAttribute\",\n value: function getCustomAttribute(attribute) {\n return this._custom[attribute];\n }\n /**\n * Check if a custom attribute exists\n * @param {String} attribute Custom attribute name\n * @return {Boolean} True if custom attribute exists or false if not\n */\n\n }, {\n key: \"customAttributeExists\",\n value: function customAttributeExists(attribute) {\n return attribute in this._custom;\n }\n /**\n * Set custom attributes in batch mode.\n * @param {Object} attributeMap An object whose own properties will be used as custom attributes.\n */\n\n }, {\n key: \"setCustomAttributes\",\n value: function setCustomAttributes(attributeMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _custom = this._custom;\n\n for (var attribute in attributeMap) {\n if (_hasOwn.call(attributeMap, attribute)) {\n _custom[attribute] = attributeMap[attribute];\n }\n }\n }\n /**\n * Static Methods\n */\n\n }], [{\n key: \"isValidUID\",\n value: function isValidUID(uid) {\n return _typeof(uid) === STRING$1 && uid.length > 0;\n }\n }, {\n key: \"isValidIndex\",\n value: function isValidIndex(index) {\n return _typeof(index) === NUMBER$1 && index >= 0 && (index | 0) === index;\n }\n }, {\n key: \"isValidCallback\",\n value: function isValidCallback(callback) {\n return _typeof(callback) === FUNCTION;\n }\n }]);\n\n return Metadata;\n}();\n\n// @TODO: improve this object\n\n/**\n * Objects to be used to throw errors\n */\nvar OHIFError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(OHIFError, _Error);\n\n function OHIFError(message) {\n var _this;\n\n _classCallCheck(this, OHIFError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFError).call(this));\n _this.message = message;\n _this.stack = new Error().stack;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return OHIFError;\n}(_wrapNativeSuper(Error));\n\n/**\n * ATTENTION! This class should never depend on StudyMetadata or SeriesMetadata classes as this could\n * possibly cause circular dependency issues.\n */\n\nvar UNDEFINED = 'undefined';\nvar STRING$2 = 'string';\nvar STUDY_INSTANCE_UID = 'x0020000d';\nvar SERIES_INSTANCE_UID = 'x0020000e';\nvar InstanceMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(InstanceMetadata, _Metadata);\n\n function InstanceMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, InstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InstanceMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _sopInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _imageId: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(InstanceMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.sopInstanceUID\n * Same as this.getSOPInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * sopInstanceCollection.findBy({\n * sopInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'sopInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSOPInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the StudyInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this.getTagValue(STUDY_INSTANCE_UID, null);\n }\n /**\n * Returns the SeriesInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this.getTagValue(SERIES_INSTANCE_UID, null);\n }\n /**\n * Returns the SOPInstanceUID of the current instance.\n */\n\n }, {\n key: \"getSOPInstanceUID\",\n value: function getSOPInstanceUID() {\n return this._sopInstanceUID;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getStringValue\",\n value: function getStringValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n\n if (_typeof(value) !== STRING$2 && _typeof(value) !== UNDEFINED) {\n value = value.toString();\n }\n\n return InstanceMetadata.getIndexedValue(value, index, defaultValue);\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getFloatValue\",\n value: function getFloatValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseFloat(value) : value;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getIntValue\",\n value: function getIntValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseInt(value) : value;\n }\n /**\n * @deprecated Please use getTagValue instead.\n */\n\n }, {\n key: \"getRawValue\",\n value: function getRawValue(tagOrProperty, defaultValue) {\n return this.getTagValue(tagOrProperty, defaultValue);\n }\n /**\n * This function should be overriden by specialized classes in order to allow client libraries or viewers to take advantage of the Study Metadata API.\n */\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('InstanceMetadata::getTagValue is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Compares the current instance with another one.\n * @param {InstanceMetadata} instance An instance of the InstanceMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same instance.\n */\n\n }, {\n key: \"equals\",\n value: function equals(instance) {\n var self = this;\n return instance === self || instance instanceof InstanceMetadata && instance.getSOPInstanceUID() === self.getSOPInstanceUID();\n }\n /**\n * Check if the tagOrProperty exists\n * @param {String} tagOrProperty tag or property be checked\n * @return {Boolean} True if the tag or property exists or false if doesn't\n */\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::tagExists is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Get custom image id of a sop instance\n * @return {Any} sop instance image id\n */\n\n }, {\n key: \"getImageId\",\n value: function getImageId(frame) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::getImageId is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Static Methods\n */\n\n /**\n * Get an value based that can be index based. This function is called by all getters. See above functions.\n * - If value is a String and has indexes:\n * - If undefined index: returns an array of the split values.\n * - If defined index:\n * - If invalid: returns defaultValue\n * - If valid: returns the indexed value\n * - If value is not a String, returns default value.\n */\n\n }], [{\n key: \"getIndexedValue\",\n value: function getIndexedValue(value, index, defaultValue) {\n var result = defaultValue;\n\n if (_typeof(value) === STRING$2) {\n var hasIndexValues = value.indexOf('\\\\') !== -1;\n result = value;\n\n if (hasIndexValues) {\n var splitValues = value.split('\\\\');\n\n if (Metadata.isValidIndex(index)) {\n var indexedValue = splitValues[index];\n result = _typeof(indexedValue) !== STRING$2 ? defaultValue : indexedValue;\n } else {\n result = splitValues;\n }\n }\n }\n\n return result;\n }\n }]);\n\n return InstanceMetadata;\n}(Metadata);\n\nvar SeriesMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(SeriesMetadata, _Metadata);\n\n function SeriesMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, SeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SeriesMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _seriesInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _instances: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(SeriesMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.seriesInstanceUID\n * Same as this.getSeriesInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * seriesCollection.findBy({\n * seriesInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSeriesInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the SeriesInstanceUID of the current series.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n /**\n * Append an instance to the current series.\n * @param {InstanceMetadata} instance The instance to be added to the current series.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addInstance\",\n value: function addInstance(instance) {\n var result = false;\n\n if (instance instanceof InstanceMetadata && this.getInstanceByUID(instance.getSOPInstanceUID()) === void 0) {\n this._instances.push(instance);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Get the first instance of the current series retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var found = this.getInstanceByIndex(0);\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n\n return instance;\n }\n /**\n * Find an instance by index.\n * @param {number} index An integer representing a list index.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByIndex\",\n value: function getInstanceByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._instances[index];\n }\n\n return found;\n }\n /**\n * Find an instance by SOPInstanceUID.\n * @param {string} uid An UID string.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByUID\",\n value: function getInstanceByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._instances.find(function (instance) {\n return instance.getSOPInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of instances within the current series.\n * @returns {number} The number of instances in the current series.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._instances.length;\n }\n /**\n * Invokes the supplied callback for each instance in the current series passing\n * two arguments: instance (an InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance in the series.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachInstance\",\n value: function forEachInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._instances.forEach(function (instance, index) {\n callback.call(null, instance, index);\n });\n }\n }\n /**\n * Find the index of an instance inside the series.\n * @param {InstanceMetadata} instance An instance of the SeriesMetadata class.\n * @returns {number} The index of the instance inside the series or -1 if not found.\n */\n\n }, {\n key: \"indexOfInstance\",\n value: function indexOfInstance(instance) {\n return this._instances.indexOf(instance);\n }\n /**\n * Search the associated instances using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._instances.find(function (instance, index) {\n return callback.call(null, instance, index);\n });\n }\n }\n /**\n * Compares the current series with another one.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same series.\n */\n\n }, {\n key: \"equals\",\n value: function equals(series) {\n var self = this;\n return series === self || series instanceof SeriesMetadata && series.getSeriesInstanceUID() === self.getSeriesInstanceUID();\n }\n }]);\n\n return SeriesMetadata;\n}(Metadata);\n\n/**\n * Create a random GUID\n *\n * @return {string}\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nvar OBJECT$1 = 'object';\n/**\n * This class defines an ImageSet object which will be used across the viewer. This object represents\n * a list of images that are associated by any arbitrary criteria being thus content agnostic. Besides the\n * main attributes (images and uid) it allows additional attributes to be appended to it (currently\n * indiscriminately, but this should be changed).\n */\n\nvar ImageSet =\n/*#__PURE__*/\nfunction () {\n function ImageSet(images) {\n _classCallCheck(this, ImageSet);\n\n if (Array.isArray(images) !== true) {\n throw new OHIFError('ImageSet expects an array of images');\n } // @property \"images\"\n\n\n Object.defineProperty(this, 'images', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: images\n }); // @property \"uid\"\n\n Object.defineProperty(this, 'uid', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: guid() // Unique ID of the instance\n\n });\n }\n\n _createClass(ImageSet, [{\n key: \"getUID\",\n value: function getUID() {\n return this.uid;\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this[attribute] = value;\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this[attribute];\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n if (_typeof(attributes) === OBJECT$1 && attributes !== null) {\n var imageSet = this,\n hasOwn = Object.prototype.hasOwnProperty;\n\n for (var attribute in attributes) {\n if (hasOwn.call(attributes, attribute)) {\n imageSet[attribute] = attributes[attribute];\n }\n }\n }\n }\n }, {\n key: \"getImage\",\n value: function getImage(index) {\n return this.images[index];\n }\n }, {\n key: \"sortBy\",\n value: function sortBy(sortingCallback) {\n return this.images.sort(sortingCallback);\n }\n }]);\n\n return ImageSet;\n}();\n\nvar StudyMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(StudyMetadata, _Metadata);\n\n function StudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, StudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _studyInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _displaySets: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstSeries: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(StudyMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.studyInstanceUID\n * Same as this.getStudyInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * studyCollection.findBy({\n * studyInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'studyInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getStudyInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Getter for displaySets\n * @return {Array} Array of display set object\n */\n\n }, {\n key: \"getDisplaySets\",\n value: function getDisplaySets() {\n return this._displaySets.slice();\n }\n /**\n * Set display sets\n * @param {Array} displaySets Array of display sets (ImageSet[])\n */\n\n }, {\n key: \"setDisplaySets\",\n value: function setDisplaySets(displaySets) {\n var _this2 = this;\n\n displaySets.forEach(function (displaySet) {\n return _this2.addDisplaySet(displaySet);\n });\n }\n /**\n * Add a single display set to the list\n * @param {Object} displaySet Display set object\n * @returns {boolean} True on success, false on failure.\n */\n\n }, {\n key: \"addDisplaySet\",\n value: function addDisplaySet(displaySet) {\n if (displaySet instanceof ImageSet) {\n this._displaySets.push(displaySet);\n\n return true;\n }\n\n return false;\n }\n /**\n * Invokes the supplied callback for each display set in the current study passing\n * two arguments: display set (a ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachDisplaySet\",\n value: function forEachDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._displaySets.forEach(function (displaySet, index) {\n callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Search the associated display sets using the supplied callback as criteria. The callback is passed\n * two arguments: display set (an ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"findDisplaySet\",\n value: function findDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._displaySets.find(function (displaySet, index) {\n return callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Retrieve the number of display sets within the current study.\n * @returns {number} The number of display sets in the current study.\n */\n\n }, {\n key: \"getDisplaySetCount\",\n value: function getDisplaySetCount() {\n return this._displaySets.length;\n }\n /**\n * Returns the StudyInstanceUID of the current study.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this._studyInstanceUID;\n }\n /**\n * Getter for series\n * @return {Array} Array of SeriesMetadata object\n */\n\n }, {\n key: \"getSeries\",\n value: function getSeries() {\n return this._series.slice();\n }\n /**\n * Append a series to the current study.\n * @param {SeriesMetadata} series The series to be added to the current study.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addSeries\",\n value: function addSeries(series) {\n var result = false;\n\n if (series instanceof SeriesMetadata && this.getSeriesByUID(series.getSeriesInstanceUID()) === void 0) {\n this._series.push(series);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Find a series by index.\n * @param {number} index An integer representing a list index.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByIndex\",\n value: function getSeriesByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._series[index];\n }\n\n return found;\n }\n /**\n * Find a series by SeriesInstanceUID.\n * @param {string} uid An UID string.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByUID\",\n value: function getSeriesByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._series.find(function (series) {\n return series.getSeriesInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of series within the current study.\n * @returns {number} The number of series in the current study.\n */\n\n }, {\n key: \"getSeriesCount\",\n value: function getSeriesCount() {\n return this._series.length;\n }\n /**\n * Retrieve the number of instances within the current study.\n * @returns {number} The number of instances in the current study.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._series.reduce(function (sum, series) {\n return sum + series.getInstanceCount();\n }, 0);\n }\n /**\n * Invokes the supplied callback for each series in the current study passing\n * two arguments: series (a SeriesMetadata instance) and index (the integer\n * index of the series within the current study)\n * @param {function} callback The callback function which will be invoked for each series instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachSeries\",\n value: function forEachSeries(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._series.forEach(function (series, index) {\n callback.call(null, series, index);\n });\n }\n }\n /**\n * Find the index of a series inside the study.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {number} The index of the series inside the study or -1 if not found.\n */\n\n }, {\n key: \"indexOfSeries\",\n value: function indexOfSeries(series) {\n return this._series.indexOf(series);\n }\n /**\n * It sorts the series based on display sets order. Each series must be an instance\n * of SeriesMetadata and each display sets must be an instance of ImageSet.\n * Useful example of usage:\n * Study data provided by backend does not sort series at all and client-side\n * needs series sorted by the same criteria used for sorting display sets.\n */\n\n }, {\n key: \"sortSeriesByDisplaySets\",\n value: function sortSeriesByDisplaySets() {\n var _this3 = this;\n\n // Object for mapping display sets' index by seriesInstanceUid\n var displaySetsMapping = {}; // Loop through each display set to create the mapping\n\n this.forEachDisplaySet(function (displaySet, index) {\n if (!(displaySet instanceof ImageSet)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets display set at index \".concat(index, \" is not an instance of ImageSet\"));\n } // In case of multiframe studies, just get the first index occurence\n\n\n if (displaySetsMapping[displaySet.seriesInstanceUid] === void 0) {\n displaySetsMapping[displaySet.seriesInstanceUid] = index;\n }\n }); // Clone of actual series\n\n var actualSeries = this.getSeries();\n actualSeries.forEach(function (series, index) {\n if (!(series instanceof SeriesMetadata)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets series at index \".concat(index, \" is not an instance of SeriesMetadata\"));\n } // Get the new series index\n\n\n var seriesIndex = displaySetsMapping[series.getSeriesInstanceUID()]; // Update the series object with the new series position\n\n _this3._series[seriesIndex] = series;\n });\n }\n /**\n * Compares the current study instance with another one.\n * @param {StudyMetadata} study An instance of the StudyMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same study.\n */\n\n }, {\n key: \"equals\",\n value: function equals(study) {\n var self = this;\n return study === self || study instanceof StudyMetadata && study.getStudyInstanceUID() === self.getStudyInstanceUID();\n }\n /**\n * Get the first series of the current study retaining a consistent result across multiple calls.\n * @return {SeriesMetadata} An instance of the SeriesMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstSeries\",\n value: function getFirstSeries() {\n var series = this._firstSeries;\n\n if (!(series instanceof SeriesMetadata)) {\n series = null;\n var found = this.getSeriesByIndex(0);\n\n if (found instanceof SeriesMetadata) {\n this._firstSeries = found;\n series = found;\n }\n }\n\n return series;\n }\n /**\n * Get the first instance of the current study retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var firstSeries = this.getFirstSeries();\n\n if (firstSeries instanceof SeriesMetadata) {\n var found = firstSeries.getFirstInstance();\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n }\n\n return instance;\n }\n /**\n * Search the associated series to find an specific instance using the supplied callback as criteria.\n * The callback is passed two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance instance.\n * @returns {Object} Result object containing series (SeriesMetadata) and instance (InstanceMetadata)\n * objects or an empty object if not found.\n */\n\n }, {\n key: \"findSeriesAndInstanceByInstance\",\n value: function findSeriesAndInstanceByInstance(callback) {\n var result;\n\n if (Metadata.isValidCallback(callback)) {\n var instance;\n\n var series = this._series.find(function (series) {\n instance = series.findInstance(callback);\n return instance instanceof InstanceMetadata;\n }); // No series found\n\n\n if (series instanceof SeriesMetadata) {\n result = {\n series: series,\n instance: instance\n };\n }\n }\n\n return result || {};\n }\n /**\n * Find series by instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {SeriesMetadata|undefined} If a series is found based on callback criteria it\n * returns a SeriesMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findSeriesByInstance\",\n value: function findSeriesByInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.series;\n }\n /**\n * Find an instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.instance;\n }\n }]);\n\n return StudyMetadata;\n}(Metadata);\n\nvar WadoRsMetaDataBuilder =\n/*#__PURE__*/\nfunction () {\n function WadoRsMetaDataBuilder() {\n _classCallCheck(this, WadoRsMetaDataBuilder);\n\n this.tags = {};\n }\n\n _createClass(WadoRsMetaDataBuilder, [{\n key: \"addTag\",\n value: function addTag(tag, value, multi) {\n this.tags[tag] = {\n tag: tag,\n value: value,\n multi: multi\n };\n return this;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var _this = this;\n\n var json = {};\n var keys = Object.keys(this.tags);\n keys.forEach(function (key) {\n if (!_this.tags.hasOwnProperty(key)) {\n return;\n }\n\n var tag = _this.tags[key];\n var multi = !!tag.multi;\n var value = tag.value;\n\n if (value == null || value.length === 1 && value[0] == null) {\n return;\n }\n\n if (typeof value === 'string' && multi) {\n value = value.split('\\\\');\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n json[key] = {\n Value: value\n };\n });\n return json;\n }\n }]);\n\n return WadoRsMetaDataBuilder;\n}();\n\nfunction getWADORSImageUrl(instance, frame) {\n var wadorsuri = instance.wadorsuri;\n\n if (!wadorsuri) {\n return;\n } // We need to sum 1 because WADO-RS frame number is 1-based\n\n\n frame = (frame || 0) + 1; // Replaces /frame/1 by /frame/{frame}\n\n wadorsuri = wadorsuri.replace(/(%2Fframes%2F)(\\d+)/, \"$1\".concat(frame));\n return wadorsuri;\n}\n/**\n * Obtain an imageId for Cornerstone based on the WADO-RS scheme\n *\n * @param {object} instanceMetada metadata object (InstanceMetadata)\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getWADORSImageId(instance, frame) {\n var uri = getWADORSImageUrl(instance, frame);\n\n if (!uri) {\n return;\n }\n\n return \"wadors:\".concat(uri);\n}\n\nfunction getRadiopharmaceuticalInfoMetaData(instance) {\n var radiopharmaceuticalInfo = instance.radiopharmaceuticalInfo;\n\n if (instance.modality !== 'PT' || !radiopharmaceuticalInfo) {\n return;\n }\n\n return new WadoRsMetaDataBuilder().addTag('00181072', radiopharmaceuticalInfo.radiopharmaceuticalStartTime).addTag('00181074', radiopharmaceuticalInfo.radionuclideTotalDose).addTag('00181075', radiopharmaceuticalInfo.radionuclideHalfLife).toJSON();\n}\n\nvar getWadoRsInstanceMetaData = function getWadoRsInstanceMetaData(study, series, instance) {\n return new WadoRsMetaDataBuilder().addTag('00080016', instance.sopClassUid).addTag('00080018', instance.sopInstanceUid).addTag('00080021', series.seriesDate).addTag('00080031', series.seriesTime).addTag('00080060', instance.modality).addTag('00101010', study.patientAge).addTag('00101020', study.patientSize).addTag('00101030', study.patientWeight).addTag('00180050', instance.sliceThickness).addTag('0020000e', series.seriesInstanceUid).addTag('00200011', series.seriesNumber).addTag('0020000d', study.studyInstanceUid).addTag('00200013', instance.instanceNumber).addTag('00200032', instance.imagePositionPatient, true).addTag('00200037', instance.imageOrientationPatient, true).addTag('00200052', instance.frameOfReferenceUID).addTag('00201041', instance.sliceLocation).addTag('00280002', instance.samplesPerPixel).addTag('00280004', instance.photometricInterpretation).addTag('00280006', instance.planarConfiguration).addTag('00280010', instance.rows).addTag('00280011', instance.columns).addTag('00280030', instance.pixelSpacing, true).addTag('00280034', instance.pixelAspectRatio, true).addTag('00280100', instance.bitsAllocated).addTag('00280101', instance.bitsStored).addTag('00280102', instance.highBit).addTag('00280103', instance.pixelRepresentation).addTag('00280106', instance.smallestPixelValue).addTag('00280107', instance.largestPixelValue).addTag('00281050', instance.windowCenter, true).addTag('00281051', instance.windowWidth, true).addTag('00281052', instance.rescaleIntercept).addTag('00281053', instance.rescaleSlope).addTag('00281054', instance.rescaleType).addTag('00281101', instance.redPaletteColorLookupTableDescriptor).addTag('00281102', instance.greenPaletteColorLookupTableDescriptor).addTag('00281103', instance.bluePaletteColorLookupTableDescriptor).addTag('00281201', instance.redPaletteColorLookupTableData).addTag('00281202', instance.greenPaletteColorLookupTableData).addTag('00281203', instance.bluePaletteColorLookupTableData).addTag('00540016', getRadiopharmaceuticalInfoMetaData(instance)).toJSON();\n};\n\nfunction updateMetaDataManager(study) {\n study.seriesList.forEach(function (series) {\n series.instances.forEach(function (instance) {\n // Cache just images that are going to be loaded via WADO-RS\n if (instance.imageRendering !== 'wadors' && instance.thumbnailRendering !== 'wadors') {\n return;\n }\n\n var metaData = getWadoRsInstanceMetaData(study, series, instance);\n var numberOfFrames = instance.numberOfFrames || 1; // We can share the same metaData with all frames because it doesn't have\n // any frame specific data, such as frameNumber, pixelData, offset, etc.\n // WADO-RS frame number is 1-based\n\n for (var frameNumber = 0; frameNumber < numberOfFrames; frameNumber++) {\n var imageId = getWADORSImageId(instance, frameNumber); // TODO Drop dependency on this\n\n external.cornerstoneWADOImageLoader.wadors.metaDataManager.add(imageId, metaData);\n }\n });\n });\n}\n\n/**\n * Retrieves metaData for multiple studies at once.\n *\n * This function calls retrieveStudyMetadata several times, asynchronously,\n * and waits for all of the results to be returned.\n *\n * @param studyInstanceUids The UIDs of the Studies to be retrieved\n * @return Promise\n */\n\nfunction retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids) {\n // Create an empty array to store the Promises for each metaData retrieval call\n var promises = []; // Loop through the array of studyInstanceUids\n\n studyInstanceUids.forEach(function (studyInstanceUid) {\n // Send the call and resolve or reject the related promise based on its outcome\n var promise = retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids); // Add the current promise to the array of promises\n\n promises.push(promise);\n }); // When all of the promises are complete, this callback runs\n\n var promise = Promise.all(promises); // Warn the error on console if some retrieval failed\n\n promise.catch(function (error) {\n return log$1.warn(error);\n });\n return promise;\n}\n\n/**\n * Overridable namespace to allow getting study boxes data externally.\n *\n * The function must handle the first parameter as a studyInformation object containing at least the\n * studyInstanceUid attribute.\n *\n * Shall return a promise that will be resolved with an object containing those attributes:\n * - studyInstanceUid {String}: copy of studyInformation.studyInstanceUid\n * - modalities {String}: 2 uppercase letters for each modality split by any non-alphabetical char(s)\n * - studyDate {String}: date formatted as YYYYMMDD\n * - studyDescription {String}: study description string\n */\n// TODO: What is this for?\nvar getStudyBoxData = false;\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString$1(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$2(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString$1(new Date(filter.studyDateFrom));\n var dateTo = dateToString$1(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies$1(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies$1(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$2(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies$1);\n}\n\nvar studySearchPromises = new Map();\n/**\n * Search for studies information by the given filter\n *\n * @param {Object} filter Filter that will be used on search\n * @returns {Promise} resolved with an array of studies information or rejected with an error\n */\n\nfunction searchStudies(server, filter) {\n var promiseKey = JSON.stringify(filter);\n\n if (studySearchPromises.has(promiseKey)) {\n return studySearchPromises.get(promiseKey);\n } else {\n var promise = Studies$1(server, filter);\n studySearchPromises.set(promiseKey, promise);\n return promise;\n }\n}\n\nvar studies = {\n services: {\n QIDO: QIDO,\n WADO: WADO\n },\n loadingDict: {},\n retrieveStudyMetadata: retrieveStudyMetadata,\n deleteStudyMetadataPromise: deleteStudyMetadataPromise,\n retrieveStudiesMetadata: retrieveStudiesMetadata,\n getStudyBoxData: getStudyBoxData,\n searchStudies: searchStudies\n};\n\nfunction isFunction(subject) {\n return typeof subject === 'function';\n}\n\nvar CommandsManager =\n/*#__PURE__*/\nfunction () {\n function CommandsManager() {\n _classCallCheck(this, CommandsManager);\n\n this.contexts = {}; // Enable reactivity by storing the last executed command\n //this.last = new ReactiveVar('');\n }\n\n _createClass(CommandsManager, [{\n key: \"getContext\",\n value: function getContext(contextName) {\n var context = this.contexts[contextName];\n\n if (!context) {\n return log$1.warn(\"No context found with name \\\"\".concat(contextName, \"\\\"\"));\n }\n\n return context;\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n var contextName = OHIF.context.get();\n\n if (!contextName) {\n return log$1.warn('There is no selected context');\n }\n\n return this.getContext(contextName);\n }\n }, {\n key: \"createContext\",\n value: function createContext(contextName) {\n if (!contextName) return;\n\n if (this.contexts[contextName]) {\n return this.clear(contextName);\n }\n\n this.contexts[contextName] = {};\n }\n }, {\n key: \"set\",\n value: function set(contextName, definitions) {\n var extend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (_typeof(definitions) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n\n if (!extend) {\n this.clear(contextName);\n }\n\n Object.keys(definitions).forEach(function (command) {\n return context[command] = definitions[command];\n });\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, definition) {\n if (_typeof(definition) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n context[command] = definition;\n }\n }, {\n key: \"setDisabledFunction\",\n value: function setDisabledFunction(contextName, command, func) {\n if (!command || typeof func !== 'function') return;\n var context = this.getContext(contextName);\n if (!context) return;\n var definition = context[command];\n\n if (!definition) {\n return log$1.warn(\"Trying to set a disabled function to a command \\\"\".concat(command, \"\\\" that was not yet defined\"));\n }\n\n definition.disabled = func;\n }\n }, {\n key: \"clear\",\n value: function clear(contextName) {\n if (!contextName) return;\n this.contexts[contextName] = {};\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition(command) {\n var context = this.getCurrentContext();\n if (!context) return;\n return context[command];\n }\n }, {\n key: \"isDisabled\",\n value: function isDisabled(command) {\n var definition = this.getDefinition(command);\n if (!definition) return false;\n var disabled = definition.disabled;\n if (isFunction(disabled) && disabled()) return true;\n if (!isFunction(disabled) && disabled) return true;\n return false;\n }\n }, {\n key: \"run\",\n value: function run(command) {\n var definition = this.getDefinition(command);\n\n if (!definition) {\n return log$1.warn(\"Command \\\"\".concat(command, \"\\\" not found in current context\"));\n }\n\n var action = definition.action,\n params = definition.params;\n if (this.isDisabled(command)) return;\n\n if (typeof action !== 'function') {\n return log$1.warn(\"No action was defined for command \\\"\".concat(command, \"\\\"\"));\n } else {\n var result = action(params);\n /*if (this.last.get() === command) {\n this.last.dep.changed();\n } else {\n this.last.set(command);\n }*/\n\n return result;\n }\n }\n }]);\n\n return CommandsManager;\n}();\n\nvar commands = new CommandsManager(); // Export relevant objects\n\nvar HotkeysContext =\n/*#__PURE__*/\nfunction () {\n function HotkeysContext(name, definitions, enabled) {\n _classCallCheck(this, HotkeysContext);\n\n this.name = name;\n this.definitions = Object.assign({}, definitions);\n this.enabled = enabled;\n }\n\n _createClass(HotkeysContext, [{\n key: \"extend\",\n value: function extend() {\n var _this = this;\n\n var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_typeof(definitions) !== 'object') return;\n this.definitions = Object.assign({}, definitions);\n Object.keys(definitions).forEach(function (command) {\n var hotkey = definitions[command];\n\n _this.unregister(command);\n\n if (hotkey) {\n _this.register(command, hotkey);\n }\n\n _this.definitions[command] = hotkey;\n });\n }\n }, {\n key: \"register\",\n value: function register(command, hotkey) {\n var _this2 = this;\n\n if (!hotkey) {\n return;\n }\n\n if (!command) {\n return log$1.warn(\"No command was defined for hotkey \\\"\".concat(hotkey, \"\\\"\"));\n }\n\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n var bind = function bind(hotkey) {\n return $(document).bind(bindingKey, hotkey, function (event) {\n if (!_this2.enabled.get()) return;\n OHIF.commands.run(command);\n event.preventDefault();\n });\n };\n\n if (hotkey instanceof Array) {\n hotkey.forEach(function (hotkey) {\n return bind(hotkey);\n });\n } else {\n bind(hotkey);\n }\n }\n }, {\n key: \"unregister\",\n value: function unregister(command) {\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n if (this.definitions[command]) {\n $(document).unbind(bindingKey);\n delete this.definitions[command];\n }\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n var _this3 = this;\n\n Object.keys(this.definitions).forEach(function (command) {\n var hotkey = _this3.definitions[command];\n\n _this3.register(command, hotkey);\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n $(document).unbind(\"keydown.hotkey.\".concat(this.name));\n }\n }]);\n\n return HotkeysContext;\n}();\n\nvar HotkeysManager =\n/*#__PURE__*/\nfunction () {\n function HotkeysManager() {\n _classCallCheck(this, HotkeysManager);\n\n this.contexts = {};\n this.defaults = {};\n this.currentContextName = null;\n this.enabled = true;\n this.retrieveFunction = null;\n this.storeFunction = null;\n }\n\n _createClass(HotkeysManager, [{\n key: \"setRetrieveFunction\",\n value: function setRetrieveFunction(retrieveFunction) {\n this.retrieveFunction = retrieveFunction;\n }\n }, {\n key: \"setStoreFunction\",\n value: function setStoreFunction(storeFunction) {\n this.storeFunction = storeFunction;\n }\n }, {\n key: \"store\",\n value: function store(contextName, definitions) {\n var _this = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this.storeFunction) {\n _this.storeFunction.call(_this, storageKey, definitions).then(resolve).catch(reject); //} else if (OHIF.user.userLoggedIn()) {\n // OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);\n\n } else {\n var definitionsJSON = JSON.stringify(definitions);\n localStorage.setItem(storageKey, definitionsJSON);\n resolve();\n }\n });\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(contextName) {\n var _this2 = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this2.retrieveFunction) {\n _this2.retrieveFunction(contextName).then(resolve).catch(reject);\n } else if (OHIF.user.userLoggedIn()) {\n try {\n resolve(OHIF.user.getData(storageKey));\n } catch (error) {\n reject(error);\n }\n } else {\n var definitionsJSON = localStorage.getItem(storageKey) || '';\n var definitions = JSON.parse(definitionsJSON) || undefined;\n resolve(definitions);\n }\n });\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled.set(false);\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.enabled.set(true);\n }\n }, {\n key: \"getContext\",\n value: function getContext(contextName) {\n return this.contexts[contextName];\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n return this.getContext(this.currentContextName);\n }\n }, {\n key: \"load\",\n value: function load(contextName) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var context = _this3.getContext(contextName);\n\n if (!context) return reject();\n\n _this3.retrieve(contextName).then(function (defs) {\n var definitions = defs || _this3.defaults[contextName];\n\n if (!definitions) {\n _this3.changeObserver.changed();\n\n return reject();\n }\n\n context.destroy();\n context.definitions = definitions;\n context.initialize();\n\n _this3.changeObserver.changed();\n\n resolve(definitions);\n }).catch(reject);\n });\n }\n }, {\n key: \"set\",\n value: function set(contextName, contextDefinitions) {\n var isDefaultDefinitions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var enabled = this.enabled;\n var context = new HotkeysContext(contextName, contextDefinitions, enabled);\n var currentContext = this.getCurrentContext();\n\n if (currentContext && currentContext.name === contextName) {\n currentContext.destroy();\n context.initialize();\n }\n\n this.contexts[contextName] = context;\n\n if (isDefaultDefinitions) {\n this.defaults[contextName] = contextDefinitions;\n }\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, hotkey) {\n if (!command || !hotkey) return;\n var context = this.getContext(contextName);\n\n if (!context) {\n this.set(contextName, {});\n }\n\n context.register(command, hotkey);\n }\n }, {\n key: \"unsetContext\",\n value: function unsetContext(contextName) {\n if (contextName === this.currentContextName) {\n this.getCurrentContext().destroy();\n }\n\n delete this.contexts[contextName];\n delete this.defaults[contextName];\n }\n }, {\n key: \"resetDefaults\",\n value: function resetDefaults(contextName) {\n var context = this.getContext(contextName);\n var definitions = this.defaults[contextName];\n if (!context || !definitions) return;\n context.extend(definitions);\n return this.store(contextName, definitions);\n }\n }, {\n key: \"switchToContext\",\n value: function switchToContext(contextName) {\n var currentContext = this.getCurrentContext();\n\n if (currentContext) {\n currentContext.destroy();\n }\n\n var newContext = this.contexts[contextName];\n if (!newContext) return;\n this.currentContextName = contextName;\n newContext.initialize();\n this.load(contextName).catch(function () {});\n }\n }]);\n\n return HotkeysManager;\n}();\n\n//import 'jquery.hotkeys';\n// Create hotkeys namespace using a HotkeysManager class instance\n\nvar hotkeys = new HotkeysManager(); // Export relevant objects\n\nvar FUNCTION$1 = 'function';\nvar STRING$3 = 'string';\nvar WILDCARD = '*'; // \"*\" is a special name which means \"all children\".\n\nvar SEPARATOR = '.';\n/**\n * Main Namespace Component Class\n */\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n function Node() {\n _classCallCheck(this, Node);\n\n this.value = 0;\n this.children = {};\n this.handlers = {};\n }\n\n _createClass(Node, [{\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return _typeof(path) === STRING$3 ? path.split(SEPARATOR) : null;\n }\n }, {\n key: \"getNodeUpToIndex\",\n value: function getNodeUpToIndex(path, index) {\n var node = this;\n\n for (var i = 0; i < index; ++i) {\n var item = path[i];\n\n if (node.children.hasOwnProperty(item)) {\n node = node.children[item];\n } else {\n node = null;\n break;\n }\n }\n\n return node;\n }\n }, {\n key: \"append\",\n value: function append(name, value) {\n var children = this.children;\n var node = null;\n\n if (children.hasOwnProperty(name)) {\n node = children[name];\n } else if (_typeof(name) === STRING$3 && name !== WILDCARD) {\n node = new Node();\n children[name] = node;\n }\n\n if (node !== null) {\n node.value += value > 0 ? parseInt(value) : 0;\n }\n\n return node;\n }\n }, {\n key: \"probe\",\n value: function probe(recursively) {\n var value = this.value; // Calculate entire tree value recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"clear\",\n value: function clear(recursively) {\n this.value = 0; // Clear entire tree recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n }\n }\n }, {\n key: \"appendPath\",\n value: function appendPath(path, value) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this;\n\n for (var i = 0; i < last; ++i) {\n node = node.append(path[i], 0);\n\n if (node === null) {\n return false;\n }\n }\n\n return node.append(path[last], value) !== null;\n }\n\n return false;\n }\n }, {\n key: \"clearPath\",\n value: function clearPath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n node.children[item].clear(recursively);\n return true;\n }\n } else {\n var children = node.children;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"probePath\",\n value: function probePath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n return node.children[item].probe(recursively);\n }\n } else {\n var children = node.children;\n var value = 0;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n\n return value;\n }\n }\n }\n\n return 0;\n }\n }, {\n key: \"attachHandler\",\n value: function attachHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n var list = handlers.hasOwnProperty(type) ? handlers[type] : handlers[type] = [];\n var length = list.length;\n var notFound = true;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n notFound = false;\n break;\n }\n }\n\n if (notFound) {\n list[length] = handler;\n result = true;\n }\n }\n\n return result;\n }\n }, {\n key: \"removeHandler\",\n value: function removeHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n list.splice(i, 1);\n result = true;\n break;\n }\n }\n }\n }\n\n return result;\n }\n }, {\n key: \"trigger\",\n value: function trigger(type, nonRecursively) {\n if (_typeof(type) === STRING$3) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n list[i].call(null);\n }\n }\n\n if (nonRecursively !== true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].trigger(type);\n }\n }\n }\n }\n }\n }, {\n key: \"attachHandlerForPath\",\n value: function attachHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.attachHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"removeHandlerForPath\",\n value: function removeHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.removeHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"triggerHandlersForPath\",\n value: function triggerHandlersForPath(path, type, nonRecursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n node.trigger(type, nonRecursively);\n }\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * Root Namespace Node and API\n */\n\n\nvar rootNode = new Node();\n\nfunction handleError(error) {\n var title = error.title,\n message = error.message;\n\n if (!title) {\n if (error instanceof Error) {\n title = error.name;\n }\n }\n\n if (!message) {\n if (error instanceof Error) {\n message = error.message;\n }\n }\n\n var data = Object.assign({\n title: title,\n message: message,\n class: 'themed',\n hideConfirm: true,\n cancelLabel: 'Dismiss',\n cancelClass: 'btn-secondary'\n }, error || {});\n log$1.error(error); // TODO: Find a better way to handle errors instead of displaying a dialog for all of them.\n // OHIF.ui.showDialog('dialogForm', data);\n}\n\n/**\n * Check if the pressed key combination will result in a character input\n * Got from https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n *\n * @returns {Boolean} Whether the pressed key combination will input a character or not\n */\nfunction isCharacterKeyPress(event) {\n if (typeof event.which === 'undefined') {\n // This is IE, which only fires keypress events for printable keys\n return true;\n } else if (typeof event.which === 'number' && event.which > 0) {\n // In other browsers except old versions of WebKit, event.which is\n // only greater than zero if the keypress is a printable key.\n // We need to filter out backspace and ctrl/alt/meta key combinations\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8;\n }\n\n return false;\n}\n\n/**\n * Get the offset for the given element\n *\n * @param {Object} element DOM element which will have the offser calculated\n * @returns {Object} Object containing the top and left offset\n */\nfunction getOffset(element) {\n var top = 0;\n var left = 0;\n\n if (element.offsetParent) {\n do {\n left += element.offsetLeft;\n top += element.offsetTop;\n } while (element = element.offsetParent);\n }\n\n return {\n left: left,\n top: top\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar ui = {\n getScrollbarSize: getScrollbarSize,\n getOffset: getOffset,\n isCharacterKeyPress: isCharacterKeyPress,\n handleError: handleError\n};\n\n//import Dropdown from './ui/dropdown/class.js';\n\n/*\n * Defines the base OHIF header object\n */\n//const dropdown = new OHIF.ui.Dropdown();\nvar header = {};\n\nvar ObjectPath =\n/*#__PURE__*/\nfunction () {\n function ObjectPath() {\n _classCallCheck(this, ObjectPath);\n }\n\n _createClass(ObjectPath, null, [{\n key: \"set\",\n\n /**\n * Set an object property based on \"path\" (namespace) supplied creating\n * ... intermediary objects if they do not exist.\n * @param object {Object} An object where the properties specified on path should be set.\n * @param path {String} A string representing the property to be set, e.g. \"user.study.series.timepoint\".\n * @param value {Any} The value of the property that will be set.\n * @return {Boolean} Returns \"true\" on success, \"false\" if any intermediate component of the supplied path\n * ... is not a valid Object, in which case the property cannot be set. No excpetions are thrown.\n */\n value: function set(object, path, value) {\n var components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0,\n result = false;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n\n if (field in currentObject) {\n if (!ObjectPath.isValidObject(currentObject[field])) {\n break;\n }\n } else {\n currentObject[field] = {};\n }\n\n currentObject = currentObject[field];\n i++;\n }\n\n if (i === last) {\n currentObject[components[last]] = value;\n result = true;\n }\n }\n\n return result;\n }\n /**\n * Get an object property based on \"path\" (namespace) supplied traversing the object\n * ... tree as necessary.\n * @param object {Object} An object where the properties specified might exist.\n * @param path {String} A string representing the property to be searched for, e.g. \"user.study.series.timepoint\".\n * @return {Any} The value of the property if found. By default, returns the special type \"undefined\".\n */\n\n }, {\n key: \"get\",\n value: function get(object, path) {\n var found,\n // undefined by default\n components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n var isValid = ObjectPath.isValidObject(currentObject[field]);\n\n if (field in currentObject && isValid) {\n currentObject = currentObject[field];\n i++;\n } else {\n break;\n }\n }\n\n if (i === last && components[last] in currentObject) {\n found = currentObject[components[last]];\n }\n }\n\n return found;\n }\n /**\n * Check if the supplied argument is a real JavaScript Object instance.\n * @param object {Any} The subject to be tested.\n * @return {Boolean} Returns \"true\" if the object is a real Object instance and \"false\" otherwise.\n */\n\n }, {\n key: \"isValidObject\",\n value: function isValidObject(object) {\n return _typeof(object) === 'object' && object !== null && object instanceof Object;\n }\n }, {\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return typeof path === 'string' ? path.split('.') : null;\n }\n }]);\n\n return ObjectPath;\n}();\n\nfunction absoluteUrl(path) {\n var absolutePath = '/'; // TODO: Find another way to get root url\n\n var absoluteUrl = window.location.origin;\n var absoluteUrlParts = absoluteUrl.split('/');\n\n if (absoluteUrlParts.length > 4) {\n var rootUrlPrefixIndex = absoluteUrl.indexOf(absoluteUrlParts[3]);\n absolutePath += absoluteUrl.substring(rootUrlPrefixIndex) + path;\n } else {\n absolutePath += path;\n }\n\n return absolutePath.replace(/\\/\\/+/g, '/');\n}\n\n// TODO: figure out where else to put this function\nfunction addServers(servers, store) {\n Object.keys(servers).forEach(function (serverType) {\n var endpoints = servers[serverType];\n endpoints.forEach(function (endpoint) {\n var server = Object.assign({}, endpoint);\n server.type = serverType;\n store.dispatch({\n type: 'ADD_SERVER',\n server: server\n });\n });\n });\n}\n\n// Return the array sorting function for its object's properties\nfunction sortBy() {\n var fields = [].slice.call(arguments),\n n_fields = fields.length;\n return function (A, B) {\n var a, b, field, key, reverse, result, i;\n\n for (i = 0; i < n_fields; i++) {\n result = 0;\n field = fields[i];\n key = typeof field === 'string' ? field : field.name;\n a = A[key];\n b = B[key];\n\n if (typeof field.primer !== 'undefined') {\n a = field.primer(a);\n b = field.primer(b);\n }\n\n reverse = field.reverse ? -1 : 1;\n\n if (a < b) {\n result = reverse * -1;\n }\n\n if (a > b) {\n result = reverse * 1;\n }\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n };\n}\n\n/* jshint -W060 */\nfunction writeScript(fileName, callback) {\n var script = document.createElement('script');\n script.src = absoluteUrl(fileName);\n\n script.onload = function () {\n if (typeof callback === 'function') {\n callback(script);\n }\n };\n\n document.body.appendChild(script);\n}\n\nfunction updateQueryStringParameter(uri, key, value) {\n var regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n\n if (uri.match(regex)) {\n return uri.replace(regex, '$1' + key + '=' + value + '$2');\n } else {\n return uri + separator + key + '=' + value;\n }\n}\n/**\n * Obtain an imageId for Cornerstone from an image instance\n *\n * @param instance\n * @param frame\n * @param thumbnail\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getImageId(instance, frame) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!instance) {\n return;\n }\n\n if (typeof instance.getImageId === 'function') {\n return instance.getImageId();\n }\n\n if (instance.url) {\n if (frame !== undefined) {\n instance.url = updateQueryStringParameter(instance.url, 'frame', frame);\n }\n\n return instance.url;\n }\n\n var renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';\n\n if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {\n var imageId = 'dicomweb:' + instance.wadouri;\n\n if (frame !== undefined) {\n imageId += '&frame=' + frame;\n }\n\n return imageId;\n } else {\n return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame\n }\n}\n\nvar stackMap = {};\nvar configuration = {};\nvar stackManagerMetaDataProvider;\nvar stackUpdatedCallbacks = [];\n/**\n * Loop through the current series and add metadata to the\n * Cornerstone meta data provider. This will be used to fill information\n * into the viewport overlays, and to calculate reference lines and orientation markers\n * @param {Object} stackMap stackMap object\n * @param {Object} study Study object\n * @param {Object} displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n\nfunction createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, metadataProvider) {\n var numImages = displaySet.images.length;\n var imageIds = [];\n var imageId;\n displaySet.images.forEach(function (instance, imageIndex) {\n var image = instance.getData();\n var metaData = {\n instance: image,\n // in this context, instance will be the data of the InstanceMetadata object...\n series: displaySet,\n // TODO: Check this\n study: study,\n numImages: numImages,\n imageIndex: imageIndex + 1\n };\n var numberOfFrames = image.numberOfFrames;\n\n if (numberOfFrames > 1) {\n OHIF.log.info('Multiframe image detected');\n\n for (var i = 0; i < numberOfFrames; i++) {\n metaData.frameNumber = i;\n imageId = getImageId(image, i);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n } else {\n metaData.frameNumber = 1;\n imageId = getImageId(image);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n });\n var stack = {\n studyInstanceUid: study.studyInstanceUid,\n displaySetInstanceUid: displaySet.displaySetInstanceUid,\n imageIds: imageIds,\n frameRate: displaySet.frameRate,\n isClip: displaySet.isClip\n };\n stackMap[displaySet.displaySetInstanceUid] = stack;\n return stack;\n}\n\nconfiguration = {\n createAndAddStack: createAndAddStack\n};\n/**\n * This object contains all the functions needed for interacting with the stack manager.\n * Generally, findStack is the only function used. If you want to know when new stacks\n * come in, you can register a callback with addStackUpdatedCallback.\n */\n\nvar StackManager = {\n setMetadataProvider: function setMetadataProvider(provider) {\n stackManagerMetaDataProvider = provider;\n },\n\n /**\n * Removes all current stacks\n */\n clearStacks: function clearStacks() {\n stackMap = {};\n },\n\n /**\n * Create a stack from an image set, as well as add in the metadata on a per image bases.\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n makeAndAddStack: function makeAndAddStack(study, displaySet) {\n if (!stackManagerMetaDataProvider) {\n throw new Error('Please call StackManager.setMetadataProvider(provider) first.');\n }\n\n return configuration.createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, stackManagerMetaDataProvider);\n },\n\n /**\n * Find a stack from the currently created stacks.\n * @param displaySetInstanceUid The UID of the stack to find.\n * @returns {*} undefined if not found, otherwise the stack object is returned.\n */\n findStack: function findStack(displaySetInstanceUid) {\n return stackMap[displaySetInstanceUid];\n },\n\n /**\n * Find a stack or reate one if it has not been created yet\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n findOrCreateStack: function findOrCreateStack(study, displaySet) {\n var stack = this.findStack(displaySet.displaySetInstanceUid);\n\n if (!stack || !stack.imageIds) {\n stack = this.makeAndAddStack(study, displaySet);\n }\n\n return stack;\n },\n\n /**\n * Gets the underlying map of displaySetInstanceUid to stack object.\n * WARNING: Do not change this object. It directly affects the manager.\n * @returns {{}} map of displaySetInstanceUid -> stack.\n */\n getAllStacks: function getAllStacks() {\n return stackMap;\n },\n\n /**\n * Adds in a callback to be called on a stack being added / updated.\n * @param callback must accept at minimum one argument,\n * which is the stack that was added / updated.\n */\n addStackUpdatedCallback: function addStackUpdatedCallback(callback) {\n if (typeof callback !== 'function') {\n throw new OHIFError('callback must be provided as a function');\n }\n\n stackUpdatedCallbacks.push(callback);\n },\n\n /**\n * Return configuration\n */\n getConfiguration: function getConfiguration() {\n return configuration;\n },\n\n /**\n * Set configuration, in order to provide compatibility\n * with other systems by overriding this functions\n * @param {Object} config object with functions to be overrided\n *\n * For now, only makeAndAddStack can be overrided\n */\n setConfiguration: function setConfiguration(config) {\n configuration = config;\n }\n};\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar sopClassDictionary = {\n ComputedRadiographyImageStorage: '1.2.840.10008.5.1.4.1.1.1',\n DigitalXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.1',\n DigitalXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.1.1',\n DigitalMammographyXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.2',\n DigitalMammographyXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.2.1',\n DigitalIntraOralXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.3',\n DigitalIntraOralXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.3.1',\n CTImageStorage: '1.2.840.10008.5.1.4.1.1.2',\n EnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.1',\n LegacyConvertedEnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.2',\n UltrasoundMultiframeImageStorage: '1.2.840.10008.5.1.4.1.1.3.1',\n MRImageStorage: '1.2.840.10008.5.1.4.1.1.4',\n EnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.1',\n MRSpectroscopyStorage: '1.2.840.10008.5.1.4.1.1.4.2',\n EnhancedMRColorImageStorage: '1.2.840.10008.5.1.4.1.1.4.3',\n LegacyConvertedEnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.4',\n UltrasoundImageStorage: '1.2.840.10008.5.1.4.1.1.6.1',\n EnhancedUSVolumeStorage: '1.2.840.10008.5.1.4.1.1.6.2',\n SecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7',\n MultiframeSingleBitSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.1',\n MultiframeGrayscaleByteSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.2',\n MultiframeGrayscaleWordSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.3',\n MultiframeTrueColorSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.4',\n Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1',\n GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2',\n AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3',\n HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1',\n CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.3.1',\n BasicVoiceAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.1',\n GeneralAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.2',\n ArterialPulseWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.5.1',\n RespiratoryWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.6.1',\n GrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.1',\n ColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.2',\n PseudoColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.3',\n BlendingSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.4',\n XAXRFGrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.5',\n XRayAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.12.1',\n EnhancedXAImageStorage: '1.2.840.10008.5.1.4.1.1.12.1.1',\n XRayRadiofluoroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.12.2',\n EnhancedXRFImageStorage: '1.2.840.10008.5.1.4.1.1.12.2.1',\n XRay3DAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.1',\n XRay3DCraniofacialImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.2',\n BreastTomosynthesisImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.3',\n BreastProjectionXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.13.1.4',\n BreastProjectionXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.13.1.5',\n IntravascularOpticalCoherenceTomographyImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.14.1',\n IntravascularOpticalCoherenceTomographyImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.14.2',\n NuclearMedicineImageStorage: '1.2.840.10008.5.1.4.1.1.20',\n RawDataStorage: '1.2.840.10008.5.1.4.1.1.66',\n SpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.1',\n SpatialFiducialsStorage: '1.2.840.10008.5.1.4.1.1.66.2',\n DeformableSpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.3',\n SegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.4',\n SurfaceSegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.5',\n RealWorldValueMappingStorage: '1.2.840.10008.5.1.4.1.1.67',\n SurfaceScanMeshStorage: '1.2.840.10008.5.1.4.1.1.68.1',\n SurfaceScanPointCloudStorage: '1.2.840.10008.5.1.4.1.1.68.2',\n VLEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1',\n VideoEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1.1',\n VLMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2',\n VideoMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2.1',\n VLSlideCoordinatesMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.3',\n VLPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4',\n VideoPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4.1',\n OphthalmicPhotography8BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.1',\n OphthalmicPhotography16BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.2',\n StereometricRelationshipStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.3',\n OphthalmicTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.4',\n VLWholeSlideMicroscopyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.6',\n LensometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.1',\n AutorefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.2',\n KeratometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.3',\n SubjectiveRefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.4',\n VisualAcuityMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.5',\n SpectaclePrescriptionReportStorage: '1.2.840.10008.5.1.4.1.1.78.6',\n OphthalmicAxialMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.7',\n IntraocularLensCalculationsStorage: '1.2.840.10008.5.1.4.1.1.78.8',\n MacularGridThicknessandVolumeReport: '1.2.840.10008.5.1.4.1.1.79.1',\n OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.80.1',\n OphthalmicThicknessMapStorage: '1.2.840.10008.5.1.4.1.1.81.1',\n CornealTopographyMapStorage: '1.2.840.10008.5.1.4.1.1.82.1',\n BasicTextSR: '1.2.840.10008.5.1.4.1.1.88.11',\n EnhancedSR: '1.2.840.10008.5.1.4.1.1.88.22',\n ComprehensiveSR: '1.2.840.10008.5.1.4.1.1.88.33',\n Comprehensive3DSR: '1.2.840.10008.5.1.4.1.1.88.34',\n ProcedureLog: '1.2.840.10008.5.1.4.1.1.88.40',\n MammographyCADSR: '1.2.840.10008.5.1.4.1.1.88.50',\n KeyObjectSelection: '1.2.840.10008.5.1.4.1.1.88.59',\n ChestCADSR: '1.2.840.10008.5.1.4.1.1.88.65',\n XRayRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.67',\n RadiopharmaceuticalRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.68',\n ColonCADSR: '1.2.840.10008.5.1.4.1.1.88.69',\n ImplantationPlanSRDocumentStorage: '1.2.840.10008.5.1.4.1.1.88.70',\n EncapsulatedPDFStorage: '1.2.840.10008.5.1.4.1.1.104.1',\n EncapsulatedCDAStorage: '1.2.840.10008.5.1.4.1.1.104.2',\n PositronEmissionTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.128',\n EnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.130',\n LegacyConvertedEnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.128.1',\n BasicStructuredDisplayStorage: '1.2.840.10008.5.1.4.1.1.131',\n RTImageStorage: '1.2.840.10008.5.1.4.1.1.481.1',\n RTDoseStorage: '1.2.840.10008.5.1.4.1.1.481.2',\n RTStructureSetStorage: '1.2.840.10008.5.1.4.1.1.481.3',\n RTBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.4',\n RTPlanStorage: '1.2.840.10008.5.1.4.1.1.481.5',\n RTBrachyTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.6',\n RTTreatmentSummaryRecordStorage: '1.2.840.10008.5.1.4.1.1.481.7',\n RTIonPlanStorage: '1.2.840.10008.5.1.4.1.1.481.8',\n RTIonBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.9',\n RTBeamsDeliveryInstructionStorage: '1.2.840.10008.5.1.4.34.7',\n GenericImplantTemplateStorage: '1.2.840.10008.5.1.4.43.1',\n ImplantAssemblyTemplateStorage: '1.2.840.10008.5.1.4.44.1',\n ImplantTemplateGroupStorage: '1.2.840.10008.5.1.4.45.1'\n};\n\n/**\n * Checks whether dicom files with specified SOP Class UID have image data\n * @param {string} sopClassUid - SOP Class UID to be checked\n * @returns {boolean} - true if it has image data\n */\n\nfunction isImage(sopClassUid) {\n if (sopClassUid === sopClassDictionary.ComputedRadiographyImageStorage || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.CTImageStorage || sopClassUid === sopClassDictionary.EnhancedCTImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedCTImageStorage || sopClassUid === sopClassDictionary.UltrasoundMultiframeImageStorage || sopClassUid === sopClassDictionary.MRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRColorImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedMRImageStorage || sopClassUid === sopClassDictionary.UltrasoundImageStorage || sopClassUid === sopClassDictionary.SecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.XRayAngiographicImageStorage || sopClassUid === sopClassDictionary.EnhancedXAImageStorage || sopClassUid === sopClassDictionary.XRayRadiofluoroscopicImageStorage || sopClassUid === sopClassDictionary.EnhancedXRFImageStorage || sopClassUid === sopClassDictionary.XRay3DAngiographicImageStorage || sopClassUid === sopClassDictionary.XRay3DCraniofacialImageStorage || sopClassUid === sopClassDictionary.BreastTomosynthesisImageStorage || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing || sopClassUid === sopClassDictionary.NuclearMedicineImageStorage || sopClassUid === sopClassDictionary.VLEndoscopicImageStorage || sopClassUid === sopClassDictionary.VideoEndoscopicImageStorage || sopClassUid === sopClassDictionary.VLMicroscopicImageStorage || sopClassUid === sopClassDictionary.VideoMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLPhotographicImageStorage || sopClassUid === sopClassDictionary.VideoPhotographicImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography8BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography16BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicTomographyImageStorage || sopClassUid === sopClassDictionary.VLWholeSlideMicroscopyImageStorage || sopClassUid === sopClassDictionary.PositronEmissionTomographyImageStorage || sopClassUid === sopClassDictionary.EnhancedPETImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedPETImageStorage || sopClassUid === sopClassDictionary.RTImageStorage) {\n return true;\n }\n\n return false;\n}\n\nvar isMultiFrame = function isMultiFrame(instance) {\n // NumberOfFrames (0028,0008)\n return instance.getRawValue('x00280008') > 1;\n};\n\nvar makeDisplaySet = function makeDisplaySet(series, instances) {\n var instance = instances[0];\n var imageSet = new ImageSet(instances);\n var seriesData = series.getData(); // set appropriate attributes to image set...\n\n imageSet.setAttributes({\n displaySetInstanceUid: imageSet.uid,\n // create a local alias for the imageSet UID\n seriesDate: seriesData.seriesDate,\n seriesTime: seriesData.seriesTime,\n seriesInstanceUid: series.getSeriesInstanceUID(),\n seriesNumber: instance.getRawValue('x00200011'),\n seriesDescription: instance.getRawValue('x0008103e'),\n numImageFrames: instances.length,\n frameRate: instance.getRawValue('x00181063'),\n modality: instance.getRawValue('x00080060'),\n isMultiFrame: isMultiFrame(instance)\n }); // Sort the images in this series if needed\n\n {\n imageSet.sortBy(function (a, b) {\n // Sort by InstanceNumber (0020,0013)\n return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0);\n });\n } // Include the first image instance number (after sorted)\n\n\n imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));\n return imageSet;\n};\n\nvar isSingleImageModality = function isSingleImageModality(modality) {\n return modality === 'CR' || modality === 'MG' || modality === 'DX';\n};\n/**\n * Creates a set of series to be placed in the Study Metadata\n * The series that appear in the Study Metadata must represent\n * imaging modalities.\n *\n * Furthermore, for drag/drop functionality,\n * it is easiest if the stack objects also contain information about\n * which study they are linked to.\n *\n * @param study The study instance metadata to be used\n * @returns {Array} An array of series to be placed in the Study Metadata\n */\n\n\nfunction createStacks(study) {\n // Define an empty array of display sets\n var displaySets = [];\n\n if (!study || !study.getSeriesCount()) {\n return displaySets;\n } // Loop through the series (SeriesMetadata)\n\n\n study.forEachSeries(function (series) {\n // If the series has no instances, skip it\n if (!series.getInstanceCount()) {\n return;\n } // Search through the instances (InstanceMetadata object) of this series\n // Split Multi-frame instances and Single-image modalities\n // into their own specific display sets. Place the rest of each\n // series into another display set.\n\n\n var stackableInstances = [];\n series.forEachInstance(function (instance) {\n // All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)\n if (!isImage(instance.getRawValue('x00080016')) && !instance.getRawValue('x00280010')) {\n return;\n }\n\n var displaySet;\n\n if (isMultiFrame(instance)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n isClip: true,\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid for drag/drop purposes\n numImageFrames: instance.getRawValue('x00280008'),\n // Override the default value of instances.length\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else if (isSingleImageModality(instance.modality)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else {\n stackableInstances.push(instance);\n }\n });\n\n if (stackableInstances.length) {\n var displaySet = makeDisplaySet(series, stackableInstances);\n displaySet.setAttribute('studyInstanceUid', study.getStudyInstanceUID());\n displaySets.push(displaySet);\n }\n });\n return displaySets;\n}\n\nvar OHIFInstanceMetadata =\n/*#__PURE__*/\nfunction (_InstanceMetadata) {\n _inherits(OHIFInstanceMetadata, _InstanceMetadata);\n\n /**\n * @param {Object} Instance object.\n */\n function OHIFInstanceMetadata(data, series, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFInstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFInstanceMetadata).call(this, data, uid));\n\n _this.init(series, study);\n\n return _this;\n }\n\n _createClass(OHIFInstanceMetadata, [{\n key: \"init\",\n value: function init(series, study) {\n var instance = this.getData(); // Initialize Private Properties\n\n Object.defineProperties(this, {\n _sopInstanceUID: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance.sopInstanceUid\n },\n _study: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series\n },\n _instance: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance\n },\n _cache: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n }\n });\n } // Override\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue, bypassCache) {\n // check if this property has been cached...\n if (tagOrProperty in this._cache && bypassCache !== true) {\n return this._cache[tagOrProperty];\n }\n\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty); // Search property value in the whole study metadata chain...\n\n var rawValue;\n\n if (propertyName in this._instance) {\n rawValue = this._instance[propertyName];\n } else if (propertyName in this._series) {\n rawValue = this._series[propertyName];\n } else if (propertyName in this._study) {\n rawValue = this._study[propertyName];\n }\n\n if (rawValue !== void 0) {\n // if rawValue value is not undefined, cache result...\n this._cache[tagOrProperty] = rawValue;\n return rawValue;\n }\n\n return defaultValue;\n } // Override\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty);\n return propertyName in this._instance || propertyName in this._series || propertyName in this._study;\n } // Override\n\n }, {\n key: \"getImageId\",\n value: function getImageId$$1(frame, thumbnail) {\n // If _imageID is not cached, create it\n if (this._imageId === null) {\n this._imageId = getImageId(this.getData(), frame, thumbnail);\n }\n\n return this._imageId;\n }\n /**\n * Static methods\n */\n // @TODO: The current mapping of standard DICOM property names to local property names is not optimal.\n // The inconsistency in property naming makes this function increasingly complex.\n // A possible solution to improve this would be adapt retriveMetadata names to use DICOM standard names as in dicomTagDescriptions.js\n\n }], [{\n key: \"getPropertyName\",\n value: function getPropertyName(tagOrProperty) {\n var propertyName;\n var tagInfo = DICOMTagDescriptions.find(tagOrProperty);\n\n if (tagInfo !== void 0) {\n // This function tries to translate standard DICOM property names into local naming convention.\n propertyName = tagInfo.keyword.replace(/^SOP/, 'sop').replace(/UID$/, 'Uid').replace(/ID$/, 'Id');\n propertyName = propertyName.charAt(0).toLowerCase() + propertyName.substr(1);\n }\n\n return propertyName;\n }\n }]);\n\n return OHIFInstanceMetadata;\n}(InstanceMetadata);\n\nvar OHIFSeriesMetadata =\n/*#__PURE__*/\nfunction (_SeriesMetadata) {\n _inherits(OHIFSeriesMetadata, _SeriesMetadata);\n\n /**\n * @param {Object} Series object.\n */\n function OHIFSeriesMetadata(data, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFSeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFSeriesMetadata).call(this, data, uid));\n\n _this.init(study);\n\n return _this;\n }\n\n _createClass(OHIFSeriesMetadata, [{\n key: \"init\",\n value: function init(study) {\n var _this2 = this;\n\n var series = this.getData(); // define \"_seriesInstanceUID\" protected property...\n\n Object.defineProperty(this, '_seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series.seriesInstanceUid\n }); // populate internal list of instances...\n\n series.instances.forEach(function (instance) {\n _this2.addInstance(new OHIFInstanceMetadata(instance, series, study));\n });\n }\n }]);\n\n return OHIFSeriesMetadata;\n}(SeriesMetadata);\n\nvar OHIFStudyMetadata =\n/*#__PURE__*/\nfunction (_StudyMetadata) {\n _inherits(OHIFStudyMetadata, _StudyMetadata);\n\n /**\n * @param {Object} Study object.\n */\n function OHIFStudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, OHIFStudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFStudyMetadata).call(this, data, uid));\n\n _this.init();\n\n return _this;\n }\n\n _createClass(OHIFStudyMetadata, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var study = this.getData(); // define \"_studyInstanceUID\" protected property\n\n Object.defineProperty(this, '_studyInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study.studyInstanceUid\n }); // populate internal list of series\n\n study.seriesList.forEach(function (series) {\n _this2.addSeries(new OHIFSeriesMetadata(series, study));\n });\n }\n }]);\n\n return OHIFStudyMetadata;\n}(StudyMetadata);\n\nvar getDisplaySets = function getDisplaySets(studyMetadata, seriesNumber, iteratorFunction) {\n var iteratorFn = typeof iteratorFunction !== 'function' ? createStacks : iteratorFunction;\n return iteratorFn(studyMetadata, seriesNumber);\n};\n\nvar sortingManager = {\n getDisplaySets: getDisplaySets\n};\n\nfunction createDisplaySets(studies) {\n // Define the OHIF.viewer.data global object\n // TODO: Save all data that is currently in OHIF.viewer in redux instead\n //OHIF.viewer.data = OHIF.viewer.data || {};\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n //OHIF.viewer.data.studyInstanceUids = [];\n var updatedStudies = studies.map(function (study) {\n var studyMetadata = new OHIFStudyMetadata(study, study.studyInstanceUid);\n var displaySets = study.displaySets;\n\n if (!study.displaySets) {\n displaySets = sortingManager.getDisplaySets(studyMetadata);\n study.displaySets = displaySets;\n }\n\n studyMetadata.setDisplaySets(displaySets); //OHIF.viewer.Studies.insert(study);\n //OHIF.viewer.StudyMetadataList.insert(studyMetadata);\n //OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);\n // Updates WADO-RS metaDataManager\n\n updateMetaDataManager(study);\n return study;\n });\n return updatedStudies;\n}\n\nvar utils = {\n guid: guid,\n ObjectPath: ObjectPath,\n absoluteUrl: absoluteUrl,\n addServers: addServers,\n sortBy: sortBy,\n writeScript: writeScript,\n StackManager: StackManager,\n createStacks: createStacks,\n createDisplaySets: createDisplaySets\n};\n\nvar metadata = {\n Metadata: Metadata,\n WadoRsMetaDataBuilder: WadoRsMetaDataBuilder,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n OHIFStudyMetadata: OHIFStudyMetadata,\n OHIFSeriesMetadata: OHIFSeriesMetadata,\n OHIFInstanceMetadata: OHIFInstanceMetadata\n};\n\nvar FUNCTION$2 = 'function';\n\nvar MetadataProvider =\n/*#__PURE__*/\nfunction () {\n function MetadataProvider() {\n _classCallCheck(this, MetadataProvider);\n\n // Define the main \"metadataLookup\" private property as an immutable property.\n Object.defineProperty(this, 'metadataLookup', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: new Map()\n }); // Local reference to provider function bound to current instance.\n\n Object.defineProperty(this, '_provider', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n }\n /**\n * Cornerstone Metadata provider to store image meta data\n * Data from instances, series, and studies are associated with\n * imageIds to facilitate usage of this information by Cornerstone's Tools\n *\n * e.g. the imagePlane metadata object contains instance information about\n * row/column pixel spacing, patient position, and patient orientation. It\n * is used in CornerstoneTools to position reference lines and orientation markers.\n *\n * @param {String} imageId The Cornerstone ImageId\n * @param {Object} data An object containing instance, series, and study metadata\n */\n\n\n _createClass(MetadataProvider, [{\n key: \"addMetadata\",\n value: function addMetadata(imageId, data) {\n var instanceMetadata = data.instance;\n var seriesMetadata = data.series;\n var studyMetadata = data.study;\n var numImages = data.numImages;\n var metadata = {};\n metadata.frameNumber = data.frameNumber;\n metadata.study = {\n accessionNumber: studyMetadata.accessionNumber,\n patientId: studyMetadata.patientId,\n studyInstanceUid: studyMetadata.studyInstanceUid,\n studyDate: studyMetadata.studyDate,\n studyTime: studyMetadata.studyTime,\n studyDescription: studyMetadata.studyDescription,\n institutionName: studyMetadata.institutionName,\n patientHistory: studyMetadata.patientHistory\n };\n metadata.series = {\n seriesDescription: seriesMetadata.seriesDescription,\n seriesNumber: seriesMetadata.seriesNumber,\n seriesDate: seriesMetadata.seriesDate,\n seriesTime: seriesMetadata.seriesTime,\n modality: seriesMetadata.modality,\n seriesInstanceUid: seriesMetadata.seriesInstanceUid,\n numImages: numImages\n };\n metadata.instance = instanceMetadata;\n metadata.patient = {\n name: studyMetadata.patientName,\n id: studyMetadata.patientId,\n birthDate: studyMetadata.patientBirthDate,\n sex: studyMetadata.patientSex,\n age: studyMetadata.patientAge\n }; // If there is sufficient information, populate\n // the imagePlane object for easier use in the Viewer\n\n metadata.imagePlane = this.getImagePlane(instanceMetadata); // Add the metadata to the imageId lookup object\n\n this.metadataLookup.set(imageId, metadata);\n }\n /**\n * Return the metadata for the given imageId\n * @param {String} imageId The Cornerstone ImageId\n * @returns image metadata\n */\n\n }, {\n key: \"getMetadata\",\n value: function getMetadata(imageId) {\n return this.metadataLookup.get(imageId);\n }\n /**\n * Adds a set of metadata to the Cornerstone metadata provider given a specific\n * imageId, type, and dataset\n *\n * @param imageId\n * @param type (e.g. series, instance, tagDisplay)\n * @param data\n */\n\n }, {\n key: \"addSpecificMetadata\",\n value: function addSpecificMetadata(imageId, type, data) {\n var metadata = {};\n metadata[type] = data;\n var oldMetadata = this.metadataLookup.get(imageId);\n this.metadataLookup.set(imageId, Object.assign(oldMetadata, metadata));\n }\n }, {\n key: \"getFromImage\",\n value: function getFromImage(image, type, tag, attrName, defaultValue) {\n var value;\n\n if (image.data) {\n value = this.getFromDataSet(image.data, type, tag);\n } else {\n value = image.instance[attrName];\n }\n\n return value === null ? defaultValue : value;\n }\n }, {\n key: \"getFromDataSet\",\n value: function getFromDataSet(dataSet, type, tag) {\n if (!dataSet) {\n return;\n }\n\n var fn = dataSet[type];\n\n if (!fn) {\n return;\n }\n\n return fn.call(dataSet, tag);\n }\n }, {\n key: \"getFrameIncrementPointer\",\n value: function getFrameIncrementPointer(image) {\n var dataSet = image.data;\n var frameInstancePointer = '';\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n var frameInstancePointerNames = {\n x00181063: 'frameTime',\n x00181065: 'frameTimeVector'\n }; // (0028,0009) = Frame Increment Pointer\n\n var frameInstancePointerTag = parsingUtils.attributeTag(dataSet, 'x00280009');\n frameInstancePointer = frameInstancePointerNames[frameInstancePointerTag];\n } else {\n frameInstancePointer = image.instance.frameIncrementPointer;\n }\n\n return frameInstancePointer || '';\n }\n }, {\n key: \"getFrameTimeVector\",\n value: function getFrameTimeVector(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n return parsingUtils.floatArray(dataSet, 'x00181065');\n }\n\n return image.instance.frameTimeVector;\n }\n }, {\n key: \"getFrameTime\",\n value: function getFrameTime(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time (0018,1063) field or is not defined (for addtional flexibility).\n // Yet another value is possible for this field (5200,9230 for Multi-frame Functional Groups)\n // but that case is currently not supported.\n return dataSet.floatString('x00181063', -1);\n }\n\n return image.instance.frameTime;\n }\n /**\n * Updates the related metadata for missing fields given a specified image\n *\n * @param image\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(image) {\n var imageMetadata = this.metadataLookup.get(image.imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n imageMetadata.patient.age = imageMetadata.patient.age || this.getFromDataSet(image.data, 'string', 'x00101010');\n imageMetadata.instance.rows = imageMetadata.instance.rows || image.rows;\n imageMetadata.instance.columns = imageMetadata.instance.columns || image.columns;\n imageMetadata.instance.sopClassUid = imageMetadata.instance.sopClassUid || this.getFromDataSet(image.data, 'string', 'x00080016');\n imageMetadata.instance.sopInstanceUid = imageMetadata.instance.sopInstanceUid || this.getFromDataSet(image.data, 'string', 'x00080018');\n imageMetadata.instance.pixelSpacing = imageMetadata.instance.pixelSpacing || this.getFromDataSet(image.data, 'string', 'x00280030');\n imageMetadata.instance.frameOfReferenceUID = imageMetadata.instance.frameOfReferenceUID || this.getFromDataSet(image.data, 'string', 'x00200052');\n imageMetadata.instance.imageOrientationPatient = imageMetadata.instance.imageOrientationPatient || this.getFromDataSet(image.data, 'string', 'x00200037');\n imageMetadata.instance.imagePositionPatient = imageMetadata.instance.imagePositionPatient || this.getFromDataSet(image.data, 'string', 'x00200032');\n imageMetadata.instance.sliceThickness = imageMetadata.instance.sliceThickness || this.getFromDataSet(image.data, 'string', 'x00180050');\n imageMetadata.instance.sliceLocation = imageMetadata.instance.sliceLocation || this.getFromDataSet(image.data, 'string', 'x00201041');\n imageMetadata.instance.tablePosition = imageMetadata.instance.tablePosition || this.getFromDataSet(image.data, 'string', 'x00189327');\n imageMetadata.instance.spacingBetweenSlices = imageMetadata.instance.spacingBetweenSlices || this.getFromDataSet(image.data, 'string', 'x00180088');\n imageMetadata.instance.lossyImageCompression = imageMetadata.instance.lossyImageCompression || this.getFromDataSet(image.data, 'string', 'x00282110');\n imageMetadata.instance.lossyImageCompressionRatio = imageMetadata.instance.lossyImageCompressionRatio || this.getFromDataSet(image.data, 'string', 'x00282112');\n imageMetadata.instance.frameIncrementPointer = imageMetadata.instance.frameIncrementPointer || this.getFromDataSet(image.data, 'string', 'x00280009');\n imageMetadata.instance.frameTime = imageMetadata.instance.frameTime || this.getFromDataSet(image.data, 'string', 'x00181063');\n imageMetadata.instance.frameTimeVector = imageMetadata.instance.frameTimeVector || this.getFromDataSet(image.data, 'string', 'x00181065');\n\n if ((image.data || image.instance) && !imageMetadata.instance.multiframeMetadata) {\n imageMetadata.instance.multiframeMetadata = this.getMultiframeModuleMetadata(image);\n }\n\n imageMetadata.imagePlane = imageMetadata.imagePlane || this.getImagePlane(imageMetadata.instance);\n }\n /**\n * Constructs and returns the imagePlane given the metadata instance\n *\n * @param metadataInstance The metadata instance (InstanceMetadata class) containing information to construct imagePlane\n * @returns imagePlane The constructed imagePlane to be used in viewer easily\n */\n\n }, {\n key: \"getImagePlane\",\n value: function getImagePlane(instance) {\n if (!instance.rows || !instance.columns || !instance.pixelSpacing || !instance.frameOfReferenceUID || !instance.imageOrientationPatient || !instance.imagePositionPatient) {\n return;\n }\n\n var imageOrientation = instance.imageOrientationPatient.split('\\\\');\n var imagePosition = instance.imagePositionPatient.split('\\\\');\n var columnPixelSpacing = 1.0;\n var rowPixelSpacing = 1.0;\n\n if (instance.pixelSpacing) {\n var split = instance.pixelSpacing.split('\\\\');\n rowPixelSpacing = parseFloat(split[0]);\n columnPixelSpacing = parseFloat(split[1]);\n }\n\n var cornerstoneMath = external.cornerstoneMath;\n return {\n frameOfReferenceUID: instance.frameOfReferenceUID,\n rows: instance.rows,\n columns: instance.columns,\n rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),\n columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),\n imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),\n rowPixelSpacing: rowPixelSpacing,\n columnPixelSpacing: columnPixelSpacing\n };\n }\n /**\n * This function extracts miltiframe information from a dicomParser.DataSet object.\n *\n * @param dataSet {Object} An instance of dicomParser.DataSet object where multiframe information can be found.\n * @return {Object} An object containing multiframe image metadata (frameIncrementPointer, frameTime, frameTimeVector, etc).\n */\n\n }, {\n key: \"getMultiframeModuleMetadata\",\n value: function getMultiframeModuleMetadata(image) {\n var imageInfo = {\n isMultiframeImage: false,\n frameIncrementPointer: null,\n numberOfFrames: 0,\n frameTime: 0,\n frameTimeVector: null,\n averageFrameRate: 0 // backwards compatibility only... it might be useless in the future\n\n };\n var frameTime;\n var numberOfFrames = this.getFromImage(image, 'intString', 'x00280008', 'numberOfFrames', -1);\n\n if (numberOfFrames > 0) {\n // set multi-frame image indicator\n imageInfo.isMultiframeImage = true;\n imageInfo.numberOfFrames = numberOfFrames; // (0028,0009) = Frame Increment Pointer\n\n var frameIncrementPointer = this.getFrameIncrementPointer(image);\n\n if (frameIncrementPointer === 'frameTimeVector') {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n var frameTimeVector = this.getFrameTimeVector(image);\n\n if (frameTimeVector instanceof Array && frameTimeVector.length > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTimeVector = frameTimeVector;\n frameTime = frameTimeVector.reduce(function (a, b) {\n return a + b;\n }) / frameTimeVector.length;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n } else if (frameIncrementPointer === 'frameTime' || frameIncrementPointer === '') {\n frameTime = this.getFrameTime(image);\n\n if (frameTime > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTime = frameTime;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n }\n }\n\n return imageInfo;\n }\n /**\n * Get a bound reference to the provider function.\n */\n\n }, {\n key: \"getProvider\",\n value: function getProvider() {\n var provider = this._provider;\n\n if (_typeof(this._provider) !== FUNCTION$2) {\n provider = this.provider.bind(this);\n this._provider = provider;\n }\n\n return provider;\n }\n /**\n * Looks up metadata for Cornerstone Tools given a specified type and imageId\n * A type may be, e.g. 'study', or 'patient', or 'imagePlane'. These types\n * are keys in the stored metadata objects.\n *\n * @param type\n * @param imageId\n * @returns {Object} Relevant metadata of the specified type\n */\n\n }, {\n key: \"provider\",\n value: function provider(type, imageId) {\n // TODO: Cornerstone Tools use 'imagePlaneModule', but OHIF use 'imagePlane'. It must be consistent.\n if (type === 'imagePlaneModule') {\n type = 'imagePlane';\n }\n\n var imageMetadata = this.metadataLookup.get(imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n if (imageMetadata.hasOwnProperty(type)) {\n return imageMetadata[type];\n }\n }\n }]);\n\n return MetadataProvider;\n}();\n\nvar cornerstone$1 = {\n MetadataProvider: MetadataProvider,\n getBoundingBox: getBoundingBox,\n pixelToPage: pixelToPage,\n repositionTextBox: repositionTextBox\n};\n\nvar StudyPrefetcher =\n/*#__PURE__*/\nfunction () {\n function StudyPrefetcher(studies) {\n var _this = this;\n\n _classCallCheck(this, StudyPrefetcher);\n\n _defineProperty(this, \"cacheFullHandler\", function () {\n log$1.warn('Cache full');\n\n _this.stopPrefetching();\n });\n\n this.studies = studies || [];\n this.prefetchDisplaySetsTimeout = 300;\n this.lastActiveViewportElement = null;\n external.cornerstone.events.addEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n\n _createClass(StudyPrefetcher, [{\n key: \"destroy\",\n value: function destroy() {\n this.stopPrefetching();\n external.cornerstone.events.removeEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n }, {\n key: \"setStudies\",\n value: function setStudies(studies) {\n this.stopPrefetching();\n this.studies = studies;\n }\n }, {\n key: \"prefetch\",\n value: function prefetch() {\n if (!this.studies || !this.studies.length) {\n return;\n }\n\n this.stopPrefetching();\n this.prefetchDisplaySets();\n }\n }, {\n key: \"stopPrefetching\",\n value: function stopPrefetching() {\n external.cornerstoneTools.requestPoolManager.clearRequestStack('prefetch');\n }\n }, {\n key: \"prefetchDisplaySetsAsync\",\n value: function prefetchDisplaySetsAsync(timeout) {\n var _this2 = this;\n\n timeout = timeout || this.prefetchDisplaySetsTimeout;\n clearTimeout(this.prefetchDisplaySetsHandler);\n this.prefetchDisplaySetsHandler = setTimeout(function () {\n _this2.prefetchDisplaySets();\n }, timeout);\n }\n }, {\n key: \"prefetchDisplaySets\",\n value: function prefetchDisplaySets() {\n // TODO: Allow passing in config\n var config = {\n order: 'closest',\n displaySetCount: 1\n };\n var displaySetsToPrefetch = this.getDisplaySetsToPrefetch(config);\n var imageIds = this.getImageIdsFromDisplaySets(displaySetsToPrefetch);\n this.prefetchImageIds(imageIds);\n }\n }, {\n key: \"prefetchImageIds\",\n value: function prefetchImageIds(imageIds) {\n var nonCachedImageIds = this.filterCachedImageIds(imageIds);\n var requestPoolManager = external.cornerstoneTools.requestPoolManager;\n var requestType = 'prefetch';\n var preventCache = false;\n\n var noop = function noop() {};\n\n nonCachedImageIds.forEach(function (imageId) {\n requestPoolManager.addRequest({}, imageId, requestType, preventCache, noop, noop);\n });\n requestPoolManager.startGrabbing();\n }\n }, {\n key: \"getStudy\",\n value: function getStudy(image) {\n var studyMetadata = external.cornerstone.metaData.get('study', image.imageId);\n return OHIF.viewer.Studies.find(function (study) {\n return study.studyInstanceUid === studyMetadata.studyInstanceUid;\n });\n }\n }, {\n key: \"getSeries\",\n value: function getSeries(study, image) {\n var seriesMetadata = external.cornerstone.metaData.get('series', image.imageId);\n var studyMetadata = OHIF.viewerbase.getStudyMetadata(study);\n return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);\n }\n }, {\n key: \"getInstance\",\n value: function getInstance(series, image) {\n var instanceMetadata = external.cornerstone.metaData.get('instance', image.imageId);\n return series.getInstanceByUID(instanceMetadata.sopInstanceUid);\n }\n }, {\n key: \"getActiveDisplaySet\",\n value: function getActiveDisplaySet(displaySets, instance) {\n return displaySets.find(function (displaySet) {\n return displaySet.images.some(function (displaySetImage) {\n return displaySetImage.sopInstanceUid === instance.sopInstanceUid;\n });\n });\n }\n }, {\n key: \"getDisplaySetsToPrefetch\",\n value: function getDisplaySetsToPrefetch(config) {\n var image = this.getActiveViewportImage();\n\n if (!image || !config || !config.displaySetCount) {\n return [];\n }\n /*const study = this.getStudy(image);\n const series = this.getSeries(study, image);\n const instance = this.getInstance(series, image);*/\n\n\n var displaySets = study.displaySets;\n var activeDisplaySet = null; //this.getActiveDisplaySet(displaySets, instance);\n\n var prefetchMethodMap = {\n topdown: 'getFirstDisplaySets',\n downward: 'getNextDisplaySets',\n closest: 'getClosestDisplaySets'\n };\n var prefetchOrder = config.order;\n var methodName = prefetchMethodMap[prefetchOrder];\n var getDisplaySets = this[methodName];\n\n if (!getDisplaySets) {\n if (prefetchOrder) {\n log$1.warn(\"Invalid prefetch order configuration (\".concat(prefetchOrder, \")\"));\n }\n\n return [];\n }\n\n return getDisplaySets.call(this, displaySets, activeDisplaySet, config.displaySetCount);\n }\n }, {\n key: \"getFirstDisplaySets\",\n value: function getFirstDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var length = displaySets.length;\n var selectedDisplaySets = [];\n\n for (var i = 0; i < length && displaySetCount; i++) {\n var displaySet = displaySets[i];\n\n if (displaySet !== activeDisplaySet) {\n selectedDisplaySets.push(displaySet);\n displaySetCount--;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getNextDisplaySets\",\n value: function getNextDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var begin = activeDisplaySetIndex + 1;\n var end = Math.min(begin + displaySetCount, displaySets.length);\n return displaySets.slice(begin, end);\n }\n }, {\n key: \"getClosestDisplaySets\",\n value: function getClosestDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var length = displaySets.length;\n var selectedDisplaySets = [];\n var left = activeDisplaySetIndex - 1;\n var right = activeDisplaySetIndex + 1;\n\n while ((left >= 0 || right < length) && displaySetCount) {\n if (left >= 0) {\n selectedDisplaySets.push(displaySets[left]);\n displaySetCount--;\n left--;\n }\n\n if (right < length && displaySetCount) {\n selectedDisplaySets.push(displaySets[right]);\n displaySetCount--;\n right++;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getImageIdsFromDisplaySets\",\n value: function getImageIdsFromDisplaySets(displaySets) {\n var _this3 = this;\n\n var imageIds = [];\n displaySets.forEach(function (displaySet) {\n imageIds = imageIds.concat(_this3.getImageIdsFromDisplaySet(displaySet));\n });\n return imageIds;\n }\n }, {\n key: \"getImageIdsFromDisplaySet\",\n value: function getImageIdsFromDisplaySet(displaySet) {\n var imageIds = []; // TODO: This duplicates work done by the stack manager\n\n displaySet.images.forEach(function (image) {\n var numFrames = image.numFrames;\n\n if (numFrames > 1) {\n for (var i = 0; i < numFrames; i++) {\n var imageId = getImageId(image, i);\n imageIds.push(imageId);\n }\n } else {\n var _imageId = getImageId(image);\n\n imageIds.push(_imageId);\n }\n });\n return imageIds;\n }\n }, {\n key: \"filterCachedImageIds\",\n value: function filterCachedImageIds(imageIds) {\n var _this4 = this;\n\n return imageIds.filter(function (imageId) {\n return !_this4.isImageCached(imageId);\n });\n }\n }, {\n key: \"isImageCached\",\n value: function isImageCached(imageId) {\n var image = external.cornerstone.imageCache.imageCache[imageId];\n return image && image.sizeInBytes;\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!StudyPrefetcher.instance) {\n StudyPrefetcher.instance = new StudyPrefetcher([]);\n }\n\n return StudyPrefetcher.instance;\n }\n }]);\n\n return StudyPrefetcher;\n}();\n\nvar setToolActive = function setToolActive(tool) {\n return {\n type: 'SET_TOOL_ACTIVE',\n tool: tool\n };\n};\nvar setViewportActive = function setViewportActive(viewportIndex) {\n return {\n type: 'SET_VIEWPORT_ACTIVE',\n viewportIndex: viewportIndex\n };\n};\nvar setLayout = function setLayout(layout) {\n return {\n type: 'SET_LAYOUT',\n layout: layout\n };\n};\nvar setStudyLoadingProgress = function setStudyLoadingProgress(progressId, progressData) {\n return {\n type: 'SET_STUDY_LOADING_PROGRESS',\n progressId: progressId,\n progressData: progressData\n };\n};\nvar clearStudyLoadingProgress = function clearStudyLoadingProgress(progressId) {\n return {\n type: 'CLEAR_STUDY_LOADING_PROGRESS',\n progressId: progressId\n };\n};\nvar setViewportSpecificData = function setViewportSpecificData(viewportIndex, data) {\n return {\n type: 'SET_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex,\n data: data\n };\n};\nvar clearViewportSpecificData = function clearViewportSpecificData(viewportIndex) {\n return {\n type: 'CLEAR_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex\n };\n};\nvar addPlugin = function addPlugin(plugin) {\n return {\n type: \"ADD_PLUGIN\",\n plugin: plugin\n };\n};\nvar setAvailableButtons = function setAvailableButtons(buttons) {\n return {\n type: 'SET_AVAILABLE_BUTTONS',\n buttons: buttons\n };\n};\nvar actions = {\n setToolActive: setToolActive,\n setViewportActive: setViewportActive,\n setLayout: setLayout,\n setStudyLoadingProgress: setStudyLoadingProgress,\n clearStudyLoadingProgress: clearStudyLoadingProgress,\n setViewportSpecificData: setViewportSpecificData,\n clearViewportSpecificData: clearViewportSpecificData,\n addPlugin: addPlugin,\n setAvailableButtons: setAvailableButtons\n};\n\nvar BaseLoadingListener =\n/*#__PURE__*/\nfunction () {\n function BaseLoadingListener(stack) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BaseLoadingListener);\n\n this.id = BaseLoadingListener.getNewId();\n this.stack = stack;\n this.startListening();\n this.statsItemsLimit = options.statsItemsLimit || 2;\n this.stats = {\n items: [],\n total: 0,\n elapsedTime: 0,\n speed: 0\n };\n this._setProgressData = options._setProgressData;\n this._clearProgressById = options._clearProgressById; // Register the start point to make it possible to calculate\n // bytes/s or frames/s when the first byte or frame is received\n\n this._addStatsData(0); // Update the progress before starting the download\n // to make it possible to update the UI\n\n\n this._updateProgress();\n }\n\n _createClass(BaseLoadingListener, [{\n key: \"_addStatsData\",\n value: function _addStatsData(value) {\n var date = new Date();\n var stats = this.stats;\n var items = stats.items;\n var newItem = {\n value: value,\n date: date\n };\n items.push(newItem);\n stats.total += newItem.value; // Remove items until it gets below the limit\n\n while (items.length > this.statsItemsLimit) {\n var item = items.shift();\n stats.total -= item.value;\n } // Update the elapsedTime (seconds) based on first and last\n // elements and recalculate the speed (bytes/s or frames/s)\n\n\n if (items.length > 1) {\n var oldestItem = items[0];\n stats.elapsedTime = (newItem.date.getTime() - oldestItem.date.getTime()) / 1000;\n stats.speed = (stats.total - oldestItem.value) / stats.elapsedTime;\n }\n }\n }, {\n key: \"_getProgressId\",\n value: function _getProgressId() {\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n return 'StackProgress:' + displaySetInstanceUid;\n }\n }, {\n key: \"_clearProgress\",\n value: function _clearProgress() {\n var progressId = this._getProgressId();\n\n this._clearProgressById(progressId);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n throw new Error('`startListening` must be implemented by child classes');\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n throw new Error('`stopListening` must be implemented by child classes');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stopListening();\n\n this._clearProgress();\n }\n }], [{\n key: \"getNewId\",\n value: function getNewId() {\n var timeSlice = new Date().getTime().toString().slice(-8);\n var randomNumber = parseInt(Math.random() * 1000000000);\n return timeSlice.toString() + randomNumber.toString();\n }\n }]);\n\n return BaseLoadingListener;\n}();\n\nvar DICOMFileLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener) {\n _inherits(DICOMFileLoadingListener, _BaseLoadingListener);\n\n function DICOMFileLoadingListener(stack, options) {\n var _this;\n\n _classCallCheck(this, DICOMFileLoadingListener);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DICOMFileLoadingListener).call(this, stack, options));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"_imageLoadProgressEventHandler\", function (e) {\n var eventData = e.detail;\n\n var dataSetUrl = _this._convertImageIdToDataSetUrl(eventData.imageId);\n\n var bytesDiff = eventData.loaded - _this._lastLoaded;\n\n if (!_this._dataSetUrl === dataSetUrl) {\n return;\n } // Add the bytes downloaded to the stats\n\n\n _this._addStatsData(bytesDiff); // Update the download progress\n\n\n _this._updateProgress(eventData); // Cache the last eventData.loaded value\n\n\n _this._lastLoaded = eventData.loaded;\n });\n\n _this._dataSetUrl = _this._getDataSetUrl(stack);\n _this._lastLoaded = 0; // Check how many instances has already been download (cached)\n\n _this._checkCachedData();\n\n return _this;\n }\n\n _createClass(DICOMFileLoadingListener, [{\n key: \"_checkCachedData\",\n value: function _checkCachedData() {\n var dataSet = external.cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(this._dataSetUrl);\n\n if (dataSet) {\n var dataSetLength = dataSet.byteArray.length;\n\n this._updateProgress({\n percentComplete: 100,\n loaded: dataSetLength,\n total: dataSetLength\n });\n }\n }\n }, {\n key: \"_getImageLoadProgressEventName\",\n value: function _getImageLoadProgressEventName() {\n // TODO: Add this event as a constant in Cornerstone\n return 'cornerstoneimageloadprogress.' + this.id;\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n this.imageLoadProgressEventHandler = this._imageLoadProgressEventHandle.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress(eventData) {\n var progressId = this._getProgressId();\n\n eventData = eventData || {};\n var progressData = {\n multiFrame: false,\n percentComplete: eventData.percentComplete,\n bytesLoaded: eventData.loaded,\n bytesTotal: eventData.total,\n bytesPerSecond: this.stats.speed\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_convertImageIdToDataSetUrl\",\n value: function _convertImageIdToDataSetUrl(imageId) {\n // Remove the prefix (\"dicomweb:\" or \"wadouri:\"\")\n imageId = imageId.replace(/^(dicomweb:|wadouri:)/i, ''); // Remove \"frame=999&\" from the imageId\n\n imageId = imageId.replace(/frame=\\d+&?/i, ''); // Remove the last \"&\" like in \"http://...?foo=1&bar=2&\"\n\n imageId = imageId.replace(/&$/, '');\n return imageId;\n }\n }, {\n key: \"_getDataSetUrl\",\n value: function _getDataSetUrl(stack) {\n var imageId = stack.imageIds[0];\n return this._convertImageIdToDataSetUrl(imageId);\n }\n }]);\n\n return DICOMFileLoadingListener;\n}(BaseLoadingListener);\n\nvar StackLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener2) {\n _inherits(StackLoadingListener, _BaseLoadingListener2);\n\n function StackLoadingListener(stack) {\n var _this2;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StackLoadingListener);\n\n options.statsItemsLimit = 20;\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(StackLoadingListener).call(this, stack, options));\n _this2.imageDataMap = _this2._convertImageIdsArrayToMap(stack.imageIds);\n _this2.framesStatus = _this2._createArray(stack.imageIds.length, false);\n _this2.loadedCount = 0; // Check how many instances has already been download (cached)\n\n _this2._checkCachedData();\n\n return _this2;\n }\n\n _createClass(StackLoadingListener, [{\n key: \"_convertImageIdsArrayToMap\",\n value: function _convertImageIdsArrayToMap(imageIds) {\n var imageIdsMap = new Map();\n\n for (var i = 0; i < imageIds.length; i++) {\n imageIdsMap.set(imageIds[i], {\n index: i,\n loaded: false\n });\n }\n\n return imageIdsMap;\n }\n }, {\n key: \"_createArray\",\n value: function _createArray(length, defaultValue) {\n // `new Array(length)` is an anti-pattern in javascript because its\n // funny API. Otherwise I would go for `new Array(length).fill(false)`\n var array = [];\n\n for (var i = 0; i < length; i++) {\n array[i] = defaultValue;\n }\n\n return array;\n }\n }, {\n key: \"_checkCachedData\",\n value: function _checkCachedData() {// const imageIds = this.stack.imageIds;\n // TODO: No way to check status of Promise.\n\n /*for(let i = 0; i < imageIds.length; i++) {\n const imageId = imageIds[i];\n const imagePromise = cornerstone.imageCache.getImageLoadObject(imageId).promise;\n if (imagePromise && (imagePromise.state() === 'resolved')) {\n this._updateFrameStatus(imageId, true);\n }\n }*/\n }\n }, {\n key: \"_getImageLoadedEventName\",\n value: function _getImageLoadedEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_LOADED, \".\").concat(this.id);\n }\n }, {\n key: \"_getImageCachePromiseRemoveEventName\",\n value: function _getImageCachePromiseRemoveEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, \".\").concat(this.id);\n }\n }, {\n key: \"_imageLoadedEventHandler\",\n value: function _imageLoadedEventHandler(e) {\n this._updateFrameStatus(e.detail.image.imageId, true);\n }\n }, {\n key: \"_imageCachePromiseRemovedEventHandler\",\n value: function _imageCachePromiseRemovedEventHandler(e) {\n this._updateFrameStatus(e.detail.imageId, false);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n this.imageLoadedEventHandler = this._imageLoadedEventHandler.bind(this);\n this.imageCachePromiseRemovedEventHandler = this._imageCachePromiseRemovedEventHandler.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.addEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.removeEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"_updateFrameStatus\",\n value: function _updateFrameStatus(imageId, loaded) {\n var imageData = this.imageDataMap.get(imageId);\n\n if (!imageData || imageData.loaded === loaded) {\n return;\n } // Add one more frame to the stats\n\n\n if (loaded) {\n this._addStatsData(1);\n }\n\n imageData.loaded = loaded;\n this.framesStatus[imageData.index] = loaded;\n this.loadedCount += loaded ? 1 : -1;\n\n this._updateProgress();\n }\n }, {\n key: \"_setProgressData\",\n value: function _setProgressData(progressId, progressData) {\n // TODO: This method (and _clearProgressById) need to access\n // the Redux store and should therefore be provided from the\n // application. I've added a workaround to pass this in through\n // the 'options' variable on instantiation, but this is really ugly.\n // We could consider making the StudyLoadingListener a higher-order\n // component which would set this stuff itself.\n throw new Error(\"The _setProgressData function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_clearProgressById\",\n value: function _clearProgressById(progressId) {\n throw new Error(\"The _clearProgressById function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var loadedFramesCount = this.loadedCount;\n var loadingFramesCount = totalFramesCount - loadedFramesCount;\n var percentComplete = Math.round(loadedFramesCount / totalFramesCount * 100);\n\n var progressId = this._getProgressId();\n\n var progressData = {\n multiFrame: true,\n totalFramesCount: totalFramesCount,\n loadedFramesCount: loadedFramesCount,\n loadingFramesCount: loadingFramesCount,\n percentComplete: percentComplete,\n framesPerSecond: this.stats.speed,\n framesStatus: this.framesStatus\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_logProgress\",\n value: function _logProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n var progressBar = '[';\n\n for (var i = 0; i < totalFramesCount; i++) {\n var ch = this.framesStatus[i] ? '|' : '.';\n progressBar += \"\".concat(ch);\n }\n\n progressBar += ']';\n log.info(\"\".concat(displaySetInstanceUid, \": \").concat(progressBar));\n }\n }]);\n\n return StackLoadingListener;\n}(BaseLoadingListener);\n\nvar StudyLoadingListener =\n/*#__PURE__*/\nfunction () {\n function StudyLoadingListener(options) {\n _classCallCheck(this, StudyLoadingListener);\n\n this.listeners = {};\n this.options = options;\n }\n\n _createClass(StudyLoadingListener, [{\n key: \"addStack\",\n value: function addStack(stack, stackMetaData) {\n var displaySetInstanceUid = stack.displaySetInstanceUid;\n\n if (!this.listeners[displaySetInstanceUid]) {\n var listener = this._createListener(stack, stackMetaData);\n\n if (listener) {\n this.listeners[displaySetInstanceUid] = listener;\n }\n }\n }\n }, {\n key: \"addStudy\",\n value: function addStudy(study) {\n var _this3 = this;\n\n study.displaySets.forEach(function (displaySet) {\n var stack = StackManager.findOrCreateStack(study, displaySet);\n\n _this3.addStack(stack, {\n isMultiFrame: displaySet.isMultiFrame\n });\n });\n }\n }, {\n key: \"addStudies\",\n value: function addStudies(studies) {\n var _this4 = this;\n\n if (!studies || !studies.length) {\n return;\n }\n\n studies.forEach(function (study) {\n return _this4.addStudy(study);\n });\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var displaySetInstanceUids = Object.keys(this.listeners);\n var length = displaySetInstanceUids.length;\n\n for (var i = 0; i < length; i++) {\n var displaySetInstanceUid = displaySetInstanceUids[i];\n var displaySet = this.listeners[displaySetInstanceUid];\n displaySet.destroy();\n }\n\n this.listeners = {};\n }\n }, {\n key: \"_createListener\",\n value: function _createListener(stack, stackMetaData) {\n var schema = this._getSchema(stack); // A StackLoadingListener can be created if it's wadors or not a multiframe\n // wadouri instance (single file) that means \"N\" files will have to be\n // downloaded where \"N\" is the number of frames. DICOMFileLoadingListener\n // is created only if it's a single DICOM file and there's no way to know\n // how many frames has already been loaded (bytes/s instead of frames/s).\n\n\n if (schema === 'wadors' || !stackMetaData.isMultiFrame) {\n return new StackLoadingListener(stack, this.options);\n } else {\n return new DICOMFileLoadingListener(stack, this.options);\n }\n }\n }, {\n key: \"_getSchema\",\n value: function _getSchema(stack) {\n var imageId = stack.imageIds[0];\n var colonIndex = imageId.indexOf(':');\n return imageId.substring(0, colonIndex);\n } // Singleton\n\n }], [{\n key: \"getInstance\",\n value: function getInstance(options) {\n if (!StudyLoadingListener._instance) {\n StudyLoadingListener._instance = new StudyLoadingListener(options);\n }\n\n return StudyLoadingListener._instance;\n }\n }]);\n\n return StudyLoadingListener;\n}();\n\n/**\n * Constants\n */\nvar PROPERTY_SEPARATOR = '.';\nvar ORDER_ASC = 'asc';\nvar ORDER_DESC = 'desc';\nvar MIN_COUNT = 0x00000000;\nvar MAX_COUNT = 0x7fffffff;\n/**\n * Class Definition\n */\n\nvar TypeSafeCollection =\n/*#__PURE__*/\nfunction () {\n function TypeSafeCollection() {\n _classCallCheck(this, TypeSafeCollection);\n\n this._operationCount = MIN_COUNT;\n this._elementList = [];\n this._handlers = Object.create(null);\n }\n /**\n * Private Methods\n */\n\n\n _createClass(TypeSafeCollection, [{\n key: \"_invalidate\",\n value: function _invalidate() {\n var count = this._operationCount;\n this._operationCount = count < MAX_COUNT ? count + 1 : MIN_COUNT;\n }\n }, {\n key: \"_elements\",\n value: function _elements(silent) {\n silent === true || this._operationCount;\n return this._elementList;\n }\n }, {\n key: \"_elementWithPayload\",\n value: function _elementWithPayload(payload, silent) {\n return this._elements(silent).find(function (item) {\n return item.payload === payload;\n });\n }\n }, {\n key: \"_elementWithId\",\n value: function _elementWithId(id, silent) {\n return this._elements(silent).find(function (item) {\n return item.id === id;\n });\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(event, data) {\n var handlers = this._handlers;\n\n if (event in handlers) {\n handlers = handlers[event];\n\n if (!(handlers instanceof Array)) {\n return;\n }\n\n for (var i = 0, limit = handlers.length; i < limit; ++i) {\n var handler = handlers[i];\n\n if (_isFunction(handler)) {\n handler.call(null, data);\n }\n }\n }\n }\n /**\n * Public Methods\n */\n\n }, {\n key: \"onInsert\",\n value: function onInsert(callback) {\n if (_isFunction(callback)) {\n var handlers = this._handlers.insert;\n\n if (!(handlers instanceof Array)) {\n handlers = [];\n this._handlers.insert = handlers;\n }\n\n handlers.push(callback);\n }\n }\n /**\n * Update the payload associated with the given ID to be the new supplied payload.\n * @param {string} id The ID of the entry that will be updated.\n * @param {any} payload The element that will replace the previous payload.\n * @returns {boolean} Returns true if the given ID is present in the collection, false otherwise.\n */\n\n }, {\n key: \"updateById\",\n value: function updateById(id, payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n if (found.id === id) {\n // set result to true since the ids match...\n result = true;\n\n this._invalidate();\n }\n } else {\n found = this._elementWithId(id, true);\n\n if (found) {\n found.payload = payload;\n result = true;\n\n this._invalidate();\n }\n }\n\n return result;\n }\n /**\n * Signal that the given element has been changed by notifying reactive data-source observers.\n * This method is basically a means to invalidate the inernal reactive data-source.\n * @param {any} payload The element that has been altered.\n * @returns {boolean} Returns true if the element is present in the collection, false otherwise.\n */\n\n }, {\n key: \"update\",\n value: function update(payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n result = true;\n\n this._invalidate();\n }\n\n return result;\n }\n /**\n * Insert an element in the collection. On success, the element ID (a unique string) is returned. On failure, returns null.\n * A failure scenario only happens when the given payload is already present in the collection. Note that NO exceptions are thrown!\n * @param {any} payload The element to be stored.\n * @returns {string} The ID of the inserted element or null if the element already exists...\n */\n\n }, {\n key: \"insert\",\n value: function insert(payload) {\n var id = null,\n found = this._elementWithPayload(payload, true);\n\n if (!found) {\n id = OHIF.utils.guid();\n\n this._elements(true).push({\n id: id,\n payload: payload\n });\n\n this._invalidate();\n\n this._trigger('insert', {\n id: id,\n data: payload\n });\n }\n\n return id;\n }\n /**\n * Remove all elements from the collection.\n * @returns {void} No meaningful value is returned.\n */\n\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var all = this._elements(true),\n length = all.length;\n\n for (var i = length - 1; i >= 0; i--) {\n var item = all[i];\n delete item.id;\n delete item.payload;\n all[i] = null;\n }\n\n all.splice(0, length);\n\n this._invalidate();\n }\n /**\n * Remove elements from the collection that match the criteria given in the property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} A list with all removed elements.\n */\n\n }, {\n key: \"remove\",\n value: function remove(propertyMap) {\n var found = this.findAllEntriesBy(propertyMap),\n foundCount = found.length,\n removed = [];\n\n if (foundCount > 0) {\n var all = this._elements(true);\n\n for (var i = foundCount - 1; i >= 0; i--) {\n var item = found[i];\n all.splice(item[2], 1);\n removed.push(item[0]);\n }\n\n this._invalidate();\n }\n\n return removed;\n }\n /**\n * Provides the ID of the given element inside the collection.\n * @param {any} payload The element being searched for.\n * @returns {string} The ID of the given element or undefined if the element is not present.\n */\n\n }, {\n key: \"getElementId\",\n value: function getElementId(payload) {\n var found = this._elementWithPayload(payload);\n\n return found && found.id;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"findById\",\n value: function findById(id) {\n var found = this._elementWithId(id);\n\n return found && found.payload;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfElement\",\n value: function indexOfElement(payload) {\n return this._elements().indexOf(this._elementWithPayload(payload, true));\n }\n /**\n * Provides the position of the element associated with the given ID in the internal list returning -1 if the element is not present.\n * @param {string} id The index of the element.\n * @returns {number} The position of the element associated with the given ID in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfId\",\n value: function indexOfId(id) {\n return this._elements().indexOf(this._elementWithId(id, true));\n }\n /**\n * Provides a list-like approach to the collection returning an element by index.\n * @param {number} index The index of the element.\n * @returns {any} If out of bounds, undefined is returned. Otherwise the element in the given position is returned.\n */\n\n }, {\n key: \"getElementByIndex\",\n value: function getElementByIndex(index) {\n var found = this._elements()[index >= 0 ? index : -1];\n\n return found && found.payload;\n }\n /**\n * Find an element by a criteria defined by the given callback function.\n * Attention!!! The reactive source will not be notified if no valid callback is supplied...\n * @param {function} callback A callback function which will define the search criteria. The callback\n * function will be passed the collection element, its ID and its index in this very order. The callback\n * shall return true when its criterea has been fulfilled.\n * @returns {any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"find\",\n value: function find(callback) {\n var _this = this;\n\n var found;\n\n if (_isFunction(callback)) {\n found = this._elements().find(function (item, index) {\n return callback.call(_this, item.payload, item.id, index);\n });\n }\n\n return found && found.payload;\n }\n /**\n * Find the first element that strictly matches the specified property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"findBy\",\n value: function findBy(propertyMap, options) {\n var found;\n\n if (_isObject(options)) {\n // if the \"options\" argument is provided and is a valid object,\n // it must be applied to the dataset before search...\n var all = this.all(options);\n\n if (all.length > 0) {\n if (_isObject(propertyMap)) {\n found = all.find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item);\n });\n } else {\n found = all[0]; // simply extract the first element...\n }\n }\n } else if (_isObject(propertyMap)) {\n found = this._elements().find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item.payload);\n });\n\n if (found) {\n found = found.payload;\n }\n }\n\n return found;\n }\n /**\n * Find all elements that strictly match the specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} An array of entries of all elements that match the given criteria. Each set in\n * in the array has the following format: [ elementData, elementId, elementIndex ].\n */\n\n }, {\n key: \"findAllEntriesBy\",\n value: function findAllEntriesBy(propertyMap) {\n var found = [];\n\n if (_isObject(propertyMap)) {\n this._elements().forEach(function (item, index) {\n if (_compareToPropertyMapStrict(propertyMap, item.payload)) {\n // Match! Add it to the found list...\n found.push([item.payload, item.id, index]);\n }\n });\n }\n\n return found;\n }\n /**\n * Find all elements that match a specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements that match the given criteria and sorted in the specified sorting order.\n */\n\n }, {\n key: \"findAllBy\",\n value: function findAllBy(propertyMap, options) {\n var found = this.findAllEntriesBy(propertyMap).map(function (item) {\n return item[0];\n }); // Only payload is relevant...\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(found, options.sort);\n }\n }\n\n return found;\n }\n /**\n * Executes the supplied callback function for each element of the collection.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {function} callback The callback function to be executed. The callback is passed the element,\n * its ID and its index in this very order.\n * @returns {void} Nothing is returned.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this2 = this;\n\n if (_isFunction(callback)) {\n this._elements().forEach(function (item, index) {\n callback.call(_this2, item.payload, item.id, index);\n });\n }\n }\n /**\n * Count the number of elements currently in the collection.\n * @returns {number} The current number of elements in the collection.\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this._elements().length;\n }\n /**\n * Returns a list with all elements of the collection optionally sorted by a sorting specifier criteria.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements stored in the collection.\n */\n\n }, {\n key: \"all\",\n value: function all(options) {\n var list = this._elements().map(function (item) {\n return item.payload;\n });\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(list, options.sort);\n }\n }\n\n return list;\n }\n }]);\n\n return TypeSafeCollection;\n}();\n/**\n * Utility Functions\n */\n\n/**\n * Test if supplied argument is a valid object for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\nfunction _isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n}\n/**\n * Test if supplied argument is a valid string for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isString(subject) {\n return typeof subject === 'string';\n}\n/**\n * Test if supplied argument is a valid function for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isFunction(subject) {\n return typeof subject === 'function';\n}\n/**\n * Shortcut for Object's prototype \"hasOwnProperty\" method.\n */\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Retrieve an object's property value by name. Composite property names (e.g., 'address.country.name') are accepted.\n * @param {Object} targetObject The object we want read the property from...\n * @param {String} propertyName The property to be read (e.g., 'address.street.name' or 'address.street.number'\n * to read object.address.street.name or object.address.street.number, respectively);\n * @returns {Any} Returns whatever the property holds or undefined if the property cannot be read or reached.\n */\n\nfunction _getPropertyValue(targetObject, propertyName) {\n var propertyValue; // undefined (the default return value)\n\n if (_isObject(targetObject) && _isString(propertyName)) {\n var fragments = propertyName.split(PROPERTY_SEPARATOR);\n var fragmentCount = fragments.length;\n\n if (fragmentCount > 0) {\n var firstFragment = fragments[0];\n var remainingFragments = fragmentCount > 1 ? fragments.slice(1).join(PROPERTY_SEPARATOR) : null;\n propertyValue = targetObject[firstFragment];\n\n if (remainingFragments !== null) {\n propertyValue = _getPropertyValue(propertyValue, remainingFragments);\n }\n }\n }\n\n return propertyValue;\n}\n/**\n * Compare a property map with a target object using strict comparison.\n * @param {Object} propertyMap The property map whose properties will be used for comparison. Composite\n * property names (e.g., 'address.country.name') will be tested against the \"resolved\" properties from the target object.\n * @param {Object} targetObject The target object whose properties will be tested.\n * @returns {boolean} Returns true if the properties match, false otherwise.\n */\n\n\nfunction _compareToPropertyMapStrict(propertyMap, targetObject) {\n var result = false; // \"for in\" loops do not thown exceptions for invalid data types...\n\n for (var propertyName in propertyMap) {\n if (_hasOwnProperty.call(propertyMap, propertyName)) {\n if (propertyMap[propertyName] !== _getPropertyValue(targetObject, propertyName)) {\n result = false;\n break;\n } else if (result !== true) {\n result = true;\n }\n }\n }\n\n return result;\n}\n/**\n * Checks if a sorting specifier is valid.\n * A valid sorting specifier consists of an array of arrays being each subarray a pair\n * in the format [\"property name\", \"sorting order\"].\n * The following exemple can be used to sort studies by \"date\"\" and use \"time\" to break ties in descending order.\n * [ [ 'study.date', 'desc' ], [ 'study.time', 'desc' ] ]\n * @param {Array} specifiers The sorting specifier to be tested.\n * @returns {boolean} Returns true if the specifiers are valid, false otherwise.\n */\n\n\nfunction _isValidSortingSpecifier(specifiers) {\n var result = true;\n\n if (specifiers instanceof Array && specifiers.length > 0) {\n for (var i = specifiers.length - 1; i >= 0; i--) {\n var item = specifiers[i];\n\n if (item instanceof Array) {\n var property = item[0];\n var order = item[1];\n\n if (_isString(property) && (order === ORDER_ASC || order === ORDER_DESC)) {\n continue;\n }\n }\n\n result = false;\n break;\n }\n }\n\n return result;\n}\n/**\n * Sorts an array based on sorting specifier options.\n * @param {Array} list The that needs to be sorted.\n * @param {Array} specifiers An array of specifiers. Please read isValidSortingSpecifier method definition for further details.\n * @returns {void} No value is returned. The array is sorted in place.\n */\n\n\nfunction _sortListBy(list, specifiers) {\n if (list instanceof Array && _isValidSortingSpecifier(specifiers)) {\n var specifierCount = specifiers.length;\n list.sort(function _sortListByCallback(a, b) {\n // callback name for stack traces...\n var index = 0;\n\n while (index < specifierCount) {\n var specifier = specifiers[index];\n var property = specifier[0];\n var order = specifier[1] === ORDER_DESC ? -1 : 1;\n\n var aValue = _getPropertyValue(a, property);\n\n var bValue = _getPropertyValue(b, property); // @TODO: should we check for the types being compared, like:\n // ~~ if (typeof aValue !== typeof bValue) continue;\n // Not sure because dates, for example, can be correctly compared to numbers...\n\n\n if (aValue < bValue) {\n return order * -1;\n }\n\n if (aValue > bValue) {\n return order * 1;\n }\n\n if (++index >= specifierCount) {\n return 0;\n }\n }\n });\n } else {\n throw new Error('Invalid Arguments');\n }\n}\n\n/**\n * Abstract class to fetch study metadata.\n */\n\nvar StudyMetadataSource =\n/*#__PURE__*/\nfunction () {\n function StudyMetadataSource() {\n _classCallCheck(this, StudyMetadataSource);\n }\n\n _createClass(StudyMetadataSource, [{\n key: \"getByInstanceUID\",\n\n /**\n * Get study metadata for a study with given study InstanceUID.\n * @param {String} studyInstanceUID Study InstanceUID.\n */\n value: function getByInstanceUID(studyInstanceUID) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::getByInstanceUID is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n /**\n * Load study info and study metadata for a given study into the viewer.\n * @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.\n */\n\n }, {\n key: \"loadStudy\",\n value: function loadStudy(study) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::loadStudy is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n }]);\n\n return StudyMetadataSource;\n}();\n\nvar classes = {\n MetadataProvider: MetadataProvider,\n CommandsManager: CommandsManager,\n HotkeysContext: HotkeysContext,\n HotkeysManager: HotkeysManager,\n ImageSet: ImageSet,\n StudyPrefetcher: StudyPrefetcher,\n StudyLoadingListener: StudyLoadingListener,\n StackLoadingListener: StackLoadingListener,\n DICOMFileLoadingListener: DICOMFileLoadingListener,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n //StudySummary,\n TypeSafeCollection: TypeSafeCollection,\n OHIFError: OHIFError,\n StudyMetadataSource: StudyMetadataSource\n};\n\nvar defaultButtons = [{\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: '/icons.svg#icon-tools-pan',\n active: false\n}, {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: '/icons.svg#icon-tools-zoom',\n active: false\n}, {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: '/icons.svg#icon-tools-measure-target',\n active: false\n}, {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: '/icons.svg#icon-tools-stack-scroll',\n active: false\n}, {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: '/icons.svg#icon-tools-reset',\n active: false\n}, {\n command: 'Wwwc',\n type: 'tool',\n text: 'Manual',\n svgUrl: '/icons.svg#icon-tools-levels',\n active: true\n}, {\n command: 'setWLPresetSoftTissue',\n type: 'command',\n text: 'Soft Tissue',\n svgUrl: '/icons.svg#icon-wl-soft-tissue',\n active: false\n}, {\n command: 'setWLPresetLung',\n type: 'command',\n text: 'Lung',\n svgUrl: '/icons.svg#icon-wl-lung',\n active: false\n}, {\n command: 'setWLPresetLiver',\n type: 'command',\n text: 'Liver',\n svgUrl: '/icons.svg#icon-wl-liver',\n active: false\n}, {\n command: 'setWLPresetBrain',\n type: 'command',\n text: 'Brain',\n svgUrl: '/icons.svg#icon-wl-brain',\n active: false\n}];\n\nvar tools = function tools() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n buttons: defaultButtons\n };\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'SET_TOOL_ACTIVE':\n var item = state.buttons.find(function (button) {\n return button.command === action.tool;\n });\n var buttons = [];\n\n if (item.type === 'tool') {\n buttons = state.buttons.map(function (button) {\n if (button.command === action.tool) {\n button.active = true;\n } else if (button.type === 'tool') {\n button.active = false;\n }\n\n return button;\n });\n }\n\n return {\n buttons: buttons\n };\n\n case 'SET_AVAILABLE_BUTTONS':\n return {\n buttons: action.buttons\n };\n\n default:\n return state;\n }\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_merge = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n});\n\nvar defaultState = {\n activeViewportIndex: 0,\n layout: {\n viewports: [{\n height: '100%',\n width: '100%'\n }]\n },\n viewportSpecificData: {}\n};\n\nvar viewports = function viewports() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var viewportSpecificData;\n\n switch (action.type) {\n case 'SET_VIEWPORT_ACTIVE':\n return Object.assign({}, state, {\n activeViewportIndex: action.viewportIndex\n });\n\n case 'SET_LAYOUT':\n return Object.assign({}, state, {\n layout: action.layout\n });\n\n case 'SET_VIEWPORT_SPECIFIC_DATA':\n var currentData = lodash_clonedeep(state.viewportSpecificData[action.viewportIndex]) || {};\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = lodash_merge({}, currentData, action.data);\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n case 'CLEAR_VIEWPORT_SPECIFIC_DATA':\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = {};\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$1 = {\n servers: []\n};\n\nvar servers = function servers() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$1;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_SERVER':\n var _servers = state.servers;\n\n var alreadyExists = _servers.find(function (server) {\n return server.id === action.server.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n _servers.push(action.server);\n\n if (_servers.length === 1) {\n _servers[0].active = true;\n }\n\n return Object.assign({}, state, {\n servers: _servers\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$2 = {\n progress: {},\n lastUpdated: null\n};\n\nvar loading = function loading() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$2;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var progress;\n var lastUpdated;\n\n switch (action.type) {\n case 'SET_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n progress[action.progressId] = action.progressData; // This is a workaround so we can easily identify changes\n // to the progress object without doing deep comparison.\n\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n case 'CLEAR_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n delete progress[action.progressId];\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n default:\n return state;\n }\n};\n\nvar PLUGIN_TYPES = {\n VIEWPORT: 'viewport'\n};\nvar plugins = {\n PLUGIN_TYPES: PLUGIN_TYPES,\n availablePlugins: []\n};\n\nvar defaultState$3 = {\n availablePlugins: []\n};\n\nvar plugins$1 = function plugins$$1() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$3;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_PLUGIN':\n var availablePlugins = state.availablePlugins;\n var alreadyExists = availablePlugins.find(function (plugin) {\n return plugin.id === action.plugin.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n availablePlugins.push({\n id: action.plugin.id,\n type: action.plugin.type\n }); // Not sure where else to put this. We shouldn't store functions in Redux, so I'll do this instead\n\n plugins.availablePlugins.push(action.plugin);\n return Object.assign({}, state, {\n availablePlugins: availablePlugins\n });\n\n default:\n return state;\n }\n};\n\nvar reducers = {\n tools: tools,\n viewports: viewports,\n servers: servers,\n loading: loading,\n plugins: plugins$1\n};\n\nvar redux = {\n reducers: reducers,\n actions: actions\n};\n\n// TODO: This is duplicated in TypeSafeCollection\nfunction isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n} // TODO: This is duplicated in TypeSafeCollection\n\n\nfunction isString(subject) {\n return typeof subject === 'string';\n} // Search for some string inside any object or array\n\n\nfunction search(object, query) {\n var property = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var result = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // Create the search pattern\n var pattern = new RegExp(query.trim(), 'i');\n Object.keys(object).forEach(function (key) {\n var item = object[key]; // Stop here if item is empty\n\n if (!item) {\n return;\n } // Get the value to be compared\n\n\n var value = isString(property) ? item[property] : item; // Check if the value match the pattern\n\n if (isString(value) && pattern.test(value)) {\n // Add the current item to the result\n result.push(item);\n }\n\n if (isObject(item)) {\n // Search recursively the item if the current item is an object\n search(item, query, property, result);\n }\n }); // Return the found items\n\n return result;\n} // Encode any string into a safe format for HTML id attribute\n\n\nfunction encodeId(input) {\n var string = input && input.toString ? input.toString() : input; // Return an underscore if the given string is empty or if it's not a string\n\n if (string === '' || typeof string !== 'string') {\n return '_';\n } // Create a converter to replace non accepted chars\n\n\n var converter = function converter(match) {\n return '_' + match[0].charCodeAt(0).toString(16) + '_';\n }; // Encode the given string and return it\n\n\n return string.replace(/[^a-zA-Z0-9-]/g, converter);\n}\n\nvar string = {\n search: search,\n encodeId: encodeId\n};\n\n// Transforms a shallow object with keys separated by \".\" into a nested object\nfunction getNestedObject(shallowObject) {\n var nestedObject = {};\n\n for (var key in shallowObject) {\n if (!shallowObject.hasOwnProperty(key)) continue;\n var value = shallowObject[key];\n var propertyArray = key.split('.');\n var currentObject = nestedObject;\n\n while (propertyArray.length) {\n var currentProperty = propertyArray.shift();\n\n if (!propertyArray.length) {\n currentObject[currentProperty] = value;\n } else {\n if (!currentObject[currentProperty]) {\n currentObject[currentProperty] = {};\n }\n\n currentObject = currentObject[currentProperty];\n }\n }\n }\n\n return nestedObject;\n}\n\nfunction getShallowObject(nestedObject) {\n var shallowObject = {};\n\n var putValues = function putValues(baseKey, nestedObject, resultObject) {\n for (var key in nestedObject) {\n if (!nestedObject.hasOwnProperty(key)) continue;\n var currentKey = baseKey ? \"\".concat(baseKey, \".\").concat(key) : key;\n var currentValue = nestedObject[key];\n\n if (_typeof(currentValue) === 'object') {\n if (currentValue instanceof Array) {\n currentKey += '[]';\n }\n\n putValues(currentKey, currentValue, resultObject);\n } else {\n resultObject[currentKey] = currentValue;\n }\n }\n };\n\n putValues('', nestedObject, shallowObject);\n return shallowObject;\n}\nvar object = {\n getNestedObject: getNestedObject,\n getShallowObject: getShallowObject\n};\n\nvar validate = createCommonjsModule(function (module, exports) {\n/*!\n * validate.js 0.12.0\n *\n * (c) 2013-2017 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n ;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 12,\n patch: 0,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n v.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", {attr: attribute}));\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false;\n\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n }\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(commonjsGlobal,\n exports,\n module,\n null);\n});\n\nvalidate.validators.equals = function (value, options, key, attributes) {\n if (options && value !== options.value) {\n return key + 'must equal ' + options.value;\n }\n};\n\nvalidate.validators.doesNotEqual = function (value, options, key) {\n if (options && value === options.value) {\n return key + 'cannot equal ' + options.value;\n }\n};\n\nvalidate.validators.contains = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) === -1) {\n return key + 'must contain ' + options.value;\n }\n};\n\nvalidate.validators.doesNotContain = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) !== -1) {\n return key + 'cannot contain ' + options.value;\n }\n};\n\nvalidate.validators.startsWith = function (value, options, key) {\n if (options && value.startsWith && !value.startsWith(options.value)) {\n return key + 'must start with ' + options.value;\n }\n};\n\nvalidate.validators.endsWith = function (value, options, key) {\n if (options && value.endsWith && !value.endsWith(options.value)) {\n return key + 'must end with ' + options.value;\n }\n};\n\n/**\n * Import Constants\n */\n\nvar StudySummary = metadata.StudySummary,\n InstanceMetadata$1 = metadata.InstanceMetadata;\n/**\n * Match a Metadata instance against rules using Validate.js for validation.\n * @param {StudySummary|InstanceMetadata} metadataInstance Metadata instance object\n * @param {Array} rules Array of MatchingRules instances (StudyMatchingRule|SeriesMatchingRule|ImageMatchingRule) for the match\n * @return {Object} Matching Object with score and details (which rule passed or failed)\n */\n\nvar match = function match(metadataInstance, rules) {\n // Make sure the supplied data is valid.\n if (!(metadataInstance instanceof StudySummary || metadataInstance instanceof InstanceMetadata$1)) {\n throw new OHIFError('HPMatcher::match metadataInstance must be an instance of StudySummary or InstanceMetadata');\n }\n\n var options = {\n format: 'grouped'\n };\n var details = {\n passed: [],\n failed: []\n };\n var requiredFailed = false;\n var score = 0;\n rules.forEach(function (rule) {\n var attribute = rule.attribute;\n var customAttributeExists = metadataInstance.customAttributeExists(attribute); // If the metadataInstance we are testing (e.g. study, series, or instance MetadataInstance) do\n // not contain the attribute specified in the rule, check whether or not they have been\n // defined in the CustomAttributeRetrievalCallbacks Object.\n\n if (!customAttributeExists && HP.CustomAttributeRetrievalCallbacks.hasOwnProperty(attribute)) {\n var customAttribute = HP.CustomAttributeRetrievalCallbacks[attribute];\n metadataInstance.setCustomAttribute(attribute, customAttribute.callback(metadataInstance));\n customAttributeExists = true;\n } // Format the constraint as required by Validate.js\n\n\n var testConstraint = _defineProperty({}, attribute, rule.constraint); // Create a single attribute object to be validated, since metadataInstance is an\n // instance of Metadata (StudyMetadata, SeriesMetadata or InstanceMetadata)\n\n\n var attributeValue = customAttributeExists ? metadataInstance.getCustomAttribute(attribute) : metadataInstance.getTagValue(attribute);\n\n var attributeMap = _defineProperty({}, attribute, attributeValue); // Use Validate.js to evaluate the constraints on the specified metadataInstance\n\n\n var errorMessages;\n\n try {\n errorMessages = validate(attributeMap, testConstraint, [options]);\n } catch (e) {\n errorMessages = ['Something went wrong during validation.', e];\n }\n\n if (!errorMessages) {\n // If no errorMessages were returned, then validation passed.\n // Add the rule's weight to the total score\n score += parseInt(rule.weight, 10); // Log that this rule passed in the matching details object\n\n details.passed.push({\n rule: rule\n });\n } else {\n // If errorMessages were present, then validation failed\n // If the rule that failed validation was Required, then\n // mark that a required Rule has failed\n if (rule.required) {\n requiredFailed = true;\n } // Log that this rule failed in the matching details object\n // and include any error messages\n\n\n details.failed.push({\n rule: rule,\n errorMessages: errorMessages\n });\n }\n }); // If a required Rule has failed Validation, set the matching score to zero\n\n if (requiredFailed) {\n score = 0;\n }\n\n return {\n score: score,\n details: details,\n requiredFailed: requiredFailed\n };\n};\n\nvar HPMatcher = {\n match: match\n};\n\n// Sorts an array by score\nvar sortByScore = function sortByScore(arr) {\n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n};\n\n/**\n * Import Constants\n */\n\nvar StudyMetadata$1 = metadata.StudyMetadata,\n InstanceMetadata$2 = metadata.InstanceMetadata,\n StudySummary$1 = metadata.StudySummary;\n\n\nvar ABSTRACT_PRIOR_VALUE = 'abstractPriorValue';\n/*Meteor.startup(() => {\n HP.addCustomViewportSetting('wlPreset', 'Window/Level Preset', Object.create(null), (element, optionValue) => {\n if (_.findWhere(OHIF.viewer.wlPresets, { id: optionValue })) {\n OHIF.viewerbase.wlPresets.applyWLPreset(optionValue, element);\n }\n });\n});*/\n// TODO:\n// Should have ProtocolStore as an input to constructor\n// Something to update current HP and current stage 'globally'\n//\n//\n// Should allow user to provide:\n// functions for adding /\n\nvar ProtocolEngine =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n * @param {Array} studies Array of study metadata\n * @param {Map} priorStudies Map of prior studies\n * @param {Object} studyMetadataSource Instance of StudyMetadataSource (ohif-viewerbase) Object to get study metadata\n */\n function ProtocolEngine(studies, priorStudies, studyMetadataSource) {\n _classCallCheck(this, ProtocolEngine);\n\n _defineProperty(this, \"matchedProtocols\", new Set());\n\n _defineProperty(this, \"matchedProtocolScores\", new Map());\n\n // -----------\n // Type Validations\n if (!(studyMetadataSource instanceof StudyMetadataSource)) {\n throw new OHIFError('ProtocolEngine::constructor studyMetadataSource is not an instance of StudyMetadataSource');\n }\n\n if (!(studies instanceof Array) && !studies.every(function (study) {\n return study instanceof StudyMetadata$1;\n })) {\n throw new OHIFError(\"ProtocolEngine::constructor studies is not an array or it's items are not instances of StudyMetadata\");\n } // --------------\n // Initialization\n\n\n this.studies = studies;\n this.priorStudies = priorStudies instanceof Map ? priorStudies : new Map();\n this.studyMetadataSource = studyMetadataSource; // Put protocol engine in a known state\n\n this.reset(); // Create an array for new stage ids to be stored\n // while editing a stage\n\n this.newStageIds = [];\n }\n /**\n * Resets the ProtocolEngine to the best match\n */\n\n\n _createClass(ProtocolEngine, [{\n key: \"reset\",\n value: function reset() {\n var protocol = this.getBestProtocolMatch();\n this.setHangingProtocol(protocol);\n }\n /**\n * Retrieves the current Stage from the current Protocol and stage index\n *\n * @returns {*} The Stage model for the currently displayed Stage\n */\n\n }, {\n key: \"getCurrentStageModel\",\n value: function getCurrentStageModel() {\n return this.protocol.stages[this.stage];\n }\n /**\n * Finds the best protocols from Protocol Store, matching each protocol matching rules\n * with the given study. The best protocol are orded by score and returned in an array\n * @param {Object} study StudyMetadata instance object\n * @return {Array} Array of match objects or an empty array if no match was found\n * Each match object has the score of the matching and the matched\n * protocol\n */\n\n }, {\n key: \"findMatchByStudy\",\n value: function findMatchByStudy(study) {\n log$1.trace('ProtocolEngine::findMatchByStudy');\n var matched = [];\n var studyInstance = study.getFirstInstance(); // Set custom attribute for study metadata\n\n var numberOfAvailablePriors = this.getNumberOfAvailablePriors(study.getObjectID());\n HP.ProtocolStore.getProtocol().forEach(function (protocol) {\n // Clone the protocol's protocolMatchingRules array\n // We clone it so that we don't accidentally add the\n // numberOfPriorsReferenced rule to the Protocol itself.\n var rules = protocol.protocolMatchingRules.slice();\n\n if (!rules) {\n return;\n } // Check if the study has the minimun number of priors used by the protocol.\n\n\n var numberOfPriorsReferenced = protocol.getNumberOfPriorsReferenced();\n\n if (numberOfPriorsReferenced > numberOfAvailablePriors) {\n return;\n } // Run the matcher and get matching details\n\n\n var matchedDetails = HPMatcher.match(studyInstance, rules);\n var score = matchedDetails.score; // The protocol matched some rule, add it to the matched list\n\n if (score > 0) {\n matched.push({\n score: score,\n protocol: protocol\n });\n }\n }); // If no matches were found, select the default protocol\n\n if (!matched.length) {\n var defaultProtocol = HP.ProtocolStore.getProtocol('defaultProtocol');\n return [{\n score: 1,\n protocol: defaultProtocol\n }];\n } // Sort the matched list by score\n\n\n sortByScore(matched);\n log$1.trace('ProtocolEngine::findMatchByStudy matched', matched);\n return matched;\n }\n }, {\n key: \"_clearMatchedProtocols\",\n value: function _clearMatchedProtocols() {\n this.matchedProtocols.clear();\n this.matchedProtocolScores.clear();\n }\n /**\n * Populates the MatchedProtocols Collection by running the matching procedure\n */\n\n }, {\n key: \"updateProtocolMatches\",\n value: function updateProtocolMatches() {\n var _this = this;\n\n log$1.trace('ProtocolEngine::updateProtocolMatches'); // Clear all data currently in matchedProtocols\n\n this._clearMatchedProtocols(); // For each study, find the matching protocols\n\n\n this.studies.forEach(function (study) {\n var matched = _this.findMatchByStudy(study); // For each matched protocol, check if it is already in MatchedProtocols\n\n\n matched.forEach(function (matchedDetail) {\n var protocol = matchedDetail.protocol;\n\n if (!protocol) {\n return;\n } // If it is not already in the MatchedProtocols Collection, insert it with its score\n\n\n if (!_this.matchedProtocols.has(protocol)) {\n log$1.trace('ProtocolEngine::updateProtocolMatches inserting protocol match', matchedDetail);\n\n _this.matchedProtocols.add(protocol);\n\n _this.matchedProtocolScores[protocol.id] = matchedDetail.score;\n }\n });\n });\n }\n }, {\n key: \"_getHighestScoringProtocol\",\n value: function _getHighestScoringProtocol() {\n var highestScoringProtocolId = ProtocolEngine._largestKeyByValue(this.matchedProtocolScores);\n\n return this.matchedProtocols[highestScoringProtocolId];\n }\n /**\n * Return the best matched Protocol to the current study or set of studies\n * @returns {*}\n */\n\n }, {\n key: \"getBestProtocolMatch\",\n value: function getBestProtocolMatch() {\n // Run the matching to populate matchedProtocols Set and Map\n this.updateProtocolMatches(); // Retrieve the highest scoring Protocol\n\n var bestMatch = this._getHighestScoringProtocol();\n\n log$1.trace('ProtocolEngine::getBestProtocolMatch bestMatch', bestMatch);\n return bestMatch;\n }\n /**\n * Get the number of prior studies supplied in the priorStudies map property.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {number} The number of available prior studies with the same PatientID\n */\n\n }, {\n key: \"getNumberOfAvailablePriors\",\n value: function getNumberOfAvailablePriors(studyObjectID) {\n return this.getAvailableStudyPriors(studyObjectID).length;\n }\n /**\n * Get the array of prior studies from a specific study.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {Array} The array of available priors or an empty array\n */\n\n }, {\n key: \"getAvailableStudyPriors\",\n value: function getAvailableStudyPriors(studyObjectID) {\n var priors = this.priorStudies.get(studyObjectID);\n return priors instanceof Array ? priors : [];\n } // Match images given a list of Studies and a Viewport's image matching reqs\n\n }, {\n key: \"matchImages\",\n value: function matchImages(viewport, viewportIndex) {\n var _this2 = this;\n\n log$1.trace('ProtocolEngine::matchImages');\n var studyMatchingRules = viewport.studyMatchingRules,\n seriesMatchingRules = viewport.seriesMatchingRules,\n instanceMatchingRules = viewport.imageMatchingRules;\n var matchingScores = [];\n var currentStudy = this.studies[0]; // @TODO: Should this be: this.studies[this.currentStudy] ???\n\n var firstInstance = currentStudy.getFirstInstance();\n var highestStudyMatchingScore = 0;\n var highestSeriesMatchingScore = 0; // Set custom attribute for study metadata and it's first instance\n\n currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n } // Only used if study matching rules has abstract prior values defined...\n\n\n var priorStudies;\n studyMatchingRules.forEach(function (rule) {\n if (rule.attribute === ABSTRACT_PRIOR_VALUE) {\n var validatorType = Object.keys(rule.constraint)[0];\n var validator = Object.keys(rule.constraint[validatorType])[0];\n var abstractPriorValue = rule.constraint[validatorType][validator];\n abstractPriorValue = parseInt(abstractPriorValue, 10); // TODO: Restrict or clarify validators for abstractPriorValue?\n // No need to call it more than once...\n\n if (!priorStudies) {\n priorStudies = _this2.getAvailableStudyPriors(currentStudy.getObjectID());\n } // TODO: Revisit this later: What about two studies with the same\n // study date?\n\n\n var priorStudy;\n\n if (abstractPriorValue === -1) {\n priorStudy = priorStudies[priorStudies.length - 1];\n } else {\n var studyIndex = Math.max(abstractPriorValue - 1, 0);\n priorStudy = priorStudies[studyIndex];\n } // Invalid data\n\n\n if (!(priorStudy instanceof StudyMetadata$1) && !(priorStudy instanceof StudySummary$1)) {\n return;\n }\n\n var priorStudyObjectID = priorStudy.getObjectID(); // Check if study metadata is already in studies list\n\n if (_this2.studies.find(function (study) {\n return study.getObjectID() === priorStudyObjectID;\n })) {\n return;\n } // Get study metadata if necessary and load study in the viewer (each viewer should provide it's own load study method)\n\n\n _this2.studyMetadataSource.loadStudy(priorStudy).then(function (studyMetadata) {\n // Set the custom attribute abstractPriorValue for the study metadata\n studyMetadata.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue); // Also add custom attribute\n\n var firstInstance = studyMetadata.getFirstInstance();\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue);\n } // Insert the new study metadata\n\n\n _this2.studies.push(studyMetadata); // Update the viewport to refresh layout manager with new study\n\n\n _this2.updateViewports(viewportIndex);\n }, function (error) {\n log$1.warn(error);\n throw new OHIFError(\"ProtocolEngine::matchImages could not get study metadata for the Study with the following ObjectID: \".concat(priorStudyObjectID));\n });\n } // TODO: Add relative Date / time\n\n });\n this.studies.forEach(function (study) {\n var studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {\n return;\n }\n\n highestStudyMatchingScore = studyMatchDetails.score;\n study.forEachSeries(function (series) {\n var seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {\n return;\n }\n\n highestSeriesMatchingScore = seriesMatchDetails.score;\n series.forEachInstance(function (instance, index) {\n // This tests to make sure there is actually image data in this instance\n // TODO: Change this when we add PDF and MPEG support\n // See https://ohiforg.atlassian.net/browse/LT-227\n // sopClassUid = x00080016\n // rows = x00280010\n if (!isImage(instance.getTagValue('x00080016')) && !instance.getTagValue('x00280010')) {\n return;\n }\n\n var instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (instanceMatchDetails.requiredFailed === true) {\n return;\n }\n\n var matchDetails = {\n passed: [],\n failed: []\n };\n matchDetails.passed = matchDetails.passed.concat(instanceMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(seriesMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(studyMatchDetails.details.passed);\n matchDetails.failed = matchDetails.failed.concat(instanceMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed);\n var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score;\n var currentSOPInstanceUID = instance.getSOPInstanceUID();\n var imageDetails = {\n studyInstanceUid: study.getStudyInstanceUID(),\n seriesInstanceUid: series.getSeriesInstanceUID(),\n sopInstanceUid: currentSOPInstanceUID,\n currentImageIdIndex: index,\n matchingScore: totalMatchScore,\n matchDetails: matchDetails,\n sortingInfo: {\n score: totalMatchScore,\n study: instance.getTagValue('x00080020') + instance.getTagValue('x00080030'),\n // StudyDate = x00080020 StudyTime = x00080030\n series: parseInt(instance.getTagValue('x00200011')),\n // TODO: change for seriesDateTime SeriesNumber = x00200011\n instance: parseInt(instance.getTagValue('x00200013')) // TODO: change for acquisitionTime InstanceNumber = x00200013\n\n }\n }; // Find the displaySet\n\n var displaySet = study.findDisplaySet(function (displaySet) {\n return displaySet.images.find(function (image) {\n return image.getSOPInstanceUID() === currentSOPInstanceUID;\n });\n }); // If the instance was found, set the displaySet ID\n\n if (displaySet) {\n imageDetails.displaySetInstanceUid = displaySet.getUID();\n imageDetails.imageId = instance.getImageId();\n }\n\n matchingScores.push(imageDetails);\n });\n });\n }); // Sort the matchingScores\n\n var sortingFunction = sortBy({\n name: 'score',\n reverse: true\n }, {\n name: 'study',\n reverse: true\n }, {\n name: 'instance'\n }, {\n name: 'series'\n });\n matchingScores.sort(function (a, b) {\n return sortingFunction(a.sortingInfo, b.sortingInfo);\n });\n var bestMatch = matchingScores[0];\n log$1.trace('ProtocolEngine::matchImages bestMatch', bestMatch);\n return {\n bestMatch: bestMatch,\n matchingScores: matchingScores\n };\n }\n /**\n * Rerenders viewports that are part of the current ProtocolEngine's LayoutManager\n * using the matching rules internal to each viewport.\n *\n * If this function is provided the index of a viewport, only the specified viewport\n * is rerendered.\n *\n * @param viewportIndex\n */\n\n }, {\n key: \"updateViewports\",\n value: function updateViewports(viewportIndex) {\n var _this3 = this;\n\n log$1.trace(\"ProtocolEngine::updateViewports viewportIndex: \".concat(viewportIndex)); // Make sure we have an active protocol with a non-empty array of display sets\n\n if (!this.getNumProtocolStages()) {\n return;\n } // Retrieve the current stage\n\n\n var stageModel = this.getCurrentStageModel(); // If the current stage does not fulfill the requirements to be displayed,\n // stop here.\n\n if (!stageModel || !stageModel.viewportStructure || !stageModel.viewports || !stageModel.viewports.length) {\n return;\n } // Retrieve the layoutTemplate associated with the current display set's viewport structure\n // If no such template name exists, stop here.\n\n\n var layoutTemplateName = stageModel.viewportStructure.getLayoutTemplateName();\n\n if (!layoutTemplateName) {\n return;\n } // Retrieve the properties associated with the current display set's viewport structure template\n // If no such layout properties exist, stop here.\n\n\n var layoutProps = stageModel.viewportStructure.properties;\n\n if (!layoutProps) {\n return;\n } // Create an empty array to store the output viewportData\n\n\n var viewportData = []; // Empty the matchDetails associated with the ProtocolEngine.\n // This will be used to store the pass/fail details and score\n // for each of the viewport matching procedures\n\n this.matchDetails = []; // Loop through each viewport\n\n stageModel.viewports.forEach(function (viewport, viewportIndex) {\n var details = _this3.matchImages(viewport, viewportIndex);\n\n _this3.matchDetails[viewportIndex] = details; // Convert any YES/NO values into true/false for Cornerstone\n\n var cornerstoneViewportParams = {}; // Cache viewportSettings keys\n\n var viewportSettingsKeys = Object.keys(viewport.viewportSettings);\n viewportSettingsKeys.forEach(function (key) {\n var value = viewport.viewportSettings[key];\n\n if (value === 'YES') {\n value = true;\n } else if (value === 'NO') {\n value = false;\n }\n\n cornerstoneViewportParams[key] = value;\n }); // imageViewerViewports occasionally needs relevant layout data in order to set\n // the element style of the viewport in question\n\n var currentViewportData = _objectSpread({\n viewportIndex: viewportIndex,\n viewport: cornerstoneViewportParams\n }, layoutProps);\n\n var customSettings = [];\n viewportSettingsKeys.forEach(function (id) {\n var setting = HP.CustomViewportSettings[id];\n\n if (!setting) {\n return;\n }\n\n customSettings.push({\n id: id,\n value: viewport.viewportSettings[id]\n });\n });\n\n currentViewportData.renderedCallback = function (element) {\n //console.log('renderedCallback for ' + element.id);\n customSettings.forEach(function (customSetting) {\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback Applying custom setting: \".concat(customSetting.id));\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback with value: \".concat(customSetting.value));\n var setting = HP.CustomViewportSettings[customSetting.id];\n setting.callback(element, customSetting.value);\n });\n };\n\n var currentMatch = details.bestMatch;\n var currentPosition = 1;\n var scoresLength = details.matchingScores.length;\n\n while (currentPosition < scoresLength && viewportData.find(function (a) {\n return a.imageId === currentMatch.imageId;\n })) {\n currentMatch = details.matchingScores[currentPosition];\n currentPosition++;\n }\n\n if (currentMatch && currentMatch.imageId) {\n currentViewportData.studyInstanceUid = currentMatch.studyInstanceUid;\n currentViewportData.seriesInstanceUid = currentMatch.seriesInstanceUid;\n currentViewportData.sopInstanceUid = currentMatch.sopInstanceUid;\n currentViewportData.currentImageIdIndex = currentMatch.currentImageIdIndex;\n currentViewportData.displaySetInstanceUid = currentMatch.displaySetInstanceUid;\n currentViewportData.imageId = currentMatch.imageId;\n } // @TODO Why should we throw an exception when a best match is not found? This was aborting the whole process.\n // if (!currentViewportData.displaySetInstanceUid) {\n // throw new OHIFError('ProtocolEngine::updateViewports No matching display set found?');\n // }\n\n\n viewportData.push(currentViewportData);\n });\n this.LayoutManager.layoutTemplateName = layoutTemplateName;\n this.LayoutManager.layoutProps = layoutProps;\n this.LayoutManager.viewportData = viewportData;\n\n if (viewportIndex !== undefined && viewportData[viewportIndex]) {\n this.LayoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, viewportData[viewportIndex]);\n } else {\n this.LayoutManager.updateViewports();\n }\n }\n /**\n * Sets the current Hanging Protocol to the specified Protocol\n * An optional argument can also be used to prevent the updating of the Viewports\n *\n * @param newProtocol\n * @param updateViewports\n */\n\n }, {\n key: \"setHangingProtocol\",\n value: function setHangingProtocol(newProtocol) {\n var updateViewports = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log$1.trace('ProtocolEngine::setHangingProtocol newProtocol', newProtocol);\n log$1.trace(\"ProtocolEngine::setHangingProtocol updateViewports = \".concat(updateViewports)); // Reset the array of newStageIds\n\n this.newStageIds = [];\n\n if (HP.Protocol.prototype.isPrototypeOf(newProtocol)) {\n this.protocol = newProtocol;\n } else {\n this.protocol = new HP.Protocol();\n this.protocol.fromObject(newProtocol);\n }\n\n this.stage = 0; // Update viewports by default\n\n if (updateViewports) {\n this.updateViewports();\n } //Session.set('HangingProtocolName', this.protocol.name);\n //Session.set('HangingProtocolStage', this.stage);\n\n }\n /**\n * Check if the next stage is available\n * @return {Boolean} True if next stage is available or false otherwise\n */\n\n }, {\n key: \"isNextStageAvailable\",\n value: function isNextStageAvailable() {\n var numberOfStages = this.getNumProtocolStages();\n return this.stage + 1 < numberOfStages;\n }\n /**\n * Check if the previous stage is available\n * @return {Boolean} True if previous stage is available or false otherwise\n */\n\n }, {\n key: \"isPreviousStageAvailable\",\n value: function isPreviousStageAvailable() {\n return this.stage - 1 >= 0;\n }\n /**\n * Changes the current stage to a new stage index in the display set sequence.\n * It checks if the next stage exists.\n *\n * @param {Integer} stageAction An integer value specifying wheater next (1) or previous (-1) stage\n * @return {Boolean} True if new stage has set or false, otherwise\n */\n\n }, {\n key: \"setCurrentProtocolStage\",\n value: function setCurrentProtocolStage(stageAction) {\n // Check if previous or next stage is available\n if (stageAction === -1 && !this.isPreviousStageAvailable()) {\n return false;\n } else if (stageAction === 1 && !this.isNextStageAvailable()) {\n return false;\n } // Sets the new stage\n\n\n this.stage += stageAction; // Log the new stage\n\n log$1.trace(\"ProtocolEngine::setCurrentProtocolStage stage = \".concat(this.stage)); // Set stage Session variable for reactivity\n //Session.set('HangingProtocolStage', this.stage);\n // Since stage has changed, we need to update the viewports\n // and redo matchings\n\n this.updateViewports(); // Everything went well\n\n return true;\n }\n /**\n * Retrieves the number of Stages in the current Protocol or\n * undefined if no protocol or stages are set\n */\n\n }, {\n key: \"getNumProtocolStages\",\n value: function getNumProtocolStages() {\n if (!this.protocol || !this.protocol.stages || !this.protocol.stages.length) {\n return;\n }\n\n return this.protocol.stages.length;\n }\n /**\n * Switches to the next protocol stage in the display set sequence\n */\n\n }, {\n key: \"nextProtocolStage\",\n value: function nextProtocolStage() {\n log$1.trace('ProtocolEngine::nextProtocolStage');\n\n if (!this.setCurrentProtocolStage(1)) {\n log$1.trace('ProtocolEngine::nextProtocolStage failed');\n }\n }\n /**\n * Switches to the previous protocol stage in the display set sequence\n */\n\n }, {\n key: \"previousProtocolStage\",\n value: function previousProtocolStage() {\n log$1.trace('ProtocolEngine::previousProtocolStage');\n\n if (!this.setCurrentProtocolStage(-1)) {\n log$1.trace('ProtocolEngine::previousProtocolStage failed');\n }\n }\n }]);\n\n return ProtocolEngine;\n}();\n\nvar viewer = {};\nvar OHIF$1 = {\n viewer: viewer,\n utils: utils,\n studies: studies,\n redux: redux,\n classes: classes,\n metadata: metadata,\n hotkeys: hotkeys,\n header: header,\n cornerstone: cornerstone$1,\n string: string,\n ui: ui,\n user: user,\n object: object,\n commands: commands,\n log: log$1,\n external: external,\n DICOMWeb: DICOMWeb,\n plugins: plugins\n};\n\nexport default OHIF$1;\nexport { viewer, utils, studies, redux, classes, metadata, hotkeys, header, cornerstone$1 as cornerstone, string, ui, user, object, commands, log$1 as log, DICOMWeb, plugins, OHIF$1 as OHIF };\n//# sourceMappingURL=index.es.js.map\n","/*! dicom-parser - 1.8.2 - 2018-12-05 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return Z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(e).length;default:if(n)return Z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:f>223?3:f>191?2:1;if(i+h<=r)switch(h){case 1:f<128&&(u=f);break;case 2:128==(192&(a=e[i+1]))&&(l=(31&f)<<6|63&a)>127&&(u=l);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(l=(15&f)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&f)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return D(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return S(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},l.prototype.compare=function(e,t,r,n,i){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),f=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return y(this,e,t,r);case\"utf8\":case\"utf-8\":return b(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,a){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function B(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function U(e,t,r,n,a){return a||B(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||B(e,0,r,8),i.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return U(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return U(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function j(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var l=i(s.prototype),f=0;f1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=l}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+f[r].offset+8,f[r].length);for(var c=l(f,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;y.WritableState=_;var f=r(6);f.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,f=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(f||0===f)?f:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?l(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(2),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,l=!0;r;)i[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;i.allBuffers=l,b(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:f.length,f,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)})}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}f.inherits(y,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=g.destroy,y.prototype._undestroy=g.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,l,f;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(f=r.slice()).length,l=0;l0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var l=n[r],f=o(i,l);if(void 0===f)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,f);return(0,a.default)(e,t,f,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function f(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var l=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var f,v=\"\",S=!1,k=[\"{\",\"}\"];(c(r)&&(S=!0,k=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return b(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||S&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),f=S?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(f,v,k)):k[0]+v+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(l.value)<0?(s=g(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function y(e){return void 0===e}function b(e){return v(e)&&\"[object RegExp]\"===S(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===S(e)}function E(e){return v(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;f--)if(u[f]!==h[f])return!1;for(f=u.length-1;f>=0;f--)if(l=u[f],!y(e[l],t[l],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function b(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),l=!e&&i&&!r;if((s&&o&&v(i,r)||l)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){y(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){y(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){y(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){y(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function f(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=b;var a,o=r(38);b.ReadableState=y;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=r(34),f=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(b,l);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(2),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,o)):(i||(a=function(e,t){var r;n=t,f.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===f.prototype||(t=function(e){return f.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){c(\"emit readable\"),e.emit(\"readable\"),O(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=f.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function R(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?R(this):S(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&R(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&R(this)),null!==n&&this.emit(\"data\",n),n},b.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var l=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:b;function f(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",f),r.removeListener(\"end\",u),r.removeListener(\"end\",b),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(l):r.once(\"end\",l),e.on(\"unpipe\",f);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,O(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),b(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",y),b()}function y(){c(\"onfinish\"),e.removeListener(\"close\",_),b()}function b(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",y),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var l=new i.default(r.byteArrayParser,r.byteArray,t);return l.warnings=r.warnings,l.position=r.position,l}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=f(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,l,f,u,h,d){var c,p,g,m,_,y,b,v,w,E=d.bits,x=0,S=0,k=0,A=0,P=0,T=0,D=0,O=0,I=0,R=0,L=null,F=0,B=new n.Buf16(16),U=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)B[x]=0;for(S=0;S=1&&0===B[A];A--);if(P>A&&(P=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(k=1;k0&&(0===e||1!==A))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+B[x];for(S=0;S852||2===e&&I>592)return 1;for(;;){b=x-D,h[S]y?(v=M[N+h[S]],w=L[F+h[S]]):(v=96,w=0),c=1<>D)+(p-=c)]=b<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(R&=c-1,R+=c):R=0,S++,0==--B[x]){if(x===A)break;x=t[r+h[S]]}if(x>P&&(R&m)!==g){for(0===D&&(D=P),_+=k,O=1<<(T=x-D);T+D852||2===e&&I>592)return 1;f[g=R&m]=P<<24|T<<16|_-u|0}}return 0!==R&&(f[_+R]=x-D<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,l,f,u,h,d,c,p,g,m,_,y,b,v,w,E,x,S,k,A;r=e.state,n=e.next_in,k=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),l=r.dmax,f=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=b>>>24,p-=v,0===(v=b>>>16&255))A[a++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=g[(65535&b)+(c&(1<>>=v,p-=v),p<15&&(c+=k[n++]<>>=v=b>>>24,p-=v,!(16&(v=b>>>16&255))){if(0==(64&v)){b=m[(65535&b)+(c&(1<l){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=d,0===h){if(x+=f-v,v2;)A[a++]=S[x++],A[a++]=S[x++],A[a++]=S[x++],w-=3;w&&(A[a++]=S[x++],w>1&&(A[a++]=S[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var le,fe,ue=!0;function he(e){if(ue){var t;for(le=new n.Buf32(512),fe=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(f,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,fe,0,e.work,{bits:5}),ue=!1}e.lencode=le,e.lenbits=9,e.distcode=fe,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,le=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(le-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=S;case S:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,le=0,r.mode=k;case k:for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=A;case A:if(1024&r.flags){for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=T;case T:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&le,le-=7&le,r.mode=V;break}for(;le<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=B;break;case 1:if(he(r),r.mode=j,t===c){se>>>=2,le-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,le-=2;break;case B:for(se>>>=7&le,le-=7≤le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,le=0,r.mode=U,t===c)break e;case U:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;le<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,le-=5,r.ndist=1+(31&se),se>>>=5,le-=5,r.ncode=4+(15&se),se>>>=4,le-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>=3,le-=3}for(;r.have<19;)r.lens[Te[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Se={bits:r.lenbits},xe=s(l,r.lens,0,19,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=Z;case Z:for(;r.have>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,le-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;le>>=me,le-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,le-=2}else if(17===ye){for(ke=me+3;le>>=me)),se>>>=3,le-=3}else{for(ke=me+7;le>>=me)),se>>>=7,le-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,Se={bits:r.lenbits},xe=s(f,r.lens,0,r.nlen,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,Se={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Se),r.distbits=Se.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=j,t===c)break e;case j:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=le,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,le=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,r.length=ye,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=ye,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;le<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var f=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,y=15,b=16,v=7,w=256,E=16,x=17,S=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(p+2));l(D);var O=new Array(2*g);l(O);var I=new Array(512);l(I);var R=new Array(256);l(R);var L=new Array(d);l(L);var F,B,U,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function z(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Z(e){return e<256?I[e]:I[256+(e>>>7)]}function j(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>b-r?(e.bi_buf|=t<>b-e.bi_valid,e.bi_valid+=r-b):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(y+1),o=0;for(n=1;n<=y;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?j(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)J(e,a,r);i=l;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],J(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,J(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,l=t.dyn_tree,f=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=y;a++)e.bl_count[a]=0;for(l[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=l[2*l[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),l[2*n+1]=a,n>f||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=l[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>f||(l[2*i+1]!==a&&(e.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),n--)}}(e,t),W(a,f,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,l=7,f=4;for(0===o&&(l=138,f=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*T[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),l=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=l&&(l=f)):l=f=r+5,r+4<=l&&-1!==t?te(e,t,r,n):e.strategy===i||f===l?(C(e,(u<<1)+(n?1:0),3),K(e,D,O)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(R[r]+c+1)]++,e.dyn_dtree[2*Z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,D),function(e){16===e.bi_valid?(j(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),l=r(49),f=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,y=-5,b=-1,v=1,w=2,E=3,x=4,S=0,k=2,A=8,P=9,T=15,D=8,O=286,I=30,R=19,L=2*O+1,F=15,B=3,U=258,M=U+B+1,N=32,z=42,Z=69,j=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,J=4,K=3;function X(e,t){return e.msg=l[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,f=e.window,u=e.w_mask,h=e.prev,d=e.strstart+U,c=f[a+o-1],p=f[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(f[(r=t)+o]===p&&f[r+o-1]===c&&f[r]===f[a]&&f[++r]===f[a+1]){a+=2,r++;do{}while(f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=f[a+o-1],p=f[a+o]}}}while((t=h[t&u])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,l,f,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(f=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=f.avail_in)>d&&(c=d),r=0===c?0:(f.avail_in-=c,i.arraySet(u,f.input,f.next_in,c,h),1===f.state.wrap?f.adler=o(f.adler,u,c,h):2===f.state.wrap&&(f.adler=s(f.adler,u,c,h)),f.next_in+=c,f.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=B)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<=B)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-B,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*R+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*O+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*O+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=n,l.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===f)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new le(4,4,8,4,oe),new le(4,5,16,8,oe),new le(4,6,32,32,oe),new le(4,4,16,16,se),new le(8,16,32,32,se),new le(8,16,128,128,se),new le(8,32,128,256,se),new le(32,128,258,1024,se),new le(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,T,D,S)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=fe,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?y:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===z)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,K),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===Z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,y);if(i.status===W&&0!==e.avail_in)return X(e,y);if(0!==e.avail_in||0!==i.lookahead||t!==f&&i.status!==W){var b=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===f)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=U){if(ae(e),e.lookahead<=U&&t===f)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+U;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(r=a._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(b!==V&&b!==J||(i.status=W),b===H||b===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(b===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==z&&t!==Z&&t!==j&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,l,f,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==z||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),l=e.avail_in,f=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=B;){n=r.strstart,a=r.lookahead-(B-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,l,f,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=f,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,l){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,l=1,f={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function f(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",l),r.removeListener(\"error\",f),e.removeListener(\"error\",f),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",f),e.on(\"error\",f),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,l=r(1).kMaxLength,f=\"Cannot create final Buffer. It would be larger than 0x\"+l.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=l?o=new RangeError(f):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function y(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){T(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var l=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(l=e.level);var f=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(f=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,f,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=f,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function T(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function D(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=b,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=S,t.Unzip=k,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new k(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new b(t),e,r)},t.deflateSync=function(e,t){return y(new b(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return y(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.unzipSync=function(e,t){return y(new k(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.inflateRawSync=function(e,t){return y(new S(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){T(this,t),e.nextTick(D,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(g[0],g[1]));if(this._hadError)throw d;if(p>=l)throw T(this),new RangeError(f);var m=n.concat(c,p);return T(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(l,f){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-f;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===f||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===f){if(o+=i-l,i=l,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=y,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=y},o.inherits(b,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(S,P),o.inherits(k,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(l){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(l),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,l){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,l);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,f.default)(t,l,t.length-l),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+l);return t.copy(g,0,0,l),p.copy(g,l),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(l),_=pako.inflateRaw(m),y=(0,n.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new a.default(s.default,y,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,l);return new a.default(s.default,t,l)}(c,l.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,l.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),l=c(r(36)),f=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.2\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-f;else{if(a===l)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=f}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,l,f=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*l-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,f-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-f(e)},t.toByteArray=function(e){var t,r,n,o,s,l=e.length;o=f(e),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(25),i=f(r(77)),a=f(r(76)),o=f(r(43)),s=f(r(75)),l=f(r(74));function f(e){return e&&e.__esModule?e:{default:e}}t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=i.default,t.parseDA=a.default,t.explicitElementToString=o.default,t.explicitDataSetToJS=s.default,t.createJPEGBasicOffsetTable=l.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readTag=t.readSequenceItem=t.readSequenceItemsImplicit=t.readSequenceItemsExplicit=t.readPart10Header=t.readEncapsulatedPixelDataFromFragments=t.readEncapsulatedPixelData=t.readEncapsulatedImageFrame=t.readDicomElementImplicit=t.readDicomElementExplicit=t.parseDicom=t.littleEndianByteArrayParser=t.findItemDelimitationItemAndSetElementLength=t.findEndOfEncapsulatedElement=t.findAndSetUNElementLength=t.DataSet=t.sharedCopy=t.ByteStream=t.bigEndianByteArrayParser=t.version=t.alloc=t.readFixedString=t.parseDicomDataSetImplicit=t.parseDicomDataSetExplicit=t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(78),i=r(16),a=r(14),o=P(r(22)),s=P(r(71)),l=P(r(37)),f=P(r(12)),u=P(r(11)),h=P(r(7)),d=P(r(41)),c=P(r(42)),p=P(r(24)),g=P(r(21)),m=P(r(70)),_=P(r(15)),y=P(r(23)),b=P(r(26)),v=P(r(44)),w=P(r(17)),E=P(r(36)),x=P(r(40)),S=P(r(39)),k=P(r(13)),A=P(r(4));function P(e){return e&&e.__esModule?e:{default:e}}var T={isStringVr:n.isStringVr,isPrivateTag:n.isPrivateTag,parsePN:n.parsePN,parseTM:n.parseTM,parseDA:n.parseDA,explicitElementToString:n.explicitElementToString,explicitDataSetToJS:n.explicitDataSetToJS,createJPEGBasicOffsetTable:n.createJPEGBasicOffsetTable,parseDicomDataSetExplicit:i.parseDicomDataSetExplicit,parseDicomDataSetImplicit:i.parseDicomDataSetImplicit,readFixedString:a.readFixedString,alloc:o.default,version:s.default,bigEndianByteArrayParser:l.default,ByteStream:f.default,sharedCopy:u.default,DataSet:h.default,findAndSetUNElementLength:d.default,findEndOfEncapsulatedElement:c.default,findItemDelimitationItemAndSetElementLength:p.default,littleEndianByteArrayParser:g.default,parseDicom:m.default,readDicomElementExplicit:_.default,readDicomElementImplicit:y.default,readEncapsulatedImageFrame:b.default,readEncapsulatedPixelData:v.default,readEncapsulatedPixelDataFromFragments:w.default,readPart10Header:E.default,readSequenceItemsExplicit:x.default,readSequenceItemsImplicit:S.default,readSequenceItem:k.default,readTag:A.default};t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=n.parseTM,t.parseDA=n.parseDA,t.explicitElementToString=n.explicitElementToString,t.explicitDataSetToJS=n.explicitDataSetToJS,t.createJPEGBasicOffsetTable=n.createJPEGBasicOffsetTable,t.parseDicomDataSetExplicit=i.parseDicomDataSetExplicit,t.parseDicomDataSetImplicit=i.parseDicomDataSetImplicit,t.readFixedString=a.readFixedString,t.alloc=o.default,t.version=s.default,t.bigEndianByteArrayParser=l.default,t.ByteStream=f.default,t.sharedCopy=u.default,t.DataSet=h.default,t.findAndSetUNElementLength=d.default,t.findEndOfEncapsulatedElement=c.default,t.findItemDelimitationItemAndSetElementLength=p.default,t.littleEndianByteArrayParser=g.default,t.parseDicom=m.default,t.readDicomElementExplicit=_.default,t.readDicomElementImplicit=y.default,t.readEncapsulatedImageFrame=b.default,t.readEncapsulatedPixelData=v.default,t.readEncapsulatedPixelDataFromFragments=w.default,t.readPart10Header=E.default,t.readSequenceItemsExplicit=x.default,t.readSequenceItemsImplicit=S.default,t.readSequenceItem=k.default,t.readTag=A.default,t.default=T}])});\n//# sourceMappingURL=dicomParser.min.js.map","/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstone-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstone-core\"] = factory();\n\telse\n\t\troot[\"cornerstone\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \tfunction hotDisposeChunk(chunkId) {\n/******/ \t\tdelete installedChunks[chunkId];\n/******/ \t}\n/******/ \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n/******/ \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n/******/ \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n/******/ \t\thotAddUpdateChunk(chunkId, moreModules);\n/******/ \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n/******/ \t} ;\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadUpdateChunk(chunkId) {\n/******/ \t\tvar head = document.getElementsByTagName(\"head\")[0];\n/******/ \t\tvar script = document.createElement(\"script\");\n/******/ \t\tscript.charset = \"utf-8\";\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n/******/ \t\t;\n/******/ \t\thead.appendChild(script);\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadManifest(requestTimeout) {\n/******/ \t\trequestTimeout = requestTimeout || 10000;\n/******/ \t\treturn new Promise(function(resolve, reject) {\n/******/ \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n/******/ \t\t\t\treturn reject(new Error(\"No browser support\"));\n/******/ \t\t\t}\n/******/ \t\t\ttry {\n/******/ \t\t\t\tvar request = new XMLHttpRequest();\n/******/ \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n/******/ \t\t\t\trequest.open(\"GET\", requestPath, true);\n/******/ \t\t\t\trequest.timeout = requestTimeout;\n/******/ \t\t\t\trequest.send(null);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\treturn reject(err);\n/******/ \t\t\t}\n/******/ \t\t\trequest.onreadystatechange = function() {\n/******/ \t\t\t\tif (request.readyState !== 4) return;\n/******/ \t\t\t\tif (request.status === 0) {\n/******/ \t\t\t\t\t// timeout\n/******/ \t\t\t\t\treject(\n/******/ \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n/******/ \t\t\t\t\t);\n/******/ \t\t\t\t} else if (request.status === 404) {\n/******/ \t\t\t\t\t// no update available\n/******/ \t\t\t\t\tresolve();\n/******/ \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n/******/ \t\t\t\t\t// other failure\n/******/ \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\t// success\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n/******/ \t\t\t\t\t} catch (e) {\n/******/ \t\t\t\t\t\treject(e);\n/******/ \t\t\t\t\t\treturn;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tresolve(update);\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \tvar hotApplyOnUpdate = true;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentHash = \"72ed982d5a0046aad5fa\";\n/******/ \tvar hotRequestTimeout = 10000;\n/******/ \tvar hotCurrentModuleData = {};\n/******/ \tvar hotCurrentChildModule;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParents = [];\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParentsTemp = [];\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateRequire(moduleId) {\n/******/ \t\tvar me = installedModules[moduleId];\n/******/ \t\tif (!me) return __webpack_require__;\n/******/ \t\tvar fn = function(request) {\n/******/ \t\t\tif (me.hot.active) {\n/******/ \t\t\t\tif (installedModules[request]) {\n/******/ \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n/******/ \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\t\t\thotCurrentChildModule = request;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (me.children.indexOf(request) === -1) {\n/******/ \t\t\t\t\tme.children.push(request);\n/******/ \t\t\t\t}\n/******/ \t\t\t} else {\n/******/ \t\t\t\tconsole.warn(\n/******/ \t\t\t\t\t\"[HMR] unexpected require(\" +\n/******/ \t\t\t\t\t\trequest +\n/******/ \t\t\t\t\t\t\") from disposed module \" +\n/******/ \t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t);\n/******/ \t\t\t\thotCurrentParents = [];\n/******/ \t\t\t}\n/******/ \t\t\treturn __webpack_require__(request);\n/******/ \t\t};\n/******/ \t\tvar ObjectFactory = function ObjectFactory(name) {\n/******/ \t\t\treturn {\n/******/ \t\t\t\tconfigurable: true,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: function() {\n/******/ \t\t\t\t\treturn __webpack_require__[name];\n/******/ \t\t\t\t},\n/******/ \t\t\t\tset: function(value) {\n/******/ \t\t\t\t\t__webpack_require__[name] = value;\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t};\n/******/ \t\tfor (var name in __webpack_require__) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n/******/ \t\t\t\tname !== \"e\" &&\n/******/ \t\t\t\tname !== \"t\"\n/******/ \t\t\t) {\n/******/ \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tfn.e = function(chunkId) {\n/******/ \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n/******/ \t\t\thotChunksLoading++;\n/******/ \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n/******/ \t\t\t\tfinishChunkLoading();\n/******/ \t\t\t\tthrow err;\n/******/ \t\t\t});\n/******/\n/******/ \t\t\tfunction finishChunkLoading() {\n/******/ \t\t\t\thotChunksLoading--;\n/******/ \t\t\t\tif (hotStatus === \"prepare\") {\n/******/ \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n/******/ \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n/******/ \t\t\t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\tfn.t = function(value, mode) {\n/******/ \t\t\tif (mode & 1) value = fn(value);\n/******/ \t\t\treturn __webpack_require__.t(value, mode & ~1);\n/******/ \t\t};\n/******/ \t\treturn fn;\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateModule(moduleId) {\n/******/ \t\tvar hot = {\n/******/ \t\t\t// private stuff\n/******/ \t\t\t_acceptedDependencies: {},\n/******/ \t\t\t_declinedDependencies: {},\n/******/ \t\t\t_selfAccepted: false,\n/******/ \t\t\t_selfDeclined: false,\n/******/ \t\t\t_disposeHandlers: [],\n/******/ \t\t\t_main: hotCurrentChildModule !== moduleId,\n/******/\n/******/ \t\t\t// Module API\n/******/ \t\t\tactive: true,\n/******/ \t\t\taccept: function(dep, callback) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n/******/ \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n/******/ \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n/******/ \t\t\t},\n/******/ \t\t\tdecline: function(dep) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n/******/ \t\t\t\telse hot._declinedDependencies[dep] = true;\n/******/ \t\t\t},\n/******/ \t\t\tdispose: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\taddDisposeHandler: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\tremoveDisposeHandler: function(callback) {\n/******/ \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n/******/ \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t// Management API\n/******/ \t\t\tcheck: hotCheck,\n/******/ \t\t\tapply: hotApply,\n/******/ \t\t\tstatus: function(l) {\n/******/ \t\t\t\tif (!l) return hotStatus;\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\taddStatusHandler: function(l) {\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\tremoveStatusHandler: function(l) {\n/******/ \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n/******/ \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t//inherit from previous dispose call\n/******/ \t\t\tdata: hotCurrentModuleData[moduleId]\n/******/ \t\t};\n/******/ \t\thotCurrentChildModule = undefined;\n/******/ \t\treturn hot;\n/******/ \t}\n/******/\n/******/ \tvar hotStatusHandlers = [];\n/******/ \tvar hotStatus = \"idle\";\n/******/\n/******/ \tfunction hotSetStatus(newStatus) {\n/******/ \t\thotStatus = newStatus;\n/******/ \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n/******/ \t\t\thotStatusHandlers[i].call(null, newStatus);\n/******/ \t}\n/******/\n/******/ \t// while downloading\n/******/ \tvar hotWaitingFiles = 0;\n/******/ \tvar hotChunksLoading = 0;\n/******/ \tvar hotWaitingFilesMap = {};\n/******/ \tvar hotRequestedFilesMap = {};\n/******/ \tvar hotAvailableFilesMap = {};\n/******/ \tvar hotDeferred;\n/******/\n/******/ \t// The update info\n/******/ \tvar hotUpdate, hotUpdateNewHash;\n/******/\n/******/ \tfunction toModuleId(id) {\n/******/ \t\tvar isNumber = +id + \"\" === id;\n/******/ \t\treturn isNumber ? +id : id;\n/******/ \t}\n/******/\n/******/ \tfunction hotCheck(apply) {\n/******/ \t\tif (hotStatus !== \"idle\") {\n/******/ \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n/******/ \t\t}\n/******/ \t\thotApplyOnUpdate = apply;\n/******/ \t\thotSetStatus(\"check\");\n/******/ \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n/******/ \t\t\tif (!update) {\n/******/ \t\t\t\thotSetStatus(\"idle\");\n/******/ \t\t\t\treturn null;\n/******/ \t\t\t}\n/******/ \t\t\thotRequestedFilesMap = {};\n/******/ \t\t\thotWaitingFilesMap = {};\n/******/ \t\t\thotAvailableFilesMap = update.c;\n/******/ \t\t\thotUpdateNewHash = update.h;\n/******/\n/******/ \t\t\thotSetStatus(\"prepare\");\n/******/ \t\t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\t\thotDeferred = {\n/******/ \t\t\t\t\tresolve: resolve,\n/******/ \t\t\t\t\treject: reject\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\thotUpdate = {};\n/******/ \t\t\tvar chunkId = \"cornerstone\";\n/******/ \t\t\t// eslint-disable-next-line no-lone-blocks\n/******/ \t\t\t{\n/******/ \t\t\t\t/*globals chunkId */\n/******/ \t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t\tif (\n/******/ \t\t\t\thotStatus === \"prepare\" &&\n/******/ \t\t\t\thotChunksLoading === 0 &&\n/******/ \t\t\t\thotWaitingFiles === 0\n/******/ \t\t\t) {\n/******/ \t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t}\n/******/ \t\t\treturn promise;\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n/******/ \t\t\treturn;\n/******/ \t\thotRequestedFilesMap[chunkId] = false;\n/******/ \t\tfor (var moduleId in moreModules) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n/******/ \t\t\thotUpdateDownloaded();\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotEnsureUpdateChunk(chunkId) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId]) {\n/******/ \t\t\thotWaitingFilesMap[chunkId] = true;\n/******/ \t\t} else {\n/******/ \t\t\thotRequestedFilesMap[chunkId] = true;\n/******/ \t\t\thotWaitingFiles++;\n/******/ \t\t\thotDownloadUpdateChunk(chunkId);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotUpdateDownloaded() {\n/******/ \t\thotSetStatus(\"ready\");\n/******/ \t\tvar deferred = hotDeferred;\n/******/ \t\thotDeferred = null;\n/******/ \t\tif (!deferred) return;\n/******/ \t\tif (hotApplyOnUpdate) {\n/******/ \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n/******/ \t\t\t// avoid triggering uncaught exception warning in Chrome.\n/******/ \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n/******/ \t\t\tPromise.resolve()\n/******/ \t\t\t\t.then(function() {\n/******/ \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n/******/ \t\t\t\t})\n/******/ \t\t\t\t.then(\n/******/ \t\t\t\t\tfunction(result) {\n/******/ \t\t\t\t\t\tdeferred.resolve(result);\n/******/ \t\t\t\t\t},\n/******/ \t\t\t\t\tfunction(err) {\n/******/ \t\t\t\t\t\tdeferred.reject(err);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t);\n/******/ \t\t} else {\n/******/ \t\t\tvar outdatedModules = [];\n/******/ \t\t\tfor (var id in hotUpdate) {\n/******/ \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\t\toutdatedModules.push(toModuleId(id));\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tdeferred.resolve(outdatedModules);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotApply(options) {\n/******/ \t\tif (hotStatus !== \"ready\")\n/******/ \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n/******/ \t\toptions = options || {};\n/******/\n/******/ \t\tvar cb;\n/******/ \t\tvar i;\n/******/ \t\tvar j;\n/******/ \t\tvar module;\n/******/ \t\tvar moduleId;\n/******/\n/******/ \t\tfunction getAffectedStuff(updateModuleId) {\n/******/ \t\t\tvar outdatedModules = [updateModuleId];\n/******/ \t\t\tvar outdatedDependencies = {};\n/******/\n/******/ \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n/******/ \t\t\t\treturn {\n/******/ \t\t\t\t\tchain: [id],\n/******/ \t\t\t\t\tid: id\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\twhile (queue.length > 0) {\n/******/ \t\t\t\tvar queueItem = queue.pop();\n/******/ \t\t\t\tvar moduleId = queueItem.id;\n/******/ \t\t\t\tvar chain = queueItem.chain;\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n/******/ \t\t\t\tif (module.hot._selfDeclined) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"self-declined\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (module.hot._main) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"unaccepted\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n/******/ \t\t\t\t\tvar parentId = module.parents[i];\n/******/ \t\t\t\t\tvar parent = installedModules[parentId];\n/******/ \t\t\t\t\tif (!parent) continue;\n/******/ \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\treturn {\n/******/ \t\t\t\t\t\t\ttype: \"declined\",\n/******/ \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\tparentId: parentId\n/******/ \t\t\t\t\t\t};\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n/******/ \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n/******/ \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n/******/ \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n/******/ \t\t\t\t\t\tcontinue;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tdelete outdatedDependencies[parentId];\n/******/ \t\t\t\t\toutdatedModules.push(parentId);\n/******/ \t\t\t\t\tqueue.push({\n/******/ \t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\tid: parentId\n/******/ \t\t\t\t\t});\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/\n/******/ \t\t\treturn {\n/******/ \t\t\t\ttype: \"accepted\",\n/******/ \t\t\t\tmoduleId: updateModuleId,\n/******/ \t\t\t\toutdatedModules: outdatedModules,\n/******/ \t\t\t\toutdatedDependencies: outdatedDependencies\n/******/ \t\t\t};\n/******/ \t\t}\n/******/\n/******/ \t\tfunction addAllToSet(a, b) {\n/******/ \t\t\tfor (var i = 0; i < b.length; i++) {\n/******/ \t\t\t\tvar item = b[i];\n/******/ \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// at begin all updates modules are outdated\n/******/ \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n/******/ \t\tvar outdatedDependencies = {};\n/******/ \t\tvar outdatedModules = [];\n/******/ \t\tvar appliedUpdate = {};\n/******/\n/******/ \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n/******/ \t\t\tconsole.warn(\n/******/ \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n/******/ \t\t\t);\n/******/ \t\t};\n/******/\n/******/ \t\tfor (var id in hotUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\tmoduleId = toModuleId(id);\n/******/ \t\t\t\t/** @type {TODO} */\n/******/ \t\t\t\tvar result;\n/******/ \t\t\t\tif (hotUpdate[id]) {\n/******/ \t\t\t\t\tresult = getAffectedStuff(moduleId);\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tresult = {\n/******/ \t\t\t\t\t\ttype: \"disposed\",\n/******/ \t\t\t\t\t\tmoduleId: id\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\t/** @type {Error|false} */\n/******/ \t\t\t\tvar abortError = false;\n/******/ \t\t\t\tvar doApply = false;\n/******/ \t\t\t\tvar doDispose = false;\n/******/ \t\t\t\tvar chainInfo = \"\";\n/******/ \t\t\t\tif (result.chain) {\n/******/ \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n/******/ \t\t\t\t}\n/******/ \t\t\t\tswitch (result.type) {\n/******/ \t\t\t\t\tcase \"self-declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\t\" in \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.parentId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"unaccepted\":\n/******/ \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"accepted\":\n/******/ \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n/******/ \t\t\t\t\t\tdoApply = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"disposed\":\n/******/ \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n/******/ \t\t\t\t\t\tdoDispose = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tdefault:\n/******/ \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (abortError) {\n/******/ \t\t\t\t\thotSetStatus(\"abort\");\n/******/ \t\t\t\t\treturn Promise.reject(abortError);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (doApply) {\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n/******/ \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n/******/ \t\t\t\t\t\tif (\n/******/ \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n/******/ \t\t\t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t\t\t\t)\n/******/ \t\t\t\t\t\t) {\n/******/ \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n/******/ \t\t\t\t\t\t\taddAllToSet(\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Store self accepted outdated modules to require them later by the module system\n/******/ \t\tvar outdatedSelfAcceptedModules = [];\n/******/ \t\tfor (i = 0; i < outdatedModules.length; i++) {\n/******/ \t\t\tmoduleId = outdatedModules[i];\n/******/ \t\t\tif (\n/******/ \t\t\t\tinstalledModules[moduleId] &&\n/******/ \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n/******/ \t\t\t)\n/******/ \t\t\t\toutdatedSelfAcceptedModules.push({\n/******/ \t\t\t\t\tmodule: moduleId,\n/******/ \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n/******/ \t\t\t\t});\n/******/ \t\t}\n/******/\n/******/ \t\t// Now in \"dispose\" phase\n/******/ \t\thotSetStatus(\"dispose\");\n/******/ \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n/******/ \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n/******/ \t\t\t\thotDisposeChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t});\n/******/\n/******/ \t\tvar idx;\n/******/ \t\tvar queue = outdatedModules.slice();\n/******/ \t\twhile (queue.length > 0) {\n/******/ \t\t\tmoduleId = queue.pop();\n/******/ \t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\tif (!module) continue;\n/******/\n/******/ \t\t\tvar data = {};\n/******/\n/******/ \t\t\t// Call dispose handlers\n/******/ \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n/******/ \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n/******/ \t\t\t\tcb = disposeHandlers[j];\n/******/ \t\t\t\tcb(data);\n/******/ \t\t\t}\n/******/ \t\t\thotCurrentModuleData[moduleId] = data;\n/******/\n/******/ \t\t\t// disable module (this disables requires from this module)\n/******/ \t\t\tmodule.hot.active = false;\n/******/\n/******/ \t\t\t// remove module from cache\n/******/ \t\t\tdelete installedModules[moduleId];\n/******/\n/******/ \t\t\t// when disposing there is no need to call dispose handler\n/******/ \t\t\tdelete outdatedDependencies[moduleId];\n/******/\n/******/ \t\t\t// remove \"parents\" references from all children\n/******/ \t\t\tfor (j = 0; j < module.children.length; j++) {\n/******/ \t\t\t\tvar child = installedModules[module.children[j]];\n/******/ \t\t\t\tif (!child) continue;\n/******/ \t\t\t\tidx = child.parents.indexOf(moduleId);\n/******/ \t\t\t\tif (idx >= 0) {\n/******/ \t\t\t\t\tchild.parents.splice(idx, 1);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// remove outdated dependency from module children\n/******/ \t\tvar dependency;\n/******/ \t\tvar moduleOutdatedDependencies;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n/******/ \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n/******/ \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Not in \"apply\" phase\n/******/ \t\thotSetStatus(\"apply\");\n/******/\n/******/ \t\thotCurrentHash = hotUpdateNewHash;\n/******/\n/******/ \t\t// insert new code\n/******/ \t\tfor (moduleId in appliedUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// call accept handlers\n/******/ \t\tvar error = null;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tvar callbacks = [];\n/******/ \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n/******/ \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n/******/ \t\t\t\t\t\tif (cb) {\n/******/ \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n/******/ \t\t\t\t\t\t\tcallbacks.push(cb);\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n/******/ \t\t\t\t\t\tcb = callbacks[i];\n/******/ \t\t\t\t\t\ttry {\n/******/ \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n/******/ \t\t\t\t\t\t} catch (err) {\n/******/ \t\t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n/******/ \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n/******/ \t\t\t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t\t}\n/******/ \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\t\tif (!error) error = err;\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/******/\n/******/ \t\t// Load self accepted modules\n/******/ \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n/******/ \t\t\tvar item = outdatedSelfAcceptedModules[i];\n/******/ \t\t\tmoduleId = item.module;\n/******/ \t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\ttry {\n/******/ \t\t\t\t__webpack_require__(moduleId);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\tif (typeof item.errorHandler === \"function\") {\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\titem.errorHandler(err);\n/******/ \t\t\t\t\t} catch (err2) {\n/******/ \t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n/******/ \t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\terror: err2,\n/******/ \t\t\t\t\t\t\t\toriginalError: err\n/******/ \t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\tif (!error) error = err2;\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t});\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// handle errors in accept handlers and self accepted module load\n/******/ \t\tif (error) {\n/******/ \t\t\thotSetStatus(\"fail\");\n/******/ \t\t\treturn Promise.reject(error);\n/******/ \t\t}\n/******/\n/******/ \t\thotSetStatus(\"idle\");\n/******/ \t\treturn new Promise(function(resolve) {\n/******/ \t\t\tresolve(outdatedModules);\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {},\n/******/ \t\t\thot: hotCreateModule(moduleId),\n/******/ \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n/******/ \t\t\tchildren: []\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// __webpack_hash__\n/******/ \t__webpack_require__.h = function() { return hotCurrentHash; };\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn hotCreateRequire(\"./index.js\")(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./canvasToPixel.js\":\n/*!**************************!*\\\n !*** ./canvasToPixel.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the canvas coordinate system to the pixel coordinate system\n * system. This can be used to reset tools' image coordinates after modifications\n * have been made in canvas space (e.g. moving a tool by a few cm, independent of\n * image resolution).\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {{x: Number, y: Number}} pt The input point in the canvas coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./colors/colormap.js\":\n/*!****************************!*\\\n !*** ./colors/colormap.js ***!\n \\****************************/\n/*! exports provided: getColormapsList, getColormap */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormapsList\", function() { return getColormapsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormap\", function() { return getColormap; });\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\nvar COLOR_TRANSPARENT = [0, 0, 0, 0]; // Colormaps\n//\n// Hot Iron, PET, Hot Metal Blue and PET 20 Step are color palettes\n// Defined by the DICOM standard\n// http://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html\n//\n// All Linear Segmented Colormaps were copied from matplotlib\n// https://github.com/stefanv/matplotlib/blob/master/lib/matplotlib/_cm.py\n\nvar colormapsData = {\n hotIron: {\n name: 'Hot Iron',\n numOfColors: 256,\n colors: [[0, 0, 0, 255], [2, 0, 0, 255], [4, 0, 0, 255], [6, 0, 0, 255], [8, 0, 0, 255], [10, 0, 0, 255], [12, 0, 0, 255], [14, 0, 0, 255], [16, 0, 0, 255], [18, 0, 0, 255], [20, 0, 0, 255], [22, 0, 0, 255], [24, 0, 0, 255], [26, 0, 0, 255], [28, 0, 0, 255], [30, 0, 0, 255], [32, 0, 0, 255], [34, 0, 0, 255], [36, 0, 0, 255], [38, 0, 0, 255], [40, 0, 0, 255], [42, 0, 0, 255], [44, 0, 0, 255], [46, 0, 0, 255], [48, 0, 0, 255], [50, 0, 0, 255], [52, 0, 0, 255], [54, 0, 0, 255], [56, 0, 0, 255], [58, 0, 0, 255], [60, 0, 0, 255], [62, 0, 0, 255], [64, 0, 0, 255], [66, 0, 0, 255], [68, 0, 0, 255], [70, 0, 0, 255], [72, 0, 0, 255], [74, 0, 0, 255], [76, 0, 0, 255], [78, 0, 0, 255], [80, 0, 0, 255], [82, 0, 0, 255], [84, 0, 0, 255], [86, 0, 0, 255], [88, 0, 0, 255], [90, 0, 0, 255], [92, 0, 0, 255], [94, 0, 0, 255], [96, 0, 0, 255], [98, 0, 0, 255], [100, 0, 0, 255], [102, 0, 0, 255], [104, 0, 0, 255], [106, 0, 0, 255], [108, 0, 0, 255], [110, 0, 0, 255], [112, 0, 0, 255], [114, 0, 0, 255], [116, 0, 0, 255], [118, 0, 0, 255], [120, 0, 0, 255], [122, 0, 0, 255], [124, 0, 0, 255], [126, 0, 0, 255], [128, 0, 0, 255], [130, 0, 0, 255], [132, 0, 0, 255], [134, 0, 0, 255], [136, 0, 0, 255], [138, 0, 0, 255], [140, 0, 0, 255], [142, 0, 0, 255], [144, 0, 0, 255], [146, 0, 0, 255], [148, 0, 0, 255], [150, 0, 0, 255], [152, 0, 0, 255], [154, 0, 0, 255], [156, 0, 0, 255], [158, 0, 0, 255], [160, 0, 0, 255], [162, 0, 0, 255], [164, 0, 0, 255], [166, 0, 0, 255], [168, 0, 0, 255], [170, 0, 0, 255], [172, 0, 0, 255], [174, 0, 0, 255], [176, 0, 0, 255], [178, 0, 0, 255], [180, 0, 0, 255], [182, 0, 0, 255], [184, 0, 0, 255], [186, 0, 0, 255], [188, 0, 0, 255], [190, 0, 0, 255], [192, 0, 0, 255], [194, 0, 0, 255], [196, 0, 0, 255], [198, 0, 0, 255], [200, 0, 0, 255], [202, 0, 0, 255], [204, 0, 0, 255], [206, 0, 0, 255], [208, 0, 0, 255], [210, 0, 0, 255], [212, 0, 0, 255], [214, 0, 0, 255], [216, 0, 0, 255], [218, 0, 0, 255], [220, 0, 0, 255], [222, 0, 0, 255], [224, 0, 0, 255], [226, 0, 0, 255], [228, 0, 0, 255], [230, 0, 0, 255], [232, 0, 0, 255], [234, 0, 0, 255], [236, 0, 0, 255], [238, 0, 0, 255], [240, 0, 0, 255], [242, 0, 0, 255], [244, 0, 0, 255], [246, 0, 0, 255], [248, 0, 0, 255], [250, 0, 0, 255], [252, 0, 0, 255], [254, 0, 0, 255], [255, 0, 0, 255], [255, 2, 0, 255], [255, 4, 0, 255], [255, 6, 0, 255], [255, 8, 0, 255], [255, 10, 0, 255], [255, 12, 0, 255], [255, 14, 0, 255], [255, 16, 0, 255], [255, 18, 0, 255], [255, 20, 0, 255], [255, 22, 0, 255], [255, 24, 0, 255], [255, 26, 0, 255], [255, 28, 0, 255], [255, 30, 0, 255], [255, 32, 0, 255], [255, 34, 0, 255], [255, 36, 0, 255], [255, 38, 0, 255], [255, 40, 0, 255], [255, 42, 0, 255], [255, 44, 0, 255], [255, 46, 0, 255], [255, 48, 0, 255], [255, 50, 0, 255], [255, 52, 0, 255], [255, 54, 0, 255], [255, 56, 0, 255], [255, 58, 0, 255], [255, 60, 0, 255], [255, 62, 0, 255], [255, 64, 0, 255], [255, 66, 0, 255], [255, 68, 0, 255], [255, 70, 0, 255], [255, 72, 0, 255], [255, 74, 0, 255], [255, 76, 0, 255], [255, 78, 0, 255], [255, 80, 0, 255], [255, 82, 0, 255], [255, 84, 0, 255], [255, 86, 0, 255], [255, 88, 0, 255], [255, 90, 0, 255], [255, 92, 0, 255], [255, 94, 0, 255], [255, 96, 0, 255], [255, 98, 0, 255], [255, 100, 0, 255], [255, 102, 0, 255], [255, 104, 0, 255], [255, 106, 0, 255], [255, 108, 0, 255], [255, 110, 0, 255], [255, 112, 0, 255], [255, 114, 0, 255], [255, 116, 0, 255], [255, 118, 0, 255], [255, 120, 0, 255], [255, 122, 0, 255], [255, 124, 0, 255], [255, 126, 0, 255], [255, 128, 4, 255], [255, 130, 8, 255], [255, 132, 12, 255], [255, 134, 16, 255], [255, 136, 20, 255], [255, 138, 24, 255], [255, 140, 28, 255], [255, 142, 32, 255], [255, 144, 36, 255], [255, 146, 40, 255], [255, 148, 44, 255], [255, 150, 48, 255], [255, 152, 52, 255], [255, 154, 56, 255], [255, 156, 60, 255], [255, 158, 64, 255], [255, 160, 68, 255], [255, 162, 72, 255], [255, 164, 76, 255], [255, 166, 80, 255], [255, 168, 84, 255], [255, 170, 88, 255], [255, 172, 92, 255], [255, 174, 96, 255], [255, 176, 100, 255], [255, 178, 104, 255], [255, 180, 108, 255], [255, 182, 112, 255], [255, 184, 116, 255], [255, 186, 120, 255], [255, 188, 124, 255], [255, 190, 128, 255], [255, 192, 132, 255], [255, 194, 136, 255], [255, 196, 140, 255], [255, 198, 144, 255], [255, 200, 148, 255], [255, 202, 152, 255], [255, 204, 156, 255], [255, 206, 160, 255], [255, 208, 164, 255], [255, 210, 168, 255], [255, 212, 172, 255], [255, 214, 176, 255], [255, 216, 180, 255], [255, 218, 184, 255], [255, 220, 188, 255], [255, 222, 192, 255], [255, 224, 196, 255], [255, 226, 200, 255], [255, 228, 204, 255], [255, 230, 208, 255], [255, 232, 212, 255], [255, 234, 216, 255], [255, 236, 220, 255], [255, 238, 224, 255], [255, 240, 228, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 240, 255], [255, 248, 244, 255], [255, 250, 248, 255], [255, 252, 252, 255], [255, 255, 255, 255]]\n },\n pet: {\n name: 'PET',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 2, 1, 255], [0, 4, 3, 255], [0, 6, 5, 255], [0, 8, 7, 255], [0, 10, 9, 255], [0, 12, 11, 255], [0, 14, 13, 255], [0, 16, 15, 255], [0, 18, 17, 255], [0, 20, 19, 255], [0, 22, 21, 255], [0, 24, 23, 255], [0, 26, 25, 255], [0, 28, 27, 255], [0, 30, 29, 255], [0, 32, 31, 255], [0, 34, 33, 255], [0, 36, 35, 255], [0, 38, 37, 255], [0, 40, 39, 255], [0, 42, 41, 255], [0, 44, 43, 255], [0, 46, 45, 255], [0, 48, 47, 255], [0, 50, 49, 255], [0, 52, 51, 255], [0, 54, 53, 255], [0, 56, 55, 255], [0, 58, 57, 255], [0, 60, 59, 255], [0, 62, 61, 255], [0, 65, 63, 255], [0, 67, 65, 255], [0, 69, 67, 255], [0, 71, 69, 255], [0, 73, 71, 255], [0, 75, 73, 255], [0, 77, 75, 255], [0, 79, 77, 255], [0, 81, 79, 255], [0, 83, 81, 255], [0, 85, 83, 255], [0, 87, 85, 255], [0, 89, 87, 255], [0, 91, 89, 255], [0, 93, 91, 255], [0, 95, 93, 255], [0, 97, 95, 255], [0, 99, 97, 255], [0, 101, 99, 255], [0, 103, 101, 255], [0, 105, 103, 255], [0, 107, 105, 255], [0, 109, 107, 255], [0, 111, 109, 255], [0, 113, 111, 255], [0, 115, 113, 255], [0, 117, 115, 255], [0, 119, 117, 255], [0, 121, 119, 255], [0, 123, 121, 255], [0, 125, 123, 255], [0, 128, 125, 255], [1, 126, 127, 255], [3, 124, 129, 255], [5, 122, 131, 255], [7, 120, 133, 255], [9, 118, 135, 255], [11, 116, 137, 255], [13, 114, 139, 255], [15, 112, 141, 255], [17, 110, 143, 255], [19, 108, 145, 255], [21, 106, 147, 255], [23, 104, 149, 255], [25, 102, 151, 255], [27, 100, 153, 255], [29, 98, 155, 255], [31, 96, 157, 255], [33, 94, 159, 255], [35, 92, 161, 255], [37, 90, 163, 255], [39, 88, 165, 255], [41, 86, 167, 255], [43, 84, 169, 255], [45, 82, 171, 255], [47, 80, 173, 255], [49, 78, 175, 255], [51, 76, 177, 255], [53, 74, 179, 255], [55, 72, 181, 255], [57, 70, 183, 255], [59, 68, 185, 255], [61, 66, 187, 255], [63, 64, 189, 255], [65, 63, 191, 255], [67, 61, 193, 255], [69, 59, 195, 255], [71, 57, 197, 255], [73, 55, 199, 255], [75, 53, 201, 255], [77, 51, 203, 255], [79, 49, 205, 255], [81, 47, 207, 255], [83, 45, 209, 255], [85, 43, 211, 255], [86, 41, 213, 255], [88, 39, 215, 255], [90, 37, 217, 255], [92, 35, 219, 255], [94, 33, 221, 255], [96, 31, 223, 255], [98, 29, 225, 255], [100, 27, 227, 255], [102, 25, 229, 255], [104, 23, 231, 255], [106, 21, 233, 255], [108, 19, 235, 255], [110, 17, 237, 255], [112, 15, 239, 255], [114, 13, 241, 255], [116, 11, 243, 255], [118, 9, 245, 255], [120, 7, 247, 255], [122, 5, 249, 255], [124, 3, 251, 255], [126, 1, 253, 255], [128, 0, 255, 255], [130, 2, 252, 255], [132, 4, 248, 255], [134, 6, 244, 255], [136, 8, 240, 255], [138, 10, 236, 255], [140, 12, 232, 255], [142, 14, 228, 255], [144, 16, 224, 255], [146, 18, 220, 255], [148, 20, 216, 255], [150, 22, 212, 255], [152, 24, 208, 255], [154, 26, 204, 255], [156, 28, 200, 255], [158, 30, 196, 255], [160, 32, 192, 255], [162, 34, 188, 255], [164, 36, 184, 255], [166, 38, 180, 255], [168, 40, 176, 255], [170, 42, 172, 255], [171, 44, 168, 255], [173, 46, 164, 255], [175, 48, 160, 255], [177, 50, 156, 255], [179, 52, 152, 255], [181, 54, 148, 255], [183, 56, 144, 255], [185, 58, 140, 255], [187, 60, 136, 255], [189, 62, 132, 255], [191, 64, 128, 255], [193, 66, 124, 255], [195, 68, 120, 255], [197, 70, 116, 255], [199, 72, 112, 255], [201, 74, 108, 255], [203, 76, 104, 255], [205, 78, 100, 255], [207, 80, 96, 255], [209, 82, 92, 255], [211, 84, 88, 255], [213, 86, 84, 255], [215, 88, 80, 255], [217, 90, 76, 255], [219, 92, 72, 255], [221, 94, 68, 255], [223, 96, 64, 255], [225, 98, 60, 255], [227, 100, 56, 255], [229, 102, 52, 255], [231, 104, 48, 255], [233, 106, 44, 255], [235, 108, 40, 255], [237, 110, 36, 255], [239, 112, 32, 255], [241, 114, 28, 255], [243, 116, 24, 255], [245, 118, 20, 255], [247, 120, 16, 255], [249, 122, 12, 255], [251, 124, 8, 255], [253, 126, 4, 255], [255, 128, 0, 255], [255, 130, 4, 255], [255, 132, 8, 255], [255, 134, 12, 255], [255, 136, 16, 255], [255, 138, 20, 255], [255, 140, 24, 255], [255, 142, 28, 255], [255, 144, 32, 255], [255, 146, 36, 255], [255, 148, 40, 255], [255, 150, 44, 255], [255, 152, 48, 255], [255, 154, 52, 255], [255, 156, 56, 255], [255, 158, 60, 255], [255, 160, 64, 255], [255, 162, 68, 255], [255, 164, 72, 255], [255, 166, 76, 255], [255, 168, 80, 255], [255, 170, 85, 255], [255, 172, 89, 255], [255, 174, 93, 255], [255, 176, 97, 255], [255, 178, 101, 255], [255, 180, 105, 255], [255, 182, 109, 255], [255, 184, 113, 255], [255, 186, 117, 255], [255, 188, 121, 255], [255, 190, 125, 255], [255, 192, 129, 255], [255, 194, 133, 255], [255, 196, 137, 255], [255, 198, 141, 255], [255, 200, 145, 255], [255, 202, 149, 255], [255, 204, 153, 255], [255, 206, 157, 255], [255, 208, 161, 255], [255, 210, 165, 255], [255, 212, 170, 255], [255, 214, 174, 255], [255, 216, 178, 255], [255, 218, 182, 255], [255, 220, 186, 255], [255, 222, 190, 255], [255, 224, 194, 255], [255, 226, 198, 255], [255, 228, 202, 255], [255, 230, 206, 255], [255, 232, 210, 255], [255, 234, 214, 255], [255, 236, 218, 255], [255, 238, 222, 255], [255, 240, 226, 255], [255, 242, 230, 255], [255, 244, 234, 255], [255, 246, 238, 255], [255, 248, 242, 255], [255, 250, 246, 255], [255, 252, 250, 255], [255, 255, 255, 255]]\n },\n hotMetalBlue: {\n name: 'Hot Metal Blue',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 2, 255], [0, 0, 4, 255], [0, 0, 6, 255], [0, 0, 8, 255], [0, 0, 10, 255], [0, 0, 12, 255], [0, 0, 14, 255], [0, 0, 16, 255], [0, 0, 17, 255], [0, 0, 19, 255], [0, 0, 21, 255], [0, 0, 23, 255], [0, 0, 25, 255], [0, 0, 27, 255], [0, 0, 29, 255], [0, 0, 31, 255], [0, 0, 33, 255], [0, 0, 35, 255], [0, 0, 37, 255], [0, 0, 39, 255], [0, 0, 41, 255], [0, 0, 43, 255], [0, 0, 45, 255], [0, 0, 47, 255], [0, 0, 49, 255], [0, 0, 51, 255], [0, 0, 53, 255], [0, 0, 55, 255], [0, 0, 57, 255], [0, 0, 59, 255], [0, 0, 61, 255], [0, 0, 63, 255], [0, 0, 65, 255], [0, 0, 67, 255], [0, 0, 69, 255], [0, 0, 71, 255], [0, 0, 73, 255], [0, 0, 75, 255], [0, 0, 77, 255], [0, 0, 79, 255], [0, 0, 81, 255], [0, 0, 83, 255], [0, 0, 84, 255], [0, 0, 86, 255], [0, 0, 88, 255], [0, 0, 90, 255], [0, 0, 92, 255], [0, 0, 94, 255], [0, 0, 96, 255], [0, 0, 98, 255], [0, 0, 100, 255], [0, 0, 102, 255], [0, 0, 104, 255], [0, 0, 106, 255], [0, 0, 108, 255], [0, 0, 110, 255], [0, 0, 112, 255], [0, 0, 114, 255], [0, 0, 116, 255], [0, 0, 117, 255], [0, 0, 119, 255], [0, 0, 121, 255], [0, 0, 123, 255], [0, 0, 125, 255], [0, 0, 127, 255], [0, 0, 129, 255], [0, 0, 131, 255], [0, 0, 133, 255], [0, 0, 135, 255], [0, 0, 137, 255], [0, 0, 139, 255], [0, 0, 141, 255], [0, 0, 143, 255], [0, 0, 145, 255], [0, 0, 147, 255], [0, 0, 149, 255], [0, 0, 151, 255], [0, 0, 153, 255], [0, 0, 155, 255], [0, 0, 157, 255], [0, 0, 159, 255], [0, 0, 161, 255], [0, 0, 163, 255], [0, 0, 165, 255], [0, 0, 167, 255], [3, 0, 169, 255], [6, 0, 171, 255], [9, 0, 173, 255], [12, 0, 175, 255], [15, 0, 177, 255], [18, 0, 179, 255], [21, 0, 181, 255], [24, 0, 183, 255], [26, 0, 184, 255], [29, 0, 186, 255], [32, 0, 188, 255], [35, 0, 190, 255], [38, 0, 192, 255], [41, 0, 194, 255], [44, 0, 196, 255], [47, 0, 198, 255], [50, 0, 200, 255], [52, 0, 197, 255], [55, 0, 194, 255], [57, 0, 191, 255], [59, 0, 188, 255], [62, 0, 185, 255], [64, 0, 182, 255], [66, 0, 179, 255], [69, 0, 176, 255], [71, 0, 174, 255], [74, 0, 171, 255], [76, 0, 168, 255], [78, 0, 165, 255], [81, 0, 162, 255], [83, 0, 159, 255], [85, 0, 156, 255], [88, 0, 153, 255], [90, 0, 150, 255], [93, 2, 144, 255], [96, 4, 138, 255], [99, 6, 132, 255], [102, 8, 126, 255], [105, 9, 121, 255], [108, 11, 115, 255], [111, 13, 109, 255], [114, 15, 103, 255], [116, 17, 97, 255], [119, 19, 91, 255], [122, 21, 85, 255], [125, 23, 79, 255], [128, 24, 74, 255], [131, 26, 68, 255], [134, 28, 62, 255], [137, 30, 56, 255], [140, 32, 50, 255], [143, 34, 47, 255], [146, 36, 44, 255], [149, 38, 41, 255], [152, 40, 38, 255], [155, 41, 35, 255], [158, 43, 32, 255], [161, 45, 29, 255], [164, 47, 26, 255], [166, 49, 24, 255], [169, 51, 21, 255], [172, 53, 18, 255], [175, 55, 15, 255], [178, 56, 12, 255], [181, 58, 9, 255], [184, 60, 6, 255], [187, 62, 3, 255], [190, 64, 0, 255], [194, 66, 0, 255], [198, 68, 0, 255], [201, 70, 0, 255], [205, 72, 0, 255], [209, 73, 0, 255], [213, 75, 0, 255], [217, 77, 0, 255], [221, 79, 0, 255], [224, 81, 0, 255], [228, 83, 0, 255], [232, 85, 0, 255], [236, 87, 0, 255], [240, 88, 0, 255], [244, 90, 0, 255], [247, 92, 0, 255], [251, 94, 0, 255], [255, 96, 0, 255], [255, 98, 3, 255], [255, 100, 6, 255], [255, 102, 9, 255], [255, 104, 12, 255], [255, 105, 15, 255], [255, 107, 18, 255], [255, 109, 21, 255], [255, 111, 24, 255], [255, 113, 26, 255], [255, 115, 29, 255], [255, 117, 32, 255], [255, 119, 35, 255], [255, 120, 38, 255], [255, 122, 41, 255], [255, 124, 44, 255], [255, 126, 47, 255], [255, 128, 50, 255], [255, 130, 53, 255], [255, 132, 56, 255], [255, 134, 59, 255], [255, 136, 62, 255], [255, 137, 65, 255], [255, 139, 68, 255], [255, 141, 71, 255], [255, 143, 74, 255], [255, 145, 76, 255], [255, 147, 79, 255], [255, 149, 82, 255], [255, 151, 85, 255], [255, 152, 88, 255], [255, 154, 91, 255], [255, 156, 94, 255], [255, 158, 97, 255], [255, 160, 100, 255], [255, 162, 103, 255], [255, 164, 106, 255], [255, 166, 109, 255], [255, 168, 112, 255], [255, 169, 115, 255], [255, 171, 118, 255], [255, 173, 121, 255], [255, 175, 124, 255], [255, 177, 126, 255], [255, 179, 129, 255], [255, 181, 132, 255], [255, 183, 135, 255], [255, 184, 138, 255], [255, 186, 141, 255], [255, 188, 144, 255], [255, 190, 147, 255], [255, 192, 150, 255], [255, 194, 153, 255], [255, 196, 156, 255], [255, 198, 159, 255], [255, 200, 162, 255], [255, 201, 165, 255], [255, 203, 168, 255], [255, 205, 171, 255], [255, 207, 174, 255], [255, 209, 176, 255], [255, 211, 179, 255], [255, 213, 182, 255], [255, 215, 185, 255], [255, 216, 188, 255], [255, 218, 191, 255], [255, 220, 194, 255], [255, 222, 197, 255], [255, 224, 200, 255], [255, 226, 203, 255], [255, 228, 206, 255], [255, 229, 210, 255], [255, 231, 213, 255], [255, 233, 216, 255], [255, 235, 219, 255], [255, 237, 223, 255], [255, 239, 226, 255], [255, 240, 229, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 239, 255], [255, 248, 242, 255], [255, 250, 245, 255], [255, 251, 249, 255], [255, 253, 252, 255], [255, 255, 255, 255]]\n },\n pet20Step: {\n name: 'PET 20 Step',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255]]\n },\n gray: {\n name: 'Gray',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 1, 1]]\n }\n },\n jet: {\n name: 'Jet',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.35, 0, 0], [0.66, 1, 1], [0.89, 1, 1], [1, 0.5, 0.5]],\n green: [[0, 0, 0], [0.125, 0, 0], [0.375, 1, 1], [0.64, 1, 1], [0.91, 0, 0], [1, 0, 0]],\n blue: [[0, 0.5, 0.5], [0.11, 1, 1], [0.34, 1, 1], [0.65, 0, 0], [1, 0, 0]]\n }\n },\n hsv: {\n name: 'HSV',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [0.158730, 1, 1], [0.174603, 0.968750, 0.968750], [0.333333, 0.031250, 0.031250], [0.349206, 0, 0], [0.666667, 0, 0], [0.682540, 0.031250, 0.031250], [0.841270, 0.968750, 0.968750], [0.857143, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.158730, 0.937500, 0.937500], [0.174603, 1, 1], [0.507937, 1, 1], [0.666667, 0.062500, 0.062500], [0.682540, 0, 0], [1, 0, 0]],\n blue: [[0, 0, 0], [0.333333, 0, 0], [0.349206, 0.062500, 0.062500], [0.507937, 1, 1], [0.841270, 1, 1], [0.857143, 0.937500, 0.937500], [1, 0.09375, 0.09375]]\n }\n },\n hot: {\n name: 'Hot',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.0416, 0.0416], [0.365079, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0, 0], [0.746032, 1, 1], [1, 1, 1]],\n blue: [[0, 0, 0], [0.746032, 0, 0], [1, 1, 1]]\n }\n },\n cool: {\n name: 'Cool',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 1, 1], [1, 0, 0]],\n blue: [[0, 1, 1], [1, 1, 1]]\n }\n },\n spring: {\n name: 'Spring',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0, 0]]\n }\n },\n summer: {\n name: 'Summer',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0.5, 0.5], [1, 1, 1]],\n blue: [[0, 0.4, 0.4], [1, 0.4, 0.4]]\n }\n },\n autumn: {\n name: 'Autumn',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 0, 0]]\n }\n },\n winter: {\n name: 'Winter',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 0, 0]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0.5, 0.5]]\n }\n },\n bone: {\n name: 'Bone',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.746032, 0.652778, 0.652778], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0.319444, 0.319444], [0.746032, 0.777778, 0.777778], [1, 1, 1]],\n blue: [[0, 0, 0], [0.365079, 0.444444, 0.444444], [1, 1, 1]]\n }\n },\n copper: {\n name: 'Copper',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.809524, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 0.7812, 0.7812]],\n blue: [[0, 0, 0], [1, 0.4975, 0.4975]]\n }\n },\n spectral: {\n name: 'Spectral',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.05, 0.4667, 0.4667], [0.10, 0.5333, 0.5333], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0, 0], [0.30, 0, 0], [0.35, 0, 0], [0.40, 0, 0], [0.45, 0, 0], [0.50, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0.7333, 0.7333], [0.70, 0.9333, 0.9333], [0.75, 1, 1], [0.80, 1, 1], [0.85, 1, 1], [0.90, 0.8667, 0.8667], [0.95, 0.80, 0.80], [1, 0.80, 0.80]],\n green: [[0, 0, 0], [0.05, 0, 0], [0.10, 0, 0], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0.4667, 0.4667], [0.30, 0.6000, 0.6000], [0.35, 0.6667, 0.6667], [0.40, 0.6667, 0.6667], [0.45, 0.6000, 0.6000], [0.50, 0.7333, 0.7333], [0.55, 0.8667, 0.8667], [0.60, 1, 1], [0.65, 1, 1], [0.70, 0.9333, 0.9333], [0.75, 0.8000, 0.8000], [0.80, 0.6000, 0.6000], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]],\n blue: [[0, 0, 0], [0.05, 0.5333, 0.5333], [0.10, 0.6000, 0.6000], [0.15, 0.6667, 0.6667], [0.20, 0.8667, 0.8667], [0.25, 0.8667, 0.8667], [0.30, 0.8667, 0.8667], [0.35, 0.6667, 0.6667], [0.40, 0.5333, 0.5333], [0.45, 0, 0], [0.5, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0, 0], [0.70, 0, 0], [0.75, 0, 0], [0.80, 0, 0], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]]\n }\n },\n coolwarm: {\n name: 'CoolWarm',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.2298057, 0.2298057], [0.03125, 0.26623388, 0.26623388], [0.0625, 0.30386891, 0.30386891], [0.09375, 0.342804478, 0.342804478], [0.125, 0.38301334, 0.38301334], [0.15625, 0.424369608, 0.424369608], [0.1875, 0.46666708, 0.46666708], [0.21875, 0.509635204, 0.509635204], [0.25, 0.552953156, 0.552953156], [0.28125, 0.596262162, 0.596262162], [0.3125, 0.639176211, 0.639176211], [0.34375, 0.681291281, 0.681291281], [0.375, 0.722193294, 0.722193294], [0.40625, 0.761464949, 0.761464949], [0.4375, 0.798691636, 0.798691636], [0.46875, 0.833466556, 0.833466556], [0.5, 0.865395197, 0.865395197], [0.53125, 0.897787179, 0.897787179], [0.5625, 0.924127593, 0.924127593], [0.59375, 0.944468518, 0.944468518], [0.625, 0.958852946, 0.958852946], [0.65625, 0.96732803, 0.96732803], [0.6875, 0.969954137, 0.969954137], [0.71875, 0.966811177, 0.966811177], [0.75, 0.958003065, 0.958003065], [0.78125, 0.943660866, 0.943660866], [0.8125, 0.923944917, 0.923944917], [0.84375, 0.89904617, 0.89904617], [0.875, 0.869186849, 0.869186849], [0.90625, 0.834620542, 0.834620542], [0.9375, 0.795631745, 0.795631745], [0.96875, 0.752534934, 0.752534934], [1, 0.705673158, 0.705673158]],\n green: [[0, 0.298717966, 0.298717966], [0.03125, 0.353094838, 0.353094838], [0.0625, 0.406535296, 0.406535296], [0.09375, 0.458757618, 0.458757618], [0.125, 0.50941904, 0.50941904], [0.15625, 0.558148092, 0.558148092], [0.1875, 0.604562568, 0.604562568], [0.21875, 0.648280772, 0.648280772], [0.25, 0.688929332, 0.688929332], [0.28125, 0.726149107, 0.726149107], [0.3125, 0.759599947, 0.759599947], [0.34375, 0.788964712, 0.788964712], [0.375, 0.813952739, 0.813952739], [0.40625, 0.834302879, 0.834302879], [0.4375, 0.849786142, 0.849786142], [0.46875, 0.860207984, 0.860207984], [0.5, 0.86541021, 0.86541021], [0.53125, 0.848937047, 0.848937047], [0.5625, 0.827384882, 0.827384882], [0.59375, 0.800927443, 0.800927443], [0.625, 0.769767752, 0.769767752], [0.65625, 0.734132809, 0.734132809], [0.6875, 0.694266682, 0.694266682], [0.71875, 0.650421156, 0.650421156], [0.75, 0.602842431, 0.602842431], [0.78125, 0.551750968, 0.551750968], [0.8125, 0.49730856, 0.49730856], [0.84375, 0.439559467, 0.439559467], [0.875, 0.378313092, 0.378313092], [0.90625, 0.312874446, 0.312874446], [0.9375, 0.24128379, 0.24128379], [0.96875, 0.157246067, 0.157246067], [1, 0.01555616, 0.01555616]],\n blue: [[0, 0.753683153, 0.753683153], [0.03125, 0.801466763, 0.801466763], [0.0625, 0.84495867, 0.84495867], [0.09375, 0.883725899, 0.883725899], [0.125, 0.917387822, 0.917387822], [0.15625, 0.945619588, 0.945619588], [0.1875, 0.968154911, 0.968154911], [0.21875, 0.98478814, 0.98478814], [0.25, 0.995375608, 0.995375608], [0.28125, 0.999836203, 0.999836203], [0.3125, 0.998151185, 0.998151185], [0.34375, 0.990363227, 0.990363227], [0.375, 0.976574709, 0.976574709], [0.40625, 0.956945269, 0.956945269], [0.4375, 0.931688648, 0.931688648], [0.46875, 0.901068838, 0.901068838], [0.5, 0.865395561, 0.865395561], [0.53125, 0.820880546, 0.820880546], [0.5625, 0.774508472, 0.774508472], [0.59375, 0.726736146, 0.726736146], [0.625, 0.678007945, 0.678007945], [0.65625, 0.628751763, 0.628751763], [0.6875, 0.579375448, 0.579375448], [0.71875, 0.530263762, 0.530263762], [0.75, 0.481775914, 0.481775914], [0.78125, 0.434243684, 0.434243684], [0.8125, 0.387970225, 0.387970225], [0.84375, 0.343229596, 0.343229596], [0.875, 0.300267182, 0.300267182], [0.90625, 0.259301199, 0.259301199], [0.9375, 0.220525627, 0.220525627], [0.96875, 0.184115123, 0.184115123], [1, 0.150232812, 0.150232812]]\n }\n },\n blues: {\n name: 'Blues',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.9686274528503418, 0.9686274528503418], [0.125, 0.87058824300765991, 0.87058824300765991], [0.25, 0.7764706015586853, 0.7764706015586853], [0.375, 0.61960786581039429, 0.61960786581039429], [0.5, 0.41960784792900085, 0.41960784792900085], [0.625, 0.25882354378700256, 0.25882354378700256], [0.75, 0.12941177189350128, 0.12941177189350128], [0.875, 0.031372550874948502, 0.031372550874948502], [1, 0.031372550874948502, 0.031372550874948502]],\n green: [[0, 0.9843137264251709, 0.9843137264251709], [0.125, 0.92156863212585449, 0.92156863212585449], [0.25, 0.85882353782653809, 0.85882353782653809], [0.375, 0.7921568751335144, 0.7921568751335144], [0.5, 0.68235296010971069, 0.68235296010971069], [0.625, 0.57254904508590698, 0.57254904508590698], [0.75, 0.44313725829124451, 0.44313725829124451], [0.875, 0.31764706969261169, 0.31764706969261169], [1, 0.18823529779911041, 0.18823529779911041]],\n blue: [[0, 1, 1], [0.125, 0.9686274528503418, 0.9686274528503418], [0.25, 0.93725490570068359, 0.93725490570068359], [0.375, 0.88235294818878174, 0.88235294818878174], [0.5, 0.83921569585800171, 0.83921569585800171], [0.625, 0.7764706015586853, 0.7764706015586853], [0.75, 0.70980393886566162, 0.70980393886566162], [0.875, 0.61176472902297974, 0.61176472902297974], [1, 0.41960784792900085, 0.41960784792900085]]\n }\n }\n};\n/**\n * Generate linearly spaced vectors\n* http://cens.ioc.ee/local/man/matlab/techdoc/ref/linspace.html\n * @param {Number} a A number representing the first vector\n * @param {Number} b A number representing the second vector\n * @param {Number} n The number of linear spaced vectors to generate\n * @returns {Array} An array of points representing linear spaced vectors.\n * @memberof Colors\n */\n\nfunction linspace(a, b, n) {\n n = n === null ? 100 : n;\n var increment = (b - a) / (n - 1);\n var vector = [];\n\n while (n-- > 0) {\n vector.push(a);\n a += increment;\n } // Make sure the last item will always be \"b\" because most of the\n // Time we'll get numbers like 1.0000000000000002 instead of 1.\n\n\n vector[vector.length - 1] = b;\n return vector;\n}\n/**\n * Returns the \"rank/index\" of the element in a sorted array if found or the highest index if not. Uses (binary search)\n * @param {Array} array A sorted array to search in\n * @param {any} elem the element in the array to search for\n * @returns {number} The rank/index of the element in the given array\n * @memberof Colors\n */\n\n\nfunction getRank(array, elem) {\n var left = 0;\n var right = array.length - 1;\n\n while (left <= right) {\n var mid = left + Math.floor((right - left) / 2);\n var midElem = array[mid];\n\n if (midElem === elem) {\n return mid;\n } else if (elem < midElem) {\n right = mid - 1;\n } else {\n left = mid + 1;\n }\n }\n\n return left;\n}\n/**\n * Find the indices into a sorted array a such that, if the corresponding elements\n * In v were inserted before the indices, the order of a would be preserved.\n * http://lagrange.univ-lyon1.fr/docs/numpy/1.11.0/reference/generated/numpy.searchsorted.html\n * @param {Array} inputArray The array where the values will be inserted\n * @param {Array} values An array of the values to be inserted into the inputArray\n * @returns {Array} The indices where elements should be inserted to maintain order.\n * @memberof Colors\n */\n\n\nfunction searchSorted(inputArray, values) {\n var i;\n var indexes = [];\n var len = values.length;\n inputArray.sort(function (a, b) {\n return a - b;\n });\n\n for (i = 0; i < len; i++) {\n indexes[i] = getRank(inputArray, values[i]);\n }\n\n return indexes;\n}\n/**\n * Creates an *N* -element 1-d lookup table\n * @param {Number} N The number of elements in the result lookup table\n * @param {Array} data represented by a list of x,y0,y1 mapping correspondences. Each element in this\n * List represents how a value between 0 and 1 (inclusive) represented by x is mapped to\n * A corresponding value between 0 and 1 (inclusive). The two values of y are to allow for\n * Discontinuous mapping functions (say as might be found in a sawtooth) where y0 represents\n * The value of y for values of x <= to that given, and y1 is the value to be used for x >\n * Than that given). The list must start with x=0, end with x=1, and all values of x must be\n * In increasing order. Values between the given mapping points are determined by simple linear\n * Interpolation.\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the map.\n * @returns {any[]} an array \"result\" where result[x*(N-1)] gives the closest value for\n * Values of x between 0 and 1.\n * @memberof Colors\n */\n\n\nfunction makeMappingArray(N, data, gamma) {\n var i;\n var x = [];\n var y0 = [];\n var y1 = [];\n var lut = [];\n gamma = gamma === null ? 1 : gamma;\n\n for (i = 0; i < data.length; i++) {\n var element = data[i];\n x.push((N - 1) * element[0]);\n y0.push(element[1]);\n y1.push(element[1]);\n }\n\n var xLinSpace = linspace(0, 1, N);\n\n for (i = 0; i < N; i++) {\n xLinSpace[i] = (N - 1) * Math.pow(xLinSpace[i], gamma);\n }\n\n var xLinSpaceIndexes = searchSorted(x, xLinSpace);\n\n for (i = 1; i < N - 1; i++) {\n var index = xLinSpaceIndexes[i];\n var colorPercent = (xLinSpace[i] - x[index - 1]) / (x[index] - x[index - 1]);\n var colorDelta = y0[index] - y1[index - 1];\n lut[i] = colorPercent * colorDelta + y1[index - 1];\n }\n\n lut[0] = y1[0];\n lut[N - 1] = y0[data.length - 1];\n return lut;\n}\n/**\n * Creates a Colormap based on lookup tables using linear segments.\n * @param {{red:Array, green:Array, blue:Array}} segmentedData An object with a red, green and blue entries.\n * Each entry should be a list of x, y0, y1 tuples, forming rows in a table.\n * @param {Number} N The number of elements in the result Colormap\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the Colormap.\n * @returns {Array} The created Colormap object\n * @description The lookup table is generated using linear interpolation for each\n * Primary color, with the 0-1 domain divided into any number of\n * Segments.\n * https://github.com/stefanv/matplotlib/blob/3f1a23755e86fef97d51e30e106195f34425c9e3/lib/matplotlib/colors.py#L663\n * @memberof Colors\n */\n\n\nfunction createLinearSegmentedColormap(segmentedData, N, gamma) {\n var i;\n var lut = [];\n N = N === null ? 256 : N;\n gamma = gamma === null ? 1 : gamma;\n var redLut = makeMappingArray(N, segmentedData.red, gamma);\n var greenLut = makeMappingArray(N, segmentedData.green, gamma);\n var blueLut = makeMappingArray(N, segmentedData.blue, gamma);\n\n for (i = 0; i < N; i++) {\n var red = Math.round(redLut[i] * 255);\n var green = Math.round(greenLut[i] * 255);\n var blue = Math.round(blueLut[i] * 255);\n var rgba = [red, green, blue, 255];\n lut.push(rgba);\n }\n\n return lut;\n}\n/**\n * Return all available colormaps (id and name)\n * @returns {Array<{id,key}>} An array of colormaps with an object containing the \"id\" and display \"name\"\n * @memberof Colors\n */\n\n\nfunction getColormapsList() {\n var colormaps = [];\n var keys = Object.keys(colormapsData);\n keys.forEach(function (key) {\n if (colormapsData.hasOwnProperty(key)) {\n var colormap = colormapsData[key];\n colormaps.push({\n id: key,\n name: colormap.name\n });\n }\n });\n colormaps.sort(function (a, b) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n\n if (aName === bName) {\n return 0;\n }\n\n return aName < bName ? -1 : 1;\n });\n return colormaps;\n}\n/**\n * Return a colorMap object with the provided id and colormapData\n * if the Id matches existent colorMap objects (check colormapsData) the colormapData is ignored.\n * if the colormapData is not empty, the colorMap will be added to the colormapsData list. Otherwise, an empty colorMap object is returned.\n * @param {string} id The ID of the colormap\n * @param {Object} colormapData - An object that can contain a name, numColors, gama, segmentedData and/or colors\n * @returns {*} The Colormap Object\n * @memberof Colors\n*/\n\nfunction getColormap(id, colormapData) {\n var colormap = colormapsData[id];\n\n if (!colormap) {\n colormap = colormapsData[id] = colormapData || {\n name: '',\n colors: []\n };\n }\n\n if (!colormap.colors && colormap.segmentedData) {\n colormap.colors = createLinearSegmentedColormap(colormap.segmentedData, colormap.numColors, colormap.gamma);\n }\n\n return {\n getId: function getId() {\n return id;\n },\n getColorSchemeName: function getColorSchemeName() {\n return colormap.name;\n },\n setColorSchemeName: function setColorSchemeName(name) {\n colormap.name = name;\n },\n getNumberOfColors: function getNumberOfColors() {\n return colormap.colors.length;\n },\n setNumberOfColors: function setNumberOfColors(numColors) {\n while (colormap.colors.length < numColors) {\n colormap.colors.push(COLOR_TRANSPARENT);\n }\n\n colormap.colors.length = numColors;\n },\n getColor: function getColor(index) {\n if (this.isValidIndex(index)) {\n return colormap.colors[index];\n }\n\n return COLOR_TRANSPARENT;\n },\n getColorRepeating: function getColorRepeating(index) {\n var numColors = colormap.colors.length;\n index = numColors ? index % numColors : 0;\n return this.getColor(index);\n },\n setColor: function setColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors[index] = rgba;\n }\n },\n addColor: function addColor(rgba) {\n colormap.colors.push(rgba);\n },\n insertColor: function insertColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1, rgba);\n }\n },\n removeColor: function removeColor(index) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1);\n }\n },\n clearColors: function clearColors() {\n colormap.colors = [];\n },\n buildLookupTable: function buildLookupTable(lut) {\n if (!lut) {\n return;\n }\n\n var numColors = colormap.colors.length;\n lut.setNumberOfTableValues(numColors);\n\n for (var i = 0; i < numColors; i++) {\n lut.setTableValue(i, colormap.colors[i]);\n }\n },\n createLookupTable: function createLookupTable() {\n var lut = new _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.buildLookupTable(lut);\n return lut;\n },\n isValidIndex: function isValidIndex(index) {\n return index >= 0 && index < colormap.colors.length;\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./colors/index.js\":\n/*!*************************!*\\\n !*** ./colors/index.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colormap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colormap.js */ \"./colors/colormap.js\");\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getColormap: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormap\"],\n getColormapsList: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormapsList\"],\n LookupTable: _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./colors/lookupTable.js\":\n/*!*******************************!*\\\n !*** ./colors/lookupTable.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// This code was created based on vtkLookupTable\n// http://www.vtk.org/doc/release/5.0/html/a01697.html\n// https://github.com/Kitware/VTK/blob/master/Common/Core/vtkLookupTable.cxx\nvar BELOW_RANGE_COLOR_INDEX = 0;\nvar ABOVE_RANGE_COLOR_INDEX = 1;\nvar NAN_COLOR_INDEX = 2;\n/**\n * Converts an HSV (Hue, Saturation, Value) color to RGB (Red, Green, Blue) color value\n * @param {Number} hue A number representing the hue color value\n * @param {any} sat A number representing the saturation color value\n * @param {any} val A number representing the value color value\n * @returns {Numberp[]} An RGB color array\n */\n\nfunction HSVToRGB(hue, sat, val) {\n if (hue > 1) {\n throw new Error('HSVToRGB expects hue < 1');\n }\n\n var rgb = [];\n\n if (sat === 0) {\n rgb[0] = val;\n rgb[1] = val;\n rgb[2] = val;\n return rgb;\n }\n\n var hueCase = Math.floor(hue * 6);\n var frac = 6 * hue - hueCase;\n var lx = val * (1 - sat);\n var ly = val * (1 - sat * frac);\n var lz = val * (1 - sat * (1 - frac));\n\n switch (hueCase) {\n /* 0 p.Range[1]) {\n dIndex = p.MaxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.Shift) * p.Scale;\n }\n\n return Math.floor(dIndex);\n}\n/**\n * Maps scalar values into colors via a lookup table\n * LookupTable is an object that is used by mapper objects to map scalar values into rgba (red-green-blue-alpha transparency) color specification,\n * or rgba into scalar values. The color table can be created by direct insertion of color values, or by specifying hue, saturation, value, and alpha range and generating a table\n */\n\n\nvar LookupTable =\n/*#__PURE__*/\nfunction () {\n /**\n * Creates a default linear LookupTable object with 256 colors.\n */\n function LookupTable() {\n _classCallCheck(this, LookupTable);\n\n this.NumberOfColors = 256;\n this.Ramp = 'linear';\n this.TableRange = [0, 255];\n this.HueRange = [0, 0.66667];\n this.SaturationRange = [1, 1];\n this.ValueRange = [1, 1];\n this.AlphaRange = [1, 1];\n this.NaNColor = [128, 0, 0, 255];\n this.BelowRangeColor = [0, 0, 0, 255];\n this.UseBelowRangeColor = true;\n this.AboveRangeColor = [255, 255, 255, 255];\n this.UseAboveRangeColor = true;\n this.InputRange = [0, 255];\n this.Table = [];\n }\n /**\n * Specify the number of values (i.e., colors) in the lookup table.\n * @param {Number} number The number of colors in he LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n\n _createClass(LookupTable, [{\n key: \"setNumberOfTableValues\",\n value: function setNumberOfTableValues(number) {\n this.NumberOfColors = number;\n }\n /**\n * Set the shape of the table ramp to either 'linear', 'scurve' or 'sqrt'\n * @param {String} ramp A string value representing the shape of the table. Allowed values are 'linear', 'scurve' or 'sqrt'\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRamp\",\n value: function setRamp(ramp) {\n this.Ramp = ramp;\n }\n /**\n * Sets the minimum/maximum scalar values for scalar mapping.\n * Scalar values less than minimum range value are clamped to minimum range value.\n * Scalar values greater than maximum range value are clamped to maximum range value.\n * @param {Number} start A double representing the minimum scaler value of the LookupTable\n * @param {any} end A double representing the maximum scaler value of the LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableRange\",\n value: function setTableRange(start, end) {\n this.TableRange[0] = start;\n this.TableRange[1] = end;\n }\n /**\n * Set the range in hue (using automatic generation). Hue ranges between [0,1].\n * @param {Number} start A double representing the minimum hue value in a range. Min. is 0\n * @param {Number} end A double representing the maximum hue value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setHueRange\",\n value: function setHueRange(start, end) {\n this.HueRange[0] = start;\n this.HueRange[1] = end;\n }\n /**\n * Set the range in saturation (using automatic generation). Saturation ranges between [0,1].\n * @param {Number} start A double representing the minimum Saturation value in a range. Min. is 0\n * @param {Number} end A double representing the maximum Saturation value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setSaturationRange\",\n value: function setSaturationRange(start, end) {\n this.SaturationRange[0] = start;\n this.SaturationRange[1] = end;\n }\n /**\n * Set the range in value (using automatic generation). Value ranges between [0,1].\n * @param {Numeber } start A double representing the minimum value in a range. Min. is 0\n * @param {Numeber} end A double representing the maximum value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setValueRange\",\n value: function setValueRange(start, end) {\n // Set the range in value (using automatic generation). Value ranges between [0,1].\n this.ValueRange[0] = start;\n this.ValueRange[1] = end;\n }\n /**\n * (Not Used) Sets the range of scalars which will be mapped.\n * @param {Number} start the minimum scalar value in the range\n * @param {Number} end the maximum scalar value in the range\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRange\",\n value: function setRange(start, end) {\n this.InputRange[0] = start;\n this.InputRange[1] = end;\n }\n /**\n * Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n * @param {Number} start A double representing the minimum alpha value\n * @param {Number} end A double representing the maximum alpha value\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setAlphaRange\",\n value: function setAlphaRange(start, end) {\n // Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n this.AlphaRange[0] = start;\n this.AlphaRange[1] = end;\n }\n /**\n * Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Number} scalar A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"getColor\",\n value: function getColor(scalar) {\n return this.mapValue(scalar);\n }\n /**\n * Generate lookup table from hue, saturation, value, alpha min/max values. Table is built from linear ramp of each value.\n * @param {Boolean} force true to force the build of the LookupTable. Otherwie, false. This is useful if a lookup table has been defined manually\n * (using SetTableValue) and then an application decides to rebuild the lookup table using the implicit process.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"build\",\n value: function build(force) {\n if (this.Table.length > 1 && !force) {\n return;\n } // Clear the table\n\n\n this.Table = [];\n var maxIndex = this.NumberOfColors - 1;\n var hinc, sinc, vinc, ainc;\n\n if (maxIndex) {\n hinc = (this.HueRange[1] - this.HueRange[0]) / maxIndex;\n sinc = (this.SaturationRange[1] - this.SaturationRange[0]) / maxIndex;\n vinc = (this.ValueRange[1] - this.ValueRange[0]) / maxIndex;\n ainc = (this.AlphaRange[1] - this.AlphaRange[0]) / maxIndex;\n } else {\n hinc = sinc = vinc = ainc = 0.0;\n }\n\n for (var i = 0; i <= maxIndex; i++) {\n var hue = this.HueRange[0] + i * hinc;\n var sat = this.SaturationRange[0] + i * sinc;\n var val = this.ValueRange[0] + i * vinc;\n var alpha = this.AlphaRange[0] + i * ainc;\n var rgb = HSVToRGB(hue, sat, val);\n var c_rgba = [];\n\n switch (this.Ramp) {\n case 'scurve':\n c_rgba[0] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[0]) * Math.PI)));\n c_rgba[1] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[1]) * Math.PI)));\n c_rgba[2] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[2]) * Math.PI)));\n c_rgba[3] = Math.floor(alpha * 255);\n break;\n\n case 'linear':\n c_rgba[0] = Math.floor(rgb[0] * 255 + 0.5);\n c_rgba[1] = Math.floor(rgb[1] * 255 + 0.5);\n c_rgba[2] = Math.floor(rgb[2] * 255 + 0.5);\n c_rgba[3] = Math.floor(alpha * 255 + 0.5);\n break;\n\n case 'sqrt':\n c_rgba[0] = Math.floor(Math.sqrt(rgb[0]) * 255 + 0.5);\n c_rgba[1] = Math.floor(Math.sqrt(rgb[1]) * 255 + 0.5);\n c_rgba[2] = Math.floor(Math.sqrt(rgb[2]) * 255 + 0.5);\n c_rgba[3] = Math.floor(Math.sqrt(alpha) * 255 + 0.5);\n break;\n\n default:\n throw new Error(\"Invalid Ramp value (\".concat(this.Ramp, \")\"));\n }\n\n this.Table.push(c_rgba);\n }\n\n this.buildSpecialColors();\n }\n /**\n * Ensures the out-of-range colors (Below range and Above range) are set correctly.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"buildSpecialColors\",\n value: function buildSpecialColors() {\n var numberOfColors = this.NumberOfColors;\n var belowRangeColorIndex = numberOfColors + BELOW_RANGE_COLOR_INDEX;\n var aboveRangeColorIndex = numberOfColors + ABOVE_RANGE_COLOR_INDEX;\n var nanColorIndex = numberOfColors + NAN_COLOR_INDEX; // Below range color\n\n if (this.UseBelowRangeColor || numberOfColors === 0) {\n this.Table[belowRangeColorIndex] = this.BelowRangeColor;\n } else {\n // Duplicate the first color in the table.\n this.Table[belowRangeColorIndex] = this.Table[0];\n } // Above range color\n\n\n if (this.UseAboveRangeColor || numberOfColors === 0) {\n this.Table[aboveRangeColorIndex] = this.AboveRangeColor;\n } else {\n // Duplicate the last color in the table.\n this.Table[aboveRangeColorIndex] = this.Table[numberOfColors - 1];\n } // Always use NanColor\n\n\n this.Table[nanColorIndex] = this.NaNColor;\n }\n /**\n * Similar to GetColor - Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Numeber} v A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"mapValue\",\n value: function mapValue(v) {\n var index = this.getIndex(v);\n\n if (index < 0) {\n return this.NaNColor;\n } else if (index === 0) {\n if (this.UseBelowRangeColor && v < this.TableRange[0]) {\n return this.BelowRangeColor;\n }\n } else if (index === this.NumberOfColors - 1) {\n if (this.UseAboveRangeColor && v > this.TableRange[1]) {\n return this.AboveRangeColor;\n }\n }\n\n return this.Table[index];\n }\n /**\n * Return the table index associated with a particular value.\n * @param {Number} v A double value which table index will be returned.\n * @returns {Number} The index in the LookupTable\n * @memberof Colors\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex(v) {\n var p = {};\n p.Range = [];\n p.MaxIndex = this.NumberOfColors - 1; // This was LookupShiftAndScale\n\n p.Shift = -this.TableRange[0];\n\n if (this.TableRange[1] <= this.TableRange[0]) {\n p.Scale = Number.MAX_VALUE;\n } else {\n p.Scale = p.MaxIndex / (this.TableRange[1] - this.TableRange[0]);\n }\n\n p.Range[0] = this.TableRange[0];\n p.Range[1] = this.TableRange[1]; // First, check whether we have a number...\n\n if (isNaN(v)) {\n // For backwards compatibility\n return -1;\n } // Map to an index:\n\n\n var index = linearIndexLookupMain(v, p); // For backwards compatibility, if the index indicates an\n // Out-of-range value, truncate to index range for in-range colors.\n\n if (index === this.NumberOfColors + BELOW_RANGE_COLOR_INDEX) {\n index = 0;\n } else if (index === this.NumberOfColors + ABOVE_RANGE_COLOR_INDEX) {\n index = this.NumberOfColors - 1;\n }\n\n return index;\n }\n /**\n * Directly load color into lookup table. Use [0,1] double values for color component specification.\n * Make sure that you've either used the Build() method or used SetNumberOfTableValues() prior to using this method.\n * @param {Number} index The index in the LookupTable of where to insert the color value\n * @param {Number[]} rgba An array of [0,1] double values for an RGBA color component\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableValue\",\n value: function setTableValue(index, rgba) {\n // Check if it index, red, green, blue and alpha were passed as parameter\n if (arguments.length === 5) {\n rgba = Array.prototype.slice.call(arguments, 1);\n } // Check the index to make sure it is valid\n\n\n if (index < 0) {\n throw new Error(\"Can't set the table value for negative index (\".concat(index, \")\"));\n }\n\n if (index >= this.NumberOfColors) {\n new Error(\"Index \".concat(index, \" is greater than the number of colors \").concat(this.NumberOfColors));\n }\n\n this.Table[index] = rgba;\n\n if (index === 0 || index === this.NumberOfColors - 1) {\n // This is needed due to the way the special colors are stored in\n // The internal table. If Above/BelowRangeColors are not used and\n // The min/max colors are changed in the table with this member\n // Function, then the colors used for values outside the range may\n // Be incorrect. Calling this here ensures the out-of-range colors\n // Are set correctly.\n this.buildSpecialColors();\n }\n }\n }]);\n\n return LookupTable;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LookupTable);\n\n/***/ }),\n\n/***/ \"./disable.js\":\n/*!********************!*\\\n !*** ./disable.js ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Disable an HTML element for further use in Cornerstone\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Enable\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n if (element === undefined) {\n throw new Error('disable: element must not be undefined');\n } // Search for this element in this list of enabled elements\n\n\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n // We found it!\n // Fire an event so dependencies can cleanup\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_2__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData); // Remove the child DOM elements that we created (e.g.canvas)\n\n enabledElements[i].element.removeChild(enabledElements[i].canvas);\n enabledElements[i].canvas = undefined; // Remove this element from the list of enabled elements\n\n enabledElements.splice(i, 1);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./displayImage.js\":\n/*!*************************!*\\\n !*** ./displayImage.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n\n/**\n * Sets a new image object for a given element.\n *\n * Will also apply an optional viewport setting.\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @param {Object} [viewport] A set of Cornerstone viewport parameters\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image, viewport) {\n if (element === undefined) {\n throw new Error('displayImage: parameter element must not be undefined');\n }\n\n if (image === undefined) {\n throw new Error('displayImage: parameter image must not be undefined');\n }\n\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldImage = enabledElement.image;\n enabledElement.image = image;\n\n if (enabledElement.layers && enabledElement.layers.length) {\n Object(_layers_js__WEBPACK_IMPORTED_MODULE_4__[\"setLayerImage\"])(element, image);\n }\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n }\n\n var frameRate;\n\n if (enabledElement.lastImageTimeStamp !== undefined) {\n var timeSinceLastImage = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - enabledElement.lastImageTimeStamp;\n frameRate = (1000 / timeSinceLastImage).toFixed();\n }\n\n enabledElement.lastImageTimeStamp = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var newImageEventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n oldImage: oldImage,\n enabledElement: enabledElement,\n frameRate: frameRate\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].NEW_IMAGE, newImageEventData);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./draw.js\":\n/*!*****************!*\\\n !*** ./draw.js ***!\n \\*****************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Immediately draws the enabled element\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('draw: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./drawInvalidated.js\":\n/*!****************************!*\\\n !*** ./drawInvalidated.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/**\n * This module is responsible for drawing invalidated enabled elements\n */\n\n\n/**\n * Draws all invalidated enabled elements and clears the invalid flag after drawing it\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n var ee = enabledElements[i];\n\n if (ee.invalid === true) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ee, true);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./enable.js\":\n/*!*******************!*\\\n !*** ./enable.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _generateUUID_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generateUUID.js */ \"./generateUUID.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/getCanvas.js */ \"./internal/getCanvas.js\");\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Enable\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n */\n\n/**\r\n * Returns whether or not an Enabled Element has either a currently active image or\r\n * a non-empty Array of Enabled Element Layers.\r\n *\r\n * @param {EnabledElement} enabledElement An Enabled Element\r\n * @return {Boolean} Whether or not the Enabled Element has an active image or valid set of layers\r\n * @memberof Enable\r\n */\n\nfunction hasImageOrLayers(enabledElement) {\n return enabledElement.image !== undefined || enabledElement.layers.length > 0;\n}\n/**\r\n * Enable an HTML Element for use in Cornerstone\r\n *\r\n * - If there is a Canvas already present within the HTMLElement, and it has the class\r\n * 'cornerstone-canvas', this function will use this existing Canvas instead of creating\r\n * a new one. This may be helpful when using libraries (e.g. React, Vue) which don't\r\n * want third parties to change the DOM.\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @param {Object} options Options for the enabledElement\r\n *\r\n * @return {void}\r\n * @memberof Enable\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, options) {\n if (element === undefined) {\n throw new Error('enable: parameter element cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var canvas = Object(_internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element);\n var enabledElement = {\n element: element,\n canvas: canvas,\n image: undefined,\n // Will be set once image is loaded\n invalid: false,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n uuid: Object(_generateUUID_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])()\n };\n Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"addEnabledElement\"])(enabledElement);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_7__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ELEMENT_ENABLED, enabledElement);\n Object(_resize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, true);\n /**\r\n * Draw the image immediately\r\n *\r\n * @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n function draw(timestamp) {\n if (enabledElement.canvas === undefined) {\n return;\n }\n\n var eventDetails = {\n enabledElement: enabledElement,\n timestamp: timestamp\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].PRE_RENDER, eventDetails);\n\n if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, enabledElement.invalid);\n }\n\n Object(_internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(draw);\n }\n\n draw();\n});\n\n/***/ }),\n\n/***/ \"./enabledElementData.js\":\n/*!*******************************!*\\\n !*** ./enabledElementData.js ***!\n \\*******************************/\n/*! exports provided: getElementData, removeElementData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return getElementData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return removeElementData; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n * @returns {*} Whatever data is stored for this enabled element\n */\n\nfunction getElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (ee.data.hasOwnProperty(dataType) === false) {\n ee.data[dataType] = {};\n }\n\n return ee.data[dataType];\n}\n/**\n * Clears any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n *\n * @returns {void}\n */\n\nfunction removeElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n delete ee.data[dataType];\n}\n\n/***/ }),\n\n/***/ \"./enabledElements.js\":\n/*!****************************!*\\\n !*** ./enabledElements.js ***!\n \\****************************/\n/*! exports provided: getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return getEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return addEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return getEnabledElementsByImageId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return getEnabledElements; });\nvar enabledElements = [];\n/**\n * @module EnabledElements\n */\n\n/**\n * @module Objects\n */\n\n/**\n * A two-dimensional vector\n *\n * @typedef {Object} vec2\n * @memberof Objects\n * @param {Number} x - The x distance\n * @param {Number} y - The y distance\n */\n\n/**\n * VOI\n *\n * @typedef {Object} VOI\n * @memberof Objects\n * @param {Number} windowWidth - Window Width for display\n * @param {Number} windowCenter - Window Center for display\n */\n\n/**\n * Lookup Table Array\n *\n * @typedef {Object} LUT\n * @memberof Objects\n * @property {Number} firstValueMapped\n * @property {Number} numBitsPerEntry\n * @property {Array} lut\n */\n\n/**\n * Image Statistics Object\n *\n * @typedef {Object} ImageStats\n * @memberof Objects\n * @property {Number} [lastGetPixelDataTime] The time in ms taken to retrieve stored pixels required to draw the image\n * @property {Number} [lastStoredPixelDataToCanvasImageDataTime] The time in ms taken to map from stored pixel array to canvas pixel array\n * @property {Number} [lastPutImageDataTime] The time in ms taken for putImageData to put the canvas pixel data into the canvas context\n * @property {Number} [lastRenderTime] The total time in ms taken for the entire rendering function to run\n * @property {Number} [lastLutGenerateTime] The time in ms taken to generate the lookup table for the image\n */\n\n/**\n * An Image Object in Cornerstone\n *\n * @typedef {Object} Image\n * @memberof Objects\n * @property {string} imageId - The imageId associated with this image object\n * @property {Number} minPixelValue - the minimum stored pixel value in the image\n * @property {Number} maxPixelValue - the maximum stored pixel value in the image\n * @property {Number} slope - the rescale slope to convert stored pixel values to modality pixel values or 1 if not specified\n * @property {Number} intercept - the rescale intercept used to convert stored pixel values to modality values or 0 if not specified\n * @property {Number} windowCenter - the default windowCenter to apply to the image\n * @property {Number} windowWidth - the default windowWidth to apply to the image\n * @property {function} getPixelData - a function that returns the underlying pixel data. An array of integers for grayscale and an array of RGBA for color\n * @property {function} getImageData - a function that returns a canvas imageData object for the image. This is only needed for color images\n * @property {function} getCanvas - a function that returns a canvas element with the image loaded into it. This is only needed for color images.\n * @property {function} getImage - a function that returns a JavaScript Image object with the image data. This is optional and typically used for images encoded in standard web JPEG and PNG formats\n * @property {Number} rows - number of rows in the image. This is the same as height but duplicated for convenience\n * @property {Number} columns - number of columns in the image. This is the same as width but duplicated for convenience\n * @property {Number} height - the height of the image. This is the same as rows but duplicated for convenience\n * @property {Number} width - the width of the image. This is the same as columns but duplicated for convenience\n * @property {Boolean} color - true if pixel data is RGB, false if grayscale\n * @property {Object} lut - The Lookup Table\n * @property {Boolean} rgba - Is the color pixel data stored in RGBA?\n * @property {Number} columnPixelSpacing - horizontal distance between the middle of each pixel (or width of each pixel) in mm or undefined if not known\n * @property {Number} rowPixelSpacing - vertical distance between the middle of each pixel (or height of each pixel) in mm or undefined if not known\n * @property {Boolean} invert - true if the the image should initially be displayed be inverted, false if not. This is here mainly to support DICOM images with a photometric interpretation of MONOCHROME1\n * @property {Number} sizeInBytes - the number of bytes used to store the pixels for this image.\n * @property {Boolean} [falseColor=false] - Whether or not the image has undergone false color mapping\n * @property {Array} [origPixelData] - Original pixel data for an image after it has undergone false color mapping\n * @property {ImageStats} [stats] - Statistics for the last redraw of the image\n * @property {Object} cachedLut - Cached Lookup Table for this image.\n * @property {String|Colormap} [colormap] - Depreacted. Use viewport.colormap instead. an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * A Viewport Settings Object Cornerstone\n *\n * @typedef {Object} Viewport\n * @memberof Objects\n * @property {Number} [scale=1.0] - The scale applied to the image. A scale of 1.0 will display no zoom (one image pixel takes up one screen pixel). A scale of 2.0 will be double zoom and a scale of .5 will be zoomed out by 2x\n * @property {vec2} [translation] - An object with properties x and y which describe the translation to apply in the pixel coordinate system. Note that the image is initially displayed centered in the enabled element with a x and y translation of 0 and 0 respectively.\n * @property {VOI} [voi] - an object with properties windowWidth and windowCenter.\n * @property {boolean} [invert=false] - Whether or not the image is inverted.\n * @property {boolean} [pixelReplication=false] - true if the image smooth / interpolation should be used when zoomed in on the image or false if pixel replication should be used.\n * @property {boolean} [hflip=false] - true if the image is flipped horizontally. Default is false\n * @property {boolean} [vflip=false] - true if the image is flipped vertically. Default is false\n * @property {Number} [rotation=0] - the rotation of the image (90 degree increments). Default is 0\n * @property {LUT} [modalityLUT] - the modality LUT to apply or undefined if none\n * @property {LUT} [voiLUT] - the modality LUT to apply or undefined if none\n * @property {String|Colormap} [colormap] - an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * An Enabled Element in Cornerstone\n *\n * @typedef {Object} EnabledElement\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n * @property {EnabledElementLayer[]} [layers] - The layers that have been added to the enabledElement\n * @property {Boolean} [syncViewports] - Whether or not to synchronize the viewport parameters\n * for each of the enabled element's layers\n * @property {Boolean} [lastSyncViewportsState] - The previous state for the sync viewport boolean\n */\n\n/**\n * An Enabled Element Layer in Cornerstone\n *\n * @typedef {Object} EnabledElementLayer\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Object} [options] - Layer drawing options\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n */\n\n/**\n * An Image Load Object\n *\n * @typedef {Object} ImageLoadObject\n * @memberof Objects\n * @property {Promise} promise - The Promise tracking the loading of this image\n * @property {Function|undefined} cancelFn - A function to cancel the image load request\n */\n\n/**\n * Retrieves a Cornerstone Enabled Element object\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n *\n * @returns {EnabledElement} A Cornerstone Enabled Element\n * @memberof EnabledElements\n */\n\nfunction getEnabledElement(element) {\n if (element === undefined) {\n throw new Error('getEnabledElement: parameter element must not be undefined');\n }\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n return enabledElements[i];\n }\n }\n\n throw new Error('element not enabled');\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {EnabledElement} enabledElement A Cornerstone enabledElement Object\n * @returns {void}\n * @memberof EnabledElements\n */\n\nfunction addEnabledElement(enabledElement) {\n if (enabledElement === undefined) {\n throw new Error('getEnabledElement: enabledElement element must not be undefined');\n }\n\n enabledElements.push(enabledElement);\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {string} imageId A Cornerstone Image ID\n * @returns {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElementsByImageId(imageId) {\n var ees = [];\n enabledElements.forEach(function (enabledElement) {\n if (enabledElement.image && enabledElement.image.imageId === imageId) {\n ees.push(enabledElement);\n }\n });\n return ees;\n}\n/**\n * Retrieve all of the currently enabled Cornerstone elements\n *\n * @return {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElements() {\n return enabledElements;\n}\n\n/***/ }),\n\n/***/ \"./events.js\":\n/*!*******************!*\\\n !*** ./events.js ***!\n \\*******************/\n/*! exports provided: default, events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return events; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n NEW_IMAGE: 'cornerstonenewimage',\n INVALIDATED: 'cornerstoneinvalidated',\n PRE_RENDER: 'cornerstoneprerender',\n IMAGE_CACHE_MAXIMUM_SIZE_CHANGED: 'cornerstoneimagecachemaximumsizechanged',\n IMAGE_CACHE_PROMISE_REMOVED: 'cornerstoneimagecachepromiseremoved',\n IMAGE_CACHE_FULL: 'cornerstoneimagecachefull',\n IMAGE_CACHE_CHANGED: 'cornerstoneimagecachechanged',\n WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved',\n WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull',\n IMAGE_LOADED: 'cornerstoneimageloaded',\n IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed',\n ELEMENT_RESIZED: 'cornerstoneelementresized',\n IMAGE_RENDERED: 'cornerstoneimagerendered',\n LAYER_ADDED: 'cornerstonelayeradded',\n LAYER_REMOVED: 'cornerstonelayerremoved',\n ACTIVE_LAYER_CHANGED: 'cornerstoneactivelayerchanged',\n ELEMENT_DISABLED: 'cornerstoneelementdisabled',\n ELEMENT_ENABLED: 'cornerstoneelementenabled'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EVENTS);\n/**\n * EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface\n *\n * @class\n * @memberof Polyfills\n */\n\nvar EventTarget =\n/*#__PURE__*/\nfunction () {\n function EventTarget() {\n _classCallCheck(this, EventTarget);\n\n this.listeners = {};\n this.namespaces = {};\n }\n\n _createClass(EventTarget, [{\n key: \"addEventNamespaceListener\",\n value: function addEventNamespaceListener(type, callback) {\n if (type.indexOf('.') <= 0) {\n return;\n }\n\n this.namespaces[type] = callback;\n this.addEventListener(type.split('.')[0], callback);\n }\n }, {\n key: \"removeEventNamespaceListener\",\n value: function removeEventNamespaceListener(type) {\n if (type.indexOf('.') <= 0 || !this.namespaces[type]) {\n return;\n }\n\n this.removeEventListener(type.split('.')[0], this.namespaces[type]);\n delete this.namespaces[type];\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.addEventNamespaceListener(type, callback);\n return;\n }\n\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(callback);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.removeEventNamespaceListener(type);\n return;\n }\n\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n\n var stack = this.listeners[event.type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return EventTarget;\n}();\n\nvar events = new EventTarget();\n\n/***/ }),\n\n/***/ \"./falseColorMapping.js\":\n/*!******************************!*\\\n !*** ./falseColorMapping.js ***!\n \\******************************/\n/*! exports provided: convertImageToFalseColorImage, convertToFalseColorImage, restoreImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return convertImageToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return convertToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return restoreImage; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony import */ var _colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors/colormap.js */ \"./colors/colormap.js\");\n\n\n\n/**\n * Retrieves the minimum and maximum pixel values from an Array of pixel data\n *\n * @param {Array} pixelData The input pixel data array\n *\n * @returns {{minPixelValue: Number, maxPixelValue: Number}} The minimum and maximum pixel values in the input Array\n */\n\nfunction getPixelValues(pixelData) {\n var minPixelValue = Number.MAX_VALUE;\n var maxPixelValue = Number.MIN_VALUE;\n var len = pixelData.length;\n var pixel;\n\n for (var i = 0; i < len; i++) {\n pixel = pixelData[i];\n minPixelValue = minPixelValue < pixel ? minPixelValue : pixel;\n maxPixelValue = maxPixelValue > pixel ? maxPixelValue : pixel;\n }\n\n return {\n minPixelValue: minPixelValue,\n maxPixelValue: maxPixelValue\n };\n}\n/**\n * Retrieve a function that will allow an image object to be reset to its original form\n * after a false color mapping transformation\n *\n * @param {Image} image A Cornerstone Image Object\n *\n * @return {Function} A function for resetting an Image Object to its original form\n */\n\n\nfunction getRestoreImageMethod(image) {\n if (image.restore) {\n return image.restore;\n }\n\n var color = image.color;\n var rgba = image.rgba;\n var cachedLut = image.cachedLut;\n var slope = image.slope;\n var windowWidth = image.windowWidth;\n var windowCenter = image.windowCenter;\n var minPixelValue = image.minPixelValue;\n var maxPixelValue = image.maxPixelValue;\n return function () {\n image.color = color;\n image.rgba = rgba;\n image.cachedLut = cachedLut;\n image.slope = slope;\n image.windowWidth = windowWidth;\n image.windowCenter = windowCenter;\n image.minPixelValue = minPixelValue;\n image.maxPixelValue = maxPixelValue;\n\n if (image.origPixelData) {\n var pixelData = image.origPixelData;\n\n image.getPixelData = function () {\n return pixelData;\n };\n } // Remove some attributes added by false color mapping\n\n\n image.origPixelData = undefined;\n image.colormapId = undefined;\n image.falseColor = undefined;\n };\n} //\n// Then we need to make sure it will be converted into a colormap object if it's as string.\n\n/**\n * User can pass a colormap or its id as string to some of these public functions.\n * Then we need to make sure it will be converted into a colormap object if it's a string.\n *\n * @param {*} colormap A colormap ID or Object\n * @return {*} The colormap\n */\n\n\nfunction ensuresColormap(colormap) {\n if (colormap && typeof colormap === 'string') {\n colormap = Object(_colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__[\"getColormap\"])(colormap);\n }\n\n return colormap;\n}\n/**\n * Restores a false color image to its original version\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Boolean} True if the image object had a valid restore function, which was run. Otherwise, false.\n */\n\n\nfunction restoreImage(image) {\n if (image.restore && typeof image.restore === 'function') {\n image.restore();\n return true;\n }\n\n return false;\n}\n/**\n * Convert an image to a false color image\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {String|Object} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {Boolean} - Whether or not the image has been converted to a false color image\n */\n\n\nfunction convertImageToFalseColorImage(image, colormap) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n } // User can pass a colormap id or a colormap object\n\n\n colormap = ensuresColormap(colormap);\n var colormapId = colormap.getId(); // Doesn't do anything if colormapId hasn't changed\n\n if (image.colormapId === colormapId) {\n // It has already being converted into a false color image\n // Using the colormapId passed as parameter\n return false;\n } // Restore the image attributes updated when converting to a false color image\n\n\n restoreImage(image); // Convert the image to a false color image\n\n if (colormapId) {\n var minPixelValue = image.minPixelValue || 0;\n var maxPixelValue = image.maxPixelValue || 255;\n image.restore = getRestoreImageMethod(image);\n var lookupTable = colormap.createLookupTable();\n lookupTable.setTableRange(minPixelValue, maxPixelValue); // Update the pixel data and render the new image\n\n Object(_pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lookupTable); // Update min and max pixel values\n\n var pixelValues = getPixelValues(image.getPixelData());\n image.minPixelValue = pixelValues.minPixelValue;\n image.maxPixelValue = pixelValues.maxPixelValue;\n image.windowWidth = 255;\n image.windowCenter = 128; // Cache the last colormapId used for performance\n // Then it doesn't need to be re-rendered on next\n // Time if the user hasn't updated it\n\n image.colormapId = colormapId;\n } // Return `true` to tell the caller that the image has got updated\n\n\n return true;\n}\n/**\n * Convert the image of a element to a false color image\n *\n * @param {HTMLElement} element The Cornerstone element\n * @param {*} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {void}\n */\n\n\nfunction convertToFalseColorImage(element, colormap) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return convertImageToFalseColorImage(enabledElement.image, colormap);\n}\n\n\n\n/***/ }),\n\n/***/ \"./fitToWindow.js\":\n/*!************************!*\\\n !*** ./fitToWindow.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n\n\n/**\n * Adjusts an image's scale and translation so the image is centered and all pixels\n * in the image are viewable.\n *\n * @param {HTMLElement} element The Cornerstone element to update\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var image = enabledElement.image; // The new scale is the minimum of the horizontal and vertical scale values\n\n enabledElement.viewport.scale = Object(_internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image, enabledElement.viewport.rotation).scaleFactor;\n enabledElement.viewport.translation.x = 0;\n enabledElement.viewport.translation.y = 0;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./generateUUID.js\":\n/*!*************************!*\\\n !*** ./generateUUID.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n* Generates a UUID for the enabledElement.\n*\n* @return {String} the UUID.\n*/\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n // https://stackoverflow.com/a/8809472/9208320 Public Domain/MIT\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\"&\",\"|\"] }] */\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // Use high-precision timer if available\n }\n\n return 'x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n});\n\n/***/ }),\n\n/***/ \"./getDefaultViewportForImage.js\":\n/*!***************************************!*\\\n !*** ./getDefaultViewportForImage.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n\n\n/**\n * Returns a default viewport for display the specified image on the specified\n * enabled element. The default viewport is fit to window\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image Object\n *\n * @returns {Viewport} The default viewport for the image\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n});\n\n/***/ }),\n\n/***/ \"./getImage.js\":\n/*!*********************!*\\\n !*** ./getImage.js ***!\n \\*********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Returns the currently displayed image for an element or undefined if no image has\n * been displayed yet\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Image} The Cornerstone Image Object displayed in this element\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return enabledElement.image;\n});\n\n/***/ }),\n\n/***/ \"./getPixels.js\":\n/*!**********************!*\\\n !*** ./getPixels.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony import */ var _internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n\n\n\n/**\n * Retrieves an array of pixels from a rectangular region with modality LUT transformation applied\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The modality pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n var storedPixels = Object(_getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, x, y, width, height);\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var mlutfn = Object(_internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ee.image.slope, ee.image.intercept, ee.viewport.modalityLUT);\n return storedPixels.map(mlutfn);\n});\n\n/***/ }),\n\n/***/ \"./getStoredPixels.js\":\n/*!****************************!*\\\n !*** ./getStoredPixels.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves an array of stored pixel values from a rectangular region of an image\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The stored pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n if (element === undefined) {\n throw new Error('getStoredPixels: parameter element must not be undefined');\n }\n\n x = Math.round(x);\n y = Math.round(y);\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var storedPixels = [];\n var index = 0;\n var pixelData = enabledElement.image.getPixelData();\n\n for (var row = 0; row < height; row++) {\n for (var column = 0; column < width; column++) {\n var spIndex = (row + y) * enabledElement.image.columns + (column + x);\n storedPixels[index++] = pixelData[spIndex];\n }\n }\n\n return storedPixels;\n});\n\n/***/ }),\n\n/***/ \"./getViewport.js\":\n/*!************************!*\\\n !*** ./getViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves the viewport for the specified enabled element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Viewport|undefined} The Cornerstone Viewport settings for this element, if they exist. Otherwise, undefined\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var viewport = enabledElement.viewport;\n\n if (viewport === undefined) {\n return;\n } // Return a copy of the viewport\n\n\n return Object.assign({}, viewport);\n});\n\n/***/ }),\n\n/***/ \"./imageCache.js\":\n/*!***********************!*\\\n !*** ./imageCache.js ***!\n \\***********************/\n/*! exports provided: cachedImages, setMaximumSizeBytes, putImageLoadObject, getImageLoadObject, removeImageLoadObject, getCacheInfo, purgeCache, changeImageIdCacheSize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cachedImages\", function() { return cachedImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumSizeBytes\", function() { return setMaximumSizeBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"putImageLoadObject\", function() { return putImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageLoadObject\", function() { return getImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeImageLoadObject\", function() { return removeImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCacheInfo\", function() { return getCacheInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeCache\", function() { return purgeCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeImageIdCacheSize\", function() { return changeImageIdCacheSize; });\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\n * This module deals with caching images\n * @module ImageCache\n */\n\nvar maximumSizeInBytes = 1024 * 1024 * 1024; // 1 GB\n\nvar cacheSizeInBytes = 0; // Dictionary of imageId to cachedImage objects\n\nvar imageCacheDict = {}; // Array of cachedImage objects\n\nvar cachedImages = [];\n/** Sets the maximum size of cache and purges cache contents if necessary.\n *\n * @param {number} numBytes The maximun size that the cache should occupy.\n * @returns {void}\n */\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_MAXIMUM_SIZE_CHANGED);\n purgeCacheIfNecessary();\n}\n/**\n * Purges the cache if size exceeds maximum\n * @returns {void}\n */\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary)\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n var imageId = lastCachedImage.imageId;\n removeImageLoadObject(imageId);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_PROMISE_REMOVED, {\n imageId: imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_FULL, cacheInfo);\n}\n/**\n * Puts a new image loader into the cache\n *\n * @param {string} imageId ImageId of the image loader\n * @param {Object} imageLoadObject The object that is loading or loaded the image\n * @returns {void}\n */\n\n\nfunction putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n\n if (imageCacheDict.hasOwnProperty(imageId) === true) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n\n if (imageLoadObject.cancelFn && typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancelFn must be a function');\n }\n\n var cachedImage = {\n loaded: false,\n imageId: imageId,\n sharedCacheKey: undefined,\n // The sharedCacheKey for this imageId. undefined by default\n imageLoadObject: imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0\n };\n imageCacheDict[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n imageLoadObject.promise.then(function (image) {\n if (cachedImages.indexOf(cachedImage) === -1) {\n // If the image has been purged before being loaded, we stop here.\n return;\n }\n\n cachedImage.loaded = true;\n cachedImage.image = image;\n\n if (image.sizeInBytes === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n\n cachedImage.sizeInBytes = image.sizeInBytes;\n cacheSizeInBytes += cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'addImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n purgeCacheIfNecessary();\n }, function () {\n var cachedImage = imageCacheDict[imageId];\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n delete imageCacheDict[imageId];\n });\n}\n/**\n * Retuns the object that is loading a given imageId\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n}\n/**\n * Removes the image loader associated with a given Id from the cache\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction removeImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'deleteImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n decache(cachedImage.imageLoadObject);\n delete imageCacheDict[imageId];\n}\n/**\n * @typedef {Object} CacheInformation\n * @property {number} maximumSizeInBytes The maximum size of the cache in bytes\n * @property {number} cacheSizeInBytes Currently occupied space in the cache in bytes\n * @property {number} numberOfImagesCached Number of ImageLoaders in the cache\n * @returns {void}\n */\n\n/**\n * Gets the current state of the cache\n * @returns {void}\n */\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n} // This method should only be called by `removeImageLoadObject` because it's\n// The one that knows how to deal with shared cache keys and cache size.\n\n/**\n * INTERNAL: Removes and ImageLoader from the cache\n *\n * @param {Object} imageLoadObject Image Loader Object to remove\n * @returns {void}\n */\n\nfunction decache(imageLoadObject) {\n imageLoadObject.promise.then(function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n }, function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n });\n}\n/**\n * Removes all images from cache\n * @returns {void}\n */\n\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages[0];\n removeImageLoadObject(removedCachedImage.imageId);\n }\n}\n/**\n * Updates the space than an image is using in the cache\n *\n * @param {string} imageId Image ID\n * @param {number} newCacheSize New image size\n * @returns {void}\n */\n\nfunction changeImageIdCacheSize(imageId, newCacheSize) {\n var cacheEntry = imageCacheDict[imageId];\n\n if (cacheEntry) {\n cacheEntry.imageLoadObject.promise.then(function (image) {\n var cacheSizeDifference = newCacheSize - image.sizeInBytes;\n image.sizeInBytes = newCacheSize;\n cacheEntry.sizeInBytes = newCacheSize;\n cacheSizeInBytes += cacheSizeDifference;\n var eventDetails = {\n action: 'changeImageSize',\n image: image\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n });\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n imageCache: imageCacheDict,\n cachedImages: cachedImages,\n setMaximumSizeBytes: setMaximumSizeBytes,\n putImageLoadObject: putImageLoadObject,\n getImageLoadObject: getImageLoadObject,\n removeImageLoadObject: removeImageLoadObject,\n getCacheInfo: getCacheInfo,\n purgeCache: purgeCache,\n changeImageIdCacheSize: changeImageIdCacheSize\n});\n\n/***/ }),\n\n/***/ \"./imageLoader.js\":\n/*!************************!*\\\n !*** ./imageLoader.js ***!\n \\************************/\n/*! exports provided: loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return loadImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return loadAndCacheImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return registerImageLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return registerUnknownImageLoader; });\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n\n/**\r\n * This module deals with ImageLoaders, loading images and caching images\r\n * @module ImageLoader\r\n */\n\nvar imageLoaders = {};\nvar unknownImageLoader;\n/**\r\n * Load an image using a registered Cornerstone Image Loader.\r\n *\r\n * The image loader that is used will be\r\n * determined by the image loader scheme matching against the imageId.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\nfunction loadImageFromImageLoader(imageId, options) {\n var colonIndex = imageId.indexOf(':');\n var scheme = imageId.substring(0, colonIndex);\n var loader = imageLoaders[scheme];\n\n if (loader === undefined || loader === null) {\n if (unknownImageLoader !== undefined) {\n return unknownImageLoader(imageId);\n }\n\n throw new Error('loadImageFromImageLoader: no image loader for imageId');\n }\n\n var imageLoadObject = loader(imageId, options); // Broadcast an image loaded event once the image is loaded\n\n imageLoadObject.promise.then(function (image) {\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOADED, {\n image: image\n });\n }, function (error) {\n var errorObject = {\n imageId: imageId,\n error: error\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOAD_FAILED, errorObject);\n });\n return imageLoadObject;\n}\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The loaded image is not stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\n\nfunction loadImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n return loadImageFromImageLoader(imageId, options).promise;\n} //\n\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The image is stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} Image Loader Object\r\n * @memberof ImageLoader\r\n */\n\nfunction loadAndCacheImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadAndCacheImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n imageLoadObject = loadImageFromImageLoader(imageId, options);\n Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"putImageLoadObject\"])(imageId, imageLoadObject);\n return imageLoadObject.promise;\n}\n/**\r\n * Registers an imageLoader plugin with cornerstone for the specified scheme\r\n *\r\n * @param {String} scheme The scheme to use for this image loader (e.g. 'dicomweb', 'wadouri', 'http')\r\n * @param {Function} imageLoader A Cornerstone Image Loader function\r\n * @returns {void}\r\n * @memberof ImageLoader\r\n */\n\nfunction registerImageLoader(scheme, imageLoader) {\n imageLoaders[scheme] = imageLoader;\n}\n/**\r\n * Registers a new unknownImageLoader and returns the previous one\r\n *\r\n * @param {Function} imageLoader A Cornerstone Image Loader\r\n *\r\n * @returns {Function|Undefined} The previous Unknown Image Loader\r\n * @memberof ImageLoader\r\n */\n\nfunction registerUnknownImageLoader(imageLoader) {\n var oldImageLoader = unknownImageLoader;\n unknownImageLoader = imageLoader;\n return oldImageLoader;\n}\n\n/***/ }),\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawImage\", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ \"./internal/generateLut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateLut\", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewport\", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageData\", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedColorPixelDataToCanvasImageData\", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataColorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataPseudocolorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ \"./internal/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internal\", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"]; });\n\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"]; });\n\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"]; });\n\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"]; });\n\n/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"]; });\n\n/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToCanvas\", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ \"./canvasToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canvasToPixel\", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ \"./disable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ \"./displayImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"displayImage\", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ \"./draw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ \"./drawInvalidated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawInvalidated\", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ \"./enable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"enable\", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ \"./enabledElementData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"]; });\n\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"]; });\n\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"]; });\n\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitToWindow\", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ \"./getDefaultViewportForImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewportForImage\", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ \"./getImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImage\", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ \"./getPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getPixels\", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStoredPixels\", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ \"./getViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewport\", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ \"./imageLoader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"]; });\n\n/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ \"./invalidate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidate\", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ \"./invalidateImageId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidateImageId\", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ \"./pageToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageToPixel\", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ \"./pixelToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelToCanvas\", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ \"./reset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setToPixelCoordinateSystem\", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ \"./setViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setViewport\", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"updateImage\", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelDataToFalseColorData\", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ \"./rendering/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rendering\", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"imageCache\", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ \"./metaData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"metaData\", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ \"./webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"webGL\", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colors\", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ \"./falseColorMapping.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"]; });\n\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"]; });\n\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerEvent\", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n// Internal (some of these are from old internal/legacy expose)\n\n\n\n\n\n\n\n\n // Rendering\n\n\n\n\n\n\n\n/**\n * @module PixelCoordinateSystem\n */\n\n/**\n * @module ViewportSettings\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar cornerstone = {\n drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"],\n renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"],\n renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"],\n renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"],\n renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"],\n renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"],\n removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"],\n getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"],\n addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"],\n getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"],\n getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"],\n addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"],\n removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"],\n getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"],\n getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"],\n getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"],\n setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"],\n getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"],\n purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"],\n setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"],\n fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"],\n loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"],\n registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"],\n registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"],\n invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"],\n convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"],\n restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"],\n EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n events: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"],\n triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cornerstone);\n\n/***/ }),\n\n/***/ \"./internal/calculateTransform.js\":\n/*!****************************************!*\\\n !*** ./internal/calculateTransform.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n/**\n * Calculate the transform for a Cornerstone enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\n * @param {Number} [scale] The viewport scale\n * @return {Transform} The current transform\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, scale) {\n var transform = new _transform_js__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"](); // Move to center of canvas\n\n transform.translate(enabledElement.canvas.width / 2, enabledElement.canvas.height / 2); // Apply the rotation before scaling for non square pixels\n\n var angle = enabledElement.viewport.rotation;\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n } // Apply the scale\n\n\n var widthScale = enabledElement.viewport.scale;\n var heightScale = enabledElement.viewport.scale;\n var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1);\n var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1);\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {\n if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) {\n widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing;\n } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) {\n heightScale *= enabledElement.image.rowPixelSpacing / enabledElement.image.columnPixelSpacing;\n }\n } else {\n // These should be good for \"TRUE SIZE\" and \"MAGNIFY\"\n widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing;\n heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing;\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') {\n // Fit TRUE IMAGE image (width/height) to window\n var verticalScale = enabledElement.canvas.height / (height * heightScale);\n var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale\n\n widthScale = heightScale = Math.min(horizontalScale, verticalScale);\n\n if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) {\n widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing;\n } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) {\n heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing;\n }\n }\n }\n\n transform.scale(widthScale, heightScale); // Unrotate to so we can translate unrotated\n\n if (angle !== 0) {\n transform.rotate(-angle * Math.PI / 180);\n } // Apply the pan offset\n\n\n transform.translate(enabledElement.viewport.translation.x, enabledElement.viewport.translation.y); // Rotate again so we can apply general scale\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n }\n\n if (scale !== undefined) {\n // Apply the font scale\n transform.scale(scale, scale);\n } // Apply Flip if required\n\n\n if (enabledElement.viewport.hflip) {\n transform.scale(-1, 1);\n }\n\n if (enabledElement.viewport.vflip) {\n transform.scale(1, -1);\n } // Move back from center of image\n\n\n transform.translate(-width / 2, -height / 2);\n return transform;\n});\n\n/***/ }),\n\n/***/ \"./internal/computeAutoVoi.js\":\n/*!************************************!*\\\n !*** ./internal/computeAutoVoi.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return computeAutoVoi; });\n/**\n * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.\n *\n * @param {Viewport} viewport - Object containing the viewport properties\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @returns {void}\n * @memberof Internal\n */\nfunction computeAutoVoi(viewport, image) {\n if (hasVoi(viewport)) {\n return;\n }\n\n var maxVoi = image.maxPixelValue * image.slope + image.intercept;\n var minVoi = image.minPixelValue * image.slope + image.intercept;\n var ww = maxVoi - minVoi;\n var wc = (maxVoi + minVoi) / 2;\n\n if (viewport.voi === undefined) {\n viewport.voi = {\n windowWidth: ww,\n windowCenter: wc\n };\n } else {\n viewport.voi.windowWidth = ww;\n viewport.voi.windowCenter = wc;\n }\n}\n/**\n * Check if viewport has voi LUT data\n * @param {any} viewport The viewport to check for voi LUT data\n * @returns {Boolean} true viewport has LUT data (Window Width/Window Center or voiLUT). Otherwise, false.\n * @memberof Internal\n */\n\nfunction hasVoi(viewport) {\n var hasLut = viewport.voiLUT && viewport.voiLUT.lut && viewport.voiLUT.lut.length > 0;\n return hasLut || viewport.voi.windowWidth !== undefined && viewport.voi.windowCenter !== undefined;\n}\n\n/***/ }),\n\n/***/ \"./internal/drawCompositeImage.js\":\n/*!****************************************!*\\\n !*** ./internal/drawCompositeImage.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layers.js */ \"./layers.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n\n\n\n\n\n\n\nfunction getViewportRatio(baseLayer, targetLayer) {\n if (!baseLayer.syncProps) {\n updateLayerSyncProps(baseLayer);\n }\n\n if (!targetLayer.syncProps) {\n updateLayerSyncProps(targetLayer);\n }\n\n return targetLayer.syncProps.originalScale / baseLayer.syncProps.originalScale;\n}\n\nfunction updateLayerSyncProps(layer) {\n var syncProps = layer.syncProps || {}; // This is used to keep each of the layers' viewports in sync with the active layer\n\n syncProps.originalScale = layer.viewport.scale;\n layer.syncProps = syncProps;\n} // Sync all viewports based on active layer's viewport\n\n\nfunction syncViewports(layers, activeLayer) {\n // If we intend to keep the viewport's scale, translation and rotation in sync,\n // loop through the layers\n layers.forEach(function (layer) {\n // Don't do anything to the active layer\n // Don't do anything if this layer has no viewport\n if (layer === activeLayer || !layer.viewport || !activeLayer.viewport) {\n return;\n }\n\n if (!layer.syncProps) {\n updateLayerSyncProps(layer);\n }\n\n var viewportRatio = getViewportRatio(activeLayer, layer); // Update the layer's translation and scale to keep them in sync with the first image\n // based on the ratios between the images\n\n layer.viewport.scale = activeLayer.viewport.scale * viewportRatio;\n layer.viewport.rotation = activeLayer.viewport.rotation;\n layer.viewport.translation = {\n x: activeLayer.viewport.translation.x / viewportRatio,\n y: activeLayer.viewport.translation.y / viewportRatio\n };\n layer.viewport.hflip = activeLayer.viewport.hflip;\n layer.viewport.vflip = activeLayer.viewport.vflip;\n });\n}\n/**\n * Internal function to render all layers for a Cornerstone enabled element\n *\n * @param {CanvasRenderingContext2D} context Canvas context to draw upon\n * @param {EnabledElementLayer[]} layers The array of all layers for this enabled element\n * @param {Boolean} invalidated A boolean whether or not this image has been invalidated and must be redrawn\n * @returns {void}\n * @memberof Internal\n */\n\n\nfunction renderLayers(context, layers, invalidated) {\n // Loop through each layer and draw it to the canvas\n layers.forEach(function (layer, index) {\n if (!layer.image) {\n return;\n }\n\n context.save(); // Set the layer's canvas to the pixel coordinate system\n\n layer.canvas = context.canvas;\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(layer, context); // Render into the layer's canvas\n\n var colormap = layer.viewport.colormap || layer.options.colormap;\n var labelmap = layer.viewport.labelmap;\n var isInvalid = layer.invalid || invalidated;\n\n if (colormap && colormap !== '' && labelmap === true) {\n Object(_rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"addLabelMapLayer\"])(layer, isInvalid);\n } else if (colormap && colormap !== '') {\n Object(_rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"addPseudoColorLayer\"])(layer, isInvalid);\n } else if (layer.image.color === true) {\n Object(_rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"addColorLayer\"])(layer, isInvalid);\n } else {\n // If this is the base layer, use the alpha channel for rendering of the grayscale image\n var useAlphaChannel = index === 0;\n Object(_rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"addGrayscaleLayer\"])(layer, isInvalid, useAlphaChannel);\n } // Apply any global opacity settings that have been defined for this layer\n\n\n if (layer.options && layer.options.opacity) {\n context.globalAlpha = layer.options.opacity;\n } else {\n context.globalAlpha = 1;\n }\n\n if (layer.options && layer.options.fillStyle) {\n context.fillStyle = layer.options.fillStyle;\n } // Set the pixelReplication property before drawing from the layer into the\n // composite canvas\n\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas\n\n var sx = layer.viewport.displayedArea.tlhc.x - 1;\n var sy = layer.viewport.displayedArea.tlhc.y - 1;\n var width = layer.viewport.displayedArea.brhc.x - sx;\n var height = layer.viewport.displayedArea.brhc.y - sy;\n context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height);\n context.restore();\n layer.invalid = false;\n });\n}\n/**\n * Internal API function to draw a composite image to a given enabled element\n *\n * @param {EnabledElement} enabledElement An enabled element to draw into\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var element = enabledElement.element;\n var allLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getLayers\"])(element);\n var activeLayer = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getActiveLayer\"])(element);\n var visibleLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getVisibleLayers\"])(element);\n var resynced = !enabledElement.lastSyncViewportsState && enabledElement.syncViewports; // This state will help us to determine if the user has re-synced the\n // layers allowing us to make a new copy of the viewports\n\n enabledElement.lastSyncViewportsState = enabledElement.syncViewports; // Stores a copy of all viewports if the user has just synced them then we can use the\n // copies to calculate anything later (ratio, translation offset, rotation offset, etc)\n\n if (resynced) {\n allLayers.forEach(function (layer) {\n if (layer.viewport) {\n updateLayerSyncProps(layer);\n }\n });\n } // Sync all viewports in case it's activated\n\n\n if (enabledElement.syncViewports === true) {\n syncViewports(visibleLayers, activeLayer);\n } // Get the enabled element's canvas so we can draw to it\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Render all visible layers\n\n renderLayers(context, visibleLayers, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImage.js\":\n/*!*******************************!*\\\n !*** ./internal/drawImage.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Internal API function to draw an image to a given enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} [invalidated = false] - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof Internal\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n enabledElement.needsRedraw = true;\n\n if (invalidated) {\n enabledElement.invalid = true;\n }\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImageSync.js\":\n/*!***********************************!*\\\n !*** ./internal/drawImageSync.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n/* harmony import */ var _drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawCompositeImage.js */ \"./internal/drawCompositeImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n\n\n\n\n\n\n\n\n/**\r\n * Draw an image to a given enabled element synchronously\r\n *\r\n * @param {EnabledElement} enabledElement An enabled element to draw into\r\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\r\n * @returns {void}\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var image = enabledElement.image;\n var element = enabledElement.element;\n var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn\n\n if (!enabledElement.canvas || !(enabledElement.image || layers.length)) {\n return;\n } // Start measuring the time needed to draw the image/layers\n\n\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n image.stats = {\n lastGetPixelDataTime: -1.0,\n lastStoredPixelDataToCanvasImageDataTime: -1.0,\n lastPutImageDataTime: -1.0,\n lastRenderTime: -1.0,\n lastLutGenerateTime: -1.0\n };\n\n if (layers && layers.length) {\n Object(_drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n } else if (image) {\n var render = image.render;\n\n if (!render) {\n if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '' && enabledElement.image.labelmap === true) {\n render = _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__[\"renderLabelMapImage\"];\n } else if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '') {\n render = _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderPseudoColorImage\"];\n } else if (image.color) {\n render = _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderColorImage\"];\n } else {\n render = _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderGrayscaleImage\"];\n }\n }\n\n render(enabledElement, invalidated);\n } // Calculate how long it took to draw the image/layers\n\n\n var renderTimeInMs = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var eventData = {\n viewport: enabledElement.viewport,\n element: element,\n image: image,\n enabledElement: enabledElement,\n canvasContext: enabledElement.canvas.getContext('2d'),\n renderTimeInMs: renderTimeInMs\n };\n image.stats.lastRenderTime = renderTimeInMs;\n enabledElement.invalid = false;\n enabledElement.needsRedraw = false;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].IMAGE_RENDERED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./internal/generateColorLut.js\":\n/*!**************************************!*\\\n !*** ./internal/generateColorLut.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n/**\n * Creates a LUT used while rendering to convert stored pixel values to\n * display pixels\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Number} windowWidth The Window Width\n * @param {Number} windowCenter The Window Center\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\n *\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(storedValue);\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(_storedValue);\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/generateLut.js\":\n/*!*********************************!*\\\n !*** ./internal/generateLut.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n\n/**\r\n * Creates a LUT used while rendering to convert stored pixel values to\r\n * display pixels\r\n *\r\n * @param {Image} image A Cornerstone Image Object\r\n * @param {Number} windowWidth The Window Width\r\n * @param {Number} windowCenter The Window Center\r\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\r\n * @param {Array} [modalityLUT] A modality Lookup Table\r\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\r\n *\r\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, modalityLUT, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image.slope, image.intercept, modalityLUT);\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(mlutfn(_storedValue));\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/getCanvas.js\":\n/*!*******************************!*\\\n !*** ./internal/getCanvas.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getCanvas; });\nvar CANVAS_CSS_CLASS = 'cornerstone-canvas';\n/**\n * Create a canvas and append it to the element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\nfunction createCanvas(element) {\n var canvas = document.createElement('canvas');\n canvas.style.display = 'block';\n canvas.classList.add(CANVAS_CSS_CLASS);\n element.appendChild(canvas);\n return canvas;\n}\n/**\n * Create a canvas or returns the one that already exists for a given element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\n\nfunction getCanvas(element) {\n var selector = \"canvas.\".concat(CANVAS_CSS_CLASS);\n return element.querySelector(selector) || createCanvas(element);\n}\n\n/***/ }),\n\n/***/ \"./internal/getDefaultViewport.js\":\n/*!****************************************!*\\\n !*** ./internal/getDefaultViewport.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n/**\n * Creates a new viewport object containing default values\n *\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\nfunction createViewport() {\n var displayedArea = createDefaultDisplayedArea();\n return {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: undefined,\n windowCenter: undefined\n },\n invert: false,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: undefined,\n voiLUT: undefined,\n colormap: undefined,\n labelmap: false,\n displayedArea: displayedArea\n };\n}\n/**\n * Creates the default displayed area.\n * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space.\n *\n * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object\n * @memberof Internal\n */\n\n\nfunction createDefaultDisplayedArea() {\n return {\n // Top Left Hand Corner\n tlhc: {\n x: 1,\n y: 1\n },\n // Bottom Right Hand Corner\n brhc: {\n x: 1,\n y: 1\n },\n rowPixelSpacing: 1,\n columnPixelSpacing: 1,\n presentationSizeMode: 'NONE'\n };\n}\n/**\n * Creates a new viewport object containing default values for the image and canvas\n *\n * @param {HTMLElement} canvas A Canvas DOM element\n * @param {Image} image A Cornerstone Image Object\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n if (canvas === undefined) {\n throw new Error('getDefaultViewport: parameter canvas must not be undefined');\n }\n\n if (image === undefined) {\n return createViewport();\n } // Fit image to window\n\n\n var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(canvas, image, 0).scaleFactor;\n return {\n scale: scale,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter\n },\n invert: image.invert,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: image.modalityLUT,\n voiLUT: image.voiLUT,\n colormap: image.colormap,\n labelmap: Boolean(image.labelmap),\n displayedArea: {\n tlhc: {\n x: 1,\n y: 1\n },\n brhc: {\n x: image.columns,\n y: image.rows\n },\n rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing,\n columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing,\n presentationSizeMode: 'NONE'\n }\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageFitScale.js\":\n/*!**************************************!*\\\n !*** ./internal/getImageFitScale.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n/* harmony import */ var _getImageSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageSize.js */ \"./internal/getImageSize.js\");\n\n\n/**\n * Calculates the horizontal, vertical and minimum scale factor for an image\n @param {{width, height}} windowSize The window size where the image is displayed. This can be any HTML element or structure with a width, height fields (e.g. canvas).\n * @param {any} image The cornerstone image object\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{horizontalScale, verticalScale, scaleFactor}} The calculated horizontal, vertical and minimum scale factor\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowSize, image) {\n var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(windowSize, 'getImageScale: parameter windowSize must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageScale: parameter image must not be undefined');\n var imageSize = Object(_getImageSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, rotation);\n var rowPixelSpacing = image.rowPixelSpacing || 1;\n var columnPixelSpacing = image.columnPixelSpacing || 1;\n var verticalRatio = 1;\n var horizontalRatio = 1;\n\n if (rowPixelSpacing < columnPixelSpacing) {\n horizontalRatio = columnPixelSpacing / rowPixelSpacing;\n } else {\n // even if they are equal we want to calculate this ratio (the ration might be 0.5)\n verticalRatio = rowPixelSpacing / columnPixelSpacing;\n }\n\n var verticalScale = windowSize.height / imageSize.height / verticalRatio;\n var horizontalScale = windowSize.width / imageSize.width / horizontalRatio; // Fit image to window\n\n return {\n verticalScale: verticalScale,\n horizontalScale: horizontalScale,\n scaleFactor: Math.min(horizontalScale, verticalScale)\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageSize.js\":\n/*!**********************************!*\\\n !*** ./internal/getImageSize.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n\n/**\n * Check if the angle is rotated\n * @param {Number} rotation the rotation angle\n * @returns {Boolean} true if the angle is rotated; Otherwise, false.\n * @memberof Internal\n */\n\nfunction isRotated(rotation) {\n return !(rotation === null || rotation === undefined || rotation === 0 || rotation === 180);\n}\n/**\n * Retrieves the current image dimensions given an enabled element\n *\n * @param {any} image The Cornerstone image.\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{width:Number, height:Number}} The Image dimensions\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image) {\n var rotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageSize: parameter image must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.width, 'getImageSize: parameter image must have width');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.height, 'getImageSize: parameter image must have height');\n\n if (isRotated(rotation)) {\n return {\n height: image.width,\n width: image.height\n };\n }\n\n return {\n width: image.width,\n height: image.height\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getModalityLUT.js\":\n/*!************************************!*\\\n !*** ./internal/getModalityLUT.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generates a linear modality transformation function\n *\n * See DICOM PS3.3 C.11.1 Modality LUT Module\n *\n * http://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.11.html\n *\n * @param {Number} slope m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} intercept The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n\n Output units = m*SV + b.\n * @return {function(*): *} A linear modality LUT function. Given a stored pixel it returns the modality pixel value\n * @memberof Internal\n */\nfunction generateLinearModalityLUT(slope, intercept) {\n return function (storedPixelValue) {\n return storedPixelValue * slope + intercept;\n };\n}\n\nfunction generateNonLinearModalityLUT(modalityLUT) {\n var minValue = modalityLUT.lut[0];\n var maxValue = modalityLUT.lut[modalityLUT.lut.length - 1];\n var maxValueMapped = modalityLUT.firstValueMapped + modalityLUT.lut.length;\n return function (storedPixelValue) {\n if (storedPixelValue < modalityLUT.firstValueMapped) {\n return minValue;\n } else if (storedPixelValue >= maxValueMapped) {\n return maxValue;\n }\n\n return modalityLUT.lut[storedPixelValue];\n };\n}\n/**\n * Get the appropriate Modality LUT for the current situation.\n *\n * @param {Number} [slope] m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} [intercept] The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n * @param {Function} [modalityLUT] A modality LUT function. Given a stored pixel it returns the modality pixel value.\n *\n * @return {function(*): *} A modality LUT function. Given a stored pixel it returns the modality pixel value.\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (slope, intercept, modalityLUT) {\n if (modalityLUT) {\n return generateNonLinearModalityLUT(modalityLUT);\n }\n\n return generateLinearModalityLUT(slope, intercept);\n});\n\n/***/ }),\n\n/***/ \"./internal/getTransform.js\":\n/*!**********************************!*\\\n !*** ./internal/getTransform.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n // For now we will calculate it every time it is requested.\n // In the future, we may want to cache it in the enabled element to speed things up.\n return Object(_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./internal/getVOILut.js\":\n/*!*******************************!*\\\n !*** ./internal/getVOILut.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint no-bitwise: 0 */\n\n/**\n * Volume of Interest Lookup Table Function\n *\n * @typedef {Function} VOILUTFunction\n *\n * @param {Number} modalityLutValue\n * @returns {Number} transformed value\n * @memberof Objects\n */\n\n/**\n * @module: VOILUT\n */\n\n/**\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\nfunction generateLinearVOILUT(windowWidth, windowCenter) {\n return function (modalityLutValue) {\n return ((modalityLutValue - windowCenter) / windowWidth + 0.5) * 255.0;\n };\n}\n/**\n * Generate a non-linear volume of interest lookup table\n *\n * @param {LUT} voiLUT Volume of Interest Lookup Table Object\n *\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\nfunction generateNonLinearVOILUT(voiLUT) {\n // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa!\n var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length;\n var shift = bitsPerEntry - 8;\n var minValue = voiLUT.lut[0] >> shift;\n var maxValue = voiLUT.lut[voiLUT.lut.length - 1] >> shift;\n var maxValueMapped = voiLUT.firstValueMapped + voiLUT.lut.length - 1;\n return function (modalityLutValue) {\n if (modalityLutValue < voiLUT.firstValueMapped) {\n return minValue;\n } else if (modalityLutValue >= maxValueMapped) {\n return maxValue;\n }\n\n return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift;\n };\n}\n/**\n * Retrieve a VOI LUT mapping function given the current windowing settings\n * and the VOI LUT for the image\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object\n *\n * @return {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowWidth, windowCenter, voiLUT) {\n if (voiLUT) {\n return generateNonLinearVOILUT(voiLUT);\n }\n\n return generateLinearVOILUT(windowWidth, windowCenter);\n});\n\n/***/ }),\n\n/***/ \"./internal/guid.js\":\n/*!**************************!*\\\n !*** ./internal/guid.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n/**\n * Generate a unique identifier\n *\n * @return {string} A unique identifier\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return \"\".concat(s4() + s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4()).concat(s4()).concat(s4());\n});\n\n/***/ }),\n\n/***/ \"./internal/index.js\":\n/*!***************************!*\\\n !*** ./internal/index.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ \"./internal/drawImage.js\");\n/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ \"./internal/generateLut.js\");\n/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ \"./internal/getTransform.js\");\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__[\"Transform\"]\n});\n\n/***/ }),\n\n/***/ \"./internal/now.js\":\n/*!*************************!*\\\n !*** ./internal/now.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @module Polyfills\n */\n\n/**\n * Use the performance.now() method if possible, and if not, use Date.now()\n *\n * @return {number} Time elapsed since the time origin\n * @memberof Polyfills\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n if (window.performance) {\n return performance.now();\n }\n\n return Date.now();\n});\n\n/***/ }),\n\n/***/ \"./internal/requestAnimationFrame.js\":\n/*!*******************************************!*\\\n !*** ./internal/requestAnimationFrame.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction requestFrame(callback) {\n window.setTimeout(callback, 1000 / 60);\n}\n/**\n * Polyfills requestAnimationFrame for older browsers.\n *\n * @param {Function} callback A parameter specifying a function to call when it's time to update your animation for the next repaint. The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame starts to fire callbacks.\n *\n * @return {Number} A long integer value, the request id, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.\n * @memberof Polyfills\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (callback) {\n return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback);\n});\n\n/***/ }),\n\n/***/ \"./internal/storedColorPixelDataToCanvasImageData.js\":\n/*!***********************************************************!*\\\n !*** ./internal/storedColorPixelDataToCanvasImageData.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored color pixel values to display pixel values using a LUT.\n *\n * Note: Skips alpha value for any input image pixel data.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex] + -minPixelValue]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex]]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageData.js\":\n/*!******************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageData.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT. This is the most performance sensitive code in cornerstone and\n * we use a special trick to make this go as fast as possible. Specifically we\n * use the alpha channel only to control the luminance rather than the red, green and\n * blue channels which makes it over 3x faster. The canvasImageDataData buffer needs\n * to be previously filled with white pixels.\n *\n * NOTE: Attribution would be appreciated if you use this technique!\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 3;\n var storedPixelDataIndex = 0; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\":\n/*!**************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataColorLUT.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataColorLUT(image, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataColorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\":\n/*!********************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} grayscaleLut Lookup table array\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataPseudocolorLUT(image, grayscaleLut, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var grayscale;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++]];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataPseudocolorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataRGBA.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var pixelValue; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedRGBAPixelDataToCanvasImageData.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedRGBAPixelDataToCanvasImageData.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored RGBA color pixel values to display pixel values using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/transform.js\":\n/*!*******************************!*\\\n !*** ./internal/transform.js ***!\n \\*******************************/\n/*! exports provided: Transform */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// By Simon Sarris\n// Www.simonsarris.com\n// Sarris@acm.org\n//\n// Free to use and distribute at will\n// So long as you are nice to people, etc\n// Simple class for keeping track of the current transformation matrix\n// For instance:\n// Var t = new Transform();\n// T.rotate(5);\n// Var m = t.m;\n// Ctx.setTransform(m[0], m[1], m[2], m[3], m[4], m[5]);\n// Is equivalent to:\n// Ctx.rotate(5);\n// But now you can retrieve it :)\n// Remember that this does not account for any CSS transforms applied to the canvas\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform() {\n _classCallCheck(this, Transform);\n\n this.reset();\n }\n\n _createClass(Transform, [{\n key: \"reset\",\n value: function reset() {\n this.m = [1, 0, 0, 1, 0, 0];\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var transform = new Transform();\n transform.m[0] = this.m[0];\n transform.m[1] = this.m[1];\n transform.m[2] = this.m[2];\n transform.m[3] = this.m[3];\n transform.m[4] = this.m[4];\n transform.m[5] = this.m[5];\n return transform;\n }\n }, {\n key: \"multiply\",\n value: function multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n }\n }, {\n key: \"invert\",\n value: function invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n }\n }, {\n key: \"rotate\",\n value: function rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n }\n }, {\n key: \"translate\",\n value: function translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(px, py) {\n var x = px;\n var y = py;\n px = x * this.m[0] + y * this.m[2] + this.m[4];\n py = x * this.m[1] + y * this.m[3] + this.m[5];\n return {\n x: px,\n y: py\n };\n }\n }]);\n\n return Transform;\n}();\n\n/***/ }),\n\n/***/ \"./internal/tryEnableWebgl.js\":\n/*!************************************!*\\\n !*** ./internal/tryEnableWebgl.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n\n/**\n * Checks if webGL is supported and initializes the rendering engine.\n * @param {any} options Options to check if webgl rendering is requested (e.g. enable webgl by passing {renderer: 'webgl'})\n * @returns {Boolean} true if webgl rendering has been successfully initialized. Otherwise, false.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.isWebGLAvailable()) {\n // If WebGL is available on the device, initialize the renderer\n // And return the renderCanvas from the WebGL rendering path\n _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.initRenderer();\n options.renderer = 'webgl';\n return true;\n } // If WebGL is not available on this device, we will fall back\n // To using the Canvas renderer\n\n\n console.error('WebGL not available, falling back to Canvas renderer');\n delete options.renderer;\n return false;\n});\n\n/***/ }),\n\n/***/ \"./internal/validator.js\":\n/*!*******************************!*\\\n !*** ./internal/validator.js ***!\n \\*******************************/\n/*! exports provided: validateParameterUndefined, validateParameterUndefinedOrNull */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefined\", function() { return validateParameterUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefinedOrNull\", function() { return validateParameterUndefinedOrNull; });\n/**\n * Check if the supplied parameter is undefined and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\nfunction validateParameterUndefined(checkParam, errorMsg) {\n if (checkParam === undefined) {\n throw new Error(errorMsg);\n }\n}\n/**\n * Check if the supplied parameter is undefined or null and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\n\nfunction validateParameterUndefinedOrNull(checkParam, errorMsg) {\n if (checkParam === undefined || checkParam === null) {\n throw new Error(errorMsg);\n }\n}\n\n/***/ }),\n\n/***/ \"./invalidate.js\":\n/*!***********************!*\\\n !*** ./invalidate.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Sets the invalid flag on the enabled element and fire an event\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.invalid = true;\n enabledElement.needsRedraw = true;\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].INVALIDATED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./invalidateImageId.js\":\n/*!******************************!*\\\n !*** ./invalidateImageId.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the all enabled elements\n * displaying the specified imageId\n *\n * @param {string} imageId The imageId of the Cornerstone Image Object to redraw\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (imageId) {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElementsByImageId\"])(imageId);\n enabledElements.forEach(function (enabledElement) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, true);\n });\n});\n\n/***/ }),\n\n/***/ \"./layers.js\":\n/*!*******************!*\\\n !*** ./layers.js ***!\n \\*******************/\n/*! exports provided: rescaleImage, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, setLayerImage, getActiveLayer, purgeLayers */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rescaleImage\", function() { return rescaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return addLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return removeLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return getLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return getLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return getVisibleLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return setActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return setLayerImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return getActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return purgeLayers; });\n/* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ \"./internal/guid.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\n * @module EnabledElementLayers\n */\n\n/**\n * Helper function to trigger an event on a Cornerstone element with\n * a specific layerId\n *\n * @param {String} eventName The event name (e.g. CornerstoneLayerAdded)\n * @param {EnabledElement} enabledElement The Cornerstone enabled element\n * @param {String} layerId The layer's unique identifier\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction triggerEventForLayer(eventName, enabledElement, layerId) {\n var element = enabledElement.element;\n var eventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n enabledElement: enabledElement,\n layerId: layerId\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(element, eventName, eventData);\n}\n/**\n * Rescale the target layer to the base layer based on the\n * relative size of each image and their pixel dimensions.\n *\n * This function will update the Viewport parameters of the\n * target layer to a new scale.\n *\n * @param {EnabledElementLayer} baseLayer The base layer\n * @param {EnabledElementLayer} targetLayer The target layer to rescale\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\n\nfunction rescaleImage(baseLayer, targetLayer) {\n if (baseLayer.layerId === targetLayer.layerId) {\n throw new Error('rescaleImage: both arguments represent the same layer');\n }\n\n var baseImage = baseLayer.image;\n var targetImage = targetLayer.image; // Return if these images don't have an imageId (e.g. for dynamic images)\n\n if (!baseImage.imageId || !targetImage.imageId) {\n return;\n } // Column pixel spacing need to be considered when calculating the\n // ratio between the layer added and base layer images\n\n\n var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width);\n var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative;\n targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio;\n}\n/**\n * Add a layer to a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image object to add as a new layer\n * @param {Object} options Options for the layer\n *\n * @returns {String} layerId The new layer's unique identifier\n * @memberof EnabledElementLayers\n */\n\nfunction addLayer(element, image, options) {\n var layerId = Object(_internal_guid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var viewport;\n\n if (image) {\n viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (options && options.viewport) {\n viewport = Object.assign(viewport, options.viewport);\n }\n } // Set syncViewports to true by default when a new layer is added\n\n\n if (enabledElement.syncViewports !== false) {\n enabledElement.syncViewports = true;\n }\n\n var newLayer = {\n image: image,\n layerId: layerId,\n viewport: viewport,\n options: options || {},\n renderingTools: {}\n }; // Rescale the new layer based on the base layer to make sure\n // they will have a proportional size (pixel spacing)\n\n if (layers.length && image) {\n rescaleImage(layers[0], newLayer);\n }\n\n layers.push(newLayer);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added\n\n if (layers.length === 1 && image) {\n setActiveLayer(element, layerId);\n }\n\n return layerId;\n}\n/**\n * Remove a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction removeLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index !== -1) {\n layers.splice(index, 1); // If the current layer is active, and we have other layers,\n // switch to the first layer that remains in the array\n\n if (layerId === enabledElement.activeLayerId && layers.length) {\n setActiveLayer(element, layers[0].layerId);\n }\n\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_REMOVED, enabledElement, layerId);\n }\n}\n/**\n * Retrieve a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @return {EnabledElementLayer} The layer\n * @memberof EnabledElementLayers\n */\n\nfunction getLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === layerId;\n });\n}\n/**\n * Retrieve all layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers;\n}\n/**\n * Retrieve all visible layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getVisibleLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.filter(function (layer) {\n return layer.options && layer.options.visible !== false && layer.options.opacity !== 0;\n });\n}\n/**\n * Set the active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setActiveLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // Stop here if this layer is already active\n\n if (enabledElement.activeLayerId === layerId) {\n return;\n }\n\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index === -1) {\n throw new Error('setActiveLayer: layer not found in layers array');\n }\n\n var layer = enabledElement.layers[index];\n\n if (!layer.image) {\n throw new Error('setActiveLayer: layer with undefined image cannot be set as active.');\n }\n\n enabledElement.activeLayerId = layerId;\n enabledElement.image = layer.image;\n enabledElement.viewport = layer.viewport;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ACTIVE_LAYER_CHANGED, enabledElement, layerId);\n}\n/**\n * Set a new image for a specific layerId\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image The image to be displayed in this layer\n * @param {String} [layerId] The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setLayerImage(element, image, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var baseLayer = enabledElement.layers[0];\n var layer;\n\n if (layerId) {\n layer = getLayer(element, layerId);\n } else {\n layer = getActiveLayer(element);\n }\n\n if (!layer) {\n throw new Error('setLayerImage: Layer not found');\n }\n\n layer.image = image;\n\n if (!image) {\n layer.viewport = undefined;\n return;\n }\n\n if (!layer.viewport) {\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (layer.options && layer.options.viewport) {\n layer.viewport = Object.assign(defaultViewport, layer.options.viewport);\n }\n\n if (baseLayer.layerId !== layerId) {\n rescaleImage(baseLayer, layer);\n }\n }\n}\n/**\n * Retrieve the currently active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @return {EnabledElementLayer} The currently active layer\n * @memberof EnabledElementLayers\n */\n\nfunction getActiveLayer(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === enabledElement.activeLayerId;\n });\n}\n/**\n * Purge the layers\r\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\r\n * @returns {void}\r\n */\n\nfunction purgeLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n enabledElement.layers = [];\n delete enabledElement.activeLayerId;\n delete enabledElement.lastSyncViewportsState;\n}\n\n/***/ }),\n\n/***/ \"./metaData.js\":\n/*!*********************!*\\\n !*** ./metaData.js ***!\n \\*********************/\n/*! exports provided: addProvider, removeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addProvider\", function() { return addProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeProvider\", function() { return removeProvider; });\n// This module defines a way to access various metadata about an imageId. This layer of abstraction exists\n// So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document)\nvar providers = [];\n/**\n * @module Metadata\n */\n\n/**\n * Adds a metadata provider with the specified priority\n * @param {Function} provider Metadata provider function\n * @param {Number} [priority=0] - 0 is default/normal, > 0 is high, < 0 is low\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction addProvider(provider) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var i; // Find the right spot to insert this provider based on priority\n\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n } // Insert the decode task at position i\n\n\n providers.splice(i, 0, {\n priority: priority,\n provider: provider\n });\n}\n/**\n * Removes the specified provider\n *\n * @param {Function} provider Metadata provider function\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction removeProvider(provider) {\n for (var i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\n/**\n * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest\n * until one responds\n *\n * @param {String} type The type of metadata requested from the metadata store\n * @param {String} imageId The Cornerstone Image Object's imageId\n *\n * @returns {*} The metadata retrieved from the metadata store\n * @memberof Metadata\n */\n\nfunction getMetaData(type, imageId) {\n // Invoke each provider in priority order until one returns something\n for (var i = 0; i < providers.length; i++) {\n var result = providers[i].provider(type, imageId);\n\n if (result !== undefined) {\n return result;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addProvider: addProvider,\n removeProvider: removeProvider,\n get: getMetaData\n});\n\n/***/ }),\n\n/***/ \"./pageToPixel.js\":\n/*!************************!*\\\n !*** ./pageToPixel.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the page coordinate system to the pixel coordinate\n * system\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {Number} pageX The x value in the page coordinate system\n * @param {Number} pageY The y value in the page coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pageX, pageY) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('image has not been loaded yet');\n } // Convert the pageX and pageY to the canvas client coordinates\n\n\n var rect = element.getBoundingClientRect();\n var clientX = pageX - rect.left - window.pageXOffset;\n var clientY = pageY - rect.top - window.pageYOffset;\n var pt = {\n x: clientX,\n y: clientY\n };\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./pixelDataToFalseColorData.js\":\n/*!**************************************!*\\\n !*** ./pixelDataToFalseColorData.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pixelDataToFalseColorData; });\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n\n/**\n * Converts the image pixel data into a false color data\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Object} lookupTable A lookup table Object\n *\n * @returns {void}\n * @deprecated This function is superseded by the ability to set the Viewport parameters\n * to include colormaps.\n */\n\nfunction pixelDataToFalseColorData(image, lookupTable) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n }\n\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = image.width * image.height;\n var origPixelData = image.origPixelData || image.getPixelData();\n var storedColorPixelData = new Uint8Array(numPixels * 4);\n var sp;\n var mapped;\n image.color = true;\n image.falseColor = true;\n image.origPixelData = origPixelData;\n\n if (lookupTable instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n lookupTable.build();\n\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n mapped = lookupTable.mapValue(sp);\n storedColorPixelData[canvasImageDataIndex++] = mapped[0];\n storedColorPixelData[canvasImageDataIndex++] = mapped[1];\n storedColorPixelData[canvasImageDataIndex++] = mapped[2];\n storedColorPixelData[canvasImageDataIndex++] = mapped[3];\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][3]; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][3]; // Alpha\n }\n }\n\n image.rgba = true;\n image.cachedLut = undefined;\n image.render = undefined;\n image.slope = 1;\n image.intercept = 0;\n image.minPixelValue = 0;\n image.maxPixelValue = 255;\n image.windowWidth = 255;\n image.windowCenter = 128;\n\n image.getPixelData = function () {\n return storedColorPixelData;\n };\n}\n\n/***/ }),\n\n/***/ \"./pixelToCanvas.js\":\n/*!**************************!*\\\n !*** ./pixelToCanvas.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the pixel coordinate system to the canvas coordinate system\n * system. This can be used to render using canvas context without having the weird\n * side effects that come from scaling and non square pixels\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {{x: Number, y: Number}} pt The transformed point in the pixel coordinate system\n *\n * @returns {{x: Number, y: Number}} The input point in the canvas coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./rendering/doesImageNeedToBeRendered.js\":\n/*!************************************************!*\\\n !*** ./rendering/doesImageNeedToBeRendered.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Determine whether or not an Enabled Element needs to be re-rendered.\n *\n * If the imageId has changed, or if any of the last rendered viewport\n * parameters have changed, this function will return true.\n *\n * @param {EnabledElement} enabledElement An Enabled Element\n * @param {Image} image An Image\n * @return {boolean} Whether or not the Enabled Element needs to re-render its image\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var lastRenderedImageId = enabledElement.renderingTools.lastRenderedImageId;\n var lastRenderedViewport = enabledElement.renderingTools.lastRenderedViewport;\n return image.imageId !== lastRenderedImageId || !lastRenderedViewport || lastRenderedViewport.windowCenter !== enabledElement.viewport.voi.windowCenter || lastRenderedViewport.windowWidth !== enabledElement.viewport.voi.windowWidth || lastRenderedViewport.invert !== enabledElement.viewport.invert || lastRenderedViewport.rotation !== enabledElement.viewport.rotation || lastRenderedViewport.hflip !== enabledElement.viewport.hflip || lastRenderedViewport.vflip !== enabledElement.viewport.vflip || lastRenderedViewport.modalityLUT !== enabledElement.viewport.modalityLUT || lastRenderedViewport.voiLUT !== enabledElement.viewport.voiLUT || lastRenderedViewport.colormap !== enabledElement.viewport.colormap;\n});\n\n/***/ }),\n\n/***/ \"./rendering/getLut.js\":\n/*!*****************************!*\\\n !*** ./rendering/getLut.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/computeAutoVoi.js */ \"./internal/computeAutoVoi.js\");\n/* harmony import */ var _lutMatches_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lutMatches.js */ \"./rendering/lutMatches.js\");\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateLut.js */ \"./internal/generateLut.js\");\n\n\n\n/**\n * Retrieve or generate a LUT Array for an Image and Viewport\n *\n * @param {Image} image An Image Object\n * @param {Viewport} viewport An Viewport Object\n * @param {Boolean} invalidated Whether or not the LUT data has been invalidated\n * (e.g. by a change to the windowWidth, windowCenter, or invert viewport parameters).\n * @return {Uint8ClampedArray} LUT Array\n * @memberof rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, viewport, invalidated) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.modalityLUT, viewport.modalityLUT) && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.voiLUT, viewport.voiLUT) && image.cachedLut.invert === viewport.invert && invalidated !== true) {\n return image.cachedLut.lutArray;\n }\n\n Object(_internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(viewport, image); // Lut is invalid or not present, regenerate it and cache it\n\n Object(_internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert, viewport.modalityLUT, viewport.voiLUT);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n image.cachedLut.voiLUT = viewport.voiLUT;\n image.cachedLut.modalityLUT = viewport.modalityLUT;\n return image.cachedLut.lutArray;\n});\n\n/***/ }),\n\n/***/ \"./rendering/index.js\":\n/*!****************************!*\\\n !*** ./rendering/index.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony import */ var _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n\n\n\n\n\n\n/**\n * @module rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n colorImage: _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__[\"renderColorImage\"],\n grayscaleImage: _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderGrayscaleImage\"],\n webImage: _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderWebImage\"],\n pseudoColorImage: _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderPseudoColorImage\"],\n labelMapImage: _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderLabelMapImage\"],\n toCanvas: _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./rendering/initializeRenderCanvas.js\":\n/*!*********************************************!*\\\n !*** ./rendering/initializeRenderCanvas.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Sets size and clears canvas\n *\n * @param {Object} enabledElement Cornerstone Enabled Element\n * @param {Object} image Image to be rendered\n * @returns {void}\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // Resize the canvas\n\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we\n // control the luminance using the alpha channel to improve rendering performance.\n\n canvasContext.fillStyle = 'white';\n canvasContext.fillRect(0, 0, renderCanvas.width, renderCanvas.height);\n var renderCanvasData = canvasContext.getImageData(0, 0, image.width, image.height);\n enabledElement.renderingTools.renderCanvasContext = canvasContext;\n enabledElement.renderingTools.renderCanvasData = renderCanvasData;\n});\n\n/***/ }),\n\n/***/ \"./rendering/lutMatches.js\":\n/*!*********************************!*\\\n !*** ./rendering/lutMatches.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Check if two lookup tables match\n *\n * @param {LUT} a A lookup table function\n * @param {LUT} b Another lookup table function\n * @return {boolean} Whether or not they match\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (a, b) {\n // If undefined, they are equal\n if (!a && !b) {\n return true;\n } // If one is undefined, not equal\n\n\n if (!a || !b) {\n return false;\n } // Check the unique ids\n\n\n return a.id === b.id;\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderColorImage.js\":\n/*!***************************************!*\\\n !*** ./rendering/renderColorImage.js ***!\n \\***************************************/\n/*! exports provided: renderColorImage, addColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return renderColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addColorLayer\", function() { return addColorLayer; });\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ \"./internal/generateColorLut.js\");\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ \"./internal/storedRGBAPixelDataToCanvasImageData.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Generates an appropriate Look Up Table to render the given image with the given window width and level (specified in the viewport)\n * Uses an internal cache for performance\n *\n * @param {Object} image The image to be rendered\n * @param {Object} viewport The viewport values used for rendering\n * @returns {Uint8ClampedArray} Look Up Table array.\n * @memberof rendering\n */\n\nfunction getLut(image, viewport) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && image.cachedLut.invert === viewport.invert) {\n return image.cachedLut.lutArray;\n } // Lut is invalid or not present, regenerate it and cache it\n\n\n Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n return image.cachedLut.lutArray;\n}\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || !canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // The ww/wc is identity and not inverted - get a canvas with the image rendered into it for\n // Fast drawing\n\n if (enabledElement.viewport.voi.windowWidth === 255 && enabledElement.viewport.voi.windowCenter === 128 && enabledElement.viewport.invert === false && image.getCanvas && image.getCanvas()) {\n return image.getCanvas();\n } // Apply the lut to the stored pixel data onto the render canvas\n\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var colorLut = getLut(image, enabledElement.viewport);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // The color image voi/invert has been modified - apply the lut to the underlying\n // Pixel data and put it into the renderCanvas\n\n if (image.rgba) {\n Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, colorLut, renderCanvasData.data);\n } else {\n Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, colorLut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to render a color image to an enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderColorImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderColorImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\nfunction addColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addColorLayer: image must be loaded before it can be drawn');\n } // All multi-layer images should include the alpha value\n\n\n image.rgba = true;\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderGrayscaleImage.js\":\n/*!*******************************************!*\\\n !*** ./rendering/renderGrayscaleImage.js ***!\n \\*******************************************/\n/*! exports provided: renderGrayscaleImage, addGrayscaleLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return renderGrayscaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGrayscaleLayer\", function() { return addGrayscaleLayer; });\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @param {Boolean} [useAlphaChannel = true] Will an alpha channel be used\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var useAlphaChannel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas\n\n if (useAlphaChannel) {\n Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image, lut, renderCanvasData.data);\n } else {\n Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a grayscale image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderGrayscaleImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a grayscale image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @param {Boolean} [useAlphaChannel] - Whether or not to render the grayscale image using only the alpha channel.\n This does not work if this layer is not the first layer in the enabledElement.\n * @returns {void}\n */\n\nfunction addGrayscaleLayer(layer, invalidated) {\n var useAlphaChannel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (layer === undefined) {\n throw new Error('addGrayscaleLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addGrayscaleLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderLabelMapImage.js\":\n/*!******************************************!*\\\n !*** ./rendering/renderLabelMapImage.js ***!\n \\******************************************/\n/*! exports provided: renderLabelMapImage, addLabelMapLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return renderLabelMapImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLabelMapLayer\", function() { return addLabelMapLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderLabelMapImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a label map image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderLabelMapImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderLabelMapImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for label map pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addLabelMapLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addLabelMapLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addLabelMapLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderPseudoColorImage.js\":\n/*!*********************************************!*\\\n !*** ./rendering/renderPseudoColorImage.js ***!\n \\*********************************************/\n/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return renderPseudoColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPseudoColorLayer\", function() { return addPseudoColorLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderPseudoColorImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n colormap.setNumberOfColors(256);\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(image, lut, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a pseudo-color image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderPseudoColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for pseudocolor pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addPseudoColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addPseudoColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addPseudoColorLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderToCanvas.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderToCanvas.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n\n\n\n\n\n/**\r\n * @typedef {Object} EnabledElementStub\r\n * @property {HTMLElement} element The enabled element\r\n * @property {HTMLCanvasElement} canvas The current canvas\r\n * @property {Object} image Currently displayed image\r\n * @property {Boolean} invalid Whether or not the image pixel data has been changed\r\n * @property {Boolean} needsRedraw A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\r\n * @property {Object} options Layer drawing options\r\n * @property {Object[]} layers Layers added to the EnabledElement\r\n * @property {Object} data\r\n * @property {Object} renderingTools\r\n * @property {Object} viewport The current viewport\r\n * @memberof rendering\r\n */\n\n/**\r\n * creates a dummy enabled element\r\n *\r\n * @param {HTMLCanvasElement} canvas the canvas that will be assigned to the enabled element.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param { any } options Options for rendering the image (e.g.enable webgl by {renderer: 'webgl' })\r\n * @param { any } viewport A set of Cornerstone viewport parameters\r\n * @returns {EnabledElementStub} a dummy enabled element\r\n * @memberof rendering\r\n */\n\nfunction createEnabledElementStub(canvas, image, options, viewport) {\n return {\n element: canvas,\n canvas: canvas,\n image: image,\n invalid: true,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n viewport: viewport\n };\n}\n/**\r\n * Render the image to the provided canvas immediately.\r\n * @param {any} canvas The HTML canvas where the image will be rendered.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param {any} [viewport = null] A set of Cornerstone viewport parameters\r\n * @param {any} [options = null] Options for rendering the image (e.g. enable webgl by {renderer: 'webgl'})\r\n * @returns {void}\r\n * @memberof rendering\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (canvas === undefined) {\n throw new Error('renderToCanvas: parameter canvas cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canvas, image);\n\n if (viewport) {\n Object.assign(defaultViewport, viewport);\n }\n\n var enabledElementStub = createEnabledElementStub(canvas, image, options, defaultViewport);\n var eventDetails = {\n enabledElement: enabledElementStub,\n timestamp: Date.now()\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElementStub.element, _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PRE_RENDER, eventDetails);\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElementStub, enabledElementStub.invalid);\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderWebImage.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderWebImage.js ***!\n \\*************************************/\n/*! exports provided: renderWebImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return renderWebImage; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n\n\n/**\n * API function to draw a standard web image (PNG, JPG) to an enabledImage\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\nfunction renderWebImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderWebImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderWebImage: image must be loaded before it can be drawn');\n } // If the viewport ww/wc and invert all match the initial state of the image, we can draw the image\n // Directly. If any of those are changed, we call renderColorImage() to apply the lut\n\n\n if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) {\n // Get the canvas context and reset the transform\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height);\n } else {\n Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderColorImage\"])(enabledElement, invalidated);\n }\n}\n\n/***/ }),\n\n/***/ \"./rendering/saveLastRendered.js\":\n/*!***************************************!*\\\n !*** ./rendering/saveLastRendered.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Saves the parameters of the last render into renderingTools, used later to decide if data can be reused.\n *\n * @param {Object} enabledElement Cornerstone EnabledElement\n * @returns {Object} enabledElement.renderingTools\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var imageId = enabledElement.image.imageId;\n var viewport = enabledElement.viewport;\n var isColor = enabledElement.image.color;\n enabledElement.renderingTools.lastRenderedImageId = imageId;\n enabledElement.renderingTools.lastRenderedIsColor = isColor;\n enabledElement.renderingTools.lastRenderedViewport = {\n windowCenter: viewport.voi.windowCenter,\n windowWidth: viewport.voi.windowWidth,\n invert: viewport.invert,\n rotation: viewport.rotation,\n hflip: viewport.hflip,\n vflip: viewport.vflip,\n modalityLUT: viewport.modalityLUT,\n voiLUT: viewport.voiLUT,\n colormap: viewport.colormap\n };\n return enabledElement.renderingTools;\n});\n\n/***/ }),\n\n/***/ \"./reset.js\":\n/*!******************!*\\\n !*** ./reset.js ***!\n \\******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\n/**\n * Resets the viewport to the default settings\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, enabledElement.image);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./resize.js\":\n/*!*******************!*\\\n !*** ./resize.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/getImageSize.js */ \"./internal/getImageSize.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {HTMLElement} canvas The Canvas DOM element within the DOM element enabled for Cornerstone\r\n * @returns {void}\r\n */\n\nfunction setCanvasSize(element, canvas) {\n // The device pixel ratio is 1.0 for normal displays and > 1.0\n // For high DPI displays like Retina\n\n /*\r\n This functionality is disabled due to buggy behavior on systems with mixed DPI's. If the canvas\r\n is created on a display with high DPI (e.g. 2.0) and then the browser window is dragged to\r\n a different display with a different DPI (e.g. 1.0), the canvas is not recreated so the pageToPixel\r\n produces incorrect results. I couldn't find any way to determine when the DPI changed other than\r\n by polling which is not very clean. If anyone has any ideas here, please let me know, but for now\r\n we will disable this functionality. We may want\r\n to add a mechanism to optionally enable this functionality if we can determine it is safe to do\r\n so (e.g. iPad or iPhone or perhaps enumerate the displays on the system. I am choosing\r\n to be cautious here since I would rather not have bug reports or safety issues related to this\r\n scenario.\r\n var devicePixelRatio = window.devicePixelRatio;\r\n if(devicePixelRatio === undefined) {\r\n devicePixelRatio = 1.0;\r\n }\r\n */\n // Avoid setting the same value because it flashes the canvas with IE and Edge\n if (canvas.width !== element.clientWidth) {\n canvas.width = element.clientWidth;\n canvas.style.width = \"\".concat(element.clientWidth, \"px\");\n } // Avoid setting the same value because it flashes the canvas with IE and Edge\n\n\n if (canvas.height !== element.clientHeight) {\n canvas.height = element.clientHeight;\n canvas.style.height = \"\".concat(element.clientHeight, \"px\");\n }\n}\n/**\r\n * Checks if the image of a given enabled element fitted the window\r\n * before the resize\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {Boolean} true if it fitted the windows, false otherwise\r\n */\n\n\nfunction wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var imageSize = Object(_internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement.image, enabledElement.viewport.rotation);\n var imageWidth = Math.round(imageSize.width * scale);\n var imageHeight = Math.round(imageSize.height * scale);\n var x = enabledElement.viewport.translation.x;\n var y = enabledElement.viewport.translation.y;\n return imageWidth === oldCanvasWidth && imageHeight <= oldCanvasHeight || imageWidth <= oldCanvasWidth && imageHeight === oldCanvasHeight && x === 0 && y === 0;\n}\n/**\r\n * Rescale the image relative to the changed size of the canvas\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {void}\r\n */\n\n\nfunction relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var canvasWidth = enabledElement.canvas.width;\n var canvasHeight = enabledElement.canvas.height;\n var relWidthChange = canvasWidth / oldCanvasWidth;\n var relHeightChange = canvasHeight / oldCanvasHeight;\n var relChange = Math.sqrt(relWidthChange * relHeightChange);\n enabledElement.viewport.scale = relChange * scale;\n}\n/**\r\n * Resizes an enabled element and optionally fits the image to window\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {Boolean} forceFitToWindow true to to force a refit, false to rescale accordingly\r\n * @returns {void}\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, forceFitToWindow) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldCanvasWidth = enabledElement.canvas.width;\n var oldCanvasHeight = enabledElement.canvas.height;\n setCanvasSize(element, enabledElement.canvas);\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ELEMENT_RESIZED, eventData);\n\n if (enabledElement.image === undefined) {\n return;\n }\n\n if (forceFitToWindow || wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight)) {\n // Fit the image to the window again if it fitted before the resize\n Object(_fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n } else {\n // Adapt the scale of a zoomed or panned image relative to the size change\n relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./setToPixelCoordinateSystem.js\":\n/*!***************************************!*\\\n !*** ./setToPixelCoordinateSystem.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/**\n * Sets the canvas context transformation matrix to the pixel coordinate system. This allows\n * geometry to be driven using the canvas context using coordinates in the pixel coordinate system\n * @param {EnabledElement} enabledElement The\n * @param {CanvasRenderingContext2D} context The CanvasRenderingContext2D for the enabledElement's Canvas\n * @param {Number} [scale] Optional scale to apply\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, context, scale) {\n if (enabledElement === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter enabledElement must not be undefined');\n }\n\n if (context === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter context must not be undefined');\n }\n\n var transform = Object(_internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, scale);\n context.setTransform(transform.m[0], transform.m[1], transform.m[2], transform.m[3], transform.m[4], transform.m[5]);\n});\n\n/***/ }),\n\n/***/ \"./setViewport.js\":\n/*!************************!*\\\n !*** ./setViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\nvar MIN_WINDOW_WIDTH = 0.000001;\nvar MIN_VIEWPORT_SCALE = 0.0001;\n/**\n * Sets/updates viewport of a given enabled element\n *\n * @param {HTMLElement} element - DOM element of the enabled element\n * @param {Viewport} [viewport] - Object containing the viewport properties\n * @returns {void}\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, viewport) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // If viewport is not already set, start with default and merge new\n // viewport options later\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement.canvas);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n } // Prevent window width from being too small (note that values close to zero are valid and can occur with\n // PET images in particular)\n\n\n if (enabledElement.viewport.voi.windowWidth) {\n enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH);\n } // Prevent scale from getting too small\n\n\n if (enabledElement.viewport.scale) {\n enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE);\n } // Normalize the rotation value to a positive rotation in degrees\n\n\n enabledElement.viewport.rotation %= 360;\n\n if (enabledElement.viewport.rotation < 0) {\n enabledElement.viewport.rotation += 360;\n }\n\n if (enabledElement.image) {\n // Force the image to be updated since the viewport has been modified\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./triggerEvent.js\":\n/*!*************************!*\\\n !*** ./triggerEvent.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return triggerEvent; });\n/**\n * Trigger a CustomEvent\n *\n * @param {EventTarget} el The element or EventTarget to trigger the event upon\n * @param {String} type The event type name\n * @param {Object|null} detail=null The event data to be sent\n * @returns {Boolean} The return value is false if at least one event listener called preventDefault(). Otherwise it returns true.\n */\nfunction triggerEvent(el, type) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var event; // This check is needed to polyfill CustomEvent on IE11-\n\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(type, {\n detail: detail,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, detail);\n }\n\n return el.dispatchEvent(event);\n}\n\n/***/ }),\n\n/***/ \"./updateImage.js\":\n/*!************************!*\\\n !*** ./updateImage.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the specified enabled element\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Boolean} [invalidated=false] Whether or not the image pixel data has been changed, necessitating a redraw\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined && !enabledElement.layers.length) {\n throw new Error('updateImage: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./webgl/createProgramFromString.js\":\n/*!******************************************!*\\\n !*** ./webgl/createProgramFromString.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Creates and compiles a shader.\n *\n * @param {!WebGLRenderingContext} gl The WebGL Context.\n * @param {string} shaderSource The GLSL source code for the shader.\n * @param {number} shaderType The type of shader, VERTEX_SHADER or FRAGMENT_SHADER.\n *\n * @return {!WebGLShader} The shader.\n * @memberof WebGLRendering\n */\nfunction compileShader(gl, shaderSource, shaderType) {\n // Create the shader object\n var shader = gl.createShader(shaderType); // Set the shader source code.\n\n gl.shaderSource(shader, shaderSource); // Compile the shader\n\n gl.compileShader(shader); // Check if it compiled\n\n var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong during compilation; get the error\n var infoLog = gl.getShaderInfoLog(shader);\n console.error(\"Could not compile shader:\\n\".concat(infoLog));\n }\n\n return shader;\n}\n/**\n * Creates a program from 2 shaders.\n *\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShader A vertex shader.\n * @param {!WebGLShader} fragmentShader A fragment shader.\n * @return {!WebGLProgram} A program.\n * @memberof WebGLRendering\n */\n\n\nfunction createProgram(gl, vertexShader, fragmentShader) {\n // Create a program.\n var program = gl.createProgram(); // Attach the shaders.\n\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader); // Link the program.\n\n gl.linkProgram(program); // Check if it linked.\n\n var success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong with the link\n var infoLog = gl.getProgramInfoLog(program);\n console.error(\"WebGL program filed to link:\\n\".concat(infoLog));\n }\n\n return program;\n}\n/**\n * Creates a program from 2 shaders source (Strings)\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShaderSrc Vertex shader string\n * @param {!WebGLShader} fragShaderSrc Fragment shader string\n * @return {!WebGLProgram} A program\n * @memberof WebGLRendering\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (gl, vertexShaderSrc, fragShaderSrc) {\n var vertexShader = compileShader(gl, vertexShaderSrc, gl.VERTEX_SHADER);\n var fragShader = compileShader(gl, fragShaderSrc, gl.FRAGMENT_SHADER);\n return createProgram(gl, vertexShader, fragShader);\n});\n\n/***/ }),\n\n/***/ \"./webgl/index.js\":\n/*!************************!*\\\n !*** ./webgl/index.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"./webgl/renderer.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n\n\n\n/**\n * @module WebGLRendering\n */\n\nvar mod = {\n createProgramFromString: _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n renderer: {\n render: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n initRenderer: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"initRenderer\"],\n getRenderCanvas: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"getRenderCanvas\"],\n isWebGLAvailable: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLAvailable\"]\n },\n textureCache: _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nObject.defineProperty(mod, 'isWebGLInitialized', {\n enumerable: true,\n configurable: false,\n get: function get() {\n return _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLInitialized\"];\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n\n/***/ }),\n\n/***/ \"./webgl/renderer.js\":\n/*!***************************!*\\\n !*** ./webgl/renderer.js ***!\n \\***************************/\n/*! exports provided: isWebGLInitialized, getRenderCanvas, initRenderer, render, isWebGLAvailable */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLInitialized\", function() { return isWebGLInitialized; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderCanvas\", function() { return getRenderCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRenderer\", function() { return initRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLAvailable\", function() { return isWebGLAvailable; });\n/* harmony import */ var _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shaders/index.js */ \"./webgl/shaders/index.js\");\n/* harmony import */ var _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertexShader.js */ \"./webgl/vertexShader.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* eslint no-bitwise: 0 */\n\n\n\n\nvar renderCanvas = document.createElement('canvas');\nvar gl;\nvar texCoordBuffer;\nvar positionBuffer;\nvar isWebGLInitialized = false;\n\nfunction getRenderCanvas() {\n return renderCanvas;\n}\n\nfunction initShaders() {\n for (var id in _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"]) {\n // Console.log(\"WEBGL: Loading shader\", id);\n var shader = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][id];\n shader.attributes = {};\n shader.uniforms = {};\n shader.vert = _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__[\"vertexShader\"];\n shader.program = Object(_createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(gl, shader.vert, shader.frag);\n shader.attributes.texCoordLocation = gl.getAttribLocation(shader.program, 'a_texCoord');\n gl.enableVertexAttribArray(shader.attributes.texCoordLocation);\n shader.attributes.positionLocation = gl.getAttribLocation(shader.program, 'a_position');\n gl.enableVertexAttribArray(shader.attributes.positionLocation);\n shader.uniforms.resolutionLocation = gl.getUniformLocation(shader.program, 'u_resolution');\n }\n}\n\nfunction initRenderer() {\n if (isWebGLInitialized === true) {\n // Console.log(\"WEBGL Renderer already initialized\");\n return;\n }\n\n if (initWebGL(renderCanvas)) {\n initBuffers();\n initShaders(); // Console.log(\"WEBGL Renderer initialized!\");\n\n isWebGLInitialized = true;\n }\n}\n\nfunction updateRectangle(gl, width, height) {\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([width, height, 0, height, width, 0, 0, 0]), gl.STATIC_DRAW);\n}\n\nfunction handleLostContext(event) {\n event.preventDefault();\n console.warn('WebGL Context Lost!');\n}\n\nfunction handleRestoredContext(event) {\n event.preventDefault();\n isWebGLInitialized = false;\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].purgeCache();\n initRenderer(); // Console.log('WebGL Context Restored.');\n}\n\nfunction initWebGL(canvas) {\n gl = null;\n\n try {\n // Try to grab the standard context. If it fails, fallback to experimental.\n var options = {\n preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element\n\n }; // ---------------- Testing purposes -------------\n // If (debug === true && WebGLDebugUtils) {\n // RenderCanvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderCanvas);\n // }\n // ---------------- Testing purposes -------------\n\n gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); // Set up event listeners for context lost / context restored\n\n canvas.removeEventListener('webglcontextlost', handleLostContext, false);\n canvas.addEventListener('webglcontextlost', handleLostContext, false);\n canvas.removeEventListener('webglcontextrestored', handleRestoredContext, false);\n canvas.addEventListener('webglcontextrestored', handleRestoredContext, false);\n } catch (error) {\n throw new Error('Error creating WebGL context');\n } // If we don't have a GL context, give up now\n\n\n if (!gl) {\n console.error('Unable to initialize WebGL. Your browser may not support it.');\n gl = null;\n }\n\n return gl;\n}\n/**\n * Returns the image data type as a string representation.\n * @param {any} image The cornerstone image object\n * @returns {string} image data type (rgb, iint16, uint16, int8 and uint8)\n * @memberof WebGLRendering\n */\n\n\nfunction getImageDataType(image) {\n if (image.color) {\n return 'rgb';\n }\n\n var pixelData = image.getPixelData();\n\n if (pixelData instanceof Int16Array) {\n return 'int16';\n }\n\n if (pixelData instanceof Uint16Array) {\n return 'uint16';\n }\n\n if (pixelData instanceof Int8Array) {\n return 'int8';\n }\n\n return 'uint8';\n}\n\nfunction getShaderProgram(image) {\n var datatype = getImageDataType(image); // We need a mechanism for\n // Choosing the shader based on the image datatype\n // Console.log(\"Datatype: \" + datatype);\n\n if (_shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].hasOwnProperty(datatype)) {\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][datatype];\n }\n\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].rgb;\n}\n\nfunction generateTexture(image) {\n var TEXTURE_FORMAT = {\n uint8: gl.LUMINANCE,\n int8: gl.LUMINANCE_ALPHA,\n uint16: gl.LUMINANCE_ALPHA,\n int16: gl.RGB,\n rgb: gl.RGB\n };\n var TEXTURE_BYTES = {\n int8: 1,\n // Luminance\n uint16: 2,\n // Luminance + Alpha\n int16: 3,\n // RGB\n rgb: 3 // RGB\n\n };\n var imageDataType = getImageDataType(image);\n var format = TEXTURE_FORMAT[imageDataType]; // GL texture configuration\n\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var imageData = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"dataUtilities\"][imageDataType].storedPixelDataToImageData(image, image.width, image.height);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, image.width, image.height, 0, format, gl.UNSIGNED_BYTE, imageData); // Calculate the size in bytes of this image in memory\n\n var sizeInBytes = image.width * image.height * TEXTURE_BYTES[imageDataType];\n return {\n texture: texture,\n sizeInBytes: sizeInBytes\n };\n}\n\nfunction getImageTexture(image) {\n var imageTexture = _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageTexture(image.imageId);\n\n if (!imageTexture) {\n // Console.log(\"Generating texture for imageid: \", image.imageId);\n imageTexture = generateTexture(image);\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].putImageTexture(image, imageTexture);\n }\n\n return imageTexture.texture;\n}\n\nfunction initBuffers() {\n positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]), gl.STATIC_DRAW);\n texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0]), gl.STATIC_DRAW);\n}\n\nfunction renderQuad(shader, parameters, texture, width, height) {\n gl.clearColor(1.0, 0.0, 0.0, 1.0);\n gl.viewport(0, 0, width, height);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.useProgram(shader.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.vertexAttribPointer(shader.attributes.texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.vertexAttribPointer(shader.attributes.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n for (var key in parameters) {\n var uniformLocation = gl.getUniformLocation(shader.program, key);\n\n if (!uniformLocation) {\n continue; // Disabling this error for now since RGB requires minPixelValue\n // but the other shaders do not.\n // throw `Could not access location for uniform: ${key}`;\n }\n\n var uniform = parameters[key];\n var type = uniform.type;\n var value = uniform.value;\n\n if (type === 'i') {\n gl.uniform1i(uniformLocation, value);\n } else if (type === 'f') {\n gl.uniform1f(uniformLocation, value);\n } else if (type === '2f') {\n gl.uniform2f(uniformLocation, value[0], value[1]);\n }\n }\n\n updateRectangle(gl, width, height);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\n\nfunction render(enabledElement) {\n // Resize the canvas\n var image = enabledElement.image;\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var viewport = enabledElement.viewport; // Render the current image\n\n var shader = getShaderProgram(image);\n var texture = getImageTexture(image);\n var parameters = {\n u_resolution: {\n type: '2f',\n value: [image.width, image.height]\n },\n wc: {\n type: 'f',\n value: viewport.voi.windowCenter\n },\n ww: {\n type: 'f',\n value: viewport.voi.windowWidth\n },\n slope: {\n type: 'f',\n value: image.slope\n },\n intercept: {\n type: 'f',\n value: image.intercept\n },\n minPixelValue: {\n type: 'f',\n value: image.minPixelValue\n },\n invert: {\n type: 'i',\n value: viewport.invert ? 1 : 0\n }\n };\n renderQuad(shader, parameters, texture, image.width, image.height);\n return renderCanvas;\n}\nfunction isWebGLAvailable() {\n // Adapted from\n // http://stackoverflow.com/questions/9899807/three-js-detect-webgl-support-and-fallback-to-regular-canvas\n var options = {\n failIfMajorPerformanceCaveat: true\n };\n\n try {\n var canvas = document.createElement('canvas');\n return Boolean(window.WebGLRenderingContext) && (canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options));\n } catch (e) {\n return false;\n }\n}\n\n/***/ }),\n\n/***/ \"./webgl/shaders/index.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/index.js ***!\n \\********************************/\n/*! exports provided: shaders, dataUtilities */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shaders\", function() { return shaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataUtilities\", function() { return dataUtilities; });\n/* harmony import */ var _int16_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int16.js */ \"./webgl/shaders/int16.js\");\n/* harmony import */ var _int8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int8.js */ \"./webgl/shaders/int8.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"./webgl/shaders/rgb.js\");\n/* harmony import */ var _uint16_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uint16.js */ \"./webgl/shaders/uint16.js\");\n/* harmony import */ var _uint8_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uint8.js */ \"./webgl/shaders/uint8.js\");\n\n\n\n\n\nvar shaders = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16Shader\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8Shader\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbShader\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16Shader\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8Shader\"]\n};\nvar dataUtilities = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16DataUtilities\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8DataUtilities\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbDataUtilities\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16DataUtilities\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8DataUtilities\"]\n};\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int16.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/int16.js ***!\n \\********************************/\n/*! exports provided: int16DataUtilities, int16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16DataUtilities\", function() { return int16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16Shader\", function() { return int16Shader; });\n/* eslint no-bitwise: 0 */\nvar int16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack int16 into three uint8 channels (r, g, b)\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack int16 into three uint8 channels (r, g, b)\n var pixelData = image.getPixelData();\n var numberOfChannels = 3;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = Math.abs(pixelData[i]);\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.g*65536.0;' + 'if (color.b == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int8.js\":\n/*!*******************************!*\\\n !*** ./webgl/shaders/int8.js ***!\n \\*******************************/\n/*! exports provided: int8DataUtilities, int8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8DataUtilities\", function() { return int8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8Shader\", function() { return int8Shader; });\nvar int8Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Store data in Uint8Array\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n // Store data in Uint8Array\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n data[offset++] = pixelData[i];\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.;' + 'if (color.a == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/rgb.js\":\n/*!******************************!*\\\n !*** ./webgl/shaders/rgb.js ***!\n \\******************************/\n/*! exports provided: rgbDataUtilities, rgbShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbDataUtilities\", function() { return rgbDataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbShader\", function() { return rgbShader; });\nvar rgbShader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack RGB images into a 3-channel RGB texture\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0; // Only 3 channels, since we use WebGL's RGB texture format\n\n var numStoredPixels = image.width * image.height * 4;\n var numOutputPixels = image.width * image.height * 3;\n var storedPixelData = image.getPixelData();\n var data = new Uint8Array(numOutputPixels); // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n } else {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n }\n\n return data;\n}\n\nvar rgbDataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nrgbShader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform float minPixelValue;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec3 color = texture2D(u_image, v_texCoord).xyz;' + // Rescale based on slope and intercept\n'color = color * 256.0 * slope + intercept;' + // Apply window settings\n'float center0 = wc - 0.5 - minPixelValue;' + 'float width0 = max(ww, 1.0);' + 'color = (color - center0) / width0 + 0.5;' + // RGBA output\n'gl_FragColor = vec4(color, 1);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1. - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint16.js\":\n/*!*********************************!*\\\n !*** ./webgl/shaders/uint16.js ***!\n \\*********************************/\n/*! exports provided: uint16DataUtilities, uint16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16DataUtilities\", function() { return uint16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16Shader\", function() { return uint16Shader; });\n/* eslint no-bitwise: 0 */\nvar uint16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * For uint16 pack uint16 into two uint8 channels (r and a).\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack uint16 into two uint8 channels (r and a)\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = pixelData[i];\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n }\n\n return data;\n}\n\nvar uint16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.a*65536.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint8.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/uint8.js ***!\n \\********************************/\n/*! exports provided: uint8DataUtilities, uint8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8DataUtilities\", function() { return uint8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8Shader\", function() { return uint8Shader; });\nvar uint8Shader = {};\n/**\n * Convert stored pixel data to image data. Here we will store\n * all data in the alpha channel.\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n return image.getPixelData();\n}\n\nvar uint8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/textureCache.js\":\n/*!*******************************!*\\\n !*** ./webgl/textureCache.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\r\n * This module deals with caching image textures in VRAM for WebGL\r\n * @module WebGLTextureCache\r\n */\n\nvar imageCache = {};\nvar cachedImages = [];\nvar maximumSizeInBytes = 1024 * 1024 * 256; // 256 MB\n\nvar cacheSizeInBytes = 0;\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n}\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n cacheSizeInBytes -= lastCachedImage.sizeInBytes;\n delete imageCache[lastCachedImage.imageId];\n cachedImages.pop();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_REMOVED, {\n imageId: lastCachedImage.imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_CACHE_FULL, cacheInfo);\n}\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n purgeCacheIfNecessary();\n}\n\nfunction putImageTexture(image, imageTexture) {\n var imageId = image.imageId;\n\n if (image === undefined) {\n throw new Error('putImageTexture: image must not be undefined');\n }\n\n if (imageId === undefined) {\n throw new Error('putImageTexture: imageId must not be undefined');\n }\n\n if (imageTexture === undefined) {\n throw new Error('putImageTexture: imageTexture must not be undefined');\n }\n\n if (Object.prototype.hasOwnProperty.call(imageCache, imageId) === true) {\n throw new Error('putImageTexture: imageId already in cache');\n }\n\n var cachedImage = {\n imageId: imageId,\n imageTexture: imageTexture,\n timeStamp: new Date(),\n sizeInBytes: imageTexture.sizeInBytes\n };\n imageCache[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n\n if (imageTexture.sizeInBytes === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes must not be undefined');\n }\n\n if (imageTexture.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes is not a number');\n }\n\n cacheSizeInBytes += cachedImage.sizeInBytes;\n purgeCacheIfNecessary();\n}\n\nfunction getImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = new Date();\n return cachedImage.imageTexture;\n}\n\nfunction removeImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n delete imageCache[imageId];\n return cachedImage.imageTexture;\n}\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages.pop();\n delete imageCache[removedCachedImage.imageId];\n }\n\n cacheSizeInBytes = 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n purgeCache: purgeCache,\n getImageTexture: getImageTexture,\n putImageTexture: putImageTexture,\n removeImageTexture: removeImageTexture,\n setMaximumSizeBytes: setMaximumSizeBytes\n});\n\n/***/ }),\n\n/***/ \"./webgl/vertexShader.js\":\n/*!*******************************!*\\\n !*** ./webgl/vertexShader.js ***!\n \\*******************************/\n/*! exports provided: vertexShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertexShader\", function() { return vertexShader; });\nvar vertexShader = 'attribute vec2 a_position;' + 'attribute vec2 a_texCoord;' + 'uniform vec2 u_resolution;' + 'varying vec2 v_texCoord;' + 'void main() {' + 'vec2 zeroToOne = a_position / u_resolution;' + 'vec2 zeroToTwo = zeroToOne * 2.0;' + 'vec2 clipSpace = zeroToTwo - 1.0;' + 'gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);' + 'v_texCoord = a_texCoord;' + '}';\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=cornerstone.js.map","/*! cornerstone-wado-image-loader - 2.2.2 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstoneWADOImageLoader */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstoneWADOImageLoader\",[],t):\"object\"==typeof exports?exports.cornerstoneWADOImageLoader=t():e.cornerstoneWADOImageLoader=t()}(this,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,r){\"use strict\";t.a=function(e){for(var t,r=e[0],a=e[0],n=e.length,o=1;o>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var i;return e};var d=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var r=t,a=e.rows*e.columns,n=new ArrayBuffer(a*e.samplesPerPixel),o=new DataView(r.buffer,r.byteOffset),i=new Int8Array(r.buffer,r.byteOffset),l=new Int8Array(n),s=0,u=o.getInt32(0,!0),c=0;c>l;var u=(new Date).getTime();return e.decodeTimeInMS=u-o,e}},function(e,t,r){\"use strict\";r.r(t);var a=function(e,t){if(void 0===e)throw new Error(\"decodeRGB: rgbBuffer must not be undefined\");if(e.length%3!=0)throw new Error(\"decodeRGB: rgbBuffer length must be divisible by 3\");for(var r=e.length/3,a=0,n=0,o=0;o>t;return a}var l=function(e,t){for(var r=e.columns*e.rows,a=e.pixelData,n=e.redPaletteColorLookupTableData,o=e.greenPaletteColorLookupTableData,i=e.bluePaletteColorLookupTableData,l=e.redPaletteColorLookupTableData.length,s=0,u=0,c=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,d=x(n,f),p=x(o,f),m=x(i,f),g=0;gt.length)return!1;for(var a=r,n=0;n=E.maxWebWorkers)){var e=new Worker(E.webWorkerPath);R.push({worker:e,status:\"initializing\"}),e.addEventListener(\"message\",F),e.postMessage({taskType:\"initialize\",workerIndex:R.length-1,config:E})}}function G(e){if(e=e||W,E)throw new Error(\"WebWorkerManager already initialized\");if((E=e).maxWebWorkers=E.maxWebWorkers||navigator.hardwareConcurrency||1,!E.startWebWorkersOnDemand)for(var t=0;t=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,u)}if(16===n){if((r=s+t*u*2)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,2*u)}if(1===n){if((r=s+t*u*.125)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return Pe(e.byteArray,r,u)}if(32!==n)throw new Error(\"unsupported pixel format\");if((r=s+t*u*4)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,4*u)};var Ie=function(e){var t=de(e),r=parseInt(t.url,10),a=be.get(r);return new Promise(function(r,e){var t=new FileReader;t.onload=function(e){var t=e.target.result;r(t)},t.onerror=e,t.readAsArrayBuffer(a)})};var Te=function(e){var t=1i?i:t},e.degToRad=function(t){return t*(Math.PI/180)},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return\"number\"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(3),s=(n=o)&&n.__esModule?n:{default:n},r=i(0);var a,h,u,c,l,f=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};f.prototype={constructor:f,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(\"index is out of range: \"+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+t)}},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},sub:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyAxisAngle:(l=void 0,function(t,e){return void 0===l&&(l=new s.default),this.applyQuaternion(l.setFromAxisAngle(t.normalize(),e)),this}),applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[3]*i+o[6]*n,this.y=o[1]*e+o[4]*i+o[7]*n,this.z=o[2]*e+o[5]*i+o[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n+o[12],this.y=o[1]*e+o[5]*i+o[9]*n+o[13],this.z=o[2]*e+o[6]*i+o[10]*n+o[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements,s=1/(o[3]*e+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*e+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*e+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*e+o[6]*i+o[10]*n+o[14])*s,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,o=t.x,s=t.y,r=t.z,a=t.w,h=a*e+s*n-r*i,u=a*i+r*e-o*n,c=a*n+o*i-s*e,l=-o*e-s*i-r*n;return this.x=h*a+l*-o+u*-r-c*-s,this.y=u*a+l*-s+c*-o-h*-r,this.z=c*a+l*-r+h*-s-u*-o,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n,this.y=o[1]*e+o[5]*i+o[9]*n,this.z=o[2]*e+o[6]*i+o[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:(u=void 0,c=void 0,function(t,e){return void 0===u&&(u=new f,c=new f),u.set(t,t,t),c.set(e,e,e),this.clamp(u,c)}),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},cross:function(t,e){if(void 0!==e)return console.warn(\"DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(t,e);var i=this.x,n=this.y,o=this.z;return this.x=n*t.z-o*t.y,this.y=o*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,o=t.z,s=e.x,r=e.y,a=e.z;return this.x=n*a-o*r,this.y=o*s-i*a,this.z=i*r-n*s,this},projectOnVector:(a=void 0,h=void 0,function(t){return void 0===a&&(a=new f),a.copy(t).normalize(),h=this.dot(a),this.copy(a).multiplyScalar(h)}),projectOnPlane:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,r.clamp)(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new f(this.x,this.y,this.z)}},e.default=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}var r={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var i=s(t.start,t.end);if(0===i)return s(e,t.start);var n=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/i;return s(e,n<0?t.start:n>1?t.end:{x:t.start.x+n*(t.end.x-t.start.x),y:t.start.y+n*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var i,o,s,r,a,h,u,c,l,f,y,d={},p=t.start.x,x=t.start.y,m=t.end.x,v=t.end.y,g=e.start.x,z=e.start.y,b=e.end.x,M=e.end.y,w=void 0;if(f=(i=v-x)*b+(s=p-m)*M+(a=m*x-p*v),(0===(l=i*g+s*z+a)||0===f||(0,n.sign)(l)!==(0,n.sign)(f))&&(c=(o=M-z)*m+(r=g-b)*v+(h=b*z-g*M),0===(u=o*p+r*x+h)||0===c||(0,n.sign)(u)!==(0,n.sign)(c))){y=i*r-o*s,w=s*h-r*a;var R=parseFloat(w/y);w=o*a-i*h;var P=parseFloat(w/y);return d.x=R,d.y=P,d}}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=void 0!==n?n:1};n.prototype.setFromAxisAngle=function(t,e){var i=e/2,n=Math.sin(i);return this.x=t.x*n,this.y=t.y*n,this.z=t.z*n,this.w=Math.cos(i),this},n.prototype.multiplyQuaternions=function(t,e){var i=t.x,n=t.y,o=t.z,s=t.w,r=e.x,a=e.y,h=e.z,u=e.w;return this.x=i*u+s*r+n*h-o*a,this.y=n*u+s*a+o*r-i*h,this.z=o*u+s*h+i*a-n*r,this.w=s*u-i*r-n*a-o*h,this},n.prototype.setFromRotationMatrix=function(t){var e=t.elements,i=e[0],n=e[4],o=e[8],s=e[1],r=e[5],a=e[9],h=e[2],u=e[6],c=e[10],l=i+r+c,f=void 0;return l>0?(f=.5/Math.sqrt(l+1),this.w=.25/f,this.x=(u-a)*f,this.y=(o-h)*f,this.z=(s-n)*f):i>r&&i>c?(f=2*Math.sqrt(1+i-r-c),this.w=(u-a)/f,this.x=.25*f,this.y=(n+s)/f,this.z=(o+h)/f):r>c?(f=2*Math.sqrt(1+r-i-c),this.w=(o-h)/f,this.x=(n+s)/f,this.y=.25*f,this.z=(a+u)/f):(f=2*Math.sqrt(1+c-i-r),this.w=(s-n)/f,this.x=(o+h)/f,this.y=(a+u)/f,this.z=.25*f),this},e.default=n},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(2),s=(n=o)&&n.__esModule?n:{default:n};function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var a={distanceToPoint:function(t,e){var i=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var n=s.default.distanceToPoint(t,e);n=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),n=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),i&&n}(t,e)){var n=r(t),o=r(e);return t.width>=0?e.width>=0?(i.topLeft.x=Math.max(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.bottomRight.x)):(i.topLeft.x=Math.max(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.topLeft.x)):e.width>=0?(i.topLeft.x=Math.min(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.topLeft.x)):(i.topLeft.x=Math.min(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(i.topLeft.y=Math.max(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.bottomRight.y)):(i.topLeft.y=Math.max(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.topLeft.y)):e.height>=0?(i.topLeft.y=Math.min(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.topLeft.y)):(i.topLeft.y=Math.min(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.bottomRight.y)),i}}};e.default=a},function(t,e,i){\"use strict\";function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function o(t,e){return Math.sqrt(s(t,e))}function s(t,e){var i=n(t,e);return i.x*i.x+i.y*i.y}Object.defineProperty(e,\"__esModule\",{value:!0});var r={subtract:n,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:o,distanceSquared:s,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var i=[],n=void 0;return t.forEach(function(t,s){var r=o(t,e);i.push(r),n=0===s?r:Math.min(r,n)}),t[i.indexOf(n)]}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r,a,h=function(t,e){this.normal=void 0!==t?t:new s.default(1,0,0),this.constant=void 0!==e?e:0};h.prototype={constructor:h,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:(r=new s.default,a=new s.default,function(t,e,i){var n=r.subVectors(i,e).cross(a.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}),copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return this.orthoPoint(t,e).sub(t).negate()},orthoPoint:function(t,e){var i=this.distanceToPoint(t);return(e||new s.default).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(t){var e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0},intersectLine:function(){var t=new s.default;return function(e,i){var n=i||new s.default,o=e.delta(t),r=this.normal.dot(o);if(0===r)return 0===this.distanceToPoint(e.start)?n.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?void 0:n.copy(o).multiplyScalar(a).add(e.start)}}(),intersectPlane:function(t){var e=this.normal.clone().cross(t.normal),i={origin:new s.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return i.direction=new s.default,i;var n=this.constant,o=t.constant,r=this.normal.clone().dot(t.normal),a=-(n-o*r)/(1-r*r),h=-(o-n*r)/(1-r*r);return i.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(h)),i},coplanarPoint:function(t){return(t||new s.default).copy(this.normal).multiplyScalar(-this.constant)},translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},clone:function(){return(new h).copy(this)}},e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r=function(t,e,i,n,o,s,r,a,h,u,c,l,f,y,d,p){this.elements=new Float32Array(16);var x=this.elements;x[0]=void 0!==t?t:1,x[4]=e||0,x[8]=i||0,x[12]=n||0,x[1]=o||0,x[5]=void 0!==s?s:1,x[9]=r||0,x[13]=a||0,x[2]=h||0,x[6]=u||0,x[10]=void 0!==c?c:1,x[14]=l||0,x[3]=f||0,x[7]=y||0,x[11]=d||0,x[15]=void 0!==p?p:1};r.prototype.makeRotationFromQuaternion=function(t){var e=this.elements,i=t.x,n=t.y,o=t.z,s=t.w,r=i+i,a=n+n,h=o+o,u=i*r,c=i*a,l=i*h,f=n*a,y=n*h,d=o*h,p=s*r,x=s*a,m=s*h;return e[0]=1-(f+d),e[4]=c-m,e[8]=l+x,e[1]=c+m,e[5]=1-(u+d),e[9]=y-p,e[2]=l-x,e[6]=y+p,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},r.prototype.multiplyMatrices=function(t,e){var i=t.elements,n=e.elements,o=this.elements,s=i[0],r=i[4],a=i[8],h=i[12],u=i[1],c=i[5],l=i[9],f=i[13],y=i[2],d=i[6],p=i[10],x=i[14],m=i[3],v=i[7],g=i[11],z=i[15],b=n[0],M=n[4],w=n[8],R=n[12],P=n[1],L=n[5],T=n[9],S=n[13],_=n[2],V=n[6],q=n[10],j=n[14],E=n[3],k=n[7],O=n[11],A=n[15];return o[0]=s*b+r*P+a*_+h*E,o[4]=s*M+r*L+a*V+h*k,o[8]=s*w+r*T+a*q+h*O,o[12]=s*R+r*S+a*j+h*A,o[1]=u*b+c*P+l*_+f*E,o[5]=u*M+c*L+l*V+f*k,o[9]=u*w+c*T+l*q+f*O,o[13]=u*R+c*S+l*j+f*A,o[2]=y*b+d*P+p*_+x*E,o[6]=y*M+d*L+p*V+x*k,o[10]=y*w+d*T+p*q+x*O,o[14]=y*R+d*S+p*j+x*A,o[3]=m*b+v*P+g*_+z*E,o[7]=m*M+v*L+g*V+z*k,o[11]=m*w+v*T+g*q+z*O,o[15]=m*R+v*S+g*j+z*A,this},r.prototype.multiply=function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},r.prototype.getInverse=function(t,e){var i=this.elements,n=t.elements,o=n[0],s=n[4],r=n[8],a=n[12],h=n[1],u=n[5],c=n[9],l=n[13],f=n[2],y=n[6],d=n[10],p=n[14],x=n[3],m=n[7],v=n[11],g=n[15];i[0]=c*p*m-l*d*m+l*y*v-u*p*v-c*y*g+u*d*g,i[4]=a*d*m-r*p*m-a*y*v+s*p*v+r*y*g-s*d*g,i[8]=r*l*m-a*c*m+a*u*v-s*l*v-r*u*g+s*c*g,i[12]=a*c*y-r*l*y-a*u*d+s*l*d+r*u*p-s*c*p,i[1]=l*d*x-c*p*x-l*f*v+h*p*v+c*f*g-h*d*g,i[5]=r*p*x-a*d*x+a*f*v-o*p*v-r*f*g+o*d*g,i[9]=a*c*x-r*l*x-a*h*v+o*l*v+r*h*g-o*c*g,i[13]=r*l*f-a*c*f+a*h*d-o*l*d-r*h*p+o*c*p,i[2]=u*p*x-l*y*x+l*f*m-h*p*m-u*f*g+h*y*g,i[6]=a*y*x-s*p*x-a*f*m+o*p*m+s*f*g-o*y*g,i[10]=s*l*x-a*u*x+a*h*m-o*l*m-s*h*g+o*u*g,i[14]=a*u*f-s*l*f-a*h*y+o*l*y+s*h*p-o*u*p,i[3]=c*y*x-u*d*x-c*f*m+h*d*m+u*f*v-h*y*v,i[7]=s*d*x-r*y*x+r*f*m-o*d*m-s*f*v+o*y*v,i[11]=r*u*x-s*c*x-r*h*m+o*c*m+s*h*v-o*u*v,i[15]=s*c*f-r*u*f+r*h*y-o*c*y-s*h*d+o*u*d;var z=o*i[0]+h*i[4]+f*i[8]+x*i[12];if(0===z){var b=\"Matrix4.getInverse(): can't invert matrix, determinant is 0\";if(e)throw new Error(b);return console.warn(b),this.identity(),this}return this.multiplyScalar(1/z),this},r.prototype.applyToVector3Array=function(){var t=new s.default;return function(e,i,n){void 0===i&&(i=0),void 0===n&&(n=e.length);for(var o=0,s=i;o1||isNaN(r))){var a=this.start.clone().add(e.clone().multiplyScalar(r));return a.clone().sub(t.start).lengthSq()+a.clone().sub(t.end).lengthSq()<=t.distanceSq()?a:void 0}}}}]),t}();e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var n=f(i(8)),o=f(i(2)),s=i(0),r=f(i(7)),a=f(i(6)),h=f(i(5)),u=f(i(3)),c=f(i(4)),l=f(i(1));function f(t){return t&&t.__esModule?t:{default:t}}var y={Line3:n.default,lineSegment:o.default,clamp:s.clamp,degToRad:s.degToRad,radToDeg:s.radToDeg,sign:s.sign,Matrix4:r.default,Plane:a.default,point:h.default,quaternion:u.default,rect:c.default,Vector3:l.default};e.Line3=n.default,e.lineSegment=o.default,e.clamp=s.clamp,e.degToRad=s.degToRad,e.radToDeg=s.radToDeg,e.sign=s.sign,e.Matrix4=r.default,e.Plane=a.default,e.point=h.default,e.quaternion=u.default,e.rect=c.default,e.Vector3=l.default,e.default=y}])});\n//# sourceMappingURL=cornerstoneMath.min.js.map","/*! cornerstone-tools - 3.0.0-b.1512 - 2018-12-17 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstone-tools\",[],t):\"object\"==typeof exports?exports[\"cornerstone-tools\"]=t():e.cornerstoneTools=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=10)}([function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;return\"function\"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent(\"CustomEvent\")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}var b={drawColorId:0,radius:10,minRadius:1,maxRadius:50,alpha:.4,renderBrushIfHiddenButActive:!0,hiddenButActiveAlpha:.2,colorMapId:\"BrushColorMap\",visibleSegmentations:{},imageBitmapCache:{},segmentationMetadata:{}},E={radius:function(e){b.radius=Math.min(Math.max(e,b.minRadius),b.maxRadius)},brushColorMap:function(e){var t=f.cornerstone.colors.getColormap(b.colorMapId);t.setNumberOfColors(e.length);for(var n=0;n2&&void 0!==arguments[2])||arguments[2];b.visibleSegmentations[e]||(b.imageBitmapCache[e]=[]),b.visibleSegmentations[e][t]=n},imageBitmapCacheForElement:function(e,t,n){b.imageBitmapCache[e]||(b.imageBitmapCache[e]=[]),b.imageBitmapCache[e][t]=n},clearImageBitmapCacheForElement:function(e){b.imageBitmapCache[e]=[]},metadata:function(e,t,n){b.segmentationMetadata[e]||(b.segmentationMetadata[e]=[]),b.segmentationMetadata[e][t]=n}};var M={state:b,onRegisterCallback:function(){!function(){var e=f.cornerstone.colors.getColormap(b.colorMapId);e.setNumberOfColors(19);for(var t=0;t<19;t++)t0}).forEach(function(t){var n=!1;t.supportedInteractionTypes.forEach(function(e){t.options[\"is\".concat(e,\"Active\")]&&(n=!0)}),n||(console.info(\"Setting tool \".concat(t.name,\"'s to PASSIVE\")),N(e,t.name))})}(e,o,n,a),o.supportedInteractionTypes.forEach(function(e){void 0===a||a.includes(e)?n[\"is\".concat(e,\"Active\")]=!0:n[\"is\".concat(e,\"Active\")]=!1})),F(\"active\",null,e,t,n)},L=function(e,t,n){z(\"active\",e,t,n),_.state.enabledElements.forEach(function(a){D(a,e,t,n)})},A=F.bind(null,\"disabled\",null),H=V.bind(null,\"disabled\",null),R=F.bind(null,\"enabled\",null),U=V.bind(null,\"enabled\",null),N=F.bind(null,\"passive\",x.TOOL_DEACTIVATED),B=V.bind(null,\"passive\",x.TOOL_DEACTIVATED);function F(e,t,n,a,o){var i=O(n,a);i?(o=G(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(i.options.mouseButtonMask)&&(o.mouseButtonMask=o.mouseButtonMask.concat(i.options.mouseButtonMask)),i.mode=e,i.mergeOptions(o),i[\"\".concat(e,\"Callback\")]&&i[\"\".concat(e,\"Callback\")](n,o),t&&T(n,t,{options:o,toolName:a,type:t})):console.warn(\"Unable to find tool '\".concat(a,\"' for enabledElement\"))}function V(e,t,n,a){z(e,n,a),_.state.enabledElements.forEach(function(o){F(e,t,o,n,a)})}function j(e,t,n,a){var o=_.state.tools.find(function(t){return t.element===n&&\"active\"===t.mode&&!0===t.options[\"is\".concat(e,\"Active\")]});o&&(console.info(\"Setting tool \".concat(o.name,\"'s is\").concat(e,\"Active to false\")),o.options[\"is\".concat(e,\"Active\")]=!1)}function z(e,t,n,a){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),_.state.globalToolChangeHistory.push(o);_.state.globalToolChangeHistory.length>50&&_.state.globalToolChangeHistory.shift();var i=_.state.globalTools[t];if(\"active\"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=_.state.globalTools[e];if(o){var i=new o.tool(o.configuration);i.supportedInteractionTypes.forEach(function(e){if(void 0===n||n.includes(e))if(\"Mouse\"===e){var o=G(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach(function(t){return a.push(\"\".concat(e,\"-\").concat(t))}):Array.isArray(o)&&0===o.length&&a.push(\"\".concat(e,\"-DELETE\"))}else\"MultiTouch\"===e?a.push(\"\".concat(e,\"-\").concat(i.configuration.touchPointers)):a.push(e)})}return a}(t,n,a);Object.keys(_.state.globalTools).forEach(function(e){var t=_.state.globalTools[e];t.activeBindings=t.activeBindings.filter(function(e){return!r.includes(e)})}),r.some(function(e){return e.includes(\"Mouse-DELETE\")})&&(i.activeBindings=i.activeBindings.filter(function(e){return!e.includes(\"Mouse\")}),r=r.filter(function(e){return!e.includes(\"Mouse\")})),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[]}}var W={Mouse:function(e,t,n){var a=G(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some(function(e){return a.includes(e)})});o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter(function(e){return!a.includes(e)}),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:j.bind(void 0,\"MouseWheel\"),Touch:function(e,t,n){var a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive}),o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers});a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isTouchActive to false\")),o.options.isMultiTouchActive=!1)},TouchPinch:j.bind(void 0,\"TouchPinch\"),TouchRotate:j.bind(void 0,\"TouchRotate\"),DoubleTap:j.bind(void 0,\"DoubleTap\"),MultiTouch:function(e,t,n){var a,o=_.state.tools.find(function(n){return n.element===t&&\"active\"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers});1===e.configuration.touchPointers&&(a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive})),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isMultiTouchActive to false\")),o.options.isMultiTouchActive=!1),a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1)}};function G(e){if(e!==Object(e)||Array.isArray(e))if(\"number\"==typeof e){var t=[];t.push(e),e={mouseButtonMask:0===e?[]:t}}else null===e?e={mouseButtonMask:[]}:(console.info(\"No options provided when changing tool mode\"),e={});else if(0===e.mouseButtonMask||null===e.mouseButtonMask)e.mouseButtonMask=[];else if(\"number\"==typeof e.mouseButtonMask){var n=[];n.push(e.mouseButtonMask),e.mouseButtonMask=n}return e}var q={activeOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},enabledCallback:function(e){D(e,this.name)}},enabledOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},activeCallback:function(e){R(e,this.name)}}},Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.name,a=t.strategies,i=t.defaultStrategy,r=t.configuration,s=t.supportedInteractionTypes,l=t.mixins;o()(this,e),this.name=n,this.mode=\"disabled\",this.element=void 0,this.supportedInteractionTypes=s||[],this.strategies=a||{},this.defaultStrategy=i||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,this._options={},this._configuration=Object.assign({},r),this.hasCursor=!1,l&&l.length&&this._applyMixins(l)}return r()(e,[{key:\"mergeOptions\",value:function(e){this._options=Object.assign({},this._options,e)}},{key:\"clearOptions\",value:function(){this._options={}}},{key:\"applyActiveStrategy\",value:function(e){return this.strategies[this.activeStrategy](e,this.configuration)}},{key:\"_applyMixins\",value:function(e){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=a.detail,i=o.element,r=o.image,s=a.detail.deltaPoints.image,l=s.x,c=s.y;t.active=!0;for(var u=Object.keys(t.handles),d=0;d2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=s.detail,c=s.detail.element;t.active=!1,t.invalidated=!0,S.isToolLocked=!1,ce[a].forEach(function(e){c.removeEventListener(e,i)}),ue[a].forEach(function(e){c.removeEventListener(e,r)}),n.deleteIfHandleOutsideImage&&re(l,t.handles)&&$(c,e,t);\"function\"==typeof n.doneMovingCallback&&n.doneMovingCallback();f.cornerstone.updateImage(c)}(t,n,o,i,{dragHandler:r,upOrEndHandler:e},a)};n.active=!0,S.isToolLocked=!0,ce[i].forEach(function(e){a.addEventListener(e,r)}),ue[i].forEach(function(e){a.addEventListener(e,s)})};var he={value:!1},ve={mouse:[x.MOUSE_DRAG],touch:[x.TOUCH_DRAG]},ge={mouse:[x.MOUSE_UP,x.MOUSE_CLICK],touch:[x.TOUCH_END,x.TOUCH_DRAG_END,x.TOUCH_PINCH,x.TOUCH_PRESS,x.TAP]},me=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element,s=function(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=l.page,d=f.cornerstone.pageToPixel(c,u.x,\"touch\"===o?u.y+-57:u.y);!1===n.hasMoved&&(n.hasMoved=!0);he.value=!1,n.active=!0,n.x=d.x,n.y=d.y,a.preventHandleOutsideImage&&le(n,s);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function r(l){!function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=t.currentPoints.image,d=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,S.isToolLocked=!1,he.value=!1,ve[i].forEach(function(e){d.removeEventListener(e,s)}),ge[i].forEach(function(e){d.removeEventListener(e,l)}),o.deleteIfHandleOutsideImage&&re(t,n.handles)&&$(d,e,n);c.type===x.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=u.x,a.y=u.y);\"function\"==typeof o.doneMovingCallback&&o.doneMovingCallback();f.cornerstone.updateImage(d)}(t,e,n,a,o,i,{dragHandler:s,upOrEndHandler:r},l)};if(a.active=!0,n.active=!0,S.isToolLocked=!0,ve[i].forEach(function(e){r.addEventListener(e,s)}),ge[i].forEach(function(e){r.addEventListener(e,l)}),\"touch\"===i){he.value=!0;var c=f.cornerstone.getEnabledElement(r),u={x:e.currentPoints.page.x,y:e.currentPoints.page.y+-57},d=f.cornerstone.pageToPixel(r,u.x,u.y);!function e(t,n,a,o){if(!n.value)return;var i=Math.abs(t.y-o.y);var r=i/10;if(i<1)return t.y=o.y,void(n.value=!1);t.y>o.y?t.y-=r:t.y5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element;S.isToolLocked=!0,a.active=!0,n.active=!0;var s=function(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=s.page,d=f.cornerstone.pageToPixel(c,\"touch\"===o?u.x+-57:u.x,\"touch\"===o?u.y+-57:u.y);n.active=!0,n.x=d.x,n.y=d.y,a&&a.preventHandleOutsideImage&&le(n,l);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function e(r){!function(e,t,n,a,o,i,r){var s=i.moveHandler,l=i.moveEndHandler,c=r.detail,u=c.element,d=c.currentPoints.page,h=f.cornerstone.pageToPixel(u,\"touch\"===o?d.x+-57:d.x,\"touch\"===o?d.y+-57:d.y);if(n.active=!1,t.active=!1,S.isToolLocked=!1,n.x=h.x,n.y=h.y,fe[o].forEach(function(e){u.removeEventListener(e,s)}),pe[o].forEach(function(e){u.removeEventListener(e,l)}),u.removeEventListener(x.TOUCH_START,xe),r.type===x.TOUCH_PINCH||r.type===x.TOUCH_PRESS)return n.active=!1,f.cornerstone.updateImage(u),void(\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback());a.preventHandleOutsideImage&&le(n,r.detail.image);a.deleteIfHandleOutsideImage&&re(r.detail,t.handles)&&$(u,e,t);\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback();f.cornerstone.updateImage(u)}(t,n,a,o,i,{moveHandler:s,moveEndHandler:e},r)};fe[i].forEach(function(e){r.addEventListener(e,s)}),pe[i].forEach(function(e){r.addEventListener(e,l)}),r.addEventListener(x.TOUCH_START,xe)};function xe(e){return e.stopImmediatePropagation(),!1}var Te=function(e,t,n,a,o){n.active=!0,S.isToolLocked=!0,me(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},be=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"mouse\",i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=Object.assign({},{doneMovingCallback:function(){n.active=!1,S.isToolLocked=!1}},t.options);n.active=!0,S.isToolLocked=!0,de(e.detail,t.name,n,null,o,a),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Me=function(e){function t(e){var n=e.name,a=e.strategies,i=e.defaultStrategy,r=e.configuration,s=e.supportedInteractionTypes,c=e.mixins;return o()(this,t),l()(this,u()(t).call(this,{name:n,strategies:a,defaultStrategy:i,configuration:r,supportedInteractionTypes:s,mixins:c}))}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){throw new Error(\"Method createNewMeasurement not implemented for \".concat(this.name,\".\"))}},{key:\"pointNearTool\",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error(\"Method pointNearTool not implemented for \".concat(this.name,\".\"))}},{key:\"distanceFromPoint\",value:function(e,t,n){throw new Error(\"Method distanceFromPoint not implemented for \".concat(this.name,\".\"))}},{key:\"renderToolData\",value:function(e){throw new Error(\"renderToolData not implemented for \".concat(this.name,\".\"))}},{key:\"mouseMoveCallback\",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=Q(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:\"mouse\";Te(e,this,t,n,a)}},{key:\"toolSelectedCallback\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"mouse\";Ee(e,this,t,n)}}]),t}(Y),Ce=1,we=2;var Ie={setToolWidth:function(e){Ce=e},getToolWidth:function(){return Ce},setActiveWidth:function(e){we=e},getActiveWidth:function(){return we}},Se=\"white\",ke=\"greenyellow\",Pe=\"transparent\";var _e={setFillColor:function(e){Pe=e},getFillColor:function(){return Pe},setToolColor:function(e){Se=e},getToolColor:function(){return Se},setActiveColor:function(e){ke=e},getActiveColor:function(){return ke},getColorIfActive:function(e){return e.color?e.color:e.active?ke:Se}},Oe=function(e,t){e.save(),t(e),e.restore()},De=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Ie.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),e.stroke(),r&&e.setLineDash([])};function Le(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)})}var Ae=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=a.map(function(e){return f.cornerstone.pixelToCanvas(t,e)})),e.moveTo(n.x,n.y),a.forEach(function(t){var n=t.x,a=t.y;e.lineTo(n,a)})})},He=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Le(e,void 0,t,n,r,\"canvas\"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Ae(e,void 0,n,s,r,\"canvas\")},Re=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n)),De(e,o,function(e){e.arc(n.x,n.y,a,0,2*Math.PI)})},Ue=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a));var i=Math.min(n.x,a.x),r=Math.min(n.y,a.y),s=Math.abs(n.x-a.x),l=Math.abs(n.y-a.y),c=s/2*.5522848,u=l/2*.5522848,d=i+s,h=r+l,v=i+s/2,g=r+l/2;De(e,o,function(e){e.moveTo(i,g),e.bezierCurveTo(i,g-u,v-c,r,v,r),e.bezierCurveTo(v+c,r,d,g-u,d,g),e.bezierCurveTo(d,g+u,v+c,h,v,h),e.bezierCurveTo(v-c,h,i,g+u,i,g),e.closePath()})},Ne=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=_e.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return\"continue\";if(!0===a.drawHandlesIfActive&&!s.active)return\"continue\";var l=s.active?Ie.getActiveWidth():Ie.getToolWidth(),c=a.fill;De(e,{lineWidth:l,fillStyle:c},function(e){var t=f.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||S.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)})},l=0;l0?f.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Le(a,void 0,r,f.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},\"canvas\")},Fe=15,Ve=\"\".concat(Fe,\"px Arial\"),je=\"transparent\";var ze={setFont:function(e){Ve=e},getFont:function(){return Ve},setFontSize:function(e){Fe=e},getFontSize:function(){return Fe},setBackgroundColor:function(e){je=e},getBackgroundColor:function(){return je}},We=function(e,t,n,a,o){var i=ze.getFontSize();e.font=ze.getFont(),e.textBaseline=\"top\",e.fillStyle=a,n.forEach(function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))})},Ge=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function qe(e,t,n){var a=ze.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var Ye=function(e,t,n,a,o,i){\"[object Array]\"!==Object.prototype.toString.call(t)&&(t=[t]);var r=ze.getFontSize(),s=ze.getBackgroundColor(),l=0;t.forEach(function(t){var n=qe(e,t,5);l=Math.max(l,n)});var c={width:l,height:5+t.length*(r+5)};return Oe(e,function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?\"#FF0000\":s;Ge(e,c,r),We(e,c,t,o,5)}),c},Xe=function(e,t,n,a,o,i,r,s,l,c){var u=f.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=Ye(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map(function(e){return u.pixelToCanvas(t,e)});Be(v,d,n.boundingBox,e,r,s)}},Ke=function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(r,s,l,c)})},Ze=function(e){var t=e.getContext(\"2d\");return t.setTransform(1,0,0,1,0,0),t},Je=function(e,t){return void 0===e?t:e},Qe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Je(t.shadowColor,\"#000000\"),e.shadowBlur=Je(t.shadowBlur,0),e.shadowOffsetX=Je(t.shadowOffsetX,1),e.shadowOffsetY=Je(t.shadowOffsetY,1))},$e=function(e,t,n){if(n.vflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},et=function(e){e.setTransform(1,0,0,1,0,0)},tt=function(e,t,n,a){var o=f.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return f.cornerstoneMath.lineSegment.distanceToPoint(i,a)},nt=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n};function at(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}var ot=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Angle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(tt(e,t.handles.start,t.handles.middle,n)<25||tt(e,t.handles.middle,t.handles.end,n)<25)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=Q(e.currentTarget,this.name);if(s)for(var l=Ze(n.canvasContext.canvas),c=Ie.getToolWidth(),u=function(e){var o=s.data[e];if(!1===o.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var s=_e.getColorIfActive(o),l=f.cornerstone.pixelToCanvas(n.element,o.handles.start),u=f.cornerstone.pixelToCanvas(n.element,o.handles.middle);Ae(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var d={color:s,handleRadius:i,drawHandlesIfActive:r};Ne(e,n,o.handles,d);var v=n.image.columnPixelSpacing||1,g=n.image.rowPixelSpacing||1,m={x:(o.handles.middle.x-o.handles.start.x)*v,y:(o.handles.middle.y-o.handles.start.y)*g},p={x:(o.handles.end.x-o.handles.middle.x)*v,y:(o.handles.end.y-o.handles.middle.y)*g},y={x:(o.handles.end.x-o.handles.start.x)*v,y:(o.handles.end.y-o.handles.start.y)*g},x=at(m),T=at(p),b=at(y),E=Math.acos((Math.pow(x,2)+Math.pow(T,2)-Math.pow(b,2))/(2*x*T));if(E*=180/Math.PI,o.rAngle=nt(E,2),o.rAngle){var M,C=function(e,t,n){var a=t&&n?\"\":\" (isotropic)\";return e.rAngle.toString()+String.fromCharCode(parseInt(\"00B0\",16))+a}(o,n.image.rowPixelSpacing,n.image.columnPixelSpacing);if(!o.handles.textBox.hasMoved){M={x:u.x,y:u.y};var w=qe(e,C,5);u.x0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ArrowAnnotate\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{getTextCallback:rt,changeTextCallback:st,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=Q(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Ze(c),d=Ie.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return\"continue\";Oe(u,function(n){Qe(n,t.configuration);var l=_e.getColorIfActive(i),c=f.cornerstone.pixelToCanvas(a,i.handles.start),u=f.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?He(n,u,c,l,d):He(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&Ne(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&\"\"!==v){var m=qe(n,v,5),p=ze.getFontSize()+10,y=Math.max(m,p)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},ht=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,handles:{start:dt(n,a,0),end:dt(n,a,1,{active:!0}),perpendicularStart:dt(n,a,2,{locked:!0}),perpendicularEnd:dt(n,a,3),textBox:dt(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},vt=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=f.cornerstone,i=f.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ne(r.textBox,n))return!0;var c=\"mouse\"===a?S.clickProximity:S.touchProximity;return!!function(e,t,n,a){var o=f.cornerstone,i=f.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)u){var g=u;u=v,v=g}e.longestDiameter=u.toFixed(1),e.shortestDiameter=v.toFixed(1)},ft=function(e,t,n){var a=\" mm\";return t&&n||(a=\" pixels\"),[\" L \".concat(e.longestDiameter).concat(a),\" W \".concat(e.shortestDiameter).concat(a)]},pt=function(e,t){var n=this,a=e.detail,o=a.element,i=a.image,r=this.configuration;if(!yt(i)){var s=this.createNewMeasurement(a),l=function(){s.active=!1,f.cornerstone.updateImage(o)};J(o,this.name,s),f.cornerstone.updateImage(o);var c=(new Date).getTime(),u=s.handles,d=u.end,h=u.perpendicularStart;ye(a,this.name,s,d,{doneMovingCallback:function(){var e=s.handles,t=s.longestDiameter,i=s.shortestDiameter,u=re(a,e),d=parseFloat(t)||0,v=parseFloat(i)||0,g=d<1||v<1,m=(new Date).getTime()-c<150;u||g||m?(s.cancelled=!0,$(o,n.name,s)):r.getMeasurementLocationCallback(s,a,l),h.locked=!1,f.cornerstone.updateImage(o)}},t)}},yt=function(e){var t=f.cornerstone.metaData.get(\"imagePlaneModule\",e.imageId),n=e.rowPixelSpacing,a=e.columnPixelSpacing;return t&&(n=t.rowPixelSpacing||t.rowImagePixelSpacing,a=t.columnPixelSpacing||t.colImagePixelSpacing),!n||!a};var xt={setCoords:function(e){lt=e.currentPoints.canvas},getCoords:function(){return lt}},Tt=function(e){var t=this,n=e.detail,a=n.element;xt.setCoords(n);var o=Q(a,this.name);if(o){for(var i=!1,r=function(e){var r=n.currentPoints.canvas,s=o.data[e],l=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=oe(e,t,n,a),i=!1;return Object.keys(t).forEach(function(e){if(\"textBox\"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}}),i}(a,s.handles,r);Object.keys(s.handles).forEach(function(e){if(\"textBox\"!==e){var t=s.handles[e];t.hover=t.active}}),l&&(i=!0);var c=t.pointNearTool(a,s,r,\"mouse\"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;sn(e,i)?(r.x=y+u*g,r.y=x-u*v,s.x=r.x-d*g,s.y=r.y+d*v):(r.x=m+u*g,r.y=p-u*v,s.x=r.x-d*g,s.y=r.y+d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=f.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=f.cornerstoneMath.lineSegment.intersectLine(l,c),r=f.cornerstoneMath.point.distance(i,n.handles.start),s=f.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||function(e,t){var n=f.cornerstoneMath.point.distance,a=t.handles,o=a.start,i=a.end,r=a.perpendicularStart,s=a.perpendicularEnd,l=r,c=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,l),u=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,e),d=c+u;if(n(l,e)<=c)return!1;var h=n(o,i),v=(o.x-i.x)/h,g=(o.y-i.y)/h,m=o.x-1*v,p=o.y-1*g,y=i.x+1*v,x=i.y+1*g;r.x=e.x+d*g,r.y=e.y-d*v,s.x=e.x,s.y=e.y,s.locked=!1,r.locked=!1;var T={start:{x:o.x,y:o.y},end:{x:i.x,y:i.y}},b={start:{x:r.x,y:r.y},end:{x:s.x,y:s.y}};return f.cornerstoneMath.lineSegment.intersectLine(T,b)||(n(e,o)>n(e,i)?(s.x=y-u*g,s.y=x+u*v,r.x=s.x+d*g,r.y=s.y-d*v):(s.x=m-u*g,s.y=p+u*v,r.x=s.x+d*g,r.y=s.y-d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Et=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mt=function(e,t){Et(e,t,\"x\"),Et(e,t,\"y\"),Et(e,t,\"moving\"),Et(e,t,\"hover\"),Et(e,t,\"active\"),Et(e,t,\"selected\")};var Ct=function(e){var t,n=this,a=e.detail,o=a.element,i=S.clickProximity,r=function(e){t.invalidated=!0,re(a,t.handles)&&$(o,n.name,t),e&&(e.moving=!1,e.selected=!0),o.style.cursor=\"\",f.cornerstone.updateImage(o),o.addEventListener(x.MOUSE_MOVE,n._moveCallback),o.addEventListener(x.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=Q(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=oe.apply(void 0,u);if(d)return o.removeEventListener(x.MOUSE_MOVE,n._moveCallback),o.removeEventListener(x.TOUCH_START,n._moveCallback),t.active=!0,wt(t.handles),d.moving=!0,d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),m=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+m*m)||0)>v?(Mt(s,l),Mt(s,c),Mt(l,u),Object.values(r).find(function(e){return!0===e.moving})):n}(a,t,d),o.style.cursor=d.hasBoundingBox?\"move\":\"none\",function(e,t,n,a,o,i){var r=e.element,s={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},l=function(e){var o=e.detail;a.active=!0,a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+s.x,a.y=o.currentPoints.image.y+s.y):bt(a,o,n,s),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),f.cornerstone.updateImage(r);var l={toolType:t,element:r,measurementData:n};f.cornerstone.triggerEvent(r,x.MEASUREMENT_MODIFIED,l)};r.addEventListener(x.MOUSE_DRAG,l),r.addEventListener(x.TOUCH_DRAG,l);var c=f.cornerstone.getImage(r),u=function(){f.cornerstone.getImage(r).imageId!==c.imageId&&d()};r.addEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u);var d=function e(){r.removeEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u),r.removeEventListener(x.MOUSE_DRAG,l),r.removeEventListener(x.MOUSE_UP,e),r.removeEventListener(x.MOUSE_CLICK,e),r.removeEventListener(x.TOUCH_DRAG,l),r.removeEventListener(x.TOUCH_DRAG_END,e),r.removeEventListener(x.TAP,e),f.cornerstone.updateImage(r),\"function\"==typeof o&&o()};r.addEventListener(x.MOUSE_UP,d),r.addEventListener(x.MOUSE_CLICK,d),r.addEventListener(x.TOUCH_DRAG_END,d),r.addEventListener(x.TAP,d)}(a,n.name,t,d,function(){return r(d)}),St(e),{v:!0}},u=0;u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Bidirectional\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{changeMeasurementLocationCallback:Lt,getMeasurementLocationCallback:Lt,textBox:\"\",shadow:\"\",drawHandlesOnHover:!0,additionalData:[]}},i=Object.assign(a.configuration,n),r=Object.assign(a,{configuration:i});return(e=l()(this,u()(t).call(this,r))).createNewMeasurement=ht.bind(ut()(ut()(e))),e.pointNearTool=vt.bind(ut()(ut()(e))),e.renderToolData=gt.bind(ut()(ut()(e))),e.addNewMeasurement=pt.bind(ut()(ut()(e))),e._moveCallback=Tt.bind(ut()(ut()(e))),e.preMouseDownCallback=Ct.bind(ut()(ut()(e))),e.preTouchStartCallback=Pt.bind(ut()(ut()(e))),e}return h()(t,e),t}(Me),Ht=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"CobbAngle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.hasIncomplete=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,complete:!1,value:\"\",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(tt(e,t.handles.start,t.handles.end,n)<25||tt(e,t.handles.start2,t.handles.end2,n)<25))}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r)for(var s=Ze(n.canvasContext.canvas),l=Ie.getToolWidth(),c=ze.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(s,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Le(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Xe(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)})},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"EllipticalRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x)+7.5,top:Math.min(o.y,i.y)+7.5,width:Math.abs(o.x-i.x)-15,height:Math.abs(o.y-i.y)-15},s={left:Math.min(o.x,i.x)-7.5,top:Math.min(o.y,i.y)-7.5,width:Math.abs(o.x-i.x)+15,height:Math.abs(o.y-i.y)+15},l=Vt(r,n);return!(!Vt(s,n)||l)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ue(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.round(Math.min(a.handles.start.x,a.handles.end.x)),top:Math.round(Math.min(a.handles.start.y,a.handles.end.y)),width:Math.round(Math.abs(a.handles.start.x-a.handles.end.x)),height:Math.round(Math.abs(a.handles.start.y-a.handles.end.y))};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=jt(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=Math.PI*(y.width*(m||1)/2)*(y.height*(g||1)/2),isNaN(l)||(a.area=l),a.invalidated=!1}a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2);var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;ye.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.x+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>o.value}(e,t,n));var a,o,i}function Xt(e,t,n,a){qt(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var Kt=function e(t,n){o()(this,e),this.toolIndex=t,this.handleIndexArray=n},Zt=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];o()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function Jt(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function tn(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var nn={newHandle:function(e,t){var n=t.length-1;return Jt(t,$t(t[n]),$t(e),[n])},end:function(e){var t=e.length-1;return Jt(e,$t(e[t]),$t(e[0]),[t,0])},modify:function(e,t){var n=$t(e[t]),a=t-1;0===t&&(a=e.length-1);var o=$t(e[a]);return!!Jt(e,n,o,[t,a])||Jt(e,n,o=$t(e[a=t===e.length-1?0:t+1]),[t,a])}},an=function(){function e(t){o()(this,e),this._eventData=t}return r()(e,[{key:\"findLine\",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:\"findTool\",value:function(){return this._toolData=Q(this._eventData.element,\"FreehandMouse\"),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:\"_nearestHandleToPointAllTools\",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:5,activeHandleRadius:3,completeHandleRadius:6,alwaysShowHandles:!1,invalidColor:\"crimson\",currentHandle:0,currentTool:-1}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(ut()(ut()(e))),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(ut()(ut()(e))),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(ut()(ut()(e))),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(ut()(ut()(e))),e._editMouseUpCallback=e._editMouseUpCallback.bind(ut()(ut()(e))),e._editMouseDragCallback=e._editMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:[]};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles;if(!a)throw new Error(\"invalid parameters supplied to tool \".concat(this.name,\"'s pointNearTool\"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:\"distanceFromPoint\",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=e.detail,i=o.element;if(n.hasBoundingBox)Te(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};var s=this._pointNearHandleAllTools(o),l=s.handleNearby,c=s.toolIndex;this._modifying=!0,r.currentHandle=l,r.currentTool=c,this._activateModify(i),S.isToolLocked=!0,vn(e)}}},{key:\"_drawingMouseMoveCallback\",value:function(e){var t=e.detail,n=t.element,a=Q(t.element,this.name),o=this.configuration,i=o.currentTool,r=a.data[i],s=t.currentPoints.canvas;this._getMouseLocation(t),this._checkInvalidHandleLocation(r,t);var l=this._pointNearHandle(n,r,s);void 0!==l&&!l.hasBoundingBox&&l\")}},{key:\"_compareDistanceToSpacingCanvas\",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\">\",o=this.configuration;f.cornerstone.pixelToCanvas(e,t),f.cornerstone.pixelToCanvas(e,n);return\">\"===a?f.cornerstoneMath.point.distance(t,n)>o.spacing:f.cornerstoneMath.point.distance(t,n)0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Length\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;return a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!(!a||!1===t.visible)&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l,c=Ze(n.canvasContext.canvas),u=n.image,d=n.element,h=Ie.getToolWidth(),v=f.cornerstone.metaData.get(\"imagePlaneModule\",u.imageId);v?(s=v.rowPixelSpacing||v.rowImagePixelSpacing,l=v.columnPixelSpacing||v.colImagePixelSpacing):(s=u.rowPixelSpacing,l=u.columnPixelSpacing);for(var g=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(c,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,d,a.handles.start,a.handles.end,{color:r});var c={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,c);var u=(a.handles.end.x-a.handles.start.x)*(l||1),v=(a.handles.end.y-a.handles.start.y)*(s||1),g=Math.sqrt(u*u+v*v);if(a.length=g,!a.handles.textBox.hasMoved){var m={x:Math.max(a.handles.start.x,a.handles.end.x)};m.x===a.handles.start.x?m.y=a.handles.start.y:m.y=a.handles.end.y,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}var f=function(e,t,n){var a=\" mm\";t&&n||(a=\" pixels\");return\"\".concat(e.length.toFixed(2)).concat(a)}(a,s,l);Xe(e,d,a.handles.textBox,f,a.handles,p,r,h,10,!0)})},m=0;m0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Probe\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};console.error(\"required eventData not supplieed to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.end);return f.cornerstoneMath.point.distance(o,n)<5}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration.handleRadius,a=Q(e.currentTarget,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=t.image,r=ze.getFontSize(),s=function(e){var s=a.data[e];if(!1===s.visible)return\"continue\";Oe(o,function(e){var a=_e.getColorIfActive(s);Ne(e,t,s.handles,{handleRadius:n,color:a});var o,l,c,u=Math.round(s.handles.end.x),d=Math.round(s.handles.end.y);if(u>=0&&d>=0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RectangleRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x),top:Math.min(o.y,i.y),width:Math.abs(o.x-i.x),height:Math.abs(o.y-i.y)};return f.cornerstoneMath.rect.distanceToPoint(r,n)<5}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ke(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.min(a.handles.start.x,a.handles.end.x),top:Math.min(a.handles.start.y,a.handles.end.y),width:Math.abs(a.handles.start.x-a.handles.end.x),height:Math.abs(a.handles.start.y-a.handles.end.y)};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=yn(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=y.width*(m||1)*(y.height*(g||1)),isNaN(l)||(a.area=l),a.invalidated=!1}var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2),Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"TextMarker\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{markers:[],current:\"\",ascending:!0,loop:!1,changeTextCallback:Tn}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.touchPressCallback=e._changeText.bind(ut()(ut()(e))),e.doubleClickCallback=e._changeText.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(f.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:\"pointNearTool\",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=f.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ne(t.handles.end,n);return a<10||o}}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration,a=Q(t.element,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return\"continue\";var r=_e.getColorIfActive(i);Oe(o,function(e){Qe(e,n);var a=f.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=Ye(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})})},r=0;r3&&void 0!==arguments[3]&&arguments[3];e.forEach(function(e){var o,i=(o=e[0],e[1]*n+o);t[i]=a?0:1})},drawBrushOnCanvas:function(e,t,n,a){var o=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),i=f.cornerstone.pixelToCanvas(a,{x:1,y:1}),r=i.x-o.x,s=i.y-o.y;Oe(t,function(t){e.forEach(function(e){var o=f.cornerstone.pixelToCanvas(a,{x:e[0],y:e[1]}),i={left:o.x,top:o.y,width:r,height:s};Ge(t,i,n)})})},getCircle:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.round(a),r=Math.round(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>n||h<0||d*d+c*c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Brush\",supportedInteractionTypes:[\"Mouse\"],strategies:{overlapping:_n,nonOverlapping:On},defaultStrategy:\"overlapping\",configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"renderBrush\",value:function(e){var t,n=e.detail,a=n.viewport;if(this._drawing?t=this._lastImageCoords:this._mouseUpRender?(t=this._lastImageCoords,this._mouseUpRender=!1):t=_.state.mousePositionImage,t){var o=n.image,i=o.rows,r=o.columns,s=t,l=s.x,c=s.y;if(!(l<0||l>r||c<0||c>i)){this._configuration;var u=kn.radius,d=n.canvasContext,h=n.element,v=kn.drawColorId,g=this._getBrushColor(v);d.setTransform(1,0,0,1,0,0);var m=f.cornerstone,p=u*a.scale,y=m.pixelToCanvas(h,t);d.beginPath(),d.strokeStyle=g,d.ellipse(y.x,y.y,p,p,0,0,2*Math.PI),d.stroke()}}}},{key:\"_paint\",value:function(e){this.applyActiveStrategy(e,this.configuration),f.cornerstone.updateImage(e.detail.element)}}]),t}(Cn);function _n(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData),d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u.data[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u.data[h].pixelData=v}var g=u.data[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u.data[h].invalidated=!0}}function On(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData).data,d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u[h].pixelData=v}var g=u[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u[h].invalidated=!0;for(var p=Cn.getNumberOfColors(),y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Crosshairs\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDownCallback=e._chooseLocation.bind(ut()(ut()(e))),e.mouseDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e.touchDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_chooseLocation\",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=Q(n,this.name);if(a){var o=n,i=f.cornerstone.getEnabledElement(o).image.imageId,r=f.cornerstone.metaData.get(\"imagePlaneModule\",i);if(r){var s=Bn(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach(function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=Q(e,\"stack\");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach(function(e,a){var o=f.cornerstone.metaData.get(\"imagePlaneModule\",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Un(o.imagePositionPatient),r=Un(o.rowCosines),l=Un(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"DoubleTapFitToWindow\",supportedInteractionTypes:[\"DoubleTap\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"doubleTapCallback\",value:function(e){var t=e.detail;f.cornerstone.fitToWindow(t.element)}}]),t}(Y),qn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"DragProbe\",strategies:{default:Yn,minimal:Xn},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).touchDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.touchEndCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.mouseUpCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.initialConfiguration=i,e.dragEventData={},e}return h()(t,e),r()(t,[{key:\"_movingEventCallback\",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,f.cornerstone.updateImage(n)}},{key:\"_endMovingEventCallback\",value:function(e){var t=e.detail.element;this.dragEventData={},f.cornerstone.updateImage(t)}},{key:\"renderToolData\",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(Y),Yn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Ze(s.canvas),c=_e.getActiveColor(),u=ze.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Oe(l,function(e){Qe(e,t);var a,s,l=\"\".concat(d,\", \").concat(h);if(i.color)a=mn(o,d,h,1,1),s=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2],\" A: \").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,m=Rt(i,v);s=\"SP: \".concat(v,\" MO: \").concat(parseFloat(g.toFixed(3))),m&&(s+=\" SUV: \".concat(parseFloat(m.toFixed(3))))}var f={x:r.canvas.x+5,y:r.canvas.y-5};Ye(e,s,f.x,f.y+u+5,c),Ye(e,l,f.x,f.y,c)})},Xn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Ze(s.canvas),u=_e.getActiveColor(),d=r.page.y-ze.getFontSize()/2;l&&(d=r.page.y-4*ze.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Oe(c,function(e){Qe(e,t);var a,r=n.metaData.get(\"generalSeriesModule\",i.imageId),s=r&&r.modality,c=\"\";if(i.color)a=mn(o,h.x,h.y,1,1),c=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if(\"CT\"===s)c+=\"HU: \".concat(g);else if(\"PT\"===s){c+=g;var m=Rt(i,d);m&&(c+=\" SUV: \".concat(parseFloat(m.toFixed(2))))}else c+=g}var f=n.pixelToCanvas(o,h),p={x:12,y:-(ze.getFontSize()+10)/2},y=qe(e,c,5);l&&(p={x:-y/2,y:-ze.getFontSize()-10-12}),Re(e,o,f,6,{color:u},\"canvas\"),Ye(e,c,f.x+p.x,f.y+p.y,u)})},Kn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Eraser\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preMouseDownCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_deleteAllNearbyTools\",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;S.tools.forEach(function(e){var a=Q(n,e.name);a&&a.data.forEach(function(a){\"function\"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&($(n,e.name,a),f.cornerstone.updateImage(n))})});return!0}}]),t}(Y),Zn=rn.FreehandHandleData,Jn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandSculpterMouse\",referencedToolName:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],mixins:[\"activeOrDisabledBinaryTool\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:5,maxSpacing:20,currentTool:null,dragColor:_e.getActiveColor(),hoverColor:_e.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).hasCursor=!0,e.initialConfiguration=i,e.referencedToolName=i.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(ut()(ut()(e))),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;if(this._active){var n=t.canvasContext.canvas.getContext(\"2d\"),a={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};Ne(n,t,this.configuration.mouseLocation.handles,a)}else this.configuration.showCursorOnHover&&this._renderHoverCursor(e)}},{key:\"doubleClickCallback\",value:function(e){var t=e.detail;this._selectFreehandTool(t),f.cornerstone.updateImage(t.element)}},{key:\"preMouseDownCallback\",value:function(e){var t=e.detail;return null===this.configuration.currentTool?this._selectFreehandTool(t):this._initialiseSculpting(t),f.cornerstone.updateImage(t.element),!0}},{key:\"activeMouseDragCallback\",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=Q(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles;this._getMouseLocation(n),this._sculpt(n,o),f.cornerstone.updateImage(n.element)}}}},{key:\"activeMouseUpCallback\",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,S.isToolLocked=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),f.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:\"_renderHoverCursor\",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext(\"2d\"),i=Q(a,this.referencedToolName).data[this.configuration.currentTool];this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=S.mousePositionImage;var r=O(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};Ne(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:\"newImageCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"enabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"passiveCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"disabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"_selectFreehandTool\",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a)}},{key:\"_activateFreehandTool\",value:function(e,t){var n=Q(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;ae.maxSpacing&&a.push(o)}return a}},{key:\"_insertHandleRadially\",value:function(e,t){var n=e.dataHandles,a=t-1,o=this.constructor._getNextHandleIndexBeforeInsert(t,n.length),i=this.constructor._getInsertPosition(e,t,a,o),r=new Zn(i);n.splice(t,0,r),n[a].lines.pop(),n[a].lines.push(n[t]),t===n.length-1?n[t].lines.push(n[0]):n[t].lines.push(n[t+1])}},{key:\"_consolidateHandles\",value:function(e){if(e.dataHandles.length>3){var t=this._findCloseHandlePairs(e);this._mergeCloseHandles(e,t)}}},{key:\"_findCloseHandlePairs\",value:function(e){for(var t=e.dataHandles,n=e.element,a=e.minSpacing,o=[],i=t.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=Q(a,this.referencedToolName).data[i.currentTool],s=1;if(n){var l=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),c=f.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height});s=(c.x-l.x)*(c.y-l.y)/(o.width*o.height)}var u=r.area*s,d=Math.pow(u/Math.PI,.5);return Math.min(t,d)}},{key:\"_getClosestFreehandToolOnElement\",value:function(e,t){var n=O(e,this.referencedToolName),a=Q(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Magnify\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{magnifySize:300,magnificationLevel:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.enabledCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.disabledCallback=e._destroyMagnificationCanvas.bind(ut()(ut()(e))),e.postTouchStartCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.touchEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.postMouseDownCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.mouseDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.mouseUpCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.mouseClickCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.newImageCallback=e._drawMagnificationTool.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_addMagnifyingGlass\",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame(function(){return t._drawMagnificationTool(e)}),e.preventDefault(),e.stopPropagation()}},{key:\"_updateMagnifyingGlass\",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:\"_removeMagnifyingGlass\",value:function(e){e.detail.element.querySelector(\".magnifyTool\").style.display=\"none\",document.body.style.cursor=\"default\",this._removeZoomElement()}},{key:\"_drawMagnificationTool\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector(\"canvas:not(.magnifyTool)\"),o=Ze(n),i=f.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top=\"\".concat(u.top,\"px\"),n.style.left=\"\".concat(u.left,\"px\"),n.style.display=\"block\",document.body.style.cursor=\"none\"}}},{key:\"_drawZoomedElement\",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=f.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement=document.createElement(\"div\"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,f.cornerstone.enable(this.zoomElement,n.options);var r=f.cornerstone.getEnabledElement(this.zoomElement),s=f.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,f.cornerstone.displayImage(this.zoomElement,i),f.cornerstone.setViewport(this.zoomElement,s)}},{key:\"_removeZoomElement\",value:function(){void 0!==this.zoomElement&&(f.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:\"_createMagnificationCanvas\",value:function(e){if(null===e.querySelector(\".magnifyTool\")){var t=document.createElement(\"canvas\");t.classList.add(\"magnifyTool\"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position=\"absolute\",t.style.display=\"none\",e.appendChild(t)}}},{key:\"_destroyMagnificationCanvas\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");n&&t.removeChild(n)}}]),t}(Y),$n=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"PanMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{touchPointers:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Pan\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ReferenceLines\",mixins:[\"enabledOrDisabledBinaryTool\"],configuration:{renderer:ia}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.renderer=null,e.synchronizationContext=null,e}var n;return h()(t,e),r()(t,[{key:\"enabledCallback\",value:(n=oa()(na.a.mark(function e(t){var n,a,o,i=arguments;return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,sa(t);case 4:if(e.sent&&o&&a){e.next=8;break}return console.warn(\"Unable to enable \".concat(this.name,\". Exiting enable callback. Tool will be enabled, but will not render.\")),e.abrupt(\"return\");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case\"end\":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Ze(n.canvasContext.canvas);f.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach(function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)})}}}]),t}(Y),ua=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},da=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Rotate\",strategies:{default:ha,horizontal:va,vertical:ga},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"mouseDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"postMouseDownCallback\",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:\"dragCallback\",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y),ha=function(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=ua(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle},va=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},ga=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},ma=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RotateTouch\",supportedInteractionTypes:[\"TouchRotate\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchRotateCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,f.cornerstone.setViewport(n,a)}}]),t}(Y),fa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ScaleOverlay\",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:[\"enabledOrDisabledBinaryTool\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"enabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=Ze(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=f.cornerstone.metaData.get(\"imagePlaneModule\",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=pa(c,.25,.05),v=pa(c,.05,.15);if(c.width&&c.height&&h&&v){var g=_e.getToolColor(),m=Ie.getToolWidth(),p=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:m},this.configuration);Oe(n,function(e){Qe(e,p),Le(e,i,p.verticalLine.start,p.verticalLine.end,{color:g,lineWidth:m},\"canvas\"),ya(e,i,p),Le(e,i,p.horizontalLine.start,p.horizontalLine.end,{color:g,lineWidth:m},\"canvas\"),xa(e,i,p)})}}else console.warn(\"unable to define rowPixelSpacing or colPixelSpacing from data on \".concat(this.name,\"'s renderToolData\"))}}]),t}(Y),pa=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},ya=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},xa=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},Ta={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function ba(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];return/trident/i.test(n[1])?(e=/\\brv[ :]+(\\d+)/g.exec(t)||[],\"IE \".concat(e[1]||\"\")):\"Chrome\"===n[1]&&null!==(e=t.match(/\\b(OPR|Edge)\\/(\\d+)/))?e.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(e=t.match(/version\\/(\\d+)/i))&&n.splice(1,1,e[1]),n.join(\" \"))}function Ea(){return la||Ma()}function Ma(){var e=ba().split(\" \"),t=e[0],n=e[1],a=Ta[t];return a?a[n]?a[n]:a.default:Ta.default}var Ca={interaction:[],thumbnail:[],prefetch:[]},wa={interaction:0,thumbnail:0,prefetch:0},Ia={interaction:6,thumbnail:6,prefetch:5},Sa=!1,ka=20;function Pa(){Sa&&setTimeout(function(){Oa()},ka)}function _a(e){var t=f.cornerstone,n=e.type;wa[n]++,Sa=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()});else{var s=function(e){return\"prefetch\"===e.type?-5:\"interactive\"===e.type?0:\"thumbnail\"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()})}}function Oa(){var e=Ea();Ia={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(wa.interaction+wa.thumbnail+wa.prefetch),n=0;n1){var i=Q(e,\"stackRenderer\");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=Rn.getStartLoadHandler(),l=Rn.getEndLoadHandler(),c=Rn.getErrorLoadingHandler();if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then(function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}},function(n){var a=r.imageIds[t];c&&c(e,a,n)}),La.startGrabbing(),T(e,x.STACK_SCROLL,u)}}},Ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n)r%=i.imageIds.length;else r=se(r,0,i.imageIds.length-1);if(a)Aa(e,r);else{var s={index:r};i.pending.push(s),function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function e(o){t.imageIds.indexOf(o.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,e),t.pending.length>0&&function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function o(i){t.imageIds.indexOf(i.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,o),t.pending.length>0&&e(t,t.pending[0],a))}),Aa(a,n.index)}}(t,t.pending[0],a))}),Aa(a,n.index)}}(i,s,e)}}};function Ra(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index){e.pending.splice(e.pending.indexOf(t),1);if(e.pending.length>0){Ra(e,e.pending[0],n)}return}var a=function a(o){var i;if(e.imageIds.indexOf(o.detail.image.imageId)===t.index){e.pending.splice(e.pending.indexOf(t),1);n.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);if(e.pending.length>0){Ra(e,e.pending[0],n)}}};n.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);Aa(n,t.index)}}var Ua=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{loop:!1,allowSkipping:!0,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;Ha(a,s?-n:n,i,r)}}]),t}(Y),Na=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Ba=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScroll\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{loop:!1,allowSkipping:!0}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Fa=function(e,t,n,a,o){if(!e)throw new Error(\"getLuminance: parameter element must not be undefined\");t=Math.round(t),n=Math.round(n);var i,r,s,l=f.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"WwwcRegion\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{minWindowWidth:10}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.touchDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.touchEndCallback=e._applyStrategy.bind(ut()(ut()(e))),e.postMouseDownCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseClickCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseUpCallback=e._applyStrategy.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=_e.getColorIfActive({active:!0}),i=Ze(n.canvasContext.canvas);Oe(i,function(e){Ke(e,a,t.handles.start,t.handles.end,{color:o})})}},{key:\"_startOutliningRegion\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return ja(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),f.cornerstone.updateImage(t),!0}},{key:\"_setHandlesAndUpdate\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,f.cornerstone.updateImage(t)}},{key:\"_applyStrategy\",value:function(e){ja(this.handles.start)||ja(this.handles.end)||(e.detail.handles=this.handles,za(e,this.configuration),this._resetHandles())}},{key:\"_resetHandles\",value:function(){this.handles={start:{},end:{}}}}]),t}(Y),ja=function(e){return 0===Object.keys(e).length&&e.constructor===Object},za=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=se(l,0,a.width),c=se(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Fa(o,l,c,u,d),v=Wa(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,f.cornerstone.setViewport(o,g),f.cornerstone.updateImage(o)},Wa=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Wwwc\",strategies:{basicLevelingStrategy:qa},supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{orientation:0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"mouseDragCallback\",value:function(e){this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:\"touchDragCallback\",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y);function qa(e,t){var n=t.orientation,a=e.detail,o=(a.image.maxPixelValue*a.image.slope+a.image.intercept-(a.image.minPixelValue*a.image.slope+a.image.intercept))/1024,i=a.deltaPoints.page.x*o,r=a.deltaPoints.page.y*o;0===n?(a.viewport.voi.windowWidth+=i,a.viewport.voi.windowCenter+=r):(a.viewport.voi.windowWidth+=r,a.viewport.voi.windowCenter+=i)}var Ya=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{minScale:.25,maxScale:20,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Ya(a,r?o/4:-o/4,{maxScale:s,minScale:l});f.cornerstone.setViewport(n,c)}}]),t}(Y),Za=Xa.correctShift,Ja=Xa.changeViewportScale,Qa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Zoom\",strategies:{default:eo,translate:to,zoomToCenter:no},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){$a.call(this,e)}},{key:\"mouseDragCallback\",value:function(e){$a.call(this,e)}}]),t}(Y),$a=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function eo(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],m=Ja(c,r,{maxScale:a,minScale:o});f.cornerstone.setViewport(l,m);var p=f.cornerstone.pageToPixel(l,d,h),y={x:v-p.x,y:g-p.y};y=Za(y,m),c.translation.x-=y.x,c.translation.y-=y.y}function to(e,t){var n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=Ja(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&le(e.detail.startPoints.image,l);var m={x:l.width/2-d,y:l.height/2-h};m=Za(m,v);var f={x:v.translation.x-m.x,y:v.translation.y-m.y};Math.abs(f.x)<.01?v.translation.x=m.x:g.x=f.x/8,Math.abs(f.y)<.01?v.translation.y=m.y:g.y=f.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function no(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;Ja(s,r,{maxScale:a,minScale:o})}var ao=Xa.correctShift,oo=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomTouchPinch\",supportedInteractionTypes:[\"TouchPinch\"],configuration:{minScale:.25,maxScale:20}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchPinchCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var so,lo={48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",13:\"RETURN\",8:\"BACKSPACE\",9:\"TAB\",46:\"DELETE\",12:\"DELETE\",27:\"ESCAPE\",20:\"CAPSLOCK\",173:\"-\",189:\"-\",109:\"-\",61:\"+\",187:\"+\",107:\"+\",219:\"[\",221:\"]\",59:\";\",186:\";\",188:\",\",190:\".\",199:\"/\"},co={\"base/BaseTool\":Y,\"base/BaseAnnotationTool\":Me,\"base/BaseBrushTool\":Cn,\"manipulators/anyHandlesOutsideImage\":re,\"manipulators/getHandleNearImagePoint\":oe,\"manipulators/handleActivator\":ie,\"manipulators/moveAllHandles\":de,\"manipulators/moveHandle\":me,\"manipulators/moveNewHandle\":ye,\"manipulators/moveHandleNearImagePoint\":Te,\"manipulators/findHandleDataNearImagePoint\":be,\"manipulators/moveAnnotation\":Ee,\"mixins/activeOrDisabledBinaryTool\":q.activeOrDisabledBinaryTool,\"mixins/enabledOrDisabledBinaryTool\":q.enabledOrDisabledBinaryTool,\"drawing/getNewContext\":Ze,\"drawing/draw\":Oe,\"drawing/path\":De,\"drawing/setShadow\":Qe,\"drawing/drawLine\":Le,\"drawing/drawLines\":function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"pixel\";De(e,a,function(e){n.forEach(function(n){var a=n.start,i=n.end;if(\"pixel\"===o){var r=f.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)})})},\"drawing/drawJoinedLines\":Ae,\"drawing/drawCircle\":Re,\"drawing/drawEllipse\":Ue,\"drawing/drawRect\":Ke,\"drawing/fillOutsideRect\":function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(r+l,s,-l,c)})},\"drawing/drawTextBox\":Ye,\"drawing/drawArrow\":He,\"drawing/fillBox\":Ge,\"drawing/fillTextLines\":We,\"drawing/drawLink\":Be,\"drawing/drawLinkedTextBox\":Xe,\"drawing/drawHandles\":Ne,\"drawing/textBoxWidth\":qe,\"util/getLuminance\":Fa,\"util/copyPoints\":io,\"util/calculateSUV\":Rt,\"util/setContextToDisplayFontSize\":function(e,t,n){return f.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},\"util/scrollToIndex\":Aa,\"util/scroll\":Ha,\"util/roundToDecimal\":nt,\"util/projectPatientPointToImagePlane\":Nn,\"util/imagePointToPatientPoint\":Bn,\"util/planePlaneIntersection\":Fn,\"util/pointInsideBoundingBox\":ne,\"util/makeUnselectable\":function(e,t){e.style.webkitUserSelect=\"none\",e.style.webkitTouchCallout=\"none\",e.style.mozUserSelect=\"none\",e.style.msUserSelect=\"none\",e.style.oUserSelect=\"none\",e.style.khtmlUserSelect=\"none\",e.style.userSelect=\"none\",e.unselectable=\"on\",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents=\"none\")},\"util/getRGBPixels\":mn,\"util/getDefaultSimultaneousRequests\":Ma,\"util/getMaxSimultaneousRequests\":Ea,\"util/getBrowserInfo\":ba,\"util/isMobileDevice\":function(){return new RegExp(\"Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\").test(navigator.userAgent)},\"util/angleBetweenPoints\":ua,\"util/getKeyFromKeyCode\":function(e){return lo[e]},\"util/numbersWithCommas\":Nt,\"util/lineSegDistance\":tt,\"util/triggerEvent\":T,\"util/convertToVectro3\":Un,\"util/ellipseUtils\":Ft,\"util/freehandUtils\":rn,\"util/brushUtils\":wn,\"util/zoomUtils\":Xa},uo=function(e){return co[e]},ho=!0,vo=200;function go(e){if(\"number\"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function mo(){ho=!1}function fo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_DOUBLE_CLICK,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o);console.log(\"double-click: \".concat(go(e))),T(t,a,{event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function po(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){so=setTimeout(mo,vo),t.removeEventListener(\"mousemove\",yo);var a={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=f.cornerstone.pixelToCanvas(t,a.image);var o=io(a),i={event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:x.MOUSE_DOWN};T(i.element,x.MOUSE_DOWN,i)&&(i.type=x.MOUSE_DOWN_ACTIVATE,T(i.element,x.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",function e(i){clearTimeout(so);var s=x.MOUSE_UP;ho&&(s=x.MOUSE_CLICK);var l={page:f.cornerstoneMath.point.pageToPoint(i),image:f.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=f.cornerstone.pixelToCanvas(t,l.image);var c={page:f.cornerstoneMath.point.subtract(l.page,o.page),image:f.cornerstoneMath.point.subtract(l.image,o.image),client:f.cornerstoneMath.point.subtract(l.client,o.client),canvas:f.cornerstoneMath.point.subtract(l.canvas,o.canvas)};console.log(\"mouseup: \".concat(go(i)));var u={event:i,buttons:go(i),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};T(u.element,s,u),document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e),t.addEventListener(\"mousemove\",yo),ho=!0})}function r(e){var i=x.MOUSE_DRAG,r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,o.page),image:f.cornerstoneMath.point.subtract(r.image,o.image),client:f.cornerstoneMath.point.subtract(r.client,o.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,o.canvas)};console.log(\"mousemove \".concat(go(e)));var l={buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};T(l.element,i,l),o=io(r)}}function yo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_MOVE,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o),r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,i.page),image:f.cornerstoneMath.point.subtract(r.image,i.image),client:f.cornerstoneMath.point.subtract(r.client,i.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,i.canvas)};T(t,a,{viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=io(r)}}function xo(e){e.removeEventListener(\"mousedown\",po),e.removeEventListener(\"mousemove\",yo),e.removeEventListener(\"dblclick\",fo)}var To={enable:function(e){xo(e),e.addEventListener(\"mousedown\",po),e.addEventListener(\"mousemove\",yo),e.addEventListener(\"dblclick\",fo)},disable:xo},bo=function(e){var t=0,n=0,a=0,o=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),a=10*t,o=10*n,\"deltaY\"in e&&(o=e.deltaY),\"deltaX\"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function Eo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){e.preventDefault();var a=e.pageX,o=e.pageY,i=f.cornerstone.pageToPixel(t,a,o),r=bo(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:f.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};T(t,x.MOUSE_WHEEL,h)}}function Mo(e){e.removeEventListener(\"wheel\",Eo,{passive:!1})}var Co,wo,Io={enable:function(e){Mo(e),e.addEventListener(\"wheel\",Eo,{passive:!1})},disable:Mo},So=2e3,ko={mouse:0,touch:1};function Po(e,t){var n=Date.now();if(e!==Co){if(n-wo<=So)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Co=e}wo=n}var _o=Po.bind(null,ko.mouse),Oo=Po.bind(null,ko.touch);function Do(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.addEventListener(t,a,{passive:!1})})}function Lo(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.removeEventListener(t,a)})}var Ao=[\"mousedown\",\"mouseup\"],Ho=[\"touchstart\",\"touchend\"];function Ro(e){Lo(e,Ao,ko.mouse),Lo(e,Ho,ko.touch)}var Uo,No,Bo,Fo,Vo,jo,zo,Wo,Go,qo={enable:function(e){Ro(e),Do(e,Ao,ko.mouse),Do(e,Ho,ko.touch)},disable:Ro},Yo=1,Xo=0,Ko=!1,Zo=!1,Jo=700,Qo=5,$o=\"touchInput\";function ei(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Zo=!1,clearTimeout(zo)),e.type){case\"tap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"doubletap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.DOUBLE_TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"pinchstart\":Zo=!1,clearTimeout(zo),Yo=1;break;case\"pinchmove\":if(Zo=!1,clearTimeout(zo),!0===Ko){Yo=e.scale,Ko=!1;break}o=(e.scale-Yo)/Yo,(Uo={page:e.center,image:f.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PINCH,Vo={event:e,startPoints:Uo,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},T(t,a,Vo),Yo=e.scale;break;case\"touchstart\":Yo=1,clearTimeout(zo),clearTimeout(jo),jo=setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_START,e.touches.length>1&&(a=x.MULTI_TOUCH_START),Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},!0===T(t,a,Vo)&&(a=x.TOUCH_START_ACTIVE,e.touches.length>1&&(a=x.MULTI_TOUCH_START_ACTIVE),Vo.type=a,T(t,a,Vo)),Bo=io(Uo)},50),Zo=!0,Wo=0,zo=setTimeout(function(){Zo&&((No={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PRESS,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo))},Jo);break;case\"touchend\":Yo=1,Zo=!1,clearTimeout(zo),setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:f.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_END,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},T(t,a,Vo)},50);break;case\"panmove\":i={x:e.deltaX-Go.x,y:e.deltaY-Go.y},Go={x:e.deltaX,y:e.deltaY},(No={page:{x:Bo.page.x+i.x,y:Bo.page.y+i.y},image:f.cornerstone.pageToPixel(t,Bo.page.x+i.x,Bo.page.y+i.y),client:{x:Bo.client.x+i.x,y:Bo.client.y+i.y}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},(Wo+=Math.sqrt(Fo.page.x*Fo.page.x+Fo.page.y*Fo.page.y))>Qo&&(Zo=!1,clearTimeout(zo)),a=x.TOUCH_DRAG,e.pointers.length>1&&(a=x.MULTI_TOUCH_DRAG),Vo={viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,numPointers:e.pointers.length,type:a,isTouchEvent:!0},T(t,a,Vo),Bo=io(No);break;case\"panstart\":Go={x:e.deltaX,y:e.deltaY},(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Bo=io(No);break;case\"panend\":if(Zo=!1,clearTimeout(zo),!Bo)return!1;(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},a=x.TOUCH_DRAG_END,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,type:a,isTouchEvent:!0},T(t,a,Vo),2===e.pointers.length-e.changedPointers.length&&(Ko=!0);break;case\"rotatemove\":Zo=!1,clearTimeout(zo),r=e.rotation-Xo,Xo=e.rotation,a=x.TOUCH_ROTATE,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},T(t,a,Vo)}return!1}}function ti(e){qo.disable(e);[\"touchstart\",\"touchend\"].forEach(function(t){e.removeEventListener(t,ei)});var t=jn($o,e).hammer;t&&t.off(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei)}var ni={enable:function(e){ti(e);var t=f.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:\"doubletap\",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei),qo.enable(e),[\"touchstart\",\"touchend\"].forEach(function(t){e.addEventListener(t,ei,{passive:!1})});var c=jn($o,e);c.hammer=a,zn($o,e,c)},disable:ti},ai=function(e,t,n){return t.filter(function(t){return t.element===e&&\"active\"===t.mode&&(void 0===n||t.options[\"is\".concat(n,\"Active\")])})};\"createImageBitmap\"in window||(window.createImageBitmap=function(){var e=oa()(na.a.mark(function e(t){return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e){var n=document.createElement(\"img\");n.addEventListener(\"load\",function(){e(this)});var a=document.createElement(\"canvas\");a.width=t.width,a.height=t.height,a.getContext(\"2d\").putImageData(t,0,0,0,0,a.width,a.height),n.src=a.toDataURL()}));case 1:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}());var oi=_.modules.brush,ii=oi.state,ri=oi.getters,si=oi.setters;function li(e,t,n){var a=e.detail.element,o=n.toolData,i=n.visibleSegmentations;return!!o.data[t].pixelData&&(!!i[t]||ii.drawColorId===t&&ai(a,_.state.tools).filter(function(e){return e instanceof Cn}).length>0)}function ci(e,t,n){var a=n.toolData,o=n.imageBitmapCache,i=n.visibleSegmentations;o&&o[t]&&function(e,t,n){var a=e.detail,o=Ze(a.canvasContext.canvas),i=f.cornerstone.pixelToCanvas(a.element,{x:0,y:0}),r=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:0}),s=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:a.image.height}),l=f.cornerstoneMath.point.distance(i,r),c=f.cornerstoneMath.point.distance(r,s),u=a.canvasContext.canvas,d=a.viewport;o.imageSmoothingEnabled=!1,o.globalAlpha=function(e){if(e)return ii.alpha;return ii.hiddenButActiveAlpha}(n),$e(o,u,d);var h={x:d.translation.x*d.scale,y:d.translation.y*d.scale};o.drawImage(t,u.width/2-l/2+h.x,u.height/2-c/2+h.y,l,c),o.globalAlpha=1,et(o)}(e,o[t],i[t]),a.data[t].invalidated&&function(e,t,n){var a=e.detail,o=a.element,i=f.cornerstone.getEnabledElement(o),r=t.data[n].pixelData,s=ii.colorMapId,l=[[0,0,0,0],f.cornerstone.colors.getColormap(s).getColor(n)],c=new ImageData(a.image.width,a.image.height),u={stats:{},minPixelValue:0,getPixelData:function(){return r}};f.cornerstone.storedPixelDataToCanvasImageDataColorLUT(u,l,c.data),window.createImageBitmap(c).then(function(e){si.imageBitmapCacheForElement(i.uuid,n,e),t.data[n].invalidated=!1,f.cornerstone.updateImage(a.element)})}(e,a,t)}var ui=function(e){var t=e.detail.element,n=S.tools.filter(function(e){return e.element===t&&(\"active\"===e.mode||\"passive\"===e.mode||\"enabled\"===e.mode)});n.filter(function(e){return e instanceof Cn}).length>0&&function(e){var t=e.detail,n=t.element,a=Cn.getNumberOfColors(),o=Q(n,Cn.getReferencedToolDataName());if(!o){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\")?S.clickProximity:S.touchProximity;return t.filter(function(t){for(var o=Q(e,t.name),i=0;i0})},pi=function(e){if(!S.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mi(n,k.mouseTools()),i=o.filter(function(e){return\"active\"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preMouseDownCallback});if(r)if(r.preMouseDownCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"mouse\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"mouse\")}else{var g=o.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"mouse\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"mouse\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postMouseDownCallback});if(p)if(p.postMouseDownCallback(e))return}}}},yi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=ai(n,k.mouseTools());if(0!==(a=a.filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive})).length){var o=a[0];if(\"function\"==typeof o.preMouseDownActivateCallback)if(o.preMouseDownActivateCallback(e))return;o.addNewMeasurement?o.addNewMeasurement(e,\"mouse\"):o instanceof Me&&function(e,t){e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(J(a,t.name,o),f.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?me:ye)(n,t.name,o,o.handles.end,t.options,\"mouse\"))}(e,o)}}},xi=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element;if(0!==(t=(t=(t=ai(a,k.mouseTools())).filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive})).filter(function(e){return\"function\"==typeof e.mouseDragCallback})).length)t[0].mouseDragCallback(e)}},Ti=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element,o=n.currentPoints;S.mousePositionImage=o.image;var i=(t=mi(a,k.mouseTools())).filter(function(e){return\"active\"===e.mode&&e.options.isMouseActive}),r=!1;i.length>0&&(r=i.some(function(e){return e.hasCursor})),t=fi(a,t);for(var s=0;s0&&function(e){var t=e.detail,n=t.element,a=Q(n,Cn.getReferencedToolDataName());if(!a){for(var o=Cn.getNumberOfColors(),i=0;i0){var i=o[0],r=Q(n,i.name),s=r.data.find(function(e){return void 0!==oe(n,e.handles,a,28)});r.data.active=!0,s.active=!0,f.cornerstone.updateImage(n);var l=Object.assign({},{doneMovingCallback:function(){Di(r)}},i.options);return me(e.detail,i.name,r.data,s,l,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var c=t.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a)})});if(c.length>0){var u=c[0],d=Q(n,u.name),h=d.data.find(function(e){return u.pointNearTool(n,e,a)});h.active=!0,f.cornerstone.updateImage(n);var v=Object.assign({},{doneMovingCallback:function(){Di(d)}},u.options);return de(e.detail,u.name,h,null,v,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var g=ai(n,k.touchTools());return g.length>0&&g[0].touchStartActiveCallback?g[0].touchStartActiveCallback(e):Oi(e),!1}},Hi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mi(n,k.touchTools()),i=o.filter(function(e){return\"active\"===e.mode&&e.options.isTouchActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preTouchStartCallback});if(r)if(r.preTouchStartCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"touch\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a,\"touch\"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"touch\")}else{var g=s.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"touch\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"touch\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postTouchStartCallback});if(p)if(p.postTouchStartCallback(e))return}}}},Ri=vi.bind(null,\"DoubleTap\",\"doubleTapCallback\"),Ui=vi.bind(null,\"Touch\",\"touchDragCallback\"),Ni=vi.bind(null,\"Touch\",\"touchEndCallback\"),Bi=vi.bind(null,\"TouchPinch\",\"touchPinchCallback\"),Fi=vi.bind(null,\"Touch\",\"touchPressCallback\"),Vi=vi.bind(null,\"TouchRotate\",\"touchRotateCallback\"),ji=function(e){e.addEventListener(x.TAP,Ai),e.addEventListener(x.TOUCH_START,Hi,{passive:!1}),e.addEventListener(x.TOUCH_DRAG,Ui,{passive:!1}),e.addEventListener(x.TOUCH_END,Ni),e.addEventListener(x.TOUCH_START_ACTIVE,Oi),e.addEventListener(x.TOUCH_PRESS,Fi),e.addEventListener(x.DOUBLE_TAP,Ri),e.addEventListener(x.TOUCH_PINCH,Bi),e.addEventListener(x.TOUCH_ROTATE,Vi),e.addEventListener(x.MULTI_TOUCH_DRAG,_i)},zi=function(e){e.removeEventListener(x.TAP,Ai),e.removeEventListener(x.TOUCH_START,Hi),e.removeEventListener(x.TOUCH_DRAG,Ui),e.removeEventListener(x.TOUCH_END,Ni),e.removeEventListener(x.TOUCH_START_ACTIVE,Oi),e.removeEventListener(x.TOUCH_PRESS,Fi),e.removeEventListener(x.DOUBLE_TAP,Ri),e.removeEventListener(x.TOUCH_PINCH,Bi),e.removeEventListener(x.TOUCH_ROTATE,Vi),e.removeEventListener(x.MULTI_TOUCH_DRAG,_i)},Wi=function(e,t,n){var a=new t(n);O(e,a.name)?console.warn(\"\".concat(a.name,\" has already been added to the target element\")):(a.element=e,_.state.tools.push(a))},Gi=function(e,t){qi(e,t),_.state.enabledElements.forEach(function(n){Wi(n,e,t)})},qi=function(e,t){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var n=new e(t);void 0!==_.state.globalTools[n.name]?console.warn(\"\".concat(n.name,\" has already been added globally\")):_.state.globalTools[n.name]={tool:e,configuration:t,activeBindings:[]}}},Yi=function(e){console.log(\"EVENT:ELEMENT_ENABLED\");var t=e.detail.element;di(t),ki(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.enable(t),Io.enable(t),wi(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.enable(t),ji(t)),Xi(t)},Xi=function(e){_.state.enabledElements.push(e),_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;Object.keys(_.state.globalTools).forEach(function(t){var n=_.state.globalTools[t],a=n.tool,o=n.configuration;Wi(e,a,o)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;var t={active:D,passive:N,enabled:R,disabled:A};_.state.globalToolChangeHistory.forEach(function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)})}(e)};var Ki=function(e){console.info(\"EVENT:ELEMENT_DISABLED\");var t=e.detail.element;hi(t),Pi(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.disable(t),Io.disable(t),Ii(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.disable(t),zi(t)),Zi(t),Ji(t)},Zi=function(e){_.state.tools=_.state.tools.filter(function(t){return t.element!==e})},Ji=function(e){_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)})}(e);var t=_.state.enabledElements.findIndex(function(t){return t===e});t>-1?_.state.enabledElements.splice(t,1):console.warn(\"unable to remove element\")};var Qi,$i=function(){window.removeEventListener(\"resize\",er,!1)};function er(){Qi||(Qi=setTimeout(function(){Qi=null,tr()},66))}var tr=function(){S.enabledElements.forEach(function(e){f.cornerstone.resize(e)})},nr=function(){$i(),window.addEventListener(\"resize\",er,!1)},ar=function(e){var t;!function(){!function(){var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Yi),e.events.removeEventListener(n,Ki)}();var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Yi),e.events.addEventListener(n,Ki)}(),t=_.modules,Object.keys(t).forEach(function(e){\"function\"==typeof t[e].onRegisterCallback&&t[e].onRegisterCallback()}),nr(),_.modules.globalConfiguration.state=Object.assign({},_.modules.globalConfiguration.state,e)};var or,ir=\"stackPrefetch\",rr=\"prefetch\",sr={maxImagesToPrefetch:1/0},lr=10;var cr=function(e){return Math.max.apply(null,e)},ur=function(e){return Math.min.apply(null,e)};function dr(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0],a=Q(e,ir);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort(function(e,t){return e-t}),o.indicesToRequest.slice().forEach(function(e){var t=n.imageIds[e];t&&(f.cornerstone.imageCache.getImageLoadObject(t)&&b(e))}),o.indicesToRequest.length){La.clearRequestStack(rr);for(var i,r,s,l,c,u,d=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=[],l=[],i.forEach(function(e){er&&l.push(e)}),{low:i.indexOf(cr(s)),high:i.indexOf(ur(l))}),h=Rn.getErrorLoadingHandler(),v=d.low,g=d.high;v>=0||gsr.maxImagesToPrefetch,y=o.indicesToRequest[g]-m>sr.maxImagesToPrefetch,x=!p&&v>=0,T=!y&&g-1&&o.indicesToRequest.splice(t,1)}function E(e){b(n.imageIds.indexOf(e.imageId))}function M(t){console.log(\"prefetch errored: \".concat(t)),h&&h(e,c,t,\"stackPrefetch\")}}function hr(e){return function(t){var n,a=t.detail;try{n=Q(e,\"stack\")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=Q(e,ir);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function vr(e){clearTimeout(or),or=setTimeout(function(){var t=e.target;try{dr(t)}catch(e){return}},lr)}var gr={enable:function(e){Q(e,ir).data=[];var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:function(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),J(e,ir,a),dr(e),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr),e.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var i=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),f.cornerstone.events.addEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else console.warn(\"A stack that should not be cached was given the stackPrefetch\")}},disable:function(e){clearTimeout(or),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var t=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=Q(e,ir);n&&n.data.length&&(n.data[0].enabled=!1,La.clearRequestStack(rr))},getConfiguration:function(){return sr},setConfiguration:function(e){var t;sr=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,la=t)}},mr=function(){function e(){o()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return r()(e,[{key:\"render\",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error(\"FusionRenderer: render - Image ID Index is not an integer\");if(!this.findImageFn)throw new Error(\"No findImage function has been defined\");t||(t=Q(e,\"stack\").data);var a=f.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then(function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach(function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then(function(t){a.setLayerImage(e,t,c),a.updateImage(e)}):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))})})}}]),e}(),fr={};fr.FusionRenderer=mr;var pr=fr,yr=\"playClip\";function xr(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Tr(e,t){var n,a;if(void 0===e)throw new Error(\"playClip: element must not be undefined\");var o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i,r=f.cornerstone;if(o.data.length>1){var s=Q(e,\"stackRenderer\");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=Q(e,yr);c&&c.data&&c.data.length?xr(n=c.data[0]):J(e,yr,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,(\"number\"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return xr(n),void function(e){var t={element:e};T(e,x.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rn.getStartLoadHandler(),a=Rn.getEndLoadHandler(),s=Rn.getErrorLoadingHandler(),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then(function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}},function(t){var n=l.imageIds[c];s&&s(e,n,t)}))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout(function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()},0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function br(e){var t=Q(e,yr);t&&t.data&&t.data.length&&xr(t.data[0])}var Er=function(e,t){var n=_.state.tools.findIndex(function(n){return n.element===e&&n.name===t});n>=0&&_.state.tools.splice(n,1)},Mr=function(e){Cr(e),_.state.enabledElements.forEach(function(t){Er(t,e)})},Cr=function(e){_.modules.globalConfiguration.state.globalToolSyncEnabled&&_.state.globalTools[e]&&delete _.state.globalTools[e]},wr=function(e,t,n){var a=O(e,t);a&&a.mergeOptions(n)},Ir=function(e,t){S.enabledElements.forEach(function(e){wr(e,t)})};function Sr(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var kr=[];function Pr(e,t){var n=Z(e);n||(n=K);var a=[\"stack\",\"stackPrefetch\",\"playClip\",\"volume\",\"slab\",\"referenceLines\",\"crosshairs\",\"stackRenderer\"];t&&(a=a.concat(t));var o=Sr(a,n);kr.push(o),te(e,o)}var _r={newStackSpecificToolStateManager:Sr,addStackStateManager:Pr};function Or(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else{if(!(r.z>1e-4&&r.z>r.x&&r.z>r.y))break;n+=i,r.z=0}return n},invertOrientationString:function(e){var t=e.replace(\"H\",\"f\");return t=(t=(t=(t=(t=(t=t.replace(\"F\",\"h\")).replace(\"R\",\"l\")).replace(\"L\",\"r\")).replace(\"A\",\"p\")).replace(\"P\",\"a\")).toUpperCase()}},Ar=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"image/png\",a=e.querySelector(\"canvas\");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement(\"a\");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent(\"MouseEvents\");r.initMouseEvent(\"click\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent(\"onclick\")},Hr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return Object.keys(P).some(function(t){return t===e})}(e)){if(console.warn(\"A module with the name \".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting module \".concat(e))}P[e]=t};var Rr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return void 0!==q[e]}(e)){if(console.warn(\"mixins/\".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting mixins/\".concat(e))}q[e]=t,co[\"mixins/\".concat(e)]=q[e]};var Ur=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t){return void 0!==co[\"\".concat(e,\"/\").concat(t)]}(e,t)){if(console.warn(\"\".concat(e,\"/\").concat(t,\" is already registered\")),!a)return;console.warn(\"Overwriting \".concat(e,\"/\").concat(t))}co[\"\".concat(e,\"/\").concat(t)]=n};var Nr=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t,n){if(!e)return console.warn(\"The type must be given in order to register.\"),!1;if(!t)return console.warn(\"The \".concat(e,\" must have a name in order to register.\")),!1;if(\"object\"!==y()(n)&&\"function\"!=typeof n)return console.warn(\"The \".concat(n,\" is a \").concat(y()(n),\", it should be an Object or a function.\")),!1;return!0}(e,t,n))switch(e){case\"module\":Hr(t,n,a);break;case\"mixin\":Rr(t,n,a);break;default:Ur(e,t,n,a),console.warn(\"unrecognised type \".concat(e,\", not registering \").concat(t))}};var Br=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=0;n=0;--i){var r=this.tryEntries[i],s=r.completion;if(\"root\"===r.tryLoc)return a(\"end\");if(r.tryLoc<=this.prev){var l=o.call(r,\"catchLoc\"),c=o.call(r,\"finallyLoc\");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,\"finallyLoc\")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if(\"throw\"===a.type){var o=a.arg;P(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:O(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=n),m}}}function T(e,t,n,a){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),r=new _(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error(\"Generator is already running\");if(a===g){if(\"throw\"===o)throw i;return D()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===m)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);a=v;var l=b(e,t,n);if(\"normal\"===l.type){if(a=n.done?g:h,l.arg===m)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(a=g,n.method=\"throw\",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}function E(){}function M(){}function C(){}function w(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise(function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if(\"throw\"!==s.type){var l=s.arg,c=l.value;return c&&\"object\"==typeof c&&o.call(c,\"__await\")?Promise.resolve(c.__await).then(function(e){t(\"next\",e,i,r)},function(e){t(\"throw\",e,i,r)}):Promise.resolve(c).then(function(e){l.value=e,i(l)},function(e){return t(\"throw\",e,i,r)})}r(s.arg)}(n,a,t,i)})}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=n,S(e,t),\"throw\"===t.method))return m;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return m}var o=b(a,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,m;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,m):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,m)}function k(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 P(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function O(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(11),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t\\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","import dicomParser from 'dicom-parser';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';\nimport cornerstoneMath from 'cornerstone-math';\nimport cornerstoneTools from 'cornerstone-tools';\nimport Hammer from 'hammerjs';\nimport OHIF from 'ohif-core';\n//import sha from './sha.js';\n//import version from './version.js';\nimport { homepage } from '../package.json';\n\nwindow.info = {\n //sha,\n //version,\n homepage\n};\n\n// For debugging\nwindow.cornerstone = cornerstone;\nwindow.cornerstoneTools = cornerstoneTools;\nwindow.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\ncornerstoneTools.external.cornerstone = cornerstone;\ncornerstoneTools.external.Hammer = Hammer;\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\ncornerstoneTools.init();\n\ncornerstoneWADOImageLoader.external.cornerstone = cornerstone;\ncornerstoneWADOImageLoader.external.dicomParser = dicomParser;\n\nOHIF.external.cornerstone = cornerstone;\nOHIF.external.cornerstoneTools = cornerstoneTools;\nOHIF.external.cornerstoneMath = cornerstoneMath;\nOHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\n// TODO: Is there a better way to guess ROOT_URL?\nlet ROOT_URL = window.location.pathname;\n\n// If the page we are on is not a subset of the expected homepage\n// provided in the package.json file, we might be doing local development.\n// In this case, set the base URL to the current location's origin.\nif (homepage.includes(window.location.origin) === false) {\n ROOT_URL = window.location.origin;\n}\n\nconst config = {\n maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),\n startWebWorkersOnDemand: true,\n webWorkerPath: ROOT_URL + '/cornerstoneWADOImageLoaderWebWorker.min.js',\n taskConfiguration: {\n decodeTask: {\n loadCodecsOnStartup: true,\n initializeCodecsOnStartup: false,\n codecsPath: ROOT_URL + '/cornerstoneWADOImageLoaderCodecs.min.js',\n usePDFJS: false,\n strict: false\n }\n }\n};\n\ncornerstoneWADOImageLoader.webWorkerManager.initialize(config);\n\n\nOHIF.user.getAccessToken = () => {\n // TODO: Get the Redux store from somewhere else\n const state = window.store.getState();\n if (!state.oidc || !state.oidc.user) {\n return;\n }\n\n return state.oidc.user.access_token;\n}\n\ncornerstoneWADOImageLoader.configure({\n beforeSend: function(xhr) {\n const headers = OHIF.DICOMWeb.getAuthorizationHeader();\n\n if (headers.Authorization) {\n xhr.setRequestHeader(\"Authorization\", headers.Authorization);\n }\n }\n});\n\n// Set the tool font and font size\n// context.font = \"[style] [variant] [weight] [size]/[line height] [font family]\";\nconst fontFamily =\n 'Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif';\ncornerstoneTools.textStyle.setFont(`16px ${fontFamily}`);\n\n// Set the tool width\ncornerstoneTools.toolStyle.setToolWidth(2);\n// Set color for inactive tools\ncornerstoneTools.toolColors.setToolColor('rgb(255, 255, 0)');\n\n// Set color for active tools\ncornerstoneTools.toolColors.setActiveColor('rgb(0, 255, 0)');\n\ncornerstoneTools.store.state.touchProximity = 40;\n","const defaultState = {\n leftSidebarOpen: true,\n rightSidebarOpen: false,\n}\n\nconst ui = (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LEFT_SIDEBAR_OPEN':\n return Object.assign({}, state, { leftSidebarOpen: action.state });\n case 'SET_RIGHT_SIDEBAR_OPEN':\n return Object.assign({}, state, { rightSidebarOpen: action.state });\n default:\n return state;\n }\n};\n\nexport default ui;\n","import React, { PureComponent, Component } from 'react';\nimport reactDom from 'react-dom';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".CineDialog {\\n background: var(--ui-gray-darkest);\\n color: var(--text-secondary-color);\\n filter: drop-shadow(0 0 3px var(--ui-gray-darkest));\\n border: none;\\n border-radius: 8px;\\n width: inherit;\\n}\\n.CineDialog h5 {\\n font-size: 20px;\\n line-height: 35px;\\n margin: 0;\\n}\\n.CineDialog h5,\\n.CineDialog label {\\n font-weight: 400;\\n}\\n.CineDialog .cine-navigation,\\n.CineDialog .cine-controls,\\n.CineDialog .cine-options {\\n cursor: default;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"] {\\n background-color: transparent;\\n border: 0 none;\\n outline: 0 none;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"]::-ms-tooltip {\\n display: none;\\n}\\n.CineDialog .double-row-style {\\n box-sizing: border-box;\\n width: 290px;\\n height: 80px;\\n padding: 10px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .double-row-style .cine-navigation {\\n position: absolute;\\n right: 16px;\\n top: 10px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn {\\n padding: 0 4px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 32px;\\n}\\n.CineDialog .double-row-style .cine-controls {\\n left: 0px;\\n}\\n.CineDialog .double-row-style .cine-options {\\n padding: 0px 0;\\n}\\n.CineDialog .double-row-style .cine-options .fps-section {\\n width: 175px;\\n float: left;\\n}\\n.CineDialog .double-row-style .cine-options .fps {\\n float: right;\\n margin: 5px 20px 0 0;\\n}\\n.CineDialog .single-row-style {\\n box-sizing: content-box;\\n width: 425px;\\n height: 45px;\\n padding: 4px 8px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .single-row-style .cine-navigation {\\n float: right;\\n overflow: hidden;\\n padding-right: 12px;\\n position: relative;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn {\\n padding: 0 2px;\\n margin: 0 0 0 2px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn:first-of-type {\\n margin-left: 0;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 45px;\\n}\\n.CineDialog .single-row-style .cine-controls {\\n position: relative;\\n float: left;\\n overflow: hidden;\\n}\\n.CineDialog .single-row-style .cine-controls .btn {\\n font-size: 22px;\\n line-height: 45px;\\n min-width: 28px;\\n padding: 0 0px;\\n margin: 0 4px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-options {\\n display: block;\\n position: relative;\\n width: 150px;\\n float: left;\\n overflow: hidden;\\n padding: 0;\\n margin: 0 0 0 10px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section {\\n display: block;\\n float: left;\\n width: 80px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section input[type=\\\"range\\\"] {\\n line-height: 45px;\\n height: 45px;\\n}\\n.CineDialog .single-row-style .cine-options .fps {\\n display: block;\\n width: 68px;\\n float: left;\\n padding: 0;\\n margin: 0 0 0 2px;\\n text-align: center;\\n line-height: 45px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n}\\n.CineDialog .btn {\\n color: var(--text-secondary-color);\\n background-color: transparent;\\n border: 0;\\n border-radius: 4px;\\n font-size: 15px;\\n font-weight: normal;\\n height: 37px;\\n line-height: 37px;\\n padding: 0 12px;\\n}\\n.CineDialog .btn:hover,\\n.CineDialog .btn:active,\\n.CineDialog .btn.active {\\n color: var(--hover-color);\\n}\\n.CineDialog .btn[disabled]:hover {\\n color: inherit;\\n}\\n.CineDialog .btn[disabled]:active {\\n color: var(--text-secondary-color);\\n}\\n.CineDialog .btn.btn-primary,\\n.CineDialog .btn.btn-secondary,\\n.CineDialog .btn.btn-danger {\\n transition: background-color 0.3s ease;\\n}\\n.CineDialog .btn.btn-primary:hover,\\n.CineDialog .btn.btn-secondary:hover,\\n.CineDialog .btn.btn-danger:hover,\\n.CineDialog .btn.btn-primary:active,\\n.CineDialog .btn.btn-secondary:active,\\n.CineDialog .btn.btn-danger:active,\\n.CineDialog .btn.btn-primary:focus,\\n.CineDialog .btn.btn-secondary:focus,\\n.CineDialog .btn.btn-danger:focus {\\n opacity: 0.8;\\n}\\n.CineDialog .btn.btn-primary {\\n background-color: var(--active-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-secondary {\\n background-color: var(--text-secondary-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-danger {\\n background-color: var(--text-destructive-color);\\n color: var(--text-primary-color);\\n}\\n.CineDialog .btn.active {\\n box-shadow: inset 1px 1px 2px var(--ui-gray-darkest);\\n}\\n\";\nstyleInject(css);\n\nvar CineDialog =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CineDialog, _PureComponent);\n\n function CineDialog(props) {\n var _this;\n\n _classCallCheck(this, CineDialog);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CineDialog).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var target = event.target;\n var value = target.value;\n\n if (target.type === 'range') {\n value = parseFloat(target.value);\n }\n\n var name = target.name;\n\n _this.setState(_defineProperty({}, name, value));\n\n if (name === 'cineFrameRate' && _this.props.onFrameRateChanged) {\n _this.props.onFrameRateChanged(parseFloat(value));\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickPlayPause\", function () {\n var value = !_this.state.isPlaying;\n\n _this.setState({\n isPlaying: value\n });\n\n if (_this.props.onPlayPauseChanged) {\n _this.props.onPlayPauseChanged(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickNextButton\", function (event) {\n if (_this.props.onClickNextButton) {\n _this.props.onClickNextButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickBackButton\", function (event) {\n if (_this.props.onClickBackButton) {\n _this.props.onClickBackButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToStart\", function (event) {\n if (_this.props.onClickSkipToStart) {\n _this.props.onClickSkipToStart(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToEnd\", function (event) {\n if (_this.props.onClickSkipToEnd) {\n _this.props.onClickSkipToEnd(event);\n }\n });\n\n _this.state = {\n cineFrameRate: props.cineFrameRate,\n isPlaying: props.isPlaying\n };\n return _this;\n }\n\n _createClass(CineDialog, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // TODO: Not sure if we should just switch this to a stateless\n // fully-controlled component instead\n if (this.props.isPlaying !== prevProps.isPlaying || this.props.isPlaying !== this.state.isPlaying) {\n this.setState({\n isPlaying: this.props.isPlaying\n });\n }\n\n if (this.props.cineFrameRate !== prevProps.cineFrameRate || this.props.cineFrameRate !== this.state.cineFrameRate) {\n this.setState({\n cineFrameRate: this.props.cineFrameRate\n });\n }\n }\n }, {\n key: \"render\",\n // TODO:\n // - Add next / previous display set buttons which just call\n // onClickNextDisplaySet and onClickPreviousDisplaySet which are passed in as props.\n // See https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.html#L38\n // - Add 'isEnabled' prop: https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.js#L301\n value: function render() {\n return React.createElement(\"div\", {\n className: \"CineDialog\"\n }, React.createElement(\"div\", {\n className: \"noselect double-row-style\"\n }, React.createElement(\"div\", {\n className: \"cine-controls\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"cineFirstButton\",\n title: \"Skip to first image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToStart\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-backward\"\n })), React.createElement(\"button\", {\n id: \"cineBackButton\",\n title: \"Previous image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickBackButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-backward\"\n })), React.createElement(\"button\", {\n id: \"cinePlayButton\",\n title: \"Play / Stop\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickPlayPause\n }, React.createElement(\"i\", {\n className: this.state.isPlaying ? 'fa fa-lg fa-stop' : 'fa fa-lg fa-play'\n })), React.createElement(\"button\", {\n id: \"cineNextButton\",\n title: \"Next image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickNextButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-forward\"\n })), React.createElement(\"button\", {\n id: \"cineLastButton\",\n title: \"Skip to last image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToEnd\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-forward\"\n })))), React.createElement(\"div\", {\n className: \"cine-options\"\n }, React.createElement(\"div\", {\n className: \"fps-section\"\n }, React.createElement(\"input\", {\n type: \"range\",\n name: \"cineFrameRate\",\n id: \"cineSlider\",\n min: this.props.cineMinFrameRate,\n max: this.props.cineMaxFrameRate,\n step: this.props.cineStepFrameRate,\n value: this.state.cineFrameRate,\n onChange: this.handleInputChange\n })), React.createElement(\"span\", {\n className: \"fps\"\n }, this.state.cineFrameRate.toFixed(1), \" fps\"))));\n }\n }]);\n\n return CineDialog;\n}(PureComponent);\n\n_defineProperty(CineDialog, \"propTypes\", {\n cineMinFrameRate: propTypes.number.isRequired,\n cineMaxFrameRate: propTypes.number.isRequired,\n cineStepFrameRate: propTypes.number.isRequired,\n cineFrameRate: propTypes.number.isRequired,\n isPlaying: propTypes.bool.isRequired,\n onPlayPauseChanged: propTypes.func,\n onFrameRateChanged: propTypes.func,\n onClickNextButton: propTypes.func,\n onClickBackButton: propTypes.func,\n onClickSkipToStart: propTypes.func,\n onClickSkipToEnd: propTypes.func\n});\n\n_defineProperty(CineDialog, \"defaultProps\", {\n cineMinFrameRate: 1,\n cineMaxFrameRate: 90,\n cineStepFrameRate: 1,\n cineFrameRate: 24,\n isPlaying: false\n});\n\nvar interfaces = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n});\n\nunwrapExports(interfaces);\nvar interfaces_1 = interfaces.HandlerRole;\n\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n}\n\n/* global window */\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread$1({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n createStore: createStore,\n combineReducers: combineReducers,\n bindActionCreators: bindActionCreators,\n applyMiddleware: applyMiddleware,\n compose: compose,\n __DO_NOT_USE__ActionTypes: ActionTypes\n});\n\nvar types = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n});\n\nunwrapExports(types);\nvar types_1 = types.INIT_COORDS;\nvar types_2 = types.BEGIN_DRAG;\nvar types_3 = types.PUBLISH_DRAG_SOURCE;\nvar types_4 = types.HOVER;\nvar types_5 = types.DROP;\nvar types_6 = types.END_DRAG;\n\nvar setClientOffset_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n});\n\nunwrapExports(setClientOffset_1);\nvar setClientOffset_2 = setClientOffset_1.setClientOffset;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\nvar beginDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar ResetCoordinatesAction = {\n type: types.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1(isObject_1(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n});\n\nunwrapExports(beginDrag);\n\nvar publishDragSource = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n});\n\nunwrapExports(publishDragSource);\n\nvar matchesType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n});\n\nunwrapExports(matchesType_1);\n\nvar hover = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n});\n\nunwrapExports(hover);\n\nvar drop = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target.drop(monitor, targetId);\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1(typeof dropResult === 'undefined' || isObject_1(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n});\n\nunwrapExports(drop);\n\nvar endDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n});\n\nunwrapExports(endDrag);\n\nvar dragDrop = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n__export(types);\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag.default(manager),\n publishDragSource: publishDragSource.default(manager),\n hover: hover.default(manager),\n drop: drop.default(manager),\n endDrag: endDrag.default(manager),\n };\n}\nexports.default = createDragDropActions;\n});\n\nunwrapExports(dragDrop);\n\nvar equality = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n});\n\nunwrapExports(equality);\nvar equality_1 = equality.strictEquality;\nvar equality_2 = equality.areCoordsEqual;\nvar equality_3 = equality.areArraysEqual;\n\nvar dragOffset_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.INIT_COORDS:\n case dragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop.HOVER:\n if (equality.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n});\n\nunwrapExports(dragOffset_1);\n\nvar registry = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n});\n\nunwrapExports(registry);\nvar registry_1 = registry.ADD_SOURCE;\nvar registry_2 = registry.ADD_TARGET;\nvar registry_3 = registry.REMOVE_SOURCE;\nvar registry_4 = registry.REMOVE_TARGET;\nvar registry_5 = registry.addSource;\nvar registry_6 = registry.addTarget;\nvar registry_7 = registry.removeSource;\nvar registry_8 = registry.removeTarget;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$1 = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$1;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$1.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = _getNative(_root, 'Map');\n\nvar _Map = Map$1;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\nvar _setCacheAdd = setCacheAdd;\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nvar _setCacheHas = setCacheHas;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\n\nvar _SetCache = SetCache;\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nvar _baseFindIndex = baseFindIndex;\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nvar _baseIsNaN = baseIsNaN;\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nvar _strictIndexOf = strictIndexOf;\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? _strictIndexOf(array, value, fromIndex)\n : _baseFindIndex(array, _baseIsNaN, fromIndex);\n}\n\nvar _baseIndexOf = baseIndexOf;\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && _baseIndexOf(array, value, 0) > -1;\n}\n\nvar _arrayIncludes = arrayIncludes;\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nvar _arrayIncludesWith = arrayIncludesWith;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nvar _arrayMap = arrayMap;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nvar _cacheHas = cacheHas;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = _arrayMap(values, _baseUnary(iteratee));\n }\n if (comparator) {\n includes = _arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = _cacheHas;\n isCommon = false;\n values = new _SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseDifference = baseDifference;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$2 = defineProperty;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$2 ? identity_1 : function(func, string) {\n return _defineProperty$2(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = _baseRest(function(array, values) {\n return isArrayLikeObject_1(array)\n ? _baseDifference(array, values)\n : [];\n});\n\nvar without_1 = without;\n\nvar dragOperation_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: without_1(state.targetIds, payload.targetId) });\n case dragDrop.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n});\n\nunwrapExports(dragOperation_1);\n\nvar refCount_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n return state + 1;\n case registry.REMOVE_SOURCE:\n case registry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n});\n\nunwrapExports(refCount_1);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? _arrayIncludesWith : _arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = _arrayMap(array, _baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new _SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? _cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? _cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseIntersection = baseIntersection;\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject_1(value) ? value : [];\n}\n\nvar _castArrayLikeObject = castArrayLikeObject;\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = _baseRest(function(arrays) {\n var mapped = _arrayMap(arrays, _castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? _baseIntersection(mapped)\n : [];\n});\n\nvar intersection_1 = intersection;\n\nvar dirtiness = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.NONE = [];\nexports.ALL = [];\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n return intersection_1(handlerIds, dirtyIds).length > 0;\n}\nexports.areDirty = areDirty;\n});\n\nunwrapExports(dirtiness);\nvar dirtiness_1 = dirtiness.NONE;\nvar dirtiness_2 = dirtiness.ALL;\nvar dirtiness_3 = dirtiness.areDirty;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nvar _arrayFilter = arrayFilter;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nvar _arrayPush = arrayPush;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nvar _isFlattenable = isFlattenable;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nvar _baseFlatten = baseFlatten;\n\n/* Built-in method references that are verified to be native. */\nvar Set = _getNative(_root, 'Set');\n\nvar _Set = Set;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nvar noop_1 = noop;\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nvar _setToArray = setToArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY) ? noop_1 : function(values) {\n return new _Set(values);\n};\n\nvar _createSet = createSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE$1 = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE$1) {\n var set = iteratee ? null : _createSet(array);\n if (set) {\n return _setToArray(set);\n }\n isCommon = false;\n includes = _cacheHas;\n seen = new _SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseUniq = baseUniq;\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? _baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = _baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return _baseUniq(_baseFlatten(result, 1), iteratee, comparator);\n}\n\nvar _baseXor = baseXor;\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = _baseRest(function(arrays) {\n return _baseXor(_arrayFilter(arrays, isArrayLikeObject_1));\n});\n\nvar xor_1 = xor;\n\nvar dirtyHandlerIds_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness.NONE; }\n switch (action.type) {\n case dragDrop.HOVER:\n break;\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n case registry.REMOVE_TARGET:\n case registry.REMOVE_SOURCE:\n return dirtiness.NONE;\n case dragDrop.BEGIN_DRAG:\n case dragDrop.PUBLISH_DRAG_SOURCE:\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n default:\n return dirtiness.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = xor_1(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n});\n\nunwrapExports(dirtyHandlerIds_1);\n\nvar stateId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n});\n\nunwrapExports(stateId_1);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol;\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nvar _isKey = isKey;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache;\n\nvar memoize_1 = memoize;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nvar _memoizeCapped = memoizeCapped;\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nvar _stringToPath = stringToPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n}\n\nvar _baseToString = baseToString;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : _baseToString(value);\n}\n\nvar toString_1 = toString;\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\n\nvar _castPath = castPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;\n}\n\nvar _toKey = toKey;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nvar _baseGet = baseGet;\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar get_1 = get;\n\nvar reducers = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: get_1(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n});\n\nunwrapExports(reducers);\n\nvar coords = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n});\n\nunwrapExports(coords);\nvar coords_1 = coords.add;\nvar coords_2 = coords.subtract;\nvar coords_3 = coords.getSourceClientOffset;\nvar coords_4 = coords.getDifferenceFromInitialOffset;\n\nvar DragDropMonitorImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n invariant_1(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n var source = this.registry.getSource(sourceId);\n invariant_1(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n var target = this.registry.getTarget(targetId);\n invariant_1(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n var source = this.registry.getSource(sourceId, true);\n invariant_1(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n});\n\nunwrapExports(DragDropMonitorImpl_1);\n\nvar getNextUniqueId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n});\n\nunwrapExports(getNextUniqueId_1);\n\nvar contracts = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction validateSourceContract(source) {\n invariant_1(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n});\n\nunwrapExports(contracts);\nvar contracts_1 = contracts.validateSourceContract;\nvar contracts_2 = contracts.validateTargetContract;\nvar contracts_3 = contracts.validateType;\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/*\n\n\n

License

\n\nUnless stated otherwise all works are:\n\n
\n\nand licensed under:\n\n\n\n

MIT License

\n\n
\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n\n\n*/\ninherits$1(Domain, EventEmitter);\nfunction createEmitError(d) {\n return emitError;\n function emitError(e) {\n d.emit('error', e);\n }\n}\n\nfunction Domain() {\n EventEmitter.call(this);\n this.__emitError = createEmitError(this);\n}\nDomain.prototype.add = function (emitter) {\n emitter.on('error', this.__emitError);\n};\nDomain.prototype.remove = function(emitter) {\n emitter.removeListener('error', this.__emitError);\n};\nDomain.prototype.bind = function(fn) {\n var emitError = this.__emitError;\n return function() {\n var args = Array.prototype.slice.call(arguments);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n};\nDomain.prototype.intercept = function(fn) {\n var emitError = this.__emitError;\n return function(err) {\n if (err) {\n emitError(err);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n }\n};\nDomain.prototype.run = function(fn) {\n var emitError = this.__emitError;\n try {\n fn();\n } catch (err) {\n emitError(err);\n }\n return this\n};\nDomain.prototype.dispose = function() {\n this.removeAllListeners();\n return this\n};\nDomain.prototype.enter = Domain.prototype.exit = function() {\n return this\n};\nfunction createDomain() {\n return new Domain();\n}\nvar create = createDomain;\n\nvar require$$0 = {\n Domain: Domain,\n createDomain: createDomain,\n create: create\n};\n\nvar domain$1; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nvar raw = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index$2 = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index$2 < queue.length) {\n var currentIndex = index$2;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index$2 = index$2 + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index$2 > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index$2; scan < newLength; scan++) {\n queue[scan] = queue[scan + index$2];\n }\n queue.length -= index$2;\n index$2 = 0;\n }\n }\n queue.length = 0;\n index$2 = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain$1) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain$1 = require$$0;\n }\n domain$1.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain$1.active = process.domain = parentDomain;\n }\n}\n\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nvar asap_1 = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n raw(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n raw.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\nvar HandlerRegistryImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces.HandlerRole.SOURCE;\n case 'T':\n return interfaces.HandlerRole.TARGET;\n default:\n invariant_1(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts.validateType(type);\n contracts.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts.validateType(type, true);\n contracts.validateTargetContract(target);\n var targetId = this.addHandler(interfaces.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry.removeSource(sourceId));\n asap_1(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n});\n\nunwrapExports(HandlerRegistryImpl_1);\n\nvar DragDropManagerImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux.createStore(reducers.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(createBackend, context, debugMode) {\n if (context === void 0) { context = {}; }\n if (debugMode === void 0) { debugMode = false; }\n var _this = this;\n this.context = context;\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n this.backend = createBackend(this);\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.getContext = function () {\n return this.context;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n});\n\nunwrapExports(DragDropManagerImpl_1);\n\nvar factories = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createDragDropManager(backend, context, debugMode) {\n return new DragDropManagerImpl_1.default(backend, context, debugMode);\n}\nexports.createDragDropManager = createDragDropManager;\n});\n\nunwrapExports(factories);\nvar factories_1 = factories.createDragDropManager;\n\nvar lib = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(interfaces);\n__export(factories);\n});\n\nunwrapExports(lib);\n\nvar checkDecoratorArguments_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction checkDecoratorArguments(functionName, signature) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (process.env.NODE_ENV !== 'production') {\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg && arg.prototype && arg.prototype.render) {\n // tslint:disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' +\n (\"It should be \" + functionName + \"(\" + signature + \")(Component), not the other way around. \") +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}\nexports.default = checkDecoratorArguments;\n});\n\nunwrapExports(checkDecoratorArguments_1);\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty$1 = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar isClassComponent_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar _default = isClassComponent;\nexports.default = _default;\n});\n\nunwrapExports(isClassComponent_1);\n\nvar DragDropContext_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n/**\n * Create the React Context\n */\nexports.Consumer = (_a = React.createContext({ dragDropManager: undefined }), _a.Consumer), exports.Provider = _a.Provider;\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createChildContext(backend, context, debugMode) {\n return {\n dragDropManager: lib.createDragDropManager(backend, context, debugMode),\n };\n}\nexports.createChildContext = createChildContext;\n/**\n * A React component that provides the React-DnD context\n */\nexports.DragDropContextProvider = function (_a) {\n var backend = _a.backend, context = _a.context, debugMode = _a.debugMode, children = _a.children;\n var contextValue = createChildContext(backend, context, debugMode);\n return React.createElement(exports.Provider, { value: contextValue }, children);\n};\n/**\n * Wrap the root component of your application with DragDropContext decorator to set up React DnD.\n * This lets you specify the backend, and sets up the shared DnD state behind the scenes.\n * @param backendFactory The DnD backend factory\n * @param backendContext The backend context\n */\nfunction DragDropContext(backendFactory, backendContext, debugMode) {\n checkDecoratorArguments_1.default('DragDropContext', 'backend', backendFactory);\n var childContext = createChildContext(backendFactory, backendContext, debugMode);\n return function decorateContext(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragDropContextContainer = /** @class */ (function (_super) {\n __extends(DragDropContextContainer, _super);\n function DragDropContextContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = React.createRef();\n _this.getManager = function () { return childContext.dragDropManager; };\n return _this;\n }\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragDropContextContainer.prototype.render = function () {\n return (React.createElement(exports.Provider, { value: childContext },\n React.createElement(Decorated, __assign({}, this.props, { ref: isClassComponent(Decorated) ? this.ref : undefined }))));\n };\n DragDropContextContainer.DecoratedComponent = DecoratedComponent;\n DragDropContextContainer.displayName = \"DragDropContext(\" + displayName + \")\";\n return DragDropContextContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContextContainer, DecoratedComponent);\n };\n}\nexports.DragDropContext = DragDropContext;\n});\n\nunwrapExports(DragDropContext_1);\nvar DragDropContext_2 = DragDropContext_1.Consumer;\nvar DragDropContext_3 = DragDropContext_1.Provider;\nvar DragDropContext_4 = DragDropContext_1.createChildContext;\nvar DragDropContext_5 = DragDropContext_1.DragDropContextProvider;\nvar DragDropContext_6 = DragDropContext_1.DragDropContext;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$6 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject$1(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$6.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject$1;\n\n//\n\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar DragLayer_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\nfunction DragLayer(collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragLayer', 'collect[, options]', collect, options);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' +\n 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _a = options.arePropsEqual, arePropsEqual = _a === void 0 ? shallowequal : _a;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragLayerContainer = /** @class */ (function (_super) {\n __extends(DragLayerContainer, _super);\n function DragLayerContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n return _this;\n }\n DragLayerContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragLayerContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragLayerContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.handleChange();\n };\n DragLayerContainer.prototype.componentWillUnmount = function () {\n this.isCurrentlyMounted = false;\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n };\n DragLayerContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: isClassComponent(Decorated) ? _this.ref : undefined })));\n }));\n };\n DragLayerContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n };\n DragLayerContainer.prototype.getCurrentState = function () {\n if (!this.manager) {\n return {};\n }\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n };\n DragLayerContainer.displayName = \"DragLayer(\" + displayName + \")\";\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragLayerContainer, DecoratedComponent);\n };\n}\nexports.default = DragLayer;\n});\n\nunwrapExports(DragLayer_1);\n\nvar Disposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable(action) {\n this.isDisposed = false;\n this.action = isFunction_1(action) ? action : noop_1;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n Disposable.isDisposable = function (d) {\n return d && isFunction_1(d.dispose);\n };\n Disposable._fixup = function (result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n };\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n Disposable.create = function (action) {\n return new Disposable(action);\n };\n /** Performs the task of cleaning up resources. */\n Disposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n };\n /**\n * Gets the disposable that does nothing when disposed.\n */\n Disposable.empty = { dispose: noop_1 };\n return Disposable;\n}());\nexports.Disposable = Disposable;\n});\n\nunwrapExports(Disposable_1);\nvar Disposable_2 = Disposable_1.Disposable;\n\nvar SerialDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\nvar SerialDisposable = /** @class */ (function () {\n function SerialDisposable() {\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n SerialDisposable.prototype.getDisposable = function () {\n return this.current;\n };\n SerialDisposable.prototype.setDisposable = function (value) {\n var shouldDispose = this.isDisposed;\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n if (old) {\n old.dispose();\n }\n }\n if (shouldDispose && value) {\n value.dispose();\n }\n };\n /** Performs the task of cleaning up resources. */\n SerialDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n if (old) {\n old.dispose();\n }\n }\n };\n return SerialDisposable;\n}());\nexports.SerialDisposable = SerialDisposable;\n});\n\nunwrapExports(SerialDisposable_1);\nvar SerialDisposable_2 = SerialDisposable_1.SerialDisposable;\n\nvar CompositeDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\nvar CompositeDisposable = /** @class */ (function () {\n function CompositeDisposable() {\n var disposables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n disposables[_i] = arguments[_i];\n }\n this.isDisposed = false;\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n CompositeDisposable.prototype.add = function (item) {\n if (this.isDisposed) {\n item.dispose();\n }\n else {\n this.disposables.push(item);\n }\n };\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n CompositeDisposable.prototype.remove = function (item) {\n var shouldDispose = false;\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n return shouldDispose;\n };\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n CompositeDisposable.prototype.clear = function () {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n CompositeDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n return CompositeDisposable;\n}());\nexports.CompositeDisposable = CompositeDisposable;\n});\n\nunwrapExports(CompositeDisposable_1);\nvar CompositeDisposable_2 = CompositeDisposable_1.CompositeDisposable;\n\nvar disposables = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(Disposable_1);\n__export(SerialDisposable_1);\n__export(CompositeDisposable_1);\n});\n\nunwrapExports(disposables);\n\nvar decorateHandler_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n\n\n\n\nfunction decorateHandler(_a) {\n var DecoratedComponent = _a.DecoratedComponent, createHandler = _a.createHandler, createMonitor = _a.createMonitor, createConnector = _a.createConnector, registerHandler = _a.registerHandler, containerDisplayName = _a.containerDisplayName, getType = _a.getType, collect = _a.collect, options = _a.options;\n var _b = options.arePropsEqual, arePropsEqual = _b === void 0 ? shallowequal : _b;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n var DragDropContainer = /** @class */ (function (_super) {\n __extends(DragDropContainer, _super);\n function DragDropContainer(props) {\n var _this = _super.call(this, props) || this;\n _this.isCurrentlyMounted = false;\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n _this.disposable = new disposables.SerialDisposable();\n _this.receiveProps(props);\n _this.dispose();\n return _this;\n }\n DragDropContainer.prototype.getHandlerId = function () {\n return this.handlerId;\n };\n DragDropContainer.prototype.getDecoratedComponentInstance = function () {\n if (!this.handler) {\n return null;\n }\n return this.handler.ref.current;\n };\n DragDropContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragDropContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.disposable = new disposables.SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n };\n DragDropContainer.prototype.componentDidUpdate = function (prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n };\n DragDropContainer.prototype.componentWillUnmount = function () {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n DragDropContainer.prototype.receiveProps = function (props) {\n if (!this.handler) {\n return;\n }\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n DragDropContainer.prototype.receiveType = function (type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n if (type === this.currentType) {\n return;\n }\n this.currentType = type;\n var _a = registerHandler(type, this.handler, this.manager), handlerId = _a.handlerId, unregister = _a.unregister;\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n this.disposable.setDisposable(new disposables.CompositeDisposable(new disposables.Disposable(unsubscribe), new disposables.Disposable(unregister)));\n };\n DragDropContainer.prototype.dispose = function () {\n this.disposable.dispose();\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n };\n DragDropContainer.prototype.getCurrentState = function () {\n if (!this.handlerConnector) {\n return {};\n }\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(nextState), 'Expected `collect` specified as the second argument to ' +\n '%s for %s to return a plain object of props to inject. ' +\n 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n return nextState;\n };\n DragDropContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: _this.handler && isClassComponent(Decorated)\n ? _this.handler.ref\n : undefined })));\n }));\n };\n DragDropContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n };\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = containerDisplayName + \"(\" + displayName + \")\";\n return DragDropContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContainer, DecoratedComponent);\n}\nexports.default = decorateHandler;\n});\n\nunwrapExports(decorateHandler_1);\n\nvar registerSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n return {\n handlerId: sourceId,\n unregister: unregisterSource,\n };\n}\nexports.default = registerSource;\n});\n\nunwrapExports(registerSource_1);\n\nvar createSourceFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n var SourceImpl = /** @class */ (function () {\n function SourceImpl(monitor) {\n var _this = this;\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n var item = spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(item), 'beginDrag() must return a plain object that represents the dragged item. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n }\n SourceImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n SourceImpl.prototype.canDrag = function () {\n if (!this.props) {\n return false;\n }\n if (!spec.canDrag) {\n return true;\n }\n return spec.canDrag(this.props, this.monitor);\n };\n SourceImpl.prototype.isDragging = function (globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n return spec.isDragging(this.props, this.monitor);\n };\n SourceImpl.prototype.endDrag = function () {\n if (!this.props) {\n return;\n }\n if (!spec.endDrag) {\n return;\n }\n spec.endDrag(this.props, this.monitor, this.ref.current);\n };\n return SourceImpl;\n }());\n return function createSource(monitor) {\n return new SourceImpl(monitor);\n };\n}\nexports.default = createSourceFactory;\n});\n\nunwrapExports(createSourceFactory_1);\n\nvar createSourceMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar SourceMonitor = /** @class */ (function () {\n function SourceMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n SourceMonitor.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n SourceMonitor.prototype.canDrag = function () {\n invariant_1(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n SourceMonitor.prototype.isDragging = function () {\n invariant_1(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n SourceMonitor.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n SourceMonitor.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n SourceMonitor.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n SourceMonitor.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n SourceMonitor.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n SourceMonitor.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n SourceMonitor.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n SourceMonitor.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n SourceMonitor.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n SourceMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n SourceMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n SourceMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n SourceMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n SourceMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n SourceMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n SourceMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n SourceMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return SourceMonitor;\n}());\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\nexports.default = createSourceMonitor;\n});\n\nunwrapExports(createSourceMonitor_1);\n\nvar cloneWithRef_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return React.cloneElement(element, {\n ref: newRef,\n });\n }\n return React.cloneElement(element, {\n ref: function (node) {\n newRef(node);\n if (previousRef) {\n previousRef(node);\n }\n },\n });\n}\nexports.default = cloneWithRef;\n});\n\nunwrapExports(cloneWithRef_1);\n\nvar wrapConnectorHooks_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a
, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!React.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return undefined;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.default(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook; };\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n});\n\nunwrapExports(wrapConnectorHooks_1);\n\nvar createSourceConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createSourceConnector(backend) {\n var currentHandlerId;\n var currentDragSourceNode;\n var currentDragSourceOptions;\n var disconnectCurrentDragSource;\n var currentDragPreviewNode;\n var currentDragPreviewOptions;\n var disconnectCurrentDragPreview;\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = undefined;\n }\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = undefined;\n }\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n var hooks = wrapConnectorHooks_1.default({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode &&\n shallowequal(options, currentDragSourceOptions)) {\n return;\n }\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n reconnectDragSource();\n },\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode &&\n shallowequal(options, currentDragPreviewOptions)) {\n return;\n }\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n reconnectDragPreview();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createSourceConnector;\n});\n\nunwrapExports(createSourceConnector_1);\n\nvar isValidType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isValidType(type, allowArray) {\n return (typeof type === 'string' ||\n typeof type === 'symbol' ||\n (!!allowArray &&\n Array.isArray(type) &&\n type.every(function (t) { return isValidType(t, false); })));\n}\nexports.default = isValidType;\n});\n\nunwrapExports(isValidType_1);\n\nvar DragSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\nfunction DragSource(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type), 'Expected \"type\" provided as the first argument to DragSource to be ' +\n 'a string, or a function that returns a string given the current props. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = createSourceFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource_1.default,\n createMonitor: createSourceMonitor_1.default,\n createConnector: createSourceConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DragSource;\n});\n\nunwrapExports(DragSource_1);\n\nvar registerTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n return {\n handlerId: targetId,\n unregister: unregisterTarget,\n };\n}\nexports.default = registerTarget;\n});\n\nunwrapExports(registerTarget_1);\n\nvar createTargetFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n var TargetImpl = /** @class */ (function () {\n function TargetImpl(monitor) {\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n }\n TargetImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n TargetImpl.prototype.receiveMonitor = function (monitor) {\n this.monitor = monitor;\n };\n TargetImpl.prototype.canDrop = function () {\n if (!spec.canDrop) {\n return true;\n }\n return spec.canDrop(this.props, this.monitor);\n };\n TargetImpl.prototype.hover = function () {\n if (!spec.hover) {\n return;\n }\n spec.hover(this.props, this.monitor, this.ref.current);\n };\n TargetImpl.prototype.drop = function () {\n if (!spec.drop) {\n return undefined;\n }\n var dropResult = spec.drop(this.props, this.monitor, this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(typeof dropResult === 'undefined' || isPlainObject_1(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n return TargetImpl;\n }());\n return function createTarget(monitor) {\n return new TargetImpl(monitor);\n };\n}\nexports.default = createTargetFactory;\n});\n\nunwrapExports(createTargetFactory_1);\n\nvar createTargetMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrop = false;\nvar TargetMonitor = /** @class */ (function () {\n function TargetMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n TargetMonitor.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n TargetMonitor.prototype.canDrop = function () {\n invariant_1(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n TargetMonitor.prototype.isOver = function (options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n TargetMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n TargetMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n TargetMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n TargetMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n TargetMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n TargetMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n TargetMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n TargetMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return TargetMonitor;\n}());\nexports.TargetMonitor = TargetMonitor;\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\nexports.default = createTargetMonitor;\n});\n\nunwrapExports(createTargetMonitor_1);\nvar createTargetMonitor_2 = createTargetMonitor_1.TargetMonitor;\n\nvar createTargetConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createTargetConnector(backend) {\n var currentHandlerId;\n var currentDropTargetNode;\n var currentDropTargetOptions;\n var disconnectCurrentDropTarget;\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = undefined;\n }\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n var hooks = wrapConnectorHooks_1.default({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode &&\n shallowequal(options, currentDropTargetOptions)) {\n return;\n }\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n reconnectDropTarget();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createTargetConnector;\n});\n\nunwrapExports(createTargetConnector_1);\n\nvar DropTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' +\n 'a string, an array of strings, or a function that returns either given ' +\n 'the current props. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = createTargetFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget_1.default,\n createMonitor: createTargetMonitor_1.default,\n createConnector: createTargetConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DropTarget;\n});\n\nunwrapExports(DropTarget_1);\n\nvar lib$1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.DragDropContext = DragDropContext_1.DragDropContext;\nexports.DragDropContextProvider = DragDropContext_1.DragDropContextProvider;\n\nexports.DragLayer = DragLayer_1.default;\n\nexports.DragSource = DragSource_1.default;\n\nexports.DropTarget = DropTarget_1.default;\n});\n\nunwrapExports(lib$1);\nvar lib_1 = lib$1.DragDropContext;\nvar lib_2 = lib$1.DragDropContextProvider;\nvar lib_3 = lib$1.DragLayer;\nvar lib_4 = lib$1.DragSource;\nvar lib_5 = lib$1.DropTarget;\n\nvar css$1 = \".ExampleDropTarget {\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\\n width: 100%;\\n min-height: 100px;\\n\\n border: 2px dashed black;\\n padding: 20px;\\n transition: 0.2s all ease;\\n}\\n\\n.ExampleDropTarget h4,\\n.ExampleDropTarger p {\\n text-align: center;\\n word-break: break-word;\\n}\\n\\n.ExampleDropTarget.can-drop {\\n border: 2px dashed #20a5d6;\\n background-color: #fafafa;\\n color: black;\\n}\\n\\n.ExampleDropTarget.hovered {\\n border: 2px dashed #20a5d6;\\n background-color: black;\\n color: #91b9cd;\\n}\\n\";\nstyleInject(css$1);\n\n// if they have the same string type.\n\nvar Types = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget = {\n drop: function drop(props, monitor, component) {\n // Note: For this example we use setState, but in\n // OHIF we will update the redux store instead\n var item = monitor.getItem();\n component.setState({\n item: {\n id: item.id,\n seriesDescription: item.seriesDescription\n }\n });\n return {\n id: 'ExampleDropTarget'\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar ExampleDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ExampleDropTarget, _Component);\n\n function ExampleDropTarget() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ExampleDropTarget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ExampleDropTarget)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n item: null\n });\n\n return _this;\n }\n\n _createClass(ExampleDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = ExampleDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, React.createElement(\"h4\", null, isActive ? 'Release to drop' : 'Drag / Drop something from the Study Browser here'), React.createElement(\"p\", {\n className: \"study-drop-results\"\n }, this.state.item && JSON.stringify(this.state.item))));\n }\n }]);\n\n return ExampleDropTarget;\n}(Component);\n\n_defineProperty(ExampleDropTarget, \"className\", 'ExampleDropTarget');\n\n_defineProperty(ExampleDropTarget, \"defaultProps\", {\n isOver: false\n});\n\n_defineProperty(ExampleDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired\n});\n\nvar collect = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n};\n\nvar ExampleDropTarget$1 = lib_5(Types.THUMBNAIL, divTarget, collect)(ExampleDropTarget);\n\nvar css$2 = \".layoutChooser {\\n border: 1px solid rgba(77,99,110,0.81);\\n border-radius: 8px;\\n padding: 5px 0;\\n position: absolute;\\n z-index: 5000;\\n}\\n.layoutChooser .selectedBefore {\\n background-color: #5cc3eb;\\n}\\n.layoutChooser table {\\n margin: 0 auto;\\n}\\n.layoutChooser table td {\\n cursor: pointer;\\n}\\n.layoutChooser table td:hover,\\n.layoutChooser table td.hover {\\n background-color: #209ac9;\\n}\\n\";\nstyleInject(css$2);\n\n/**\n * Adds the 'hover' class to cells above and to the left of the current cell\n * This is used to \"fill in\" the grid that the user will change the layout to,\n * if they click on a specific table cell.\n **/\n\nvar LayoutChooser =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutChooser, _PureComponent);\n\n function LayoutChooser(props) {\n var _this;\n\n _classCallCheck(this, LayoutChooser);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayoutChooser).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isRange\", function (cell, parentCell) {\n return cell.row <= parentCell.row && cell.col <= parentCell.col;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"highlightCells\", function (currentCell) {\n var table = [];\n\n for (var row = 0; row < _this.props.rows; row++) {\n var newRow = [];\n\n for (var col = 0; col < _this.props.columns; col++) {\n var cell = {\n row: row,\n col: col\n };\n\n if (_this.isRange(cell, currentCell)) {\n cell.className = 'hover';\n } else if (_this.isRange(currentCell, _this.emptyCell) && _this.isRange(cell, _this.state.selectedCell)) {\n cell.className = 'selectedBefore';\n }\n\n newRow.push(cell);\n }\n\n table.push(newRow);\n }\n\n _this.setState({\n table: table\n });\n });\n\n _this.emptyCell = {\n row: -1,\n column: -1\n };\n _this.state = {\n table: [[]],\n selectedCell: _this.props.selectedCell\n };\n return _this;\n }\n\n _createClass(LayoutChooser, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.highlightCells(this.emptyCell);\n }\n }, {\n key: \"onClick\",\n value: function onClick(currentCell) {\n this.setState({\n selectedCell: currentCell\n });\n this.highlightCells(currentCell);\n\n if (this.props.onClick) {\n this.props.onClick(currentCell);\n }\n\n if (this.props.onChange) {\n this.props.onChange(currentCell);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var columns = this.props.columns;\n var style = {\n display: this.props.visible ? 'block' : 'none',\n minWidth: columns * this.props.boxSize + (columns + 5) * this.props.cellBorder\n };\n return React.createElement(\"div\", {\n className: \"layoutChooser pull-left dropdown-menu\",\n role: \"menu\",\n style: style\n }, React.createElement(\"table\", null, React.createElement(\"tbody\", null, this.state.table.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (cell, j) {\n return React.createElement(\"td\", {\n className: cell.className,\n style: {\n width: _this2.props.boxSize,\n height: _this2.props.boxSize,\n border: 'solid 1px black'\n },\n key: j,\n onMouseEnter: function onMouseEnter() {\n return _this2.highlightCells(cell);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.highlightCells(_this2.emptyCell);\n },\n onClick: function onClick() {\n return _this2.onClick(cell);\n }\n });\n }));\n }))));\n }\n }]);\n\n return LayoutChooser;\n}(PureComponent);\n\n_defineProperty(LayoutChooser, \"propTypes\", {\n rows: propTypes.number.isRequired,\n columns: propTypes.number.isRequired,\n visible: propTypes.bool.isRequired,\n selectedCell: propTypes.object,\n boxSize: propTypes.number.isRequired,\n cellBorder: propTypes.number.isRequired,\n onClick: propTypes.func,\n onChange: propTypes.func\n});\n\n_defineProperty(LayoutChooser, \"defaultProps\", {\n rows: 3,\n columns: 3,\n visible: true,\n boxSize: 20,\n cellBorder: 1,\n selectedCell: {\n row: -1,\n col: -1\n }\n});\n\nvar LayoutButton =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutButton, _PureComponent);\n\n function LayoutButton() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutButton);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutButton)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownVisible: _this.props.dropdownVisible\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (selectedCell) {\n if (_this.props.onChange) {\n _this.props.onChange(selectedCell);\n }\n });\n\n return _this;\n }\n\n _createClass(LayoutButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.dropdownVisible !== prevProps.dropdownVisible) {\n this.setState({\n dropdownVisible: this.props.dropdownVisible\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"layout\",\n type: \"button\",\n className: \"btn btn-sm btn-default dropdown-toggle\",\n \"data-container\": \"body\",\n \"data-toggle\": \"dropdown\",\n \"aria-expanded\": \"false\",\n \"data-placement\": \"right\",\n title: \"Layout\",\n rel: \"tooltip\",\n onClick: this.onClick\n }, React.createElement(\"span\", {\n className: \"fa fa-th-large\"\n })), React.createElement(LayoutChooser, {\n visible: this.state.dropdownVisible,\n onChange: this.onChange,\n onClick: this.onClick,\n selectedCell: this.props.selectedCell\n }));\n }\n }]);\n\n return LayoutButton;\n}(PureComponent);\nLayoutButton.defaultProps = {\n dropdownVisible: false\n};\nLayoutButton.propTypes = {\n dropdownVisible: propTypes.bool.isRequired,\n onChange: propTypes.func,\n selectedCell: propTypes.object\n};\n\nvar css$3 = \".viewport-container {\\n float: left;\\n\\n border: var(--viewport-border-thickness) solid var(--ui-border-color);\\n}\\n\\n.viewport-container.active {\\n border: var(--viewport-border-thickness) solid var(--active-color);\\n}\\n\\n.EmptyViewport {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n color: var(--text-secondary-color);\\n}\\n\";\nstyleInject(css$3);\n\nvar css$4 = \".LayoutPanelDropTarget {\\n width: 100%;\\n height: 100%;\\n\\n opacity: 1;\\n transition: 0.3s all ease;\\n}\\n\\n.LayoutPanelDropTarget.hovered {\\n opacity: 0.5;\\n}\\n\";\nstyleInject(css$4);\n\n// if they have the same string type.\n\nvar Types$1 = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget$1 = {\n drop: function drop(props, monitor, component) {\n var item = monitor.getItem();\n\n if (props.onDrop) {\n props.onDrop({\n viewportIndex: props.viewportIndex,\n item: item\n });\n }\n\n return {\n id: \"LayoutPanelDropTarget-\".concat(props.viewportIndex),\n viewportIndex: props.viewportIndex,\n item: item\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar LayoutPanelDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutPanelDropTarget, _Component);\n\n function LayoutPanelDropTarget() {\n _classCallCheck(this, LayoutPanelDropTarget);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LayoutPanelDropTarget).apply(this, arguments));\n }\n\n _createClass(LayoutPanelDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = LayoutPanelDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, this.props.children));\n }\n }]);\n\n return LayoutPanelDropTarget;\n}(Component);\n\n_defineProperty(LayoutPanelDropTarget, \"className\", 'LayoutPanelDropTarget');\n\n_defineProperty(LayoutPanelDropTarget, \"defaultProps\", {\n isOver: false,\n canDrop: false\n});\n\n_defineProperty(LayoutPanelDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired,\n viewportComponent: propTypes.object\n});\n\nvar collect$1 = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n canDrop: monitor.canDrop(),\n isOver: monitor.isOver()\n };\n};\n\nvar LayoutPanelDropTarget$1 = lib_5(Types$1.THUMBNAIL, divTarget$1, collect$1)(LayoutPanelDropTarget);\n\nfunction defaultViewportPlugin(props) {\n return React.createElement(\"div\", null, JSON.stringify(props));\n}\n\nfunction EmptyViewport() {\n return React.createElement(\"div\", {\n className: \"EmptyViewport\"\n }, React.createElement(\"p\", null, \"Please drag a stack here to view images.\"));\n}\n\nvar LayoutManager =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutManager, _Component);\n\n function LayoutManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDrop\", function (_ref) {\n var viewportIndex = _ref.viewportIndex,\n item = _ref.item;\n\n if (_this.props.setViewportData) {\n _this.props.setViewportData({\n viewportIndex: viewportIndex,\n item: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPluginComponent\", function (plugin) {\n var pluginComponent = _this.props.availablePlugins[plugin || _this.props.defaultPlugin];\n\n if (!pluginComponent) {\n throw new Error(\"No Viewport Plugin available for plugin \".concat(plugin, \". Available plugins: \").concat(JSON.stringify(_this.props.availablePlugins)));\n }\n\n return pluginComponent;\n });\n\n return _this;\n }\n\n _createClass(LayoutManager, [{\n key: \"getChildComponent\",\n value: function getChildComponent(plugin, data, viewportIndex) {\n if (data.displaySet) {\n var PluginComponent = this.getPluginComponent(plugin);\n return React.createElement(PluginComponent, {\n viewportData: data,\n viewportIndex: viewportIndex\n });\n }\n\n return React.createElement(EmptyViewport, null);\n }\n }, {\n key: \"getContent\",\n value: function getContent(childComponent, supportsDragAndDrop, viewportIndex) {\n if (supportsDragAndDrop) {\n return React.createElement(LayoutPanelDropTarget$1, {\n onDrop: this.onDrop,\n viewportIndex: viewportIndex\n }, childComponent);\n }\n\n return React.createElement(\"div\", {\n className: \"LayoutPanel\"\n }, childComponent);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!this.props.viewportData.length) {\n return '';\n }\n\n var _this$props = this.props,\n supportsDragAndDrop = _this$props.supportsDragAndDrop,\n studies = _this$props.studies,\n viewportData = _this$props.viewportData;\n var viewports = this.props.layout.viewports;\n var viewportElements = viewports.map(function (layout, viewportIndex) {\n var displaySet = viewportData[viewportIndex];\n var data = {\n displaySet: displaySet,\n studies: studies\n };\n\n var childComponent = _this2.getChildComponent(layout.plugin, data, viewportIndex);\n\n var content = _this2.getContent(childComponent, supportsDragAndDrop, viewportIndex);\n\n var className = 'viewport-container';\n\n if (_this2.props.activeViewportIndex === viewportIndex) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n key: viewportIndex,\n className: className,\n style: _objectSpread({}, layout)\n }, content);\n });\n return React.createElement(\"div\", {\n className: LayoutManager.className\n }, viewportElements);\n }\n }]);\n\n return LayoutManager;\n}(Component);\n\n_defineProperty(LayoutManager, \"className\", 'LayoutManager');\n\n_defineProperty(LayoutManager, \"defaultProps\", {\n viewportData: [],\n layout: {\n viewports: [{\n top: 0,\n left: 0,\n height: '100%',\n width: '100%'\n }]\n },\n activeViewportIndex: 0,\n supportsDragAndDrop: true,\n availablePlugins: {\n defaultViewportPlugin: defaultViewportPlugin\n },\n defaultPlugin: 'defaultViewportPlugin'\n});\n\n_defineProperty(LayoutManager, \"propTypes\", {\n viewportData: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n activeViewportIndex: propTypes.number.isRequired,\n layout: propTypes.object.isRequired,\n availablePlugins: propTypes.object.isRequired,\n setViewportData: propTypes.func,\n studies: propTypes.array\n});\n\nvar css$5 = \".tableList {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n}\\n.tableList .tableListHeader {\\n background-color: var(--ui-gray-darker);\\n color: var(--text-secondary-color);\\n fill: var(--text-secondary-color);\\n display: flex;\\n height: 63px;\\n line-height: 63px;\\n margin-top: 2px;\\n overflow: hidden;\\n width: 100%;\\n}\\n.tableList .tableListHeader .tableListHeaderTitle {\\n color: var(--text-secondary-color);\\n font-size: 22px;\\n font-weight: 300;\\n line-height: 63px;\\n padding: 0 10px;\\n text-align: left;\\n flex: 1;\\n}\\n.tableList .tableListHeader .numberOfItems {\\n color: var(--ui-sky-blue);\\n float: right;\\n font-weight: 300;\\n font-size: 40px;\\n max-width: 54px;\\n height: 63px;\\n line-height: 66px;\\n flex: 1;\\n}\\n\";\nstyleInject(css$5);\n\nvar TableList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableList, _Component);\n\n function TableList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getHeader\", function () {\n if (_this.props.customHeader) {\n return _this.props.customHeader;\n } else {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, _this.props.headerTitle), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, _this.props.children.length));\n }\n });\n\n return _this;\n }\n\n _createClass(TableList, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableList\"\n }, React.createElement(\"div\", {\n className: \"tableListHeader\",\n onClick: this.onHeaderClick\n }, this.getHeader()), React.createElement(\"div\", {\n className: \"tableListContent\"\n }, this.props.children));\n }\n }]);\n\n return TableList;\n}(Component);\n\n_defineProperty(TableList, \"propTypes\", {\n customHeader: propTypes.node,\n defaultItems: propTypes.object,\n children: propTypes.node.isRequired,\n headerTitle: propTypes.string\n});\n\nvar css$6 = \".tableListItem {\\n display: flex;\\n margin-left: -6px;\\n margin-top: 2px;\\n padding-left: 6px;\\n opacity: 0.7;\\n width: calc(100% + 6px);\\n}\\n.tableListItem:hover {\\n opacity: 1;\\n}\\n.tableListItem.selected {\\n opacity: 1;\\n}\\n.tableListItem.selected .itemIndex {\\n color: $activeColor;\\n}\\n.tableListItem .itemIndex {\\n background-color: var(--ui-gray);\\n color: var(--text-secondary-color);\\n cursor: pointer;\\n flex: 1;\\n max-width: 40px;\\n font-size: 14px;\\n font-weight: 400;\\n margin-right: 5px;\\n padding: 10px;\\n text-align: center;\\n}\\n.tableListItem .itemContent {\\n flex: 1;\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n margin-left: -2px;\\n}\\n\";\nstyleInject(css$6);\n\nvar TableListItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableListItem, _Component);\n\n function TableListItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableListItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableListItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event) {\n if (_this.props.onItemClick) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onItemClick(event, _this.props);\n }\n });\n\n return _this;\n }\n\n _createClass(TableListItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableListItem \".concat(this.props.itemClass),\n onClick: this.onItemClick\n }, React.createElement(\"div\", {\n className: \"itemIndex\"\n }, this.props.itemIndex + 1), React.createElement(\"div\", {\n className: \"itemContent\"\n }, this.props.children));\n }\n }]);\n\n return TableListItem;\n}(Component);\n\n_defineProperty(TableListItem, \"propTypes\", {\n children: propTypes.node,\n itemClass: propTypes.string,\n itemIndex: propTypes.number,\n onItemClick: propTypes.func.isRequired\n});\n\nvar css$7 = \".measurementItem .rowActions {\\n background-color: var(--ui-gray-darker);\\n height: 0;\\n overflow: hidden;\\n transition: all 0.3s ease;\\n visibility: hidden;\\n padding-left: 14px;\\n}\\n.measurementItem .rowActions .btnAction {\\n background-color: transparent;\\n border: none;\\n color: var(--default-color);\\n cursor: pointer;\\n line-height: 35px;\\n transition: all 0.3s ease;\\n}\\n.measurementItem .rowActions .btnAction:hover,\\n.measurementItem .rowActions .btnAction:active {\\n color: var(--text-primary-color);\\n}\\n.measurementItem .rowActions .btnAction i {\\n margin-right: 4px;\\n}\\n.measurementItem.selected .rowActions {\\n height: 35px;\\n visibility: visible;\\n}\\n.measurementItem .measurementLocation {\\n margin-left: 9px;\\n margin-top: 9px;\\n}\\n.measurementItem .measurementDisplayText {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n\";\nstyleInject(css$7);\n\nvar MeasurementTableItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTableItem, _Component);\n\n function MeasurementTableItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MeasurementTableItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MeasurementTableItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getDataDisplayText\", function () {\n return _this.props.measurementData.data.map(function (data, index) {\n return React.createElement(\"div\", {\n key: \"displayText_\".concat(index),\n className: \"measurementDisplayText\"\n }, data.displayText ? data.displayText : '...');\n });\n });\n\n return _this;\n }\n\n _createClass(MeasurementTableItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(TableListItem, {\n itemKey: this.props.itemKey,\n itemClass: \"measurementItem \".concat(this.props.itemClass),\n itemIndex: this.props.itemIndex,\n onItemClick: this.props.onItemClick\n }, React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"measurementLocation\"\n }, this.props.measurementData.label), React.createElement(\"div\", null, this.getDataDisplayText()), React.createElement(\"div\", {\n className: \"rowActions\"\n }, React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onRelabel\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Relabel\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onEditDescription\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Description\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onDelete\n }, React.createElement(\"i\", {\n className: \"fa fa-trash-o\"\n }), \"Delete\"))));\n }\n }]);\n\n return MeasurementTableItem;\n}(Component);\n\n_defineProperty(MeasurementTableItem, \"propTypes\", {\n measurementData: propTypes.object.isRequired,\n onItemClick: propTypes.func.isRequired,\n onRelabel: propTypes.func.isRequired,\n onDelete: propTypes.func.isRequired,\n onEditDescription: propTypes.func.isRequired,\n itemKey: propTypes.string.isRequired,\n itemClass: propTypes.string,\n itemIndex: propTypes.number\n});\n\nfunction throttled(delay, fn) {\n var lastCall = 0;\n return function () {\n var now = new Date().getTime();\n\n if (now - lastCall < delay) {\n return;\n }\n\n lastCall = now;\n return fn.apply(void 0, arguments);\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar css$8 = \".scrollArea {\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollArea .scrollable {\\n max-height: inherit;\\n overflow: hidden;\\n zoom: 1;\\n}\\n.scrollArea .scrollable.scrollX {\\n overflow-x: scroll;\\n}\\n.scrollArea .scrollable.scrollY {\\n overflow-y: scroll;\\n}\\n.scrollArea.fit {\\n height: 100%;\\n width: 100%;\\n}\\n.scrollArea.fit .scrollable {\\n bottom: 0;\\n left: 0;\\n max-height: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scrollArea .scrollNav {\\n background-color: rgba(0,0,0,0.75);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.75);\\n cursor: pointer;\\n height: 24px;\\n left: 10px;\\n opacity: 0;\\n position: absolute;\\n right: 10px;\\n transition: all 0.3s ease;\\n}\\n.scrollArea .scrollNav:after {\\n color: var(--active-color);\\n display: block;\\n font-family: FontAwesome;\\n font-size: 20px;\\n text-align: center;\\n transition: color 0.3s ease;\\n}\\n.scrollArea .scrollNav:hover {\\n background-color: rgba(0,0,0,0.9);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.9);\\n}\\n.scrollArea .scrollNav:hover:after {\\n color: var(--hover-color);\\n}\\n.scrollArea .scrollNavUp {\\n border-bottom-left-radius: 24px/2;\\n border-bottom-right-radius: 24px/2;\\n top: 0;\\n transform: ranslateY(-24px);\\n}\\n.scrollArea .scrollNavUp:after {\\n content: '\\\\f102';\\n}\\n.scrollArea .scrollNavDown {\\n border-top-left-radius: 24px/2;\\n border-top-right-radius: 24px/2;\\n bottom: 0;\\n transform: translateY(24px);\\n}\\n.scrollArea .scrollNavDown:after {\\n content: '\\\\f103';\\n}\\n.scrollArea.canScrollUp .scrollNavUp,\\n.scrollArea.canScrollDown .scrollNavDown {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\";\nstyleInject(css$8);\n\nvar ScrollableArea =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollableArea, _Component);\n\n function ScrollableArea(props) {\n var _this;\n\n _classCallCheck(this, ScrollableArea);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollableArea).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavDown\", function (event) {\n var _this$scrollableEleme = _this.scrollableElement,\n currentTop = _this$scrollableEleme.scrollTop,\n height = _this$scrollableEleme.offsetHeight,\n scrollHeight = _this$scrollableEleme.scrollHeight;\n var limit = scrollHeight - height;\n var scrollTop = currentTop + _this.props.scrollStep;\n scrollTop = scrollTop > limit ? limit : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavUp\", function (event) {\n var currentTop = _this.scrollableElement.scrollTop;\n var scrollTop = currentTop - _this.props.scrollStep;\n scrollTop = scrollTop < 0 ? 0 : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"adjustMargins\", function () {\n if (_this.props.hideScrollbar) {\n var x = _this.props.scrollX ? 1 : 0;\n var y = _this.props.scrollY ? 1 : 0;\n var scrollbarSize = getScrollbarSize();\n _this.scrollableElement.style.marginRight = \"\".concat(0 - scrollbarSize[0] * y, \"px\");\n _this.scrollableElement.style.marginBottom = \"\".concat(0 - scrollbarSize[1] * x, \"px\");\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollHandler\", function () {\n var _this$scrollableEleme2 = _this.scrollableElement,\n height = _this$scrollableEleme2.offsetHeight,\n scrollTop = _this$scrollableEleme2.scrollTop,\n scrollHeight = _this$scrollableEleme2.scrollHeight;\n var scrollAreaClasses = ''; // Stop here if unable to scroll\n\n if (scrollHeight <= height) return; // Check if can scroll up\n\n if (scrollTop) {\n scrollAreaClasses += 'canScrollUp';\n } // Check if can scroll down\n\n\n if (scrollTop + height < scrollHeight) {\n scrollAreaClasses += ' canScrollDown';\n }\n\n if (_this.state.scrollAreaClasses !== scrollAreaClasses) {\n _this.setState({\n scrollAreaClasses: scrollAreaClasses\n });\n }\n });\n\n _this.state = {\n scrollAreaClasses: ''\n };\n _this.scrollHandlerThrottled = throttled(150, _this.scrollHandler);\n return _this;\n }\n\n _createClass(ScrollableArea, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var scrollableClass = 'scrollable';\n\n if (this.props.scrollableClass) {\n scrollableClass += \" \".concat(this.props.scrollableClass);\n }\n\n if (this.props.scrollX) {\n scrollableClass += \" scrollX\";\n }\n\n if (this.props.scrollY) {\n scrollableClass += \" scrollY\";\n }\n\n return React.createElement(\"div\", {\n className: \"scrollArea \".concat(this.props.class, \" \").concat(this.state.scrollAreaClasses)\n }, React.createElement(\"div\", {\n className: scrollableClass,\n ref: function ref(element) {\n _this2.scrollableElement = element;\n },\n onScroll: this.scrollHandlerThrottled,\n onMouseEnter: this.scrollHandlerThrottled,\n onTransitionEnd: this.scrollHandlerThrottled\n }, this.props.children), React.createElement(\"div\", {\n className: \"scrollNav scrollNavUp\",\n onClick: this.scrollNavUp\n }), React.createElement(\"div\", {\n className: \"scrollNav scrollNavDown\",\n onClick: this.scrollNavDown\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.adjustMargins();\n this.scrollHandler();\n window.addEventListener('resize', this.adjustMargins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.adjustMargins);\n }\n }]);\n\n return ScrollableArea;\n}(Component);\n\n_defineProperty(ScrollableArea, \"propTypes\", {\n children: propTypes.node.isRequired,\n class: propTypes.string,\n scrollableClass: propTypes.string,\n scrollX: propTypes.bool,\n scrollY: propTypes.bool,\n hideScrollbar: propTypes.bool,\n scrollStep: propTypes.number\n});\n\n_defineProperty(ScrollableArea, \"defaultProps\", {\n hideScrollbar: true,\n class: 'flex-grow fit',\n scrollY: true,\n scrollX: false,\n scrollStep: 100\n});\n\nvar css$9 = \".measurementTable {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n.measurementTable .maxMeasurements {\\n border-radius: 3px;\\n color: var(--primary-background-color);\\n font-size: 12px;\\n font-weight: 500;\\n height: 19px;\\n line-height: 17px;\\n margin-top: 22px;\\n margin-right: 15px;\\n padding: 2px 6px 0;\\n text-transform: uppercase;\\n transition: all 0.3s ease;\\n background-color: var(--default-color);\\n}\\n.measurementTable .measurementTableHeader {\\n padding-left: 45px;\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem .timepointLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n}\\n\";\nstyleInject(css$9);\n\nvar MeasurementTable =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTable, _Component);\n\n function MeasurementTable(props) {\n var _this;\n\n _classCallCheck(this, MeasurementTable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MeasurementTable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurementsGroups\", function () {\n return _this.props.measurementCollection.map(function (measureGroup, index) {\n return React.createElement(TableList, {\n key: index,\n customHeader: _this.getCustomHeader(measureGroup)\n }, _this.getMeasurements(measureGroup));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurements\", function (measureGroup) {\n return measureGroup.measurements.map(function (measurement, index) {\n var key = \"\".concat(measureGroup.groupName, \"_\").concat(index);\n return React.createElement(MeasurementTableItem, {\n key: key,\n itemIndex: index,\n itemKey: key,\n itemClass: _this.state.selectedKey === key ? 'selected' : '',\n measurementData: measurement,\n onItemClick: _this.onItemClick,\n onRelabel: function onRelabel() {\n alert('relabel');\n },\n onDelete: function onDelete() {\n alert('delete');\n },\n onEditDescription: function onEditDescription() {\n alert('editDescription');\n }\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getCustomHeader\", function (measureGroup) {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, measureGroup.groupName), measureGroup.maxMeasurements && React.createElement(\"div\", {\n className: \"maxMeasurements\"\n }, \"MAX \", measureGroup.maxMeasurements), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, measureGroup.measurements.length));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTimepointsHeader\", function () {\n return _this.props.timepoints.map(function (timepoint, index) {\n return React.createElement(\"div\", {\n key: index,\n className: \"measurementTableHeaderItem\"\n }, React.createElement(\"div\", {\n className: \"timepointLabel\"\n }, timepoint.label), React.createElement(\"div\", {\n className: \"timepointDate\"\n }, timepoint.date));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event, itemProps) {\n _this.setState({\n selectedKey: itemProps.itemKey\n });\n });\n\n _this.state = {\n selectedKey: null\n };\n return _this;\n }\n\n _createClass(MeasurementTable, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"measurementTable\"\n }, React.createElement(\"div\", {\n className: \"measurementTableHeader\"\n }, this.getTimepointsHeader()), React.createElement(ScrollableArea, null, React.createElement(\"div\", null, this.getMeasurementsGroups())));\n }\n }]);\n\n return MeasurementTable;\n}(Component);\n\n_defineProperty(MeasurementTable, \"propTypes\", {\n measurementCollection: propTypes.array.isRequired,\n timepoints: propTypes.array.isRequired\n});\n\nvar PlayClipButton =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PlayClipButton, _Component);\n\n function PlayClipButton() {\n _classCallCheck(this, PlayClipButton);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PlayClipButton).apply(this, arguments));\n }\n\n _createClass(PlayClipButton, [{\n key: \"render\",\n value: function render() {\n var playClass = 'fa-stop';\n\n if (this.props.isPlaying) {\n playClass = 'fa-play';\n }\n\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"playClip\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Play/Stop Clip\"\n }, React.createElement(\"span\", {\n className: \"fa \".concat(playClass)\n })), React.createElement(\"button\", {\n id: \"toggleCineDialog\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Toggle CINE Dialog\"\n }, React.createElement(\"span\", {\n className: \"fa fa-youtube-play\"\n })));\n }\n }]);\n\n return PlayClipButton;\n}(Component);\nPlayClipButton.propTypes = {\n isPlaying: propTypes.bool.isRequired\n};\nPlayClipButton.defaultProps = {\n isPlaying: false\n};\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css$a = \".RoundedButtonGroup {\\n --height: 25px;\\n\\n position: relative;\\n z-index: 0;\\n}\\n\\n.roundedButtonWrapper {\\n cursor: pointer;\\n display: inline-block;\\n float: left;\\n margin-left: -2px;\\n text-decoration: none;\\n text-align: center;\\n}\\n\\n.roundedButtonWrapper.disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper .roundedButton {\\n align-items: center;\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--ui-border-color-dark);\\n color: var(--text-secondary-color);\\n display: flex;\\n font-size: 11px;\\n font-weight: 500;\\n justify-content: center;\\n height: var(--height);\\n line-height: var(--height);\\n padding: 0 22px;\\n position: relative;\\n text-transform: uppercase;\\n transition: var(--sidebar-transition);\\n z-index: 1;\\n}\\n\\n.roundedButtonWrapper .roundedButton svg {\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n\\n.roundedButtonWrapper\\n .roundedButton\\n svg\\n .roundedButtonWrapper\\n .roundedButton\\n span {\\n margin: 0 2px;\\n}\\n\\n.roundedButtonWrapper .roundedButton i {\\n line-height: 15px;\\n font-size: 15px;\\n}\\n\\n.bottomLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n font-weight: 500;\\n line-height: 12px;\\n margin-top: 8px;\\n}\\n\\n.roundedButtonWrapper:first-child {\\n margin-left: 0;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:first-child .roundedButton {\\n border-bottom-left-radius: var(--height);\\n border-top-left-radius: var(--height);\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:last-child .roundedButton {\\n border-bottom-right-radius: var(--height);\\n border-top-right-radius: var(--height);\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton {\\n background-color: var(--box-background-color);\\n color: var(--ui-gray-dark);\\n}\\n\\n.roundedButtonWrapper.active .roundedButton {\\n background-color: var(--active-color);\\n border-color: var(--ui-border-color-active);\\n color: var(--ui-gray-dark);\\n z-index: 2;\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton svg,\\n.roundedButtonWrapper.active .roundedButton svg {\\n fill: var(--ui-gray-dark);\\n stroke: var(--ui-gray-dark);\\n}\\n\";\nstyleInject(css$a);\n\nvar RoundedButtonGroup =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RoundedButtonGroup, _Component);\n\n function RoundedButtonGroup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RoundedButtonGroup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RoundedButtonGroup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickOption\", function (value) {\n var newValue = value;\n\n if (_this.props.value === value) {\n newValue = null;\n }\n\n if (_this.props.onValueChanged) {\n _this.props.onValueChanged(newValue);\n }\n });\n\n return _this;\n }\n\n _createClass(RoundedButtonGroup, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classnames(RoundedButtonGroup.className, 'clearfix center-table');\n var buttons = this.props.options.map(function (option, index) {\n var className = classnames({\n roundedButtonWrapper: true,\n noselect: true,\n active: _this2.props.value === option.value\n });\n var optionSVG;\n\n if (option.svgLink) {\n var svgStyle = {\n width: \"\".concat(option.svgWidth, \"px\"),\n height: \"\".concat(option.svgHeight, \"px\")\n };\n optionSVG = React.createElement(\"svg\", {\n style: svgStyle\n }, React.createElement(\"use\", {\n xlinkHref: option.svgLink\n }));\n }\n\n var optionText = option.text && React.createElement(\"span\", null, option.text);\n var optionIcon = option.iconClasses && React.createElement(\"i\", {\n className: option.iconClasses\n });\n var bottomLabel = option.bottomLabel && React.createElement(\"div\", {\n className: \"bottomLabel\"\n }, option.bottomLabel);\n return React.createElement(\"div\", {\n key: index,\n className: className,\n onClick: function onClick() {\n return _this2.onClickOption(option.value);\n }\n }, React.createElement(\"div\", {\n className: \"roundedButton\"\n }, optionSVG, optionText, optionIcon), bottomLabel);\n });\n return React.createElement(\"div\", {\n className: className\n }, buttons);\n }\n }]);\n\n return RoundedButtonGroup;\n}(Component);\n\n_defineProperty(RoundedButtonGroup, \"className\", 'RoundedButtonGroup');\n\n_defineProperty(RoundedButtonGroup, \"propTypes\", {\n options: propTypes.array,\n value: propTypes.string,\n onValueChanged: propTypes.func\n});\n\n_defineProperty(RoundedButtonGroup, \"defaultProps\", {\n options: [],\n value: null\n});\n\nvar css$b = \".dd-menu {\\n float: left;\\n margin-right: 10px;\\n cursor: pointer;\\n position: relative;\\n z-index: 999;\\n}\\n\\n.dd-title {\\n font-size: 13px;\\n}\\n\\n.dd-menu-toggle {\\n display: inline-block;\\n}\\n\\n.dd-caret-down {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-top: 0.5rem;\\n margin-left: 0.5rem;\\n border-top: 5px solid;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n}\\n\\n.dd-menu-list {\\n position: absolute;\\n top: 100%;\\n margin-top: 10px;\\n background: white;\\n border-radius: 5px;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n overflow: hidden;\\n transition: all 300ms ease;\\n -webkit-transition: all 300ms ease;\\n -moz-transition: all 300ms ease;\\n -ms-transition: all 300ms ease;\\n -o-transition: all 300ms ease;\\n}\\n\\n.dd-menu-list.open {\\n display: inline-block;\\n}\\n\\n.dd-menu-list.left {\\n left: 0;\\n}\\n\\n.dd-menu-list.right {\\n right: 0;\\n}\\n\\n.dd-menu-list.center {\\n left: 50%;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n -moz-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n}\\n\\n.dd-item {\\n display: flex;\\n color: var(--text-color-active);\\n padding: 10px 15px;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.dd-item:hover {\\n text-decoration: none;\\n background: #eee;\\n}\\n\\n.dd-item:last-child {\\n border-bottom: none;\\n}\\n\\n.dd-item-icon {\\n width: 10px;\\n text-align: center;\\n margin-right: 10px;\\n}\\n\\n.dd-item-icon:before {\\n vertical-align: middle;\\n}\\n\";\nstyleInject(css$b);\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Dropdown, _Component);\n\n function Dropdown() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Dropdown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Dropdown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n open: false\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderList\", function () {\n var _this$props = _this.props,\n list = _this$props.list,\n align = _this$props.align;\n\n if (!_this.state.open) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"dd-menu-list \".concat(align || 'left')\n }, list.map(function (_ref, key) {\n var icon = _ref.icon,\n title = _ref.title,\n link = _ref.link,\n _onClick = _ref.onClick;\n return React.createElement(\"a\", {\n href: link || '#',\n key: key,\n className: \"dd-item\",\n onClick: function onClick() {\n return _this.handleOnClick(_onClick);\n }\n }, icon && React.createElement(\"span\", {\n className: \"dd-item-icon \".concat(icon)\n }), React.createElement(\"span\", null, title));\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleOnClick\", function (onClick) {\n _this.toggleList();\n\n if (onClick) {\n onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMouseClick\", function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n _this.toggleList();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderTitleElement\", function () {\n var _this$props2 = _this.props,\n titleElement = _this$props2.titleElement,\n title = _this$props2.title;\n\n if (titleElement) {\n return titleElement;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"span\", {\n className: \"dd-title\"\n }, title), React.createElement(\"span\", {\n className: \"dd-caret-down\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"toggleList\", function () {\n var open = _this.state.open;\n var state = true;\n document.addEventListener('mousedown', _this.handleMouseClick, false);\n\n if (open) {\n document.removeEventListener('mousedown', _this.handleMouseClick, false);\n state = false;\n }\n\n _this.setState({\n open: state\n });\n });\n\n return _this;\n }\n\n _createClass(Dropdown, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", {\n className: \"dd-menu\",\n ref: function ref(node) {\n return _this2.node = node;\n }\n }, React.createElement(\"div\", {\n className: \"dd-menu-toggle\",\n onClick: this.toggleList\n }, this.renderTitleElement()), this.renderList());\n }\n }]);\n\n return Dropdown;\n}(Component);\n\n_defineProperty(Dropdown, \"propTypes\", {\n titleElement: propTypes.node,\n title: propTypes.string,\n align: propTypes.oneOf(['left', 'center', 'right']),\n list: propTypes.arrayOf(propTypes.shape({\n title: propTypes.string.isRequired,\n icon: propTypes.string,\n onClick: propTypes.func,\n link: propTypes.string\n }))\n});\n\nvar InputRadio =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InputRadio, _Component);\n\n function InputRadio() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, InputRadio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(InputRadio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (evt) {\n _this.props.onSelected(evt, _this.props.itemData);\n });\n\n return _this;\n }\n\n _createClass(InputRadio, [{\n key: \"render\",\n value: function render() {\n var labelClass = this.props.labelClass ? this.props.labelClass : '';\n return React.createElement(\"label\", {\n className: 'wrapperLabel radioLabel ' + labelClass,\n htmlFor: this.props.id\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: this.props.id,\n className: \"radioInput\",\n value: this.props.value,\n onChange: this.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, this.props.label));\n }\n }]);\n\n return InputRadio;\n}(Component);\n\nInputRadio.propTypes = {\n value: propTypes.string,\n label: propTypes.string.isRequired,\n itemData: propTypes.object.isRequired,\n labelClass: propTypes.string,\n id: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar SelectTreeBreadcrumb =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTreeBreadcrumb, _Component);\n\n function SelectTreeBreadcrumb() {\n _classCallCheck(this, SelectTreeBreadcrumb);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SelectTreeBreadcrumb).apply(this, arguments));\n }\n\n _createClass(SelectTreeBreadcrumb, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"selectTreeBreadcrumb\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel radioLabel\",\n htmlFor: \"selectTreeBreadcrumb\"\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: \"selectTreeBreadcrumb\",\n className: \"treeNode radioInput\",\n value: this.props.value,\n onChange: this.props.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, React.createElement(\"span\", {\n className: \"backIcon\"\n }, React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: \"/icons.svg#fast-backward\"\n }))), this.props.label)));\n }\n }]);\n\n return SelectTreeBreadcrumb;\n}(Component);\n\nSelectTreeBreadcrumb.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar css$c = \".selectTreeRoot {\\n text-align: initial;\\n width: 320px;\\n max-height: inherit;\\n font-size: 14px;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeContent {\\n max-height: inherit;\\n overflow: hidden;\\n border: 1px solid #c4c4c4;\\n border-radius: 5px;\\n background-color: #fff;\\n display: flex;\\n flex-direction: column;\\n}\\n.selectTreeRoot .treeHeader {\\n background-color: #c0c0c0;\\n border-bottom: 1px solid #c4c4c4;\\n color: #303030;\\n padding: 5px;\\n text-align: center;\\n}\\n.selectTreeRoot .treeHeader .wrapperText {\\n font-weight: bold;\\n padding-bottom: 2px;\\n}\\n.selectTreeRoot .treeHeader .wrapperSearch {\\n width: 100%;\\n}\\n.selectTreeRoot .treeHeader .searchIcon {\\n position: absolute;\\n width: 18px;\\n height: 15px;\\n margin: 10px;\\n color: #a3a3a3;\\n}\\n.selectTreeRoot .treeHeader .searchInput {\\n width: 100%;\\n height: 34px;\\n padding: 6px 12px 6px 35px;\\n background-color: #fff;\\n background-image: none;\\n border: 1px solid #9b9b9b;\\n border-radius: 4px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n color: #555;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.selectTreeRoot .treeHeader .searchInput:focus {\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6);\\n}\\n.selectTreeRoot .wrapperText {\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .wrapperLabel {\\n cursor: pointer;\\n padding: 0 12px;\\n height: 41px;\\n width: 100%;\\n line-height: 41px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon {\\n padding-right: 10px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon svg {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n top: 2px;\\n color: #457fb0;\\n}\\n.selectTreeRoot .treeOptions {\\n overflow: auto;\\n height: 100%;\\n}\\n.selectTreeRoot .treeOptions .selectTreeBreadcrumb + .treeInputsWrapper .treeInputs .treeLeaf {\\n border: none;\\n height: initial;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeOptions > .treeInputsWrapper > .treeInputs .treeLeaf {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .treeNode,\\n.selectTreeRoot .treeLeaf {\\n cursor: pointer;\\n display: block;\\n overflow: hidden;\\n font-weight: normal;\\n box-shadow: 0 0 0 200px transparent;\\n padding: 0 12px;\\n}\\n.selectTreeRoot .treeNode {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .radioLabel .radioInput {\\n display: none;\\n}\\n\";\nstyleInject(css$c);\n\nvar SelectTree =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTree, _Component);\n\n function SelectTree(props) {\n var _this;\n\n _classCallCheck(this, SelectTree);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTree).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"componentDidUpdate\", function () {\n _this.props.onComponentChange();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isLeafSelected\", function (item) {\n return item && !Array.isArray(item.items);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getLabelClass\", function (item) {\n var labelClass = 'treeLeaf';\n\n if (_this.state.searchTerm || Array.isArray(item.items)) {\n labelClass = 'treeNode';\n }\n\n return labelClass;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"headerItem\", function () {\n var title = _this.props.selectTreeFirstTitle;\n\n if (_this.state.currentNode && _this.props.selectTreeSecondTitle) {\n title = _this.props.selectTreeSecondTitle;\n }\n\n return React.createElement(\"div\", {\n className: \"wrapperLabel treeHeader\"\n }, React.createElement(\"div\", {\n className: \"wrapperText\"\n }, title), _this.props.searchEnabled && React.createElement(\"div\", {\n className: \"wrapperSearch\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-search searchIcon\"\n }), React.createElement(\"input\", {\n type: \"text\",\n className: \"searchInput\",\n placeholder: \"Search labels\",\n autoFocus: true,\n onChange: _this.searchLocations,\n value: _this.state.searchTerm ? _this.state.searchTerm : ''\n })));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"searchLocations\", function (evt) {\n _this.setState({\n currentNode: null,\n searchTerm: evt.currentTarget.value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (event, item) {\n if (_this.isLeafSelected(item)) {\n _this.setState({\n searchTerm: null,\n currentNode: null,\n value: null\n });\n\n return _this.props.onSelected(event, item);\n } else {\n _this.setState({\n currentNode: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onBreadcrumbSelected\", function () {\n _this.setState({\n currentNode: null\n });\n });\n\n _this.state = {\n searchTerm: null,\n currentNode: null,\n value: null\n };\n return _this;\n }\n\n _createClass(SelectTree, [{\n key: \"render\",\n value: function render() {\n var treeItems = this.getTreeItems();\n return React.createElement(\"div\", {\n className: \"selectTree selectTreeRoot\"\n }, React.createElement(\"div\", {\n className: \"treeContent\"\n }, this.headerItem(), React.createElement(\"div\", {\n className: \"treeOptions\"\n }, this.state.currentNode && React.createElement(SelectTreeBreadcrumb, {\n onSelected: this.onBreadcrumbSelected,\n label: this.state.currentNode.label,\n value: this.state.currentNode.value\n }), React.createElement(\"div\", {\n className: \"treeInputsWrapper\"\n }, React.createElement(\"div\", {\n className: \"treeInputs\"\n }, treeItems)))));\n }\n }, {\n key: \"getTreeItems\",\n value: function getTreeItems() {\n var _this2 = this;\n\n var storageKey = 'SelectTree';\n var treeItems;\n\n if (this.state.searchTerm) {\n var filteredItems = [];\n var rawItems = lodash_clonedeep(this.props.items);\n rawItems.forEach(function (item) {\n if (Array.isArray(item.items)) {\n item.items.forEach(function (item) {\n var label = item.label.toLowerCase();\n\n var searchTerm = _this2.state.searchTerm.toLowerCase();\n\n if (label.indexOf(searchTerm) !== -1) {\n filteredItems.push(item);\n }\n });\n }\n });\n treeItems = filteredItems;\n } else if (this.state.currentNode) {\n treeItems = lodash_clonedeep(this.state.currentNode.items);\n } else {\n treeItems = lodash_clonedeep(this.props.items);\n }\n\n return treeItems.map(function (item, index) {\n var itemKey = index;\n\n if (_this2.state.currentNode) {\n itemKey += \"_\".concat(_this2.state.currentNode.value);\n }\n\n return React.createElement(InputRadio, {\n key: itemKey,\n id: \"\".concat(storageKey, \"_\").concat(item.value),\n name: index,\n itemData: item,\n value: item.value,\n label: item.label,\n labelClass: _this2.getLabelClass(item),\n onSelected: _this2.onSelected\n });\n });\n }\n }]);\n\n return SelectTree;\n}(Component);\n\n_defineProperty(SelectTree, \"defaultProps\", {\n searchEnabled: true,\n selectTreeFirstTitle: 'First Level itens',\n items: []\n});\n\nSelectTree.propTypes = {\n searchEnabled: propTypes.bool,\n selectTreeFirstTitle: propTypes.string,\n selectTreeSecondTitle: propTypes.string,\n onComponentChange: propTypes.func,\n items: propTypes.array.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar css$d = \".simpleDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n z-index: 1000;\\n border: 0;\\n border-radius: 6px;\\n background-color: var(--ui-gray-darker);\\n}\\n.simpleDialog .header {\\n border-bottom: 3px solid var(--primary-background-color);\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.simpleDialog .header .title {\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 24px;\\n padding-right: 40px;\\n color: var(--text-secondary-color);\\n margin: 0;\\n}\\n.simpleDialog .header .closeBtn {\\n -webkit-transform: translateY(-50%);\\n color: var(--text-secondary-color);\\n height: 20px;\\n opacity: 1;\\n overflow: hidden;\\n padding: 2px;\\n position: absolute;\\n right: 21px;\\n text-align: center;\\n text-shadow: none;\\n top: 50%;\\n transform: translateY(-50%);\\n transition: color 0.3s ease;\\n width: 20px;\\n}\\n.simpleDialog .header .closeIcon {\\n color: transparent;\\n display: block;\\n font-size: 0;\\n height: 100%;\\n line-height: 0;\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n}\\n.simpleDialog .header .closeIcon:after,\\n.simpleDialog .header .closeIcon:before {\\n content: ' ';\\n display: block;\\n height: 2px;\\n transition: background-color 0.3s ease;\\n width: 19px;\\n background-color: var(--text-secondary-color);\\n}\\n.simpleDialog .header .closeIcon:before {\\n left: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n -webkit-transform-origin: 1px 50%;\\n transform-origin: 1px 50%;\\n}\\n.simpleDialog .header .closeIcon:after {\\n right: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-transform-origin: calc(100% - 1px) 50%;\\n transform-origin: calc(100% - 1px) 50%;\\n}\\n.simpleDialog .content {\\n padding: 16px 22px 25px;\\n position: relative;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .content .simpleDialogSelect,\\n.simpleDialog .content .simpleDialogInput {\\n background-color: var(--input-background-color);\\n color: var(--text-primary-color);\\n border: 0;\\n border-radius: 2px;\\n font-size: 14px;\\n height: 30px;\\n width: 100%;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n margin-top: 10px;\\n display: block;\\n}\\n.simpleDialog .content .simpleDialogLabelFor {\\n font-size: 14px;\\n font-weight: 700;\\n line-height: 16px;\\n margin: 10px 0 0 0;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .footer {\\n padding: 15px;\\n text-align: right;\\n}\\n.simpleDialog .footer .btn {\\n margin-left: 5px;\\n}\\n\";\nstyleInject(css$d);\n\nvar SimpleDialog =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SimpleDialog, _Component);\n\n function SimpleDialog() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SimpleDialog);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SimpleDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClose\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onClose();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onConfirm\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onConfirm();\n });\n\n return _this;\n }\n\n _createClass(SimpleDialog, [{\n key: \"render\",\n value: function render() {\n return React.createElement(React.Fragment, null, this.props.isOpen && React.createElement(\"div\", {\n className: \"simpleDialog \".concat(this.props.rootClass, \" \"),\n ref: this.props.componentRef,\n style: this.props.componentStyle\n }, React.createElement(\"form\", null, React.createElement(\"div\", {\n className: \"header\"\n }, React.createElement(\"span\", {\n className: \"closeBtn\",\n onClick: this.onClose\n }, React.createElement(\"span\", {\n className: \"closeIcon\"\n }, \"x\")), React.createElement(\"h4\", {\n className: \"title\"\n }, this.props.headerTitle)), React.createElement(\"div\", {\n className: \"content\"\n }, this.props.children), React.createElement(\"div\", {\n className: \"footer\"\n }, React.createElement(\"button\", {\n className: \"btn btn-default\",\n onClick: this.onClose\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.onConfirm\n }, \"Confirm\")))));\n }\n }]);\n\n return SimpleDialog;\n}(Component);\n\n_defineProperty(SimpleDialog, \"defaultProps\", {\n isOpen: true,\n componentStyle: {},\n rootClass: ''\n});\n\nSimpleDialog.propTypes = {\n headerTitle: propTypes.string.isRequired,\n onClose: propTypes.func.isRequired,\n onConfirm: propTypes.func.isRequired\n};\n\nfunction ViewportLoadingIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, \"Loading \", props.percentComplete);\n}\nViewportLoadingIndicator.propTypes = {\n percentComplete: propTypes.number\n};\n\nfunction ViewportErrorIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, React.createElement(\"p\", null, \"Error\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, props.details));\n}\nViewportErrorIndicator.propTypes = {\n details: propTypes.string\n};\n\nvar css$e = \":root {\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n --primary-background-color: #000;\\n --ui-border-color-dark: #3c5d80;\\n --sidebar-transition: all 0.3s ease;\\n}\\n.ThumbnailEntry.active .ImageThumbnail {\\n border-color: var(--active-color);\\n box-shadow: none;\\n transition: var(--sidebar-transition);\\n}\\n.ImageThumbnail {\\n background-color: var(--primary-background-color);\\n box-shadow: inset 0 0 0 1px var(--ui-border-color-dark);\\n border: 5px solid transparent;\\n border-radius: 12px;\\n height: 135px;\\n margin: 0 auto;\\n padding: 5px;\\n position: relative;\\n transition: var(--sidebar-transition);\\n width: 217px;\\n -moz-background-clip: padding;\\n -webkit-background-clip: padding;\\n background-clip: padding-box;\\n}\\n.image-thumbnail-canvas {\\n height: 100%;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n}\\n.image-thumbnail-canvas img {\\n -webkit-user-drag: none;\\n}\\n.thumbnailLoadingIndicator {\\n display: none;\\n pointer-events: none;\\n color: var(--text-secondary-color);\\n height: 20px;\\n width: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n margin: auto;\\n position: absolute;\\n}\\n.thumbnailLoadingIndicator.d-block {\\n display: block;\\n}\\n.thumbnailLoadingIndicator p {\\n text-align: center;\\n font-size: 10pt;\\n}\\n.image-thumbnail-progress-bar {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n top: -5px;\\n}\\n.image-thumbnail-progress-bar .image-thumbnail-progress-bar-inner {\\n height: 100%;\\n width: 0;\\n border-radius: 5px;\\n background-color: var(--active-color);\\n}\\n\";\nstyleInject(css$e);\n\n// - Passed in as a prop?\n// - Set as external dependency?\n// - Pass in the entire load and render function as a prop?\n//import cornerstone from 'cornerstone-core';\n\n/**\n * Asynchronous wrapper around Cornerstone's renderToCanvas method.\n *\n * @param {HTMLElement} canvasElement An HTML element\n * @param {Image} image A Cornerstone Image\n *\n * @return {Promise} A promise tracking the progress of the rendering. Resolves empty.\n */\n\nfunction renderAsync(canvasElement, image) {\n return new Promise(function (resolve, reject) {\n try {\n cornerstone.renderToCanvas(canvasElement, image);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nvar ImageThumbnail =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageThumbnail, _PureComponent);\n\n function ImageThumbnail(props) {\n var _this;\n\n _classCallCheck(this, ImageThumbnail);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageThumbnail).call(this, props));\n _this.canvas = React.createRef();\n var renderIntoCanvas = _this.props.imageId && !_this.props.imageSrc;\n _this.state = {\n loading: renderIntoCanvas\n };\n return _this;\n }\n\n _createClass(ImageThumbnail, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n\n if (renderIntoCanvas) {\n var imageId = this.props.imageId;\n var canvas = this.canvas.current;\n cornerstone.loadAndCacheImage(imageId).then(function (image) {\n renderAsync(canvas, image).then(function () {\n _this2.setState({\n loading: false\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var loadingOrError;\n\n if (this.props.error) {\n loadingOrError = React.createElement(ViewportErrorIndicator, null);\n } else if (this.state.loading) {\n loadingOrError = React.createElement(ViewportLoadingIndicator, null);\n }\n\n var showStackLoadingProgressBar = this.props.stackPercentComplete !== undefined;\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n return React.createElement(\"div\", {\n className: \"ImageThumbnail\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-canvas\"\n }, renderIntoCanvas ? React.createElement(\"canvas\", {\n ref: this.canvas,\n width: this.props.width,\n height: this.props.height\n }) : React.createElement(\"img\", {\n className: \"static-image\",\n src: this.props.imageSrc //width={this.props.width}\n ,\n height: this.props.height,\n alt: ''\n })), loadingOrError, showStackLoadingProgressBar && React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar-inner\",\n style: {\n width: \"\".concat(this.props.stackPercentComplete, \"%\")\n }\n })));\n }\n }]);\n\n return ImageThumbnail;\n}(PureComponent);\n\n_defineProperty(ImageThumbnail, \"propTypes\", {\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n width: propTypes.number.isRequired,\n height: propTypes.number.isRequired,\n stackPercentComplete: propTypes.number.isRequired\n});\n\n_defineProperty(ImageThumbnail, \"defaultProps\", {\n error: false,\n stackPercentComplete: 0,\n width: 217,\n height: 123\n});\n\nvar css$f = \":root {\\n --series-count-background-color: #678696;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n}\\n.ThumbnailEntry {\\n cursor: pointer;\\n display: table;\\n}\\n.ThumbnailEntry .p-x-1 {\\n padding: 0 1rem;\\n}\\n.ThumbnailEntry .series-details {\\n display: flex;\\n flex-direction: row;\\n color: var(--text-primary-color);\\n font-size: 14px;\\n line-height: 1.3em;\\n margin-top: 5px;\\n margin-left: 1rem;\\n margin-right: 1rem;\\n max-width: 217px;\\n min-height: 36px;\\n position: relative;\\n word-wrap: break-word;\\n}\\n.ThumbnailEntry .series-details .series-description {\\n flex-grow: 1;\\n}\\n.ThumbnailEntry .series-details.info-only .series-description {\\n display: none;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information {\\n display: flex;\\n flex-grow: 1;\\n float: none;\\n max-width: none;\\n padding-right: 0;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item {\\n flex: 1;\\n text-align: center;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .icon,\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n display: inline;\\n float: none;\\n line-height: 25px;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n margin-left: 0;\\n width: auto;\\n}\\n.ThumbnailEntry .series-information {\\n padding-right: 4px;\\n max-width: 50px;\\n}\\n.ThumbnailEntry .series-information .item-frames .icon {\\n height: 18px;\\n}\\n.ThumbnailEntry .series-information .value {\\n color: var(--text-secondary-color);\\n display: inline-block;\\n float: right;\\n font-size: 12px;\\n margin-left: 4px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: calc(100% - 15px);\\n}\\n.ThumbnailEntry .series-information .icon {\\n color: var(--active-color);\\n display: inline-block;\\n float: left;\\n font-size: 10px;\\n font-weight: 900;\\n text-align: right;\\n width: 11px;\\n}\\n.ThumbnailEntry .series-information .icon div {\\n background-color: var(--series-count-background-color);\\n margin-top: 6px;\\n position: relative;\\n}\\n.ThumbnailEntry .series-information .icon div:after {\\n background-color: var(--active-color);\\n box-shadow: 1px 1px rgba(0,0,0,0.115);\\n left: -5px;\\n position: absolute;\\n top: -5px;\\n}\\n.ThumbnailEntry .series-information .icon div,\\n.ThumbnailEntry .series-information .icon div:after {\\n border: 1px solid var(--series-count-background-color);\\n content: '';\\n display: inline-block;\\n height: 11px;\\n width: 11px;\\n}\\n.image-thumbnail-clone {\\n z-index: 100000;\\n pointer-events: none;\\n}\\n.image-thumbnail-clone:hover {\\n border-color: var(--hover-color);\\n box-shadow: none;\\n}\\n\";\nstyleInject(css$f);\n\nvar ThumbnailEntry =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntry, _Component);\n\n function ThumbnailEntry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThumbnailEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThumbnailEntry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n if (_this.props.onClick) {\n _this.props.onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDoubleClick\", function () {\n if (_this.props.onDoubleClick) {\n _this.props.onDoubleClick();\n }\n });\n\n return _this;\n }\n\n _createClass(ThumbnailEntry, [{\n key: \"render\",\n value: function render() {\n var hasInstanceNumber = this.props.instanceNumber !== undefined;\n var className = classnames('ThumbnailEntry noselect', {\n active: this.props.active\n });\n return React.createElement(\"div\", {\n className: className,\n onClick: this.onClick,\n onDoubleClick: this.onDoubleClick,\n onMouseDown: this.onMouseDown\n }, React.createElement(\"div\", {\n className: \"p-x-1\"\n }, React.createElement(ImageThumbnail, {\n imageSrc: this.props.imageSrc,\n imageId: this.props.imageId,\n error: this.props.error,\n stackPercentComplete: this.props.stackPercentComplete\n })), React.createElement(\"div\", {\n className: 'series-details'\n }, React.createElement(\"div\", {\n className: \"series-description\"\n }, this.props.seriesDescription), React.createElement(\"div\", {\n className: \"series-information\"\n }, React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"S:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.seriesNumber)), hasInstanceNumber && React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"I:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.instanceNumber)), React.createElement(\"div\", {\n className: \"item item-frames clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, React.createElement(\"div\", null)), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.numImageFrames)))));\n }\n }]);\n\n return ThumbnailEntry;\n}(Component);\n\n_defineProperty(ThumbnailEntry, \"defaultProps\", {\n active: false,\n error: false,\n stackPercentComplete: 0\n});\n\n_defineProperty(ThumbnailEntry, \"propTypes\", {\n id: propTypes.string.isRequired,\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n active: propTypes.bool.isRequired,\n stackPercentComplete: propTypes.number,\n seriesDescription: propTypes.string,\n seriesNumber: propTypes.string,\n instanceNumber: propTypes.string,\n numImageFrames: propTypes.number,\n onDoubleClick: propTypes.func,\n onClick: propTypes.func\n});\n\n// if they have the same string type.\n\nvar Types$2 = {\n THUMBNAIL: 'thumbnail'\n};\nvar thumbnailSource = {\n /*canDrag(props) {\n return props.error === false;\n },*/\n beginDrag: function beginDrag(props) {\n return props;\n },\n endDrag: function endDrag(props, monitor) {\n //const item = monitor.getItem();\n var dropResult = monitor.getDropResult();\n }\n};\n\nvar ThumbnailEntryDragSource =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntryDragSource, _Component);\n\n function ThumbnailEntryDragSource() {\n _classCallCheck(this, ThumbnailEntryDragSource);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThumbnailEntryDragSource).apply(this, arguments));\n }\n\n _createClass(ThumbnailEntryDragSource, [{\n key: \"render\",\n value: function render() {\n var connectDragSource = this.props.connectDragSource;\n var dropEffect = 'copy';\n return connectDragSource(React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, this.props)), {\n dropEffect: dropEffect\n });\n }\n }]);\n\n return ThumbnailEntryDragSource;\n}(Component);\n\n_defineProperty(ThumbnailEntryDragSource, \"propTypes\", {\n connectDragSource: propTypes.func.isRequired,\n isDragging: propTypes.bool.isRequired\n});\n\n_defineProperty(ThumbnailEntryDragSource, \"defaultProps\", {\n isDragging: false\n});\n\nvar collect$2 = function collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n};\n\nvar ThumbnailEntryDragSource$1 = lib_4(Types$2.THUMBNAIL, thumbnailSource, collect$2)(ThumbnailEntryDragSource);\n\nvar css$g = \".StudyBrowser {\\n float: left;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n background-color: #000;\\n padding-bottom: 20px;\\n}\\n.StudyBrowser .scrollable-study-thumbnails {\\n height: 100%;\\n overflow-y: auto;\\n overflow-x: hidden;\\n padding-bottom: 50px;\\n padding-right: 16px;\\n padding-left: 4px;\\n margin-right: -16px;\\n display: flex;\\n flex-direction: column;\\n}\\n.StudyBrowser .scrollable-study-thumbnails::-webkit-scrollbar {\\n display: none;\\n}\\n.StudyBrowser .scrollable-study-thumbnails .ThumbnailEntryContainer {\\n margin: 0 auto;\\n padding-top: 1rem;\\n padding-bottom: 1.5rem;\\n}\\n.draggable {\\n cursor: copy;\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n}\\n\";\nstyleInject(css$g);\n\nvar StudyBrowser =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyBrowser, _Component);\n\n function StudyBrowser() {\n _classCallCheck(this, StudyBrowser);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudyBrowser).apply(this, arguments));\n }\n\n _createClass(StudyBrowser, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var studies = this.props.studies;\n var thumbnails = studies.map(function (study, studyIndex) {\n return study.thumbnails.map(function (thumb, thumbIndex) {\n if (_this.props.supportsDragAndDrop) {\n return React.createElement(ThumbnailEntryDragSource$1, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n })));\n }\n });\n });\n var components = thumbnails.flat();\n return React.createElement(\"div\", {\n className: \"StudyBrowser\"\n }, React.createElement(\"div\", {\n className: \"scrollable-study-thumbnails\"\n }, components));\n }\n }]);\n\n return StudyBrowser;\n}(Component);\n\n_defineProperty(StudyBrowser, \"defaultProps\", {\n studies: [],\n supportsDragAndDrop: true\n});\n\n_defineProperty(StudyBrowser, \"propTypes\", {\n studies: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n onThumbnailClick: propTypes.func,\n onThumbnailDoubleClick: propTypes.func\n});\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar css$h = \".studyListToolbar {\\n background-color: var(--ui-gray-darker);\\n height: 75px;\\n margin-bottom: 2px;\\n padding: 0 8%;\\n}\\n.studyListToolbar>div {\\n display: inline-block;\\n}\\n.studyListToolbar .header {\\n font-size: 22px;\\n font-weight: 300;\\n color: var(--table-text-secondary-color);\\n line-height: 75px;\\n}\\n.studyListToolbar .studylistToolbar {\\n height: 75px;\\n line-height: 75px;\\n}\\n.studyListToolbar .studyCount {\\n color: var(--large-numbers-color);\\n font-size: 40px;\\n font-weight: 100;\\n line-height: 75px;\\n}\\n.theadBackground {\\n height: 121px;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before,\\n.theadBackground:after {\\n content: '';\\n display: block;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before {\\n background-color: var(--ui-gray-darker);\\n height: 100%;\\n top: 0;\\n z-index: 1;\\n}\\n.theadBackground:after {\\n background-color: var(--large-numbers-color);\\n bottom: -1px;\\n height: 1px;\\n z-index: 3;\\n}\\n#studyListContainer {\\n width: 100%;\\n padding: 0 8%;\\n position: absolute;\\n z-index: 2;\\n}\\n#studyListContainer .loadingTextDiv {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n}\\n#studyListContainer .notFound {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n font-weight: 200;\\n text-align: center;\\n}\\n#studyListContainer table#tblStudyList tr {\\n height: 20px;\\n}\\n#studyListContainer table#tblStudyList thead {\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList thead tr th {\\n padding: 0;\\n border-bottom: solid 1px var(--ui-border-color-active);\\n width: 100%;\\n}\\n#studyListContainer table#tblStudyList thead tr th.studyDate {\\n min-width: 230px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell {\\n display: inline-block;\\n cursor: pointer;\\n width: 100%;\\n min-width: 95px;\\n margin: 0 auto;\\n color: var(--table-text-primary-color);\\n font-weight: 400;\\n padding: 20px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell span {\\n font-size: 15px;\\n float: left;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell i {\\n margin: 0 5px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:hover {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell.active,\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:active {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search {\\n height: 40px;\\n margin: 0 5px 20px 5px;\\n padding: 0 20px;\\n cursor: pointer;\\n border: none;\\n background-color: var(--input-background-color);\\n color: var(--input-placeholder-color);\\n font-size: 10pt;\\n font-weight: normal;\\n width: calc(100% - 10px);\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-webkit-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-ms-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search.invisible {\\n visibility: hidden;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:active,\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:hover {\\n background-color: var(--input-background-color);\\n}\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-year-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-month-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-day-field:not([aria-valuenow]) {\\n color: transparent;\\n}\\n#studyListContainer table#tblStudyList tbody tr {\\n padding: 5px;\\n background-color: #000;\\n}\\n#studyListContainer table#tblStudyList tbody tr:nth-child(even) {\\n background-color: var(--ui-gray-darker);\\n}\\n#studyListContainer table#tblStudyList tbody tr td {\\n height: 40px;\\n line-height: 40px;\\n color: var(--table-text-primary-color);\\n font-weight: 300;\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList tbody tr td.emptyValue {\\n color: var(--ui-gray-light);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover,\\n#studyListContainer table#tblStudyList tbody tr:active,\\n#studyListContainer table#tblStudyList tbody tr.active {\\n background-color: var(--table-hover-color);\\n color: var(--text-primary-color);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover td,\\n#studyListContainer table#tblStudyList tbody tr:active td,\\n#studyListContainer table#tblStudyList tbody tr.active td {\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n background-color: var(--table-hover-color);\\n}\\n@media only screen and (max-width: 1362px) {\\n #studyListContainer {\\n padding: 0 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 5%;\\n }\\n}\\n@media only screen and (max-width: 1161px) {\\n #studyListContainer {\\n padding: 0 $tablePaddingBigWidth;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 3%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 3%;\\n }\\n}\\n@media only screen and (max-width: 1069px) {\\n .theadBackground {\\n height: 101px;\\n }\\n .studylist-pagination > .row {\\n margin-right: 0;\\n }\\n .studyListToolbar {\\n padding: 0 5px;\\n }\\n #studyListContainer {\\n padding: 0;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th input.worklist-search {\\n padding: 10px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell {\\n padding: 10px 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell i {\\n width: auto;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer .worklistPagination .row {\\n margin-left: 0;\\n margin-right: 0;\\n }\\n}\\n\";\nstyleInject(css$h);\n\nvar css$i = \".studyListToolbar .addNewStudy {\\n margin: 0 10px;\\n}\\n.studyListToolbar .addNewStudy label {\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n cursor: pointer;\\n}\\n.studyListToolbar .addNewStudy:hover {\\n color: var(--hover-color);\\n}\\n.studyListToolbar .addNewStudy:active {\\n color: var(--active-color);\\n}\\n.studyListToolbar .addNewStudy input {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\n\";\nstyleInject(css$i);\n\nvar StudylistToolbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(StudylistToolbar, _PureComponent);\n\n function StudylistToolbar() {\n _classCallCheck(this, StudylistToolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudylistToolbar).apply(this, arguments));\n }\n\n _createClass(StudylistToolbar, [{\n key: \"clear\",\n value: function clear(e) {\n e.target.value = null;\n }\n }, {\n key: \"getImportTool\",\n value: function getImportTool() {\n if (this.props.onImport && this.props.studyListFunctionsEnabled) {\n return React.createElement(\"div\", {\n className: \"addNewStudy btn-file\"\n }, React.createElement(\"label\", {\n htmlFor: \"btnImport\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }), \"Import study\"), React.createElement(\"input\", {\n id: \"btnImport\",\n onChange: this.props.onImport,\n onClick: this.clear,\n className: \"js-import-files\",\n type: \"file\",\n webkitdirectory: \"true\",\n directory: \"true\",\n multiple: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"studylistToolbar\"\n }, this.getImportTool());\n }\n }]);\n\n return StudylistToolbar;\n}(PureComponent);\n\n_defineProperty(StudylistToolbar, \"propTypes\", {\n studyListFunctionsEnabled: propTypes.bool.isRequired,\n onImport: propTypes.func\n});\n\n_defineProperty(StudylistToolbar, \"defaultProps\", {\n studyListFunctionsEnabled: true\n});\n\nfunction LoadingText() {\n return React.createElement(\"div\", {\n className: \"loadingTextDiv\"\n }, React.createElement(\"h5\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spinner fa-pulse\"\n })));\n}\n\nvar css$j = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --primary-background-color: #000;\\n}\\n.pagination-area {\\n color: var(--text-secondary-color);\\n font-size: 13px;\\n font-weight: normal !important;\\n}\\n.pagination-area label {\\n font-weight: normal;\\n}\\n.pagination-area select {\\n margin: 5px;\\n background-color: var(--primary-background-color);\\n color: #fff;\\n}\\n.rows-per-page label.wrapperLabel {\\n display: inline-table !important;\\n margin: 0 4px;\\n}\\n.rows-per-page label.wrapperLabel select {\\n margin: 0px 4px 0px 4px;\\n width: 42px;\\n}\\n.page-buttons {\\n margin: 0;\\n text-align: right;\\n}\\n.page-buttons label {\\n font-weight: normal;\\n}\\n.page-buttons label ul.pagination-control {\\n margin: 0;\\n}\\n.page-buttons label ul.pagination-control li {\\n display: table-cell;\\n padding: 5px 2px;\\n}\\n.page-buttons label ul.pagination-control li button {\\n padding: 4px 8px;\\n background-color: var(--primary-background-color);\\n border-color: var(--ui-gray);\\n color: var(--ui-gray-darkest);\\n color: #fff;\\n text-decoration: none;\\n}\\n.page-buttons label ul.pagination-control li button:hover:enabled {\\n color: var(--active-color);\\n}\\n.page-buttons label ul.pagination-control li .active button {\\n background-color: var(--ui-gray);\\n border-color: #ddd;\\n color: #fff;\\n}\\n\";\nstyleInject(css$j);\n\nvar PaginationArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PaginationArea, _PureComponent);\n\n function PaginationArea() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PaginationArea);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationArea)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nextPage\", function () {\n _this.props.nextPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"prevPage\", function () {\n _this.props.prevPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onRowsPerPageChange\", function (event) {\n _this.props.onRowsPerPageChange(parseInt(event.target.value));\n });\n\n return _this;\n }\n\n _createClass(PaginationArea, [{\n key: \"renderPaginationButtons\",\n value: function renderPaginationButtons() {\n return React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-buttons noselect\"\n }, React.createElement(\"label\", null, React.createElement(\"ul\", {\n className: \"pagination-control no-margins\"\n }, React.createElement(\"li\", {\n className: \"page-item prev\"\n }, React.createElement(\"button\", {\n onClick: this.prevPage,\n disabled: this.props.currentPage === 0,\n className: \"btn page-link\"\n }, \"Previous\")), React.createElement(\"li\", {\n className: \"page-item next\"\n }, React.createElement(\"button\", {\n onClick: this.nextPage,\n disabled: this.props.currentPage === this.props.numberOfPages - 1,\n className: \"btn page-link\"\n }, \"Next\"))))));\n }\n }, {\n key: \"renderRowsPerPageDropdown\",\n value: function renderRowsPerPageDropdown() {\n return React.createElement(\"div\", {\n className: \"form-inline form-group rows-per-page\"\n }, React.createElement(\"span\", null, \"Show\"), React.createElement(\"select\", {\n onChange: this.onRowsPerPageChange,\n defaultValue: this.props.rowsPerPage\n }, this.props.pageOptions.map(function (pageNumber) {\n return React.createElement(\"option\", {\n key: pageNumber,\n value: pageNumber\n }, pageNumber);\n })), React.createElement(\"span\", null, \"rows per page\"));\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n name: \"paginationArea\"\n }, React.createElement(\"div\", {\n className: \"pagination-area\"\n }, React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"div\", {\n className: \"col-xs-4 col-sm-3 col-md-3\"\n }, this.renderRowsPerPageDropdown()), React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-number pull-right\"\n }, this.renderPaginationButtons())))));\n }\n }]);\n\n return PaginationArea;\n}(PureComponent);\n\n_defineProperty(PaginationArea, \"defaultProps\", {\n pageOptions: [5, 10, 25, 50, 100],\n rowsPerPage: 25,\n currentPage: 0,\n numberOfPages: 1\n});\n\n_defineProperty(PaginationArea, \"propTypes\", {\n pageOptions: propTypes.array.isRequired,\n rowsPerPage: propTypes.number.isRequired,\n currentPage: propTypes.number.isRequired,\n numberOfPages: propTypes.number.isRequired,\n nextPageFunc: propTypes.func,\n prevPageFunc: propTypes.func,\n onRowsPerPageChange: propTypes.func\n});\n\nvar StudyList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyList, _Component);\n\n function StudyList(props) {\n var _this;\n\n _classCallCheck(this, StudyList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyList).call(this, props));\n var sortData = {};\n var sortClasses = {\n patientName: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n patientId: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n accessionNumber: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDate: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n modality: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDescription: StudyList.DEFAULT_SORTABLE_ICON_CLS\n };\n\n if (props.defaultSort) {\n sortData.field = props.defaultSort.field;\n sortData.order = props.defaultSort.order;\n sortClasses[props.defaultSort.field] = props.defaultSort.order === 'desc' ? StudyList.DESC_SORT_ICON_CLS : StudyList.ASC_SORT_ICON_CLS;\n }\n\n _this.state = {\n loading: false,\n error: false,\n sortClasses: sortClasses,\n searchData: {\n sortData: sortData,\n currentPage: _this.props.currentPage,\n rowsPerPage: _this.props.rowsPerPage\n },\n highlightedItem: ''\n };\n _this.getChangeHandler = _this.getChangeHandler.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onInputKeydown = _this.onInputKeydown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.nextPage = _this.nextPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.prevPage = _this.prevPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onRowsPerPageChange = _this.onRowsPerPageChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(StudyList, [{\n key: \"getChangeHandler\",\n value: function getChangeHandler(key) {\n var _this2 = this;\n\n return function (event) {\n _this2.setSearchData(key, event.target.value);\n };\n }\n }, {\n key: \"setSearchData\",\n value: function setSearchData(key, value, callback) {\n var searchData = this.state.searchData;\n searchData[key] = value;\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"setSearchDataBatch\",\n value: function setSearchDataBatch(keyValues, callback) {\n var searchData = this.state.searchData;\n Object.keys(keyValues).forEach(function (key) {\n searchData[key] = keyValues[key];\n });\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"onInputKeydown\",\n value: function () {\n var _onInputKeydown = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(event) {\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation(); // reset the page because user is doing a new search\n\n this.setSearchData('currentPage', 0, this.search);\n }\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onInputKeydown(_x) {\n return _onInputKeydown.apply(this, arguments);\n }\n\n return onInputKeydown;\n }()\n }, {\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2() {\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n this.setState({\n loading: true,\n error: false\n });\n _context2.next = 4;\n return this.props.onSearch(this.state.searchData);\n\n case 4:\n _context2.next = 10;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2[\"catch\"](0);\n this.setState({\n error: true\n });\n throw new Error(_context2.t0);\n\n case 10:\n _context2.prev = 10;\n this.setState({\n loading: false\n });\n return _context2.finish(10);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6, 10, 13]]);\n }));\n\n function search() {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"renderNoMachingResults\",\n value: function renderNoMachingResults() {\n if (!this.props.studies.length && !this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"No matching results\");\n }\n }\n }, {\n key: \"renderHasError\",\n value: function renderHasError() {\n if (this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"There was an error fetching studies\");\n }\n }\n }, {\n key: \"renderIsLoading\",\n value: function renderIsLoading() {\n if (this.state.loading) {\n return React.createElement(\"div\", {\n className: \"loading\"\n }, React.createElement(LoadingText, null));\n }\n }\n }, {\n key: \"nextPage\",\n value: function nextPage(currentPage) {\n currentPage = currentPage + 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"prevPage\",\n value: function prevPage(currentPage) {\n currentPage = currentPage - 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"onRowsPerPageChange\",\n value: function onRowsPerPageChange(rowsPerPage) {\n this.setSearchDataBatch({\n rowsPerPage: rowsPerPage,\n currentPage: 0\n }, this.search);\n }\n }, {\n key: \"onSortClick\",\n value: function onSortClick(key) {\n var _this3 = this;\n\n return function () {\n var sortClasses = _this3.state.sortClasses;\n var order;\n\n if (sortClasses[key] === StudyList.ASC_SORT_ICON_CLS) {\n sortClasses[key] = StudyList.DESC_SORT_ICON_CLS;\n order = 'desc';\n } else {\n sortClasses[key] = StudyList.ASC_SORT_ICON_CLS;\n order = 'asc';\n }\n\n Object.keys(sortClasses).forEach(function (sortClassKey) {\n if (sortClassKey !== key) {\n sortClasses[sortClassKey] = StudyList.DEFAULT_SORTABLE_ICON_CLS;\n }\n });\n\n _this3.setState({\n sortClasses: sortClasses\n }, function () {\n _this3.setSearchData('sortData', {\n field: key,\n order: order\n }, _this3.search);\n });\n };\n }\n }, {\n key: \"onHighlightItem\",\n value: function onHighlightItem(studyItemUid) {\n this.setState({\n highlightedItem: studyItemUid\n });\n }\n }, {\n key: \"renderTableRow\",\n value: function renderTableRow(study) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: study.studyInstanceUID,\n className: this.state.highlightedItem === study.studyInstanceUID ? 'studylistStudy noselect active' : 'studylistStudy noselect',\n onClick: function onClick() {\n _this4.onHighlightItem(study.studyInstanceUID);\n },\n onMouseDown: function onMouseDown(event) {\n // middle/wheel click\n if (event.button === 1) {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n },\n onDoubleClick: function onDoubleClick() {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n }, React.createElement(\"td\", {\n className: \"patientName\"\n }, study.patientName), React.createElement(\"td\", {\n className: \"patientId\"\n }, study.patientId), React.createElement(\"td\", {\n className: \"accessionNumber\"\n }, study.accessionNumber), React.createElement(\"td\", {\n className: \"studyDate\"\n }, study.studyDate), React.createElement(\"td\", {\n className: \"modalities\"\n }, study.modalities), React.createElement(\"td\", {\n className: \"studyDescription\"\n }, study.studyDescription));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n className: \"StudyList\"\n }, React.createElement(\"div\", {\n className: \"studyListToolbar clearfix\"\n }, React.createElement(\"div\", {\n className: \"header pull-left\"\n }, \"Study List\"), React.createElement(\"div\", {\n className: \"studyCount pull-right\"\n }, this.props.studyCount), React.createElement(\"div\", {\n className: \"pull-right\"\n }, React.createElement(StudylistToolbar, {\n studyListFunctionsEnabled: this.props.studyListFunctionsEnabled,\n onImport: this.props.onImport\n }))), React.createElement(\"div\", {\n className: \"theadBackground\"\n }), React.createElement(\"div\", {\n id: \"studyListContainer\"\n }, React.createElement(\"table\", {\n id: \"tblStudyList\",\n className: \"studylistResult table noselect\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"patientName\"\n }, React.createElement(\"div\", {\n id: \"_patientName\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientName')\n }, React.createElement(\"span\", null, \"Patient Name\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientName\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientName\",\n value: this.state.patientName,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientName')\n })), React.createElement(\"th\", {\n className: \"patientId\"\n }, React.createElement(\"div\", {\n id: \"_patientId\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientId')\n }, React.createElement(\"span\", null, \"MRN\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientId\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientId\",\n value: this.state.patientId,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientId')\n })), React.createElement(\"th\", {\n className: \"accessionNumber\"\n }, React.createElement(\"div\", {\n id: \"_accessionNumber\",\n className: \"sortingCell\",\n onClick: this.onSortClick('accessionNumber')\n }, React.createElement(\"span\", null, \"Accession #\"), React.createElement(\"i\", {\n className: this.state.sortClasses.accessionNumber\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"accessionNumber\",\n value: this.state.accessionNumber,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('accessionNumber')\n })), React.createElement(\"th\", {\n className: \"studyDate\"\n }, React.createElement(\"div\", {\n id: \"_studyDate\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDate')\n }, React.createElement(\"span\", null, \"Study Date\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDate\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n name: \"daterange\",\n id: \"studyDate\",\n value: this.state.studyDateRange,\n onChange: this.getChangeHandler('studyDateRange')\n })), React.createElement(\"th\", {\n className: \"modality\"\n }, React.createElement(\"div\", {\n id: \"_modality\",\n className: \"sortingCell\",\n onClick: this.onSortClick('modality')\n }, React.createElement(\"span\", null, \"Modality\"), React.createElement(\"i\", {\n className: this.state.sortClasses.modality\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"modality\",\n onKeyDown: this.onInputKeydown,\n value: this.state.modality,\n onChange: this.getChangeHandler('modality')\n })), React.createElement(\"th\", {\n className: \"studyDescription\"\n }, React.createElement(\"div\", {\n id: \"_studyDescription\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDescription')\n }, React.createElement(\"span\", null, \"Study Description\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDescription\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"studyDescription\",\n onKeyDown: this.onInputKeydown,\n value: this.state.studyDescription,\n onChange: this.getChangeHandler('studyDescription')\n })))), React.createElement(\"tbody\", {\n id: \"studyListData\"\n }, this.props.studies.map(function (study) {\n return _this5.renderTableRow(study);\n }))), this.renderIsLoading(), this.renderHasError(), this.renderNoMachingResults(), React.createElement(PaginationArea, {\n currentPage: this.state.searchData.currentPage,\n nextPageFunc: this.nextPage,\n prevPageFunc: this.prevPage,\n onRowsPerPageChange: this.onRowsPerPageChange,\n rowsPerPage: this.state.searchData.rowsPerPage,\n numberOfPages: Math.ceil(this.props.studyCount / this.state.searchData.rowsPerPage)\n })));\n }\n }]);\n\n return StudyList;\n}(Component);\n\n_defineProperty(StudyList, \"propTypes\", {\n studies: propTypes.array.isRequired,\n onSelectItem: propTypes.func.isRequired,\n onSearch: propTypes.func.isRequired,\n studyCount: propTypes.number.isRequired,\n currentPage: propTypes.number,\n rowsPerPage: propTypes.number,\n studyListFunctionsEnabled: propTypes.bool,\n defaultSort: propTypes.shape({\n field: propTypes.string.isRequired,\n order: propTypes.oneOf(['desc', 'asc']).isRequired\n }),\n onImport: propTypes.func\n});\n\n_defineProperty(StudyList, \"defaultProps\", {\n currentPage: 0,\n rowsPerPage: 25\n});\n\n_defineProperty(StudyList, \"DEFAULT_SORTABLE_ICON_CLS\", 'fa fa-fw fa-sort');\n\n_defineProperty(StudyList, \"DESC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-desc');\n\n_defineProperty(StudyList, \"ASC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-asc');\n\nfunction SimpleToolbarButton(props) {\n var className = classnames(props.className, 'btn btn-sm btn-default');\n return React.createElement(\"button\", {\n id: props.id,\n type: \"button\",\n className: className,\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: props.title\n }, React.createElement(\"span\", {\n className: props.iconClassName\n }));\n}\nSimpleToolbarButton.propTypes = {\n iconClassName: propTypes.string,\n title: propTypes.string,\n className: propTypes.string,\n id: propTypes.string,\n onClick: propTypes.func\n};\n\nfunction getDefaultButtonData() {\n var buttonData = [];\n buttonData.push({\n id: 'wwwc',\n title: 'WW/WC',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-sun-o'\n });\n buttonData.push({\n id: 'wwwcRegion',\n title: 'Window by Region',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square'\n });\n buttonData.push({\n id: 'magnify',\n title: 'Magnify',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle'\n });\n buttonData.push({\n id: 'annotate',\n title: 'Annotation',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-h'\n });\n buttonData.push({\n id: 'invert',\n title: 'Invert',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-adjust'\n });\n buttonData.push({\n id: 'zoom',\n title: 'Zoom',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-search'\n });\n buttonData.push({\n id: 'pan',\n title: 'Pan',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows'\n });\n buttonData.push({\n id: 'stackScroll',\n title: 'Stack Scroll',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-bars'\n });\n buttonData.push({\n id: 'length',\n title: 'Length Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-v'\n });\n buttonData.push({\n id: 'angle',\n title: 'Angle Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-angle-left'\n });\n buttonData.push({\n id: 'dragProbe',\n title: 'Pixel Probe',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-dot-circle-o'\n });\n buttonData.push({\n id: 'ellipticalRoi',\n title: 'Elliptical ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle-o'\n });\n buttonData.push({\n id: 'rectangleRoi',\n title: 'Rectangle ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square-o'\n });\n buttonData.push({\n id: 'resetViewport',\n title: 'Reset Viewport',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-undo'\n });\n buttonData.push({\n id: 'clearTools',\n title: 'Clear tools',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-trash'\n });\n return buttonData;\n}\n\nvar Toolbar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Toolbar, _Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Toolbar).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: \"render\",\n value: function render() {\n var maybePlayClipButton;\n\n if (this.props.includePlayClipButton) {\n maybePlayClipButton = React.createElement(PlayClipButton, null);\n }\n\n var maybeLayoutButton;\n\n if (this.props.includeLayoutButton) {\n maybeLayoutButton = React.createElement(LayoutButton, null);\n }\n\n return React.createElement(\"div\", {\n id: \"toolbar\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, this.props.buttons.map(function (button, i) {\n return React.createElement(SimpleToolbarButton, _extends({}, button, {\n key: i\n }));\n }), maybePlayClipButton, maybeLayoutButton));\n }\n }]);\n\n return Toolbar;\n}(Component);\nToolbar.propTypes = {\n buttons: propTypes.array.isRequired,\n includeLayoutButton: propTypes.bool.isRequired,\n includePlayClipButton: propTypes.bool.isRequired\n};\nToolbar.defaultProps = {\n buttons: getDefaultButtonData(),\n includeLayoutButton: true,\n includePlayClipButton: true\n};\n\nvar css$k = \".ToolbarButton {\\n height: 48px;\\n color: var(--default-color);\\n float: left;\\n text-align: center;\\n padding: 0 1rem;\\n cursor: pointer;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none; /* Non-prefixed version, currently\\n supported by Chrome and Opera */\\n}\\n.ToolbarButton svg {\\n height: 21px;\\n width: 21px;\\n margin: 2px;\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n.ToolbarButton i {\\n font-size: 18px;\\n line-height: 30px;\\n}\\n.ToolbarButton:hover {\\n color: var(--hover-color);\\n}\\n.ToolbarButton:hover svg {\\n fill: var(--hover-color);\\n stroke: var(--hover-color);\\n}\\n.ToolbarButton:hover i {\\n color: var(--hover-color);\\n}\\n.ToolbarButton.active,\\n.ToolbarButton:active {\\n color: var(--active-color);\\n}\\n.ToolbarButton.active svg,\\n.ToolbarButton:active svg {\\n fill: var(--active-color);\\n stroke: var(--active-color);\\n}\\n.ToolbarButton.active i,\\n.ToolbarButton:active i {\\n color: var(--active-color);\\n}\\n.ToolbarButton span.toolbar-button-label {\\n font-size: 12px;\\n font-weight: 500;\\n display: block;\\n}\\n\";\nstyleInject(css$k);\n\nfunction ToolbarButton(props) {\n var onClick = function onClick(event) {\n if (props.onClick) {\n props.onClick(event, props);\n }\n\n if (props.setToolActive) {\n props.setToolActive(props);\n }\n };\n\n var className = classnames(props.className, {\n active: props.active\n });\n var active = props.active,\n svgUrlActive = props.svgUrlActive,\n iconClassesActive = props.iconClassesActive,\n textActive = props.textActive;\n var svgUrl = props.svgUrl;\n\n if (active && svgUrlActive) {\n svgUrl = svgUrlActive;\n }\n\n var iconClasses = props.iconClasses;\n\n if (active && iconClassesActive) {\n iconClasses = iconClassesActive;\n }\n\n var label = props.text;\n\n if (active && textActive) {\n label = textActive;\n }\n\n return React.createElement(\"div\", {\n className: className,\n onClick: onClick\n }, svgUrl && React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: svgUrl\n })), iconClasses && React.createElement(\"i\", {\n className: iconClasses\n }), React.createElement(\"span\", {\n className: \"toolbar-button-label\"\n }, label));\n}\nToolbarButton.defaultProps = {\n command: 'ToolbarButton',\n onClick: function onClick() {//console.log(`ToolbarButton does not have an onClick event`);\n },\n className: 'ToolbarButton'\n};\nToolbarButton.propTypes = {\n active: propTypes.bool.isRequired,\n className: propTypes.string.isRequired,\n text: propTypes.string.isRequired,\n textActive: propTypes.string,\n iconClasses: propTypes.string,\n iconClassesActive: propTypes.string,\n svgUrl: propTypes.string,\n svgUrlActive: propTypes.string,\n onClick: propTypes.func,\n setToolActive: propTypes.func\n};\n\nvar css$l = \".ToolbarSection {\\n float: left;\\n background-color: var(--primary-background-color);\\n border-radius: 8px;\\n}\\n\";\nstyleInject(css$l);\n\nvar ToolbarSection =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ToolbarSection, _PureComponent);\n\n function ToolbarSection() {\n _classCallCheck(this, ToolbarSection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ToolbarSection).apply(this, arguments));\n }\n\n _createClass(ToolbarSection, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var items = this.props.buttons.map(function (item, index) {\n return React.createElement(ToolbarButton, _extends({\n key: index\n }, item, {\n active: item.command === _this.props.activeCommand,\n setToolActive: _this.props.setToolActive\n }));\n });\n return React.createElement(\"div\", {\n className: 'ToolbarSection'\n }, items);\n }\n }]);\n\n return ToolbarSection;\n}(PureComponent);\n\nToolbarSection.propTypes = {\n buttons: propTypes.array.isRequired,\n activeCommand: propTypes.string,\n setToolActive: propTypes.func\n};\n\nvar range = function range(start, end) {\n return new Array(end - start).fill().map(function (d, i) {\n return i + start;\n });\n};\nvar allowedKeys = [8, 13, 27, 32, 46].concat([12, 106, 107, 109, 110, 111], _toConsumableArray(range(218, 220)), _toConsumableArray(range(185, 190)), _toConsumableArray(range(111, 131)), _toConsumableArray(range(32, 41)), _toConsumableArray(range(47, 58)), _toConsumableArray(range(64, 91)));\nvar specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 191: '/',\n 224: 'meta'\n};\n\nvar HotKeysPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HotKeysPreferences, _Component);\n\n function HotKeysPreferences(props) {\n var _this;\n\n _classCallCheck(this, HotKeysPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HotKeysPreferences).call(this, props));\n _this.columns = {};\n Object.keys(_this.props.hotKeysData).forEach(function (key) {\n var hotKey = _this.props.hotKeysData[key];\n\n if (_this.columns.hasOwnProperty(hotKey.column)) {\n _this.columns[hotKey.column].push(key);\n } else {\n _this.columns[hotKey.column] = [key];\n }\n });\n _this.columnClass = \"col-md-\".concat(12 / Object.keys(_this.columns).length || 1);\n _this.state = {\n hotKeys: _this.props.hotKeysData,\n errorMessages: {}\n };\n _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(HotKeysPreferences, [{\n key: \"getKeysPressedArray\",\n value: function getKeysPressedArray(event) {\n var keysPressedArray = [];\n\n if (event.ctrlKey && !event.altKey) {\n keysPressedArray.push('CTRL');\n }\n\n if (event.shiftKey && !event.altKey) {\n keysPressedArray.push('SHIFT');\n }\n\n if (event.altKey && !event.ctrlKey) {\n keysPressedArray.push('ALT');\n }\n\n return keysPressedArray;\n }\n }, {\n key: \"getConflictingCommand\",\n value: function getConflictingCommand(currentToolKey, hotKeyCommand) {\n var _this2 = this;\n\n return Object.keys(this.state.hotKeys).find(function (tool) {\n var value = _this2.state.hotKeys[tool].command;\n return value && value === hotKeyCommand && tool !== currentToolKey;\n });\n }\n }, {\n key: \"updateInputText\",\n value: function updateInputText(toolKey, event) {\n var displayPressedKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pressedKeys = this.getKeysPressedArray(event);\n\n if (displayPressedKey) {\n var specialKeyName = specialKeys[event.which];\n var keyName = specialKeyName || event.key || String.fromCharCode(event.keyCode);\n pressedKeys.push(keyName.toUpperCase());\n }\n\n this.updateHotKeysState(toolKey, pressedKeys.join('+'));\n }\n }, {\n key: \"updateHotKeysState\",\n value: function updateHotKeysState(toolKey, command) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var hotKeys = this.state.hotKeys;\n hotKeys[toolKey].command = command;\n this.setState(hotKeys, callback);\n }\n }, {\n key: \"updateErrorsState\",\n value: function updateErrorsState(toolKey, errorMessage) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var errorMessages = this.state.errorMessages;\n errorMessages[toolKey] = errorMessage;\n this.setState({\n errorMessages: errorMessages\n }, callback);\n }\n }, {\n key: \"onInputKeyDown\",\n value: function onInputKeyDown(event, toolKey) {\n // Prevent ESC key from propagating and closing the modal\n if (event.key === 'Escape') {\n event.stopPropagation();\n }\n\n if (allowedKeys.includes(event.keyCode)) {\n this.updateInputText(toolKey, event, true);\n } else {\n this.updateInputText(toolKey, event, false);\n }\n\n event.preventDefault();\n }\n }, {\n key: \"onChange\",\n value: function onChange(event, toolKey) {\n var _this3 = this;\n\n if (event.ctrlKey || event.altKey || event.shiftKey) {\n return;\n }\n\n var hotKey = this.state.hotKeys[toolKey];\n var command = hotKey.command;\n var pressedKeys = command.split('+');\n var lastPressedKey = pressedKeys[pressedKeys.length - 1].toUpperCase(); // clear the prior errors\n\n this.setState({\n errorMessages: {}\n }, function () {\n // Check if it has a valid modifier\n var isModifier = ['CTRL', 'ALT', 'SHIFT'].includes(lastPressedKey);\n\n if (isModifier) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n /*\n * Check if it has some conflict\n */\n\n\n var conflictedCommandKey = _this3.getConflictingCommand(toolKey, command);\n\n if (conflictedCommandKey) {\n var conflictedCommand = _this3.state.hotKeys[conflictedCommandKey];\n\n _this3.updateErrorsState(toolKey, \"\\\"\".concat(conflictedCommand.label, \"\\\" is already using the \\\"\").concat(conflictedCommand.command, \"\\\" shortcut.\"));\n\n _this3.updateErrorsState(conflictedCommandKey, '');\n\n _this3.updateHotKeysState(toolKey, '');\n\n return;\n }\n /*\n * Check if is a valid combination\n */\n\n\n var modifierCommand = pressedKeys.slice(0, pressedKeys.length - 1).join('+').toUpperCase();\n var disallowedCombinations$$1 = HotKeysPreferences.disallowedCombinations[modifierCommand];\n var hasDisallowedCombinations = disallowedCombinations$$1 ? disallowedCombinations$$1.includes(lastPressedKey) : false;\n\n if (hasDisallowedCombinations) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n });\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(toolKey, hotKey) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: toolKey\n }, React.createElement(\"td\", {\n className: \"text-right p-r-1\"\n }, hotKey.label), React.createElement(\"td\", {\n width: \"200\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel \".concat(this.state.errorMessages[toolKey] !== undefined ? 'state-error' : '', \" \"),\n ref: function ref(input) {\n return _this4[toolKey] = input;\n },\n \"data-key\": \"defaultTool\"\n }, React.createElement(\"input\", {\n readOnly: true,\n type: \"text\",\n value: hotKey.command,\n vali: \"true\",\n className: \"form-control hotkey text-center\",\n onKeyDown: function onKeyDown(event) {\n return _this4.onInputKeyDown(event, toolKey);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.onChange(event, toolKey);\n }\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }), React.createElement(\"span\", {\n className: \"errorMessage\"\n }, this.state.errorMessages[toolKey]))));\n }\n }, {\n key: \"renderColumn\",\n value: function renderColumn(columnIndex, hotkeysColumn) {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n key: columnIndex,\n className: this.columnClass\n }, React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"text-right p-r-1\"\n }, \"Function\"), React.createElement(\"th\", {\n className: \"text-center\"\n }, \"Shortcut\"))), React.createElement(\"tbody\", null, hotkeysColumn.map(function (keyTool) {\n return _this5.renderRow(keyTool, _this5.state.hotKeys[keyTool]);\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return React.createElement(\"div\", {\n className: \"row\"\n }, Object.keys(this.columns).sort().map(function (columnIndex) {\n return _this6.renderColumn(columnIndex, _this6.columns[columnIndex]);\n }));\n }\n }]);\n\n return HotKeysPreferences;\n}(Component);\n\n_defineProperty(HotKeysPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$m = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n.presetIndex {\\n padding: 0px 10px 0px 10px;\\n}\\n\";\nstyleInject(css$m);\n\nvar WindowLevelPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(WindowLevelPreferences, _Component);\n\n function WindowLevelPreferences(props) {\n var _this;\n\n _classCallCheck(this, WindowLevelPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WindowLevelPreferences).call(this, props));\n _this.state = {\n data: _this.props.windowLevelData\n };\n return _this;\n }\n\n _createClass(WindowLevelPreferences, [{\n key: \"onChange\",\n value: function onChange(event, key, field) {\n var data = this.state.data;\n var entry = data[key];\n entry[field] = event.target.value;\n this.setState({\n data: data\n });\n\n if (this.props.onChange) {\n this.props.onChange(data);\n }\n }\n }, {\n key: \"getWLPreferencesRows\",\n value: function getWLPreferencesRows(key) {\n var _this2 = this;\n\n var entry = this.state.data[key];\n return React.createElement(\"tr\", {\n key: key\n }, React.createElement(\"td\", {\n className: \"p-r-1 text-center\"\n }, key), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.description,\n type: \"text\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'description');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.window,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'window');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.level,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'level');\n }\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"p-x-1 text-center presetIndex\"\n }, \"Preset\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Description\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Window\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Level\"))), React.createElement(\"tbody\", null, Object.keys(this.state.data).map(function (key) {\n return _this3.getWLPreferencesRows(key);\n })));\n }\n }]);\n\n return WindowLevelPreferences;\n}(Component);\n\n_defineProperty(WindowLevelPreferences, \"propTypes\", {\n windowLevelData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$n = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n\";\nstyleInject(css$n);\n\nvar UserPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferences, _Component);\n\n function UserPreferences() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, UserPreferences);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(UserPreferences)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n tabIndex: 0\n });\n\n return _this;\n }\n\n _createClass(UserPreferences, [{\n key: \"tabClick\",\n value: function tabClick(tabIndex) {\n this.setState({\n tabIndex: tabIndex\n });\n }\n }, {\n key: \"renderHotkeysTab\",\n value: function renderHotkeysTab() {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(HotKeysPreferences, {\n hotKeysData: this.props.hotKeysData\n })));\n }\n }, {\n key: \"renderWindowLevelTab\",\n value: function renderWindowLevelTab() {\n if (this.props.windowLevelData) {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(WindowLevelPreferences, {\n windowLevelData: this.props.windowLevelData\n })));\n }\n }\n }, {\n key: \"renderTabs\",\n value: function renderTabs(tabIndex) {\n if (tabIndex === 0) {\n return this.renderHotkeysTab();\n } else {\n return this.renderWindowLevelTab();\n }\n }\n }, {\n key: \"getTabClass\",\n value: function getTabClass(tabIndex) {\n return tabIndex === this.state.tabIndex ? 'nav-link active' : 'nav-link';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"dialog-separator-after\"\n }, React.createElement(\"ul\", {\n className: \"nav nav-tabs\"\n }, React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(0);\n },\n className: this.getTabClass(0)\n }, React.createElement(\"button\", null, \"Hotkeys\")), React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(1);\n },\n className: this.getTabClass(1)\n }, React.createElement(\"button\", null, \"Window Level\")))), this.renderTabs(this.state.tabIndex));\n }\n }]);\n\n return UserPreferences;\n}(Component);\n\n_defineProperty(UserPreferences, \"defaultProps\", {\n hotKeysData: {},\n windowLevelData: {}\n});\n\n_defineProperty(UserPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n windowLevelData: propTypes.object.isRequired\n});\n\nvar createChainableTypeChecker_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(createChainableTypeChecker_1);\n\nvar componentOrElement = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(componentOrElement);\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar ownerDocument_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(ownerDocument_1);\n\nvar activeElement_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = interopRequireDefault(ownerDocument_1);\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(activeElement_1);\n\nvar inDOM = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(inDOM);\n\nvar contains = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(contains);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning$1 = function() {};\n\nif (__DEV__) {\n warning$1 = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nvar warning_1 = warning$1;\n\nvar deprecated_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecated;\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] != null) {\n var messageKey = componentName + '.' + propName;\n\n (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n warned[messageKey] = true;\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(deprecated_1);\n\nvar elementType_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(elementType_1);\n\nvar hasClass_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hasClass_1);\n\nvar addClass_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(addClass_1);\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nvar removeClass = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\nvar _class = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = interopRequireDefault(addClass_1);\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = interopRequireDefault(removeClass);\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;\n});\n\nunwrapExports(_class);\nvar _class_1 = _class.addClass;\nvar _class_2 = _class.removeClass;\nvar _class_3 = _class.hasClass;\n\nvar camelize_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelize_1);\n\nvar camelizeStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = interopRequireDefault(camelize_1);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelizeStyle);\n\nvar hyphenate_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenate_1);\n\nvar hyphenateStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = interopRequireDefault(hyphenate_1);\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenateStyle);\n\nvar getComputedStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(getComputedStyle);\n\nvar removeStyle_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(removeStyle_1);\n\nvar properties = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}\n});\n\nunwrapExports(properties);\nvar properties_1 = properties.animationEnd;\nvar properties_2 = properties.animationDelay;\nvar properties_3 = properties.animationTiming;\nvar properties_4 = properties.animationDuration;\nvar properties_5 = properties.animationName;\nvar properties_6 = properties.transitionEnd;\nvar properties_7 = properties.transitionDuration;\nvar properties_8 = properties.transitionDelay;\nvar properties_9 = properties.transitionTiming;\nvar properties_10 = properties.transitionProperty;\nvar properties_11 = properties.transform;\n\nvar isTransform_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isTransform_1);\n\nvar style_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar _hyphenateStyle = interopRequireDefault(hyphenateStyle);\n\nvar _getComputedStyle2 = interopRequireDefault(getComputedStyle);\n\nvar _removeStyle = interopRequireDefault(removeStyle_1);\n\n\n\nvar _isTransform = interopRequireDefault(isTransform_1);\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(style_1);\n\nvar scrollbarSize_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(scrollbarSize_1);\n\nvar isWindow = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isWindow);\n\nvar isOverflowing_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\n\n\nvar _isWindow2 = _interopRequireDefault(isWindow);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument2.default)(node);\n var win = (0, _isWindow2.default)(doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow2.default)(container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isOverflowing_1);\n\nvar manageAriaHidden = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n});\n\nunwrapExports(manageAriaHidden);\nvar manageAriaHidden_1 = manageAriaHidden.ariaHidden;\nvar manageAriaHidden_2 = manageAriaHidden.hideSiblings;\nvar manageAriaHidden_3 = manageAriaHidden.showSiblings;\n\nvar ModalManager_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _class2 = _interopRequireDefault(_class);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\nfunction setContainerStyle(state, container) {\n var style = { overflow: 'hidden' };\n\n // we are only interested in the actual `style` here\n // becasue we will override it\n state.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (state.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n }\n\n (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n var style = _ref.style;\n\n\n Object.keys(style).forEach(function (key) {\n return container.style[key] = style[key];\n });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n var _this = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n _ref2$handleContainer = _ref2.handleContainerOverflow,\n handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n _classCallCheck(this, ModalManager);\n\n this.add = function (modal, container, className) {\n var modalIdx = _this.modals.indexOf(modal);\n var containerIdx = _this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = _this.modals.length;\n _this.modals.push(modal);\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.hideSiblings)(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n _this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n\n overflowing: (0, _isOverflowing2.default)(container)\n };\n\n if (_this.handleContainerOverflow) {\n setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n _this.containers.push(container);\n _this.data.push(data);\n\n return modalIdx;\n };\n\n this.remove = function (modal) {\n var modalIdx = _this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(_this.data, modal);\n var data = _this.data[containerIdx];\n var container = _this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n _this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (data.modals.length === 0) {\n data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n if (_this.handleContainerOverflow) {\n removeContainerStyle(data, container);\n }\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.showSiblings)(container, modal.mountNode);\n }\n _this.containers.splice(containerIdx, 1);\n _this.data.splice(containerIdx, 1);\n } else if (_this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n (0, manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n this.isTopModal = function (modal) {\n return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n };\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ModalManager_1);\n\nvar getContainer_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getContainer;\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(getContainer_1);\n\nvar ownerDocument$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ownerDocument$1);\n\nvar LegacyPortal = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(LegacyPortal);\n\nvar Portal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\n\n\nvar _LegacyPortal2 = _interopRequireDefault(LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Portal_1);\n\nvar RefHolder_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes$$1 = {\n children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n _inherits(RefHolder, _React$Component);\n\n function RefHolder() {\n _classCallCheck(this, RefHolder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n RefHolder.prototype.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes$$1;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(RefHolder_1);\n\nvar on_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(on_1);\n\nvar off_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(off_1);\n\nvar addEventListener = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\n\n\nvar _on2 = _interopRequireDefault(on_1);\n\n\n\nvar _off2 = _interopRequireDefault(off_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addEventListener);\n\nvar addFocusListener_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = void 0;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function remove() {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function remove() {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addFocusListener_1);\n\nvar Modal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _activeElement2 = _interopRequireDefault(activeElement_1);\n\n\n\nvar _contains2 = _interopRequireDefault(contains);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _deprecated2 = _interopRequireDefault(deprecated_1);\n\n\n\nvar _elementType2 = _interopRequireDefault(elementType_1);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\n\n\nvar _ModalManager2 = _interopRequireDefault(ModalManager_1);\n\n\n\nvar _Portal2 = _interopRequireDefault(Portal_1);\n\n\n\nvar _RefHolder2 = _interopRequireDefault(RefHolder_1);\n\n\n\nvar _addEventListener2 = _interopRequireDefault(addEventListener);\n\n\n\nvar _addFocusListener2 = _interopRequireDefault(addFocusListener_1);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n function Modal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Modal.prototype.omitProps = function omitProps(props, propTypes$$1) {\n\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes$$1, prop)) {\n newProps[prop] = props[prop];\n }\n });\n\n return newProps;\n };\n\n Modal.prototype.render = function render() {\n var _props = this.props,\n show = _props.show,\n container = _props.container,\n children = _props.children,\n Transition = _props.transition,\n backdrop = _props.backdrop,\n className = _props.className,\n style = _props.style,\n onExit = _props.onExit,\n onExiting = _props.onExiting,\n onEnter = _props.onEnter,\n onEntering = _props.onEntering,\n onEntered = _props.onEntered;\n\n\n var dialog = _react2.default.Children.only(children);\n var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n var mountModal = show || Transition && !this.state.exited;\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props,\n role = _dialog$props.role,\n tabIndex = _dialog$props.tabIndex;\n\n\n if (role === undefined || tabIndex === undefined) {\n dialog = (0, React.cloneElement)(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2.default.createElement(\n Transition,\n {\n appear: true,\n unmountOnExit: true,\n 'in': show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2.default.createElement(\n _Portal2.default,\n {\n ref: this.setMountNode,\n container: container,\n onRendered: this.onPortalRendered\n },\n _react2.default.createElement(\n 'div',\n _extends({\n ref: this.setModalNodeRef,\n role: role || 'dialog'\n }, filteredProps, {\n style: style,\n className: className\n }),\n backdrop && this.renderBackdrop(),\n _react2.default.createElement(\n _RefHolder2.default,\n { ref: this.setDialogRef },\n dialog\n )\n )\n );\n };\n\n Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n if (!this.props.show && nextProps.show) {\n this.checkForFocus();\n }\n };\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n show = _props2.show,\n transition = _props2.transition;\n\n\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n Modal.prototype.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) {\n return;\n }\n\n var dialogElement = this.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n\n if (!dialogElement.hasAttribute('tabIndex')) {\n (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n dialogElement.setAttribute('tabIndex', -1);\n }\n\n dialogElement.focus();\n }\n };\n\n Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n Modal.prototype.getDialogElement = function getDialogElement() {\n return _reactDom2.default.findDOMNode(this.dialog);\n };\n\n Modal.prototype.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes2.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes2.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes2.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => }\n * ```\n */\n renderBackdrop: _propTypes2.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes2.default.func,\n\n /**\n * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n * @deprecated\n */\n onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes2.default.func,\n\n /**\n * A style object for the backdrop component.\n */\n backdropStyle: _propTypes2.default.object,\n\n /**\n * A css class or classes for the backdrop component.\n */\n backdropClassName: _propTypes2.default.string,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes2.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes2.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the dialog component.\n */\n transition: _elementType2.default,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType2.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes2.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes2.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react2.default.createElement('div', props);\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = { exited: !this.props.show };\n\n this.renderBackdrop = function () {\n var _props3 = _this2.props,\n backdropStyle = _props3.backdropStyle,\n backdropClassName = _props3.backdropClassName,\n renderBackdrop = _props3.renderBackdrop,\n Transition = _props3.backdropTransition;\n\n\n var backdropRef = function backdropRef(ref) {\n return _this2.backdrop = ref;\n };\n\n var backdrop = renderBackdrop({\n ref: backdropRef,\n style: backdropStyle,\n className: backdropClassName,\n onClick: _this2.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2.default.createElement(\n Transition,\n {\n appear: true,\n 'in': _this2.props.show\n },\n backdrop\n );\n }\n\n return backdrop;\n };\n\n this.onPortalRendered = function () {\n _this2.autoFocus();\n\n if (_this2.props.onShow) {\n _this2.props.onShow();\n }\n };\n\n this.onShow = function () {\n var doc = (0, _ownerDocument2.default)(_this2);\n var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n };\n\n this.onHide = function () {\n _this2.props.manager.remove(_this2);\n\n _this2._onDocumentKeydownListener.remove();\n\n _this2._onDocumentKeyupListener.remove();\n\n _this2._onFocusinListener.remove();\n\n if (_this2.props.restoreFocus) {\n _this2.restoreLastFocus();\n }\n };\n\n this.setMountNode = function (ref) {\n _this2.mountNode = ref ? ref.getMountNode() : ref;\n };\n\n this.setModalNodeRef = function (ref) {\n _this2.modalNode = ref;\n };\n\n this.setDialogRef = function (ref) {\n _this2.dialog = ref;\n };\n\n this.handleHidden = function () {\n _this2.setState({ exited: true });\n _this2.onHide();\n\n if (_this2.props.onExited) {\n var _props4;\n\n (_props4 = _this2.props).onExited.apply(_props4, arguments);\n }\n };\n\n this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this2.props.onBackdropClick) {\n _this2.props.onBackdropClick(e);\n }\n\n if (_this2.props.backdrop === true) {\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyDown = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyDown) {\n _this2.props.onEscapeKeyDown(e);\n }\n\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyUp = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyUp) {\n _this2.props.onEscapeKeyUp(e);\n }\n }\n };\n\n this.checkForFocus = function () {\n if (_inDOM2.default) {\n _this2.lastFocus = (0, _activeElement2.default)();\n }\n };\n\n this.enforceFocus = function () {\n if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n return;\n }\n\n var dialogElement = _this2.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n dialogElement.focus();\n }\n };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Modal_1);\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({\n polyfill: polyfill\n});\n\nvar PropTypes = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.'); // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]);\n\nexports.classNamesShape = classNamesShape;\n});\n\nunwrapExports(PropTypes);\nvar PropTypes_1 = PropTypes.transitionTimeout;\nvar PropTypes_2 = PropTypes.classNamesShape;\nvar PropTypes_3 = PropTypes.timeoutsShape;\n\nvar Transition_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes$$1 = _interopRequireWildcard(propTypes);\n\nvar _react = _interopRequireDefault(React);\n\nvar _reactDom = _interopRequireDefault(reactDom);\n\n\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {(state) => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n * this.setState({ in: true });\n * }\n *\n * render() {\n * return (\n *
\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter;\n appear = timeout.appear;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n _this2.onTransitionEnd(node, timeouts.enter, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes$$1.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element.\n * This function is called with the current transition status\n * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n * to apply context specific props to a component.\n *\n * ```jsx\n * \n * {(status) => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes$$1.oneOfType([PropTypes$$1.func.isRequired, PropTypes$$1.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes$$1.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes$$1.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes$$1.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes$$1.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes$$1.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes$$1.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided\n *\n * You may specify a single timeout for all transitions like: `timeout={500}`,\n * or individually like:\n *\n * ```jsx\n * timeout={{\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * @type {number | { enter?: number, exit?: number }}\n */\n timeout: function timeout(props) {\n var pt = process.env.NODE_ENV !== \"production\" ? PropTypes.timeoutsShape : {}; if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes$$1.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, reactLifecyclesCompat_es.polyfill)(Transition);\n\nexports.default = _default;\n});\n\nunwrapExports(Transition_1);\nvar Transition_2 = Transition_1.EXITING;\nvar Transition_3 = Transition_1.ENTERED;\nvar Transition_4 = Transition_1.ENTERING;\nvar Transition_5 = Transition_1.EXITED;\nvar Transition_6 = Transition_1.UNMOUNTED;\n\nvar Fade_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _fadeStyles;\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _Transition2 = _interopRequireDefault(Transition_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[Transition_1.ENTERING] = 'in', _fadeStyles[Transition_1.ENTERED] = 'in', _fadeStyles);\n\nvar Fade = function (_React$Component) {\n _inherits(Fade, _React$Component);\n\n function Fade(props, context) {\n _classCallCheck(this, Fade);\n\n return _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n }\n\n Fade.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['className', 'children']);\n\n return _react2.default.createElement(\n _Transition2.default,\n props,\n function (status, innerProps) {\n return _react2.default.cloneElement(children, _extends({}, innerProps, {\n className: (0, _classnames2.default)('fade', className, children.props.className, fadeStyles[status])\n }));\n }\n );\n };\n\n return Fade;\n}(_react2.default.Component);\n\nexports.default = Fade;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Fade_1);\n\nvar Body = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalBody = function (_React$Component) {\n _inherits(ModalBody, _React$Component);\n\n function ModalBody() {\n _classCallCheck(this, ModalBody);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalBody.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalBody.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalBody.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-body') }),\n children\n );\n };\n\n return ModalBody;\n}(_react2.default.Component);\n\nModalBody.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalBody;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Body);\n\nvar Dismiss_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar chain = function chain(a, b) {\n return function () {\n a && a.apply(undefined, arguments);\n b && b.apply(undefined, arguments);\n };\n};\n\nvar Dismiss = function (_React$Component) {\n _inherits(Dismiss, _React$Component);\n\n function Dismiss() {\n _classCallCheck(this, Dismiss);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Dismiss.prototype.render = function render() {\n var _props = this.props,\n Tag = _props.component,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['component', 'children']);\n\n return _react2.default.createElement(\n Tag,\n _extends({}, props, {\n onClick: chain(props.onClick, this.context.onModalHide)\n }),\n children\n );\n };\n\n return Dismiss;\n}(_react2.default.Component);\n\nDismiss.propTypes = {\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n};\nDismiss.defaultProps = {\n component: 'button'\n};\nDismiss.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = Dismiss;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Dismiss_1);\n\nvar Header = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalHeader = function (_React$Component) {\n _inherits(ModalHeader, _React$Component);\n\n function ModalHeader() {\n _classCallCheck(this, ModalHeader);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalHeader.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalHeader.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n closeButton = _props.closeButton,\n children = _props.children,\n className = _props.className,\n label = _props['aria-label'],\n props = _objectWithoutProperties(_props, ['modalPrefix', 'closeButton', 'children', 'className', 'aria-label']);\n\n var prefix = modalPrefix || ModalHeader.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-header')\n }),\n closeButton && _react2.default.createElement(\n _Dismiss2.default,\n {\n className: 'close',\n 'aria-label': label\n },\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n )\n ),\n children\n );\n };\n\n return ModalHeader;\n}(_react2.default.Component);\n\nModalHeader._isModalHeader = true;\nModalHeader.propTypes = {\n closeButton: _propTypes2.default.bool,\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string,\n\n 'aria-label': _propTypes2.default.string\n};\nModalHeader.defaultProps = {\n closeButton: false,\n 'aria-label': 'Close Modal'\n};\nModalHeader.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = ModalHeader;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Header);\n\nvar Title = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalTitle = function (_React$Component) {\n _inherits(ModalTitle, _React$Component);\n\n function ModalTitle() {\n _classCallCheck(this, ModalTitle);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalTitle.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalTitle.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'className']);\n\n var prefix = modalPrefix || ModalTitle.getDefaultPrefix();\n\n return _react2.default.createElement('h4', _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-title')\n }));\n };\n\n return ModalTitle;\n}(_react2.default.Component);\n\nModalTitle.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\nexports.default = ModalTitle;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Title);\n\nvar Footer = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalFooter = function (_React$Component) {\n _inherits(ModalFooter, _React$Component);\n\n function ModalFooter() {\n _classCallCheck(this, ModalFooter);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalFooter.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalFooter.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalFooter.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-footer') }),\n children\n );\n };\n\n return ModalFooter;\n}(_react2.default.Component);\n\nModalFooter.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalFooter;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Footer);\n\nvar Modal_1$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\n\n\nvar _Modal2 = _interopRequireDefault(Modal_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nvar _Fade2 = _interopRequireDefault(Fade_1);\n\n\n\nvar _Body2 = _interopRequireDefault(Body);\n\n\n\nvar _Header2 = _interopRequireDefault(Header);\n\n\n\nvar _Title2 = _interopRequireDefault(Title);\n\n\n\nvar _Footer2 = _interopRequireDefault(Footer);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar baseIndex = {};\nvar PREFIX = 'modal';\n\nvar getZIndex = void 0;\n\nvar omit = function omit(obj, keys) {\n return Object.keys(obj).reduce(function (o, key) {\n if (keys.indexOf(key) === -1) o[key] = obj[key];\n return o;\n }, {});\n};\n\nfunction DialogTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.TRANSITION_DURATION }));\n}\nfunction BackdropTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));\n}\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n Modal.getDefaultPrefix = function getDefaultPrefix() {\n return PREFIX;\n };\n\n Modal.prototype.getChildContext = function getChildContext() {\n return this._context || (this._context = { onModalHide: this.props.onHide });\n };\n\n function Modal() {\n _classCallCheck(this, Modal);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n _this.handleEntering = _this.handleEntering.bind(_this);\n _this.handleExiting = _this.handleExiting.bind(_this);\n\n _this.state = {\n classes: ''\n };\n return _this;\n }\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n getZIndex = getZIndex || function () {\n var modal = document.createElement('div'),\n backdrop = document.createElement('div'),\n zIndexFactor = void 0;\n\n modal.className = 'modal hide';\n backdrop.className = 'modal-backdrop hide';\n\n document.body.appendChild(modal);\n document.body.appendChild(backdrop);\n\n baseIndex.modal = +(0, _style2.default)(modal, 'z-index');\n baseIndex.backdrop = +(0, _style2.default)(backdrop, 'z-index');\n zIndexFactor = baseIndex.modal - baseIndex.backdrop;\n\n document.body.removeChild(modal);\n document.body.removeChild(backdrop);\n\n return function (type) {\n return baseIndex[type] + zIndexFactor * (_this2.props.manager.modals.length - 1);\n };\n }();\n };\n\n Modal.prototype.handleEntering = function handleEntering() {\n this._show.apply(this, arguments);\n\n if (this.props.onEntering) {\n this.props.onEntering();\n }\n };\n\n Modal.prototype.handleExiting = function handleExiting() {\n this._removeAttentionClasses();\n if (this.props.onExiting) {\n this.props.onExiting();\n }\n };\n\n Modal.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n keyboard = _props.keyboard,\n transition = _props.transition,\n modalPrefix = _props.modalPrefix,\n dialogClassName = _props.dialogClassName,\n container = _props.container,\n onEnter = _props.onEnter,\n onEntered = _props.onEntered,\n onExit = _props.onExit,\n onExited = _props.onExited,\n props = _objectWithoutProperties(_props, ['className', 'children', 'keyboard', 'transition', 'modalPrefix', 'dialogClassName', 'container', 'onEnter', 'onEntered', 'onExit', 'onExited']);\n\n var _state = this.state,\n dialog = _state.dialog,\n classes = _state.classes,\n backdrop = _state.backdrop;\n\n\n delete props.manager;\n var elementProps = omit(props, Object.keys(Modal.propTypes));\n\n var prefix = modalPrefix || Modal.getDefaultPrefix();\n\n if (transition === true) transition = DialogTransition;\n\n var modal = _react2.default.createElement(\n 'div',\n _extends({}, elementProps, {\n ref: function ref(r) {\n return _this3.dialog = r;\n },\n style: dialog,\n className: (0, _classnames2.default)(className, prefix, { in: props.show && !transition }),\n onClick: this.props.backdrop ? function (e) {\n return _this3.handleBackdropClick(e);\n } : null\n }),\n _react2.default.createElement(\n 'div',\n {\n key: 'modal',\n ref: function ref(r) {\n return _this3.innerRef = r;\n },\n className: (0, _classnames2.default)(prefix + '-dialog', dialogClassName, classes, (props.small || props.sm) && prefix + '-sm', (props.large || props.lg) && prefix + '-lg')\n },\n _react2.default.createElement(\n 'div',\n { className: prefix + '-content' },\n children\n )\n )\n );\n\n return _react2.default.createElement(\n _Modal2.default,\n {\n keyboard: keyboard,\n ref: function ref(_ref) {\n _this3.modal = _ref && _ref.modal;\n _this3.backdrop = _ref && _ref.backdrop;\n },\n container: container,\n backdrop: props.backdrop,\n show: props.show,\n backdropStyle: backdrop,\n backdropClassName: prefix + '-backdrop',\n containerClassName: prefix + '-open',\n transition: transition || undefined,\n backdropTransition: transition ? BackdropTransition : undefined,\n onHide: this.props.onHide,\n onEnter: onEnter,\n onEntering: this.handleEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: this.handleExiting,\n onExited: onExited\n },\n modal\n );\n };\n\n Modal.prototype.attention = function attention() {\n var _this4 = this;\n\n var attentionClass = this.props.attentionClass;\n\n\n if (attentionClass) this.setState({ classes: '' }, function () {\n if (_this4.props.show) {\n // eslint-disable-next-line no-unused-expressions\n _this4.innerRef.offsetWidth;\n _this4.setState({\n classes: attentionClass + ' animated'\n });\n }\n });\n };\n\n Modal.prototype.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) return;\n if (this.props.backdrop === 'static') return this.attention();\n\n this.props.onHide();\n };\n\n Modal.prototype._show = function _show() {\n if (this.props.show) this.setState(this._getStyles());\n };\n\n Modal.prototype._getStyles = function _getStyles() {\n if (!_inDOM2.default) return {};\n\n var node = (0, reactDom.findDOMNode)(this.dialog),\n doc = (0, _ownerDocument2.default)(node),\n scrollHt = node.scrollHeight,\n bodyIsOverflowing = (0, _isOverflowing2.default)(this.props.container || doc.body),\n modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;\n\n return {\n dialog: {\n zIndex: getZIndex('modal'),\n paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0,\n paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0\n },\n backdrop: {\n zIndex: getZIndex('backdrop')\n }\n };\n };\n\n Modal.prototype._removeAttentionClasses = function _removeAttentionClasses() {\n this.setState({ classes: '' });\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = {\n show: _propTypes2.default.bool,\n\n /** sizes **/\n small: _propTypes2.default.bool,\n sm: _propTypes2.default.bool,\n large: _propTypes2.default.bool,\n lg: _propTypes2.default.bool,\n /** --- **/\n\n backdrop: _propTypes2.default.oneOf(['static', true, false]),\n keyboard: _propTypes2.default.bool,\n animate: _propTypes2.default.bool,\n transition: _propTypes2.default.any,\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onHide: _propTypes2.default.func,\n onEnter: _propTypes2.default.func,\n onEntering: _propTypes2.default.func,\n onEntered: _propTypes2.default.func,\n onExit: _propTypes2.default.func,\n onExiting: _propTypes2.default.func,\n onExited: _propTypes2.default.func,\n\n modalPrefix: _propTypes2.default.string,\n dialogClassName: _propTypes2.default.string,\n attentionClass: _propTypes2.default.string\n};\nModal.defaultProps = {\n backdrop: true,\n keyboard: true,\n animate: true,\n transition: true,\n container: _inDOM2.default ? document.body : null,\n attentionClass: 'shake',\n manager: (_Modal2.default.getDefaultProps ? _Modal2.default.getDefaultProps() : _Modal2.default.defaultProps).manager\n};\nModal.childContextTypes = {\n onModalHide: _propTypes2.default.func\n};\n\n\nModal.injectCSSPrefix = function (prefix) {\n PREFIX = prefix;\n};\n\nfunction getDefaultPrefix() {\n return PREFIX;\n}\n\n_Body2.default.getDefaultPrefix = getDefaultPrefix;\n_Header2.default.getDefaultPrefix = getDefaultPrefix;\n_Title2.default.getDefaultPrefix = getDefaultPrefix;\n_Footer2.default.getDefaultPrefix = getDefaultPrefix;\n\nModal.Body = _Body2.default;\nModal.Header = _Header2.default;\nModal.Title = _Title2.default;\nModal.Footer = _Footer2.default;\nModal.Dismiss = _Dismiss2.default;\n\nModal.BaseModal = Modal;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nvar Modal$1 = unwrapExports(Modal_1$1);\n\nvar css$o = \"/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/*\\nAnimate.css - http://daneden.me/animate\\nLicensed under the ☺ license (http://licence.visualidiot.com/)\\nCopyright (c) 2012 Dan Eden*/\\n.animated {\\n -webkit-animation-duration: 1s;\\n -moz-animation-duration: 1s;\\n -o-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n@-webkit-keyframes shake {\\n 0%,\\n 100% {\\n -webkit-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -webkit-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -webkit-transform: translateX(10px);\\n }\\n}\\n@-moz-keyframes shake {\\n 0%,\\n 100% {\\n -moz-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -moz-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -moz-transform: translateX(10px);\\n }\\n}\\n@-o-keyframes shake {\\n 0%,\\n 100% {\\n -o-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -o-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -o-transform: translateX(10px);\\n }\\n}\\n@keyframes shake {\\n 0%,\\n 100% {\\n transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n transform: translateX(10px);\\n }\\n}\\n.shake {\\n -webkit-animation-name: shake;\\n -moz-animation-name: shake;\\n -o-animation-name: shake;\\n animation-name: shake;\\n}\\n.modal {\\n display: block;\\n}\\n.modal-content > .close {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n}\\n@media (min-width: 768px) {\\n .modal-sm > .modal-dialog {\\n width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg > .modal-dialog {\\n width: 900px;\\n }\\n}\\n\";\nstyleInject(css$o);\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\nvar css$p = \":root {\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --ui-border-color: #44626f;\\n}\\n.modal-dialog .modal-content {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-border-color);\\n color: var(--text-secondary-color);\\n border: 0;\\n}\\n.modal-dialog .modal-content .modal-header,\\n.modal-dialog .modal-content .modal-footer {\\n border-color: var(--ui-border-color);\\n}\\n.modal-dialog .modal-content .dialog-separator,\\n.modal-dialog .modal-content .dialog-separator-before,\\n.modal-dialog .modal-content .dialog-separator-after {\\n position: relative;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-before:before,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n background-color: #000;\\n content: ' ';\\n display: block;\\n height: 3px;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator-before:before {\\n top: -3px;\\n}\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n bottom: -3px;\\n}\\n.modal-dialog .modal-content .modal-body {\\n color: var(--text-primary-color);\\n padding: 16px 22px 0px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar {\\n width: 6px;\\n background-color: var(--ui-gray-dark);\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar-thumb {\\n background-color: var(--ui-gray-light);\\n border-radius: 5px;\\n}\\n.modal-dialog .modal-content .modal-header {\\n border-bottom-width: 3px;\\n border-bottom-style: solid;\\n border-bottom-color: #000;\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-header h4 {\\n color: var(--text-secondary-color);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 24px;\\n padding-right: 24px;\\n}\\n.modal-dialog .modal-content .modal-footer {\\n border-top: 0;\\n padding-top: 0;\\n}\\n.modal-dialog .card-round {\\n background-color: var(--ui-gray-dark);\\n padding: 10px;\\n}\\n.modal-dialog .modal-header {\\n position: relative;\\n}\\n.button-close,\\n.modal-dialog button.close {\\n color: var(--text-secondary-color);\\n height: 25px;\\n opacity: 1;\\n overflow: hidden;\\n text-align: center;\\n text-shadow: none;\\n width: 25px;\\n font-size: 25px;\\n font-weight: lighter;\\n}\\n\";\nstyleInject(css$p);\n\nvar UserPreferencesModal =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferencesModal, _Component);\n\n // TODO: Make this component more generic to allow things other than W/L and hotkeys...\n function UserPreferencesModal(props) {\n var _this;\n\n _classCallCheck(this, UserPreferencesModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UserPreferencesModal).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"save\", function () {\n _this.props.onSave({\n windowLevelData: _this.state.windowLevelData,\n hotKeysData: _this.state.hotKeysData\n });\n });\n\n _this.state = {\n windowLevelData: lodash_clonedeep(props.windowLevelData),\n hotKeysData: lodash_clonedeep(props.hotKeysData)\n };\n return _this;\n }\n\n _createClass(UserPreferencesModal, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prev, next) {\n var newStateData = {};\n\n if (!lodash_isequal(prev.windowLevelData, next.windowLevelData)) {\n newStateData.windowLevelData = prev.windowLevelData;\n }\n\n if (!lodash_isequal(prev.hotKeysData, next.hotKeysData)) {\n newStateData.hotKeysData = prev.hotKeysData;\n }\n\n if (newStateData.hotKeysData || newStateData.windowLevelData) {\n this.setState(newStateData);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Modal$1, {\n show: this.props.isOpen,\n onHide: this.props.onCancel,\n \"aria-labelledby\": \"ModalHeader\",\n className: \"modal fade themed in\",\n backdrop: false,\n large: true,\n keyboard: false\n }, React.createElement(Modal$1.Header, {\n closeButton: true\n }, React.createElement(Modal$1.Title, null, \"User Preferences\")), React.createElement(Modal$1.Body, null, React.createElement(UserPreferences, {\n windowLevelData: this.state.windowLevelData,\n hotKeysData: this.state.hotKeysData\n })), React.createElement(Modal$1.Footer, null, React.createElement(\"button\", {\n className: \"btn btn-danger pull-left\",\n onClick: this.props.onResetToDefaults\n }, \"Reset to Defaults\"), React.createElement(Modal$1.Dismiss, {\n className: \"btn btn-default\"\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.save\n }, \"Save\")));\n }\n }]);\n\n return UserPreferencesModal;\n}(Component);\n\n_defineProperty(UserPreferencesModal, \"propTypes\", {\n isOpen: propTypes.bool.isRequired,\n onCancel: propTypes.func,\n onSave: propTypes.func,\n onResetToDefaults: propTypes.func,\n windowLevelData: propTypes.object,\n hotKeysData: propTypes.object\n});\n\n_defineProperty(UserPreferencesModal, \"defaultProps\", {\n isOpen: false\n});\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = _baseRest(function(arrays) {\n return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));\n});\n\nvar union_1 = union;\n\nvar EnterLeaveCounter_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = union_1(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without_1(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n});\n\nunwrapExports(EnterLeaveCounter_1);\n\nvar BrowserDetector = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.isFirefox = memoize_1(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = memoize_1(function () { return Boolean(window.safari); });\n});\n\nunwrapExports(BrowserDetector);\nvar BrowserDetector_1 = BrowserDetector.isFirefox;\nvar BrowserDetector_2 = BrowserDetector.isSafari;\n\nvar MonotonicInterpolant_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n});\n\nunwrapExports(MonotonicInterpolant_1);\n\nvar OffsetUtils = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n});\n\nunwrapExports(OffsetUtils);\nvar OffsetUtils_1 = OffsetUtils.getNodeClientOffset;\nvar OffsetUtils_2 = OffsetUtils.getEventClientOffset;\nvar OffsetUtils_3 = OffsetUtils.getDragPreviewOffset;\n\nvar NativeTypes = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n});\n\nunwrapExports(NativeTypes);\nvar NativeTypes_1 = NativeTypes.FILE;\nvar NativeTypes_2 = NativeTypes.URL;\nvar NativeTypes_3 = NativeTypes.TEXT;\n\nvar NativeDragSources = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, null);\n return result != null ? result : defaultValue;\n}\nvar nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n },\n _a[NativeTypes.URL] = {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n _a[NativeTypes.TEXT] = {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n _a);\nfunction createNativeDragSource(type) {\n var _a = nativeTypesConfig[type], exposeProperty = _a.exposeProperty, matchesTypes = _a.matchesTypes, getData = _a.getData;\n return /** @class */ (function () {\n function NativeDragSource() {\n var _a;\n this.item = (_a = {},\n Object.defineProperty(_a, exposeProperty, {\n get: function () {\n // tslint:disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + exposeProperty + \"\\\" until the drop event.\");\n return null;\n },\n enumerable: true,\n configurable: true\n }),\n _a);\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n }());\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n});\n\nunwrapExports(NativeDragSources);\nvar NativeDragSources_1 = NativeDragSources.createNativeDragSource;\nvar NativeDragSources_2 = NativeDragSources.matchNativeItemType;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$a.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq_1(value, objectProto$a[key]) && !hasOwnProperty$9.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nvar defaults_1 = defaults;\n\nvar HTML5Backend_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return ((!!document && document.body.contains(node)) ||\n (!!_this.window && _this.window.document.body.contains(node)));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (!dataTransfer.types &&\n (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n else {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.context = manager.getContext();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n if (this.context && this.context.window) {\n return this.context.window;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return defaults_1(sourceNodeOptions || {}, {\n dropEffect: this.altKeyPressed ? 'copy' : 'move',\n });\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return defaults_1(sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false,\n });\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n var SourceType = NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n});\n\nunwrapExports(HTML5Backend_1);\n\nvar getEmptyImage_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.default = getEmptyImage;\n});\n\nunwrapExports(getEmptyImage_1);\n\nvar lib$2 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nexports.getEmptyImage = getEmptyImage_1.default;\n\nexports.NativeTypes = NativeTypes;\nfunction createHTML5Backend(manager) {\n return new HTML5Backend_1.default(manager);\n}\nexports.default = createHTML5Backend;\n});\n\nvar HTML5Backend$1 = unwrapExports(lib$2);\nvar lib_1$1 = lib$2.getEmptyImage;\nvar lib_2$1 = lib$2.NativeTypes;\n\n// TODO: Find a way for this context to be used in the parent application as well.\n\nfunction ViewerbaseDragDropContext(DecoratedClass) {\n return lib_1(HTML5Backend$1, null, true)(DecoratedClass);\n}\n\nexport { CineDialog, ExampleDropTarget$1 as ExampleDropTarget, LayoutButton, LayoutChooser, LayoutManager, LayoutPanelDropTarget$1 as LayoutPanelDropTarget, MeasurementTable, MeasurementTableItem, PlayClipButton, RoundedButtonGroup, ScrollableArea, SelectTree, SimpleDialog, StudyBrowser, StudyList, TableList, TableListItem, ThumbnailEntry, Toolbar, ToolbarSection, UserPreferences, UserPreferencesModal, ViewerbaseDragDropContext, Dropdown };\n//# sourceMappingURL=index.es.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport { Dropdown } from \"react-viewerbase\";\nimport './Header.css';\nimport list from './HeaderMenuList.json';\n//import Icons from \"../../images/icons.svg\";\n\nconst Icons = '/icons.svg';\n\nfunction Header({ home, location }) {\n const { state } = location\n\n return (\n
\n
\n {\n state && state.studyLink &&\n \n Back to Viewer\n \n }\n\n \n \n \n \n
Open Health Imaging Foundation
\n
\n\n {!home &&\n Study list\n }\n
\n\n\n
\n \n INVESTIGATIONAL USE ONLY\n \n \n
\n\n
\n )\n}\n\nHeader.propTypes = {\n home: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired\n};\n\nHeader.defaultProps = {\n home: true\n};\n\nexport default withRouter(Header)\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","import { connect } from 'react-redux';\nimport { StudyBrowser } from 'react-viewerbase';\nimport cloneDeep from 'lodash.clonedeep';\n\n// TODO\n// - Determine in which display set is active from Redux (activeViewportIndex and layout viewportData)\n// - Pass in errors and stack loading progress from Redux\nconst mapStateToProps = (state, ownProps) => {\n // If we know that the stack loading progress details have changed,\n // we can try to update the component state so that the thumbnail\n // progress bar is updated\n const stackLoadingProgressMap = state.loading.progress;\n const studiesWithLoadingData = cloneDeep(ownProps.studies);\n\n studiesWithLoadingData.forEach(study => {\n study.thumbnails.forEach(data => {\n const { displaySetInstanceUid } = data\n const stackId = `StackProgress:${displaySetInstanceUid}`;\n const stackProgressData = stackLoadingProgressMap[stackId];\n\n let stackPercentComplete = 0;\n if (stackProgressData) {\n stackPercentComplete = stackProgressData.percentComplete;\n }\n\n data.stackPercentComplete = stackPercentComplete;\n })\n });\n\n return {\n studies: studiesWithLoadingData\n };\n};\n\nconst ConnectedStudyBrowser = connect(\n mapStateToProps,\n null\n)(StudyBrowser);\n\nexport default ConnectedStudyBrowser;\n","import { connect } from 'react-redux';\nimport { LayoutManager } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\n\nconst mapStateToProps = state => {\n const viewportPluginIds = state.plugins.availablePlugins.filter(plugin => plugin.type === OHIF.plugins.PLUGIN_TYPES.VIEWPORT).map(plugin => plugin.id);\n const availablePlugins = {}\n viewportPluginIds.forEach(id => {\n const plugin = OHIF.plugins.availablePlugins.find(plugin => plugin.id === id);\n if (plugin) {\n availablePlugins[id] = plugin.component;\n }\n });\n\n // TODO Use something like state.plugins.defaultPlugin[OHIF.plugins.PLUGIN_TYPES.VIEWPORT]\n let defaultPlugin;\n if (viewportPluginIds && viewportPluginIds.length) {\n defaultPlugin = viewportPluginIds[0];\n }\n\n return {\n layout: state.viewports.layout,\n activeViewportIndex: state.viewports.activeViewportIndex,\n availablePlugins,\n defaultPlugin\n };\n};\n\nconst ConnectedLayoutManager = connect(\n mapStateToProps,\n null\n)(LayoutManager);\n\nexport default ConnectedLayoutManager;\n","import { Component } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport cornerstoneMath from \"cornerstone-math\";\nimport { OHIF } from 'ohif-core';\nimport ConnectedLayoutManager from './ConnectedLayoutManager.js';\nimport './ViewerMain.css';\n\n// Attempt to fix weird undefined dep issue\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\n\nclass ViewerMain extends Component {\n state = {\n viewportData: [],\n };\n\n static propTypes = {\n studies: PropTypes.array.isRequired\n };\n\n getDisplaySetsWithImages(studies) {\n const displaySets = [];\n studies.forEach((study) => {\n study.displaySets.forEach(dSet => {\n if (dSet.images.length) {\n displaySets.push(dSet);\n }\n });\n });\n\n return displaySets;\n }\n\n findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {\n const study = studies.find(study => {\n return study.studyInstanceUid === studyInstanceUid;\n });\n\n if (!study) {\n return;\n }\n\n return study.displaySets.find(displaySet => {\n return displaySet.displaySetInstanceUid === displaySetInstanceUid;\n });\n }\n\n componentDidMount() {\n // Add beforeUnload event handler to check for unsaved changes\n //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Get all the display sets for the viewer studies\n const displaySets = this.getDisplaySetsWithImages(this.props.studies);\n\n this.setState({\n viewportData: displaySets\n });\n }\n\n setViewportData = ({viewportIndex, item}) => {\n // TODO: Replace this with mapDispatchToProps call\n // if we decide to put viewport info into redux\n\n // Note: Use Slice because React does a shallow equality check. Mutating the array\n // would not trigger a re-render. We have to create a copy.\n debugger;\n console.warn(item);\n const updatedViewportData = this.state.viewportData.slice(0);\n\n const displaySet = this.findDisplaySet(this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid);\n\n console.warn(displaySet);\n\n updatedViewportData[viewportIndex] = Object.assign({}, displaySet);\n\n this.setState({\n viewportData: updatedViewportData\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n\n componentWillUnmount() {\n // Remove beforeUnload event handler...\n //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Destroy the synchronizer used to update reference lines\n OHIF.viewer.updateImageSynchronizer.destroy();\n\n // TODO: Instruct all plugins to clean up themselves\n //\n // Clear references to all stacks in the StackManager\n //StackManager.clearStacks();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n }\n}\n\nexport default ViewerMain;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedStudyBrowser from './ConnectedStudyBrowser.js';\nimport ViewerMain from './ViewerMain.js';\nimport './FlexboxLayout.css';\n\nclass FlexboxLayout extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n studiesForBrowser: []\n };\n\n componentDidMount() {\n const studiesForBrowser = this.getStudiesForBrowser();\n\n this.setState({\n studiesForBrowser\n });\n }\n\n getStudiesForBrowser = () => {\n const { studies } = this.props;\n\n // TODO[react]:\n // - Add sorting of display sets\n // - Add useMiddleSeriesInstanceAsThumbnail\n // - Add showStackLoadingProgressBar option\n return studies.map((study) => {\n const { studyInstanceUid } = study;\n\n const thumbnails = study.displaySets.map((displaySet) => {\n const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet;\n const imageId = displaySet.images[0].getImageId();\n\n return {\n imageId,\n displaySetInstanceUid,\n seriesDescription,\n seriesNumber,\n instanceNumber,\n numImageFrames,\n };\n });\n\n return {\n studyInstanceUid,\n thumbnails\n };\n });\n }\n\n render() {\n let mainContentClassName = \"main-content\"\n if (this.props.leftSidebarOpen) {\n mainContentClassName += ' sidebar-left-open';\n }\n\n if (this.props.rightSidebarOpen) {\n mainContentClassName += ' sidebar-right-open';\n }\n\n // TODO[react]: Add measurementLightTable\n return (\n
\n
\n \n
\n
\n \n
\n {/*
\n {{> measurementLightTable (clone this)}}\n
*/}\n
\n );\n }\n}\n\nexport default FlexboxLayout;\n","import { connect } from 'react-redux';\nimport FlexboxLayout from './FlexboxLayout';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen,\n };\n};\n\nconst ConnectedFlexboxLayout = connect(\n mapStateToProps,\n null\n)(FlexboxLayout);\n\nexport default ConnectedFlexboxLayout;\n","import { connect } from 'react-redux';\nimport { ToolbarSection } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setToolActive } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n return {\n buttons: state.tools.buttons,\n activeCommand: activeButton && activeButton.command\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n setToolActive: tool => {\n dispatch(setToolActive(tool.command))\n }\n };\n};\n\nconst ConnectedToolbarSection = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarSection);\n\nexport default ConnectedToolbarSection;\n","import { connect } from 'react-redux';\nimport { LayoutButton } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setLayout } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n return {\n currentLayout: state.viewports.layout,\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n // TODO: Change if layout switched becomes more complex\n onChange: selectedCell => {\n let viewports = [];\n const rows = selectedCell.row + 1;\n const columns = selectedCell.col + 1;\n const numViewports = rows * columns;\n for (let i = 0; i < numViewports; i++) {\n viewports.push({\n height: `${100 / rows}%`,\n width: `${100 / columns}%`\n });\n }\n const layout = {\n viewports\n };\n\n dispatch(setLayout(layout))\n }\n };\n};\n\nconst ConnectedLayoutButton = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutButton);\n\nexport default ConnectedLayoutButton;\n","import { connect } from 'react-redux';\nimport { CineDialog } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\nimport cloneDeep from 'lodash.clonedeep';\n\nconst { setViewportSpecificData } = OHIF.redux.actions;\n\n// TODO: I'm guessing this function will be used in other connect locations\n// so we might want to put it somewhere shared\nfunction getActiveViewportSpecificData(state) {\n const { viewportSpecificData, activeViewportIndex } = state.viewports;\n return viewportSpecificData[activeViewportIndex];\n}\n\nconst mapStateToProps = state => {\n // TODO:\n // - Test if including CineDialog in the toolbarRow will prevent it\n // from hovering over the rest of the UI when visible.\n //\n // - Create custom ToolbarButton which just shows Play state\n // - Connect this ToolbarButton to Redux\n const activeViewportSpecificData = getActiveViewportSpecificData(state);\n\n let stack = {\n imageIds: [],\n currentImageIdIndex: 0\n };\n if (activeViewportSpecificData && activeViewportSpecificData.stack) {\n stack = activeViewportSpecificData.stack\n }\n\n let cine = {\n isPlaying: false,\n cineFrameRate: 24\n };\n if (activeViewportSpecificData && activeViewportSpecificData.cine) {\n cine = activeViewportSpecificData.cine\n }\n\n\n // TODO: activeViewportStackData won't currently change anything on\n // CornerstoneViewport. The updates are too frequent and it's killing\n // performance. Need to revisit how we can do this.\n return {\n activeViewportStackData: stack,\n activeViewportCineData: cine,\n activeViewportIndex: state.viewports.activeViewportIndex\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n dispatchSetViewportSpecificData: (viewportIndex, data) => {\n dispatch(setViewportSpecificData(viewportIndex, data));\n },\n };\n};\n\nconst mergeProps = (propsFromState, propsFromDispatch, ownProps) => {\n const { activeViewportStackData, activeViewportCineData, activeViewportIndex } = propsFromState;\n\n return {\n cineFrameRate: activeViewportCineData.cineFrameRate,\n isPlaying: activeViewportCineData.isPlaying,\n onPlayPauseChanged: isPlaying => {\n const cine = cloneDeep(activeViewportCineData);\n cine.isPlaying = !cine.isPlaying;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onFrameRateChanged: frameRate => {\n const cine = cloneDeep(activeViewportCineData);\n cine.cineFrameRate = frameRate;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onClickNextButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n const largestPossibleIndex = stack.imageIds.length - 1;\n stack.currentImageIdIndex = Math.min(stack.currentImageIdIndex + 1, largestPossibleIndex)\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickBackButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = Math.max(stack.currentImageIdIndex - 1, 0);\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToStart: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = 0;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToEnd: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = stack.imageIds.length;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n }\n };\n};\n\nconst ConnectedCineDialog = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(CineDialog);\n\nexport default ConnectedCineDialog;\n","import React, { Component } from \"react\";\nimport ConnectedToolbarSection from './ConnectedToolbarSection';\nimport ConnectedLayoutButton from './ConnectedLayoutButton';\nimport ConnectedCineDialog from './ConnectedCineDialog.js';\nimport PropTypes from 'prop-types';\nimport { RoundedButtonGroup } from 'react-viewerbase';\nimport './ToolbarRow.css';\n//import Icons from \"../images/icons.svg\"\n\nconst Icons = '/icons.svg';\n\nclass ToolbarRow extends Component {\n static propTypes = {\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n setLeftSidebarOpen: PropTypes.func,\n setRightSidebarOpen: PropTypes.func\n };\n\n static defaultProps = {\n leftSidebarOpen: false,\n rightSidebarOpen: false\n };\n\n onLeftSidebarValueChanged = (value) => {\n this.props.setLeftSidebarOpen(!!value);\n }\n\n render() {\n const leftSidebarToggle = [{\n value: 'studies',\n svgLink: `${Icons}#icon-studies`,\n svgWidth: 15,\n svgHeight: 13,\n bottomLabel: 'Series',\n }];\n\n const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null;\n\n return (
\n
\n \n
\n \n \n {/* TODO: Putting cine dialog here for now */}\n
\n \n
\n
\n {/* > roundedButtonGroup rightSidebarToggleButtonData */}\n
\n
\n );\n }\n}\n\nexport default ToolbarRow;\n","export const setLeftSidebarOpen = state => ({\n type: 'SET_LEFT_SIDEBAR_OPEN',\n state\n});\n\nexport const setRightSidebarOpen = state => ({\n type: 'SET_RIGHT_SIDEBAR_OPEN',\n state\n});\n\nconst actions = {\n setLeftSidebarOpen,\n setRightSidebarOpen\n};\n\nexport default actions;\n","import { connect } from 'react-redux';\nimport ToolbarRow from './ToolbarRow';\nimport { setLeftSidebarOpen, setRightSidebarOpen } from '../redux/actions.js';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen\n };\n};\n\n\nconst mapDispatchToProps = dispatch => {\n return {\n setLeftSidebarOpen: state => {\n dispatch(setLeftSidebarOpen(state))\n },\n setRightSidebarOpen: state => {\n dispatch(setRightSidebarOpen(state))\n }\n };\n};\n\nconst ConnectedToolbarRow = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarRow);\n\nexport default ConnectedToolbarRow;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nclass StudyLoadingMonitor extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n setStudyLoadingProgress: PropTypes.func.isRequired,\n clearStudyLoadingProgress: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n // TODO: This is pretty ugly. The thing is that the StudyLoadingListener\n // needs to update the Redux store, but shouldn't know that it exists.\n // I am therefore passing in some functions to update the store instead,\n // but this should definitely be cleaned up somehow.\n const options = {\n _setProgressData: (progressId, progressData) => {\n this.props.setStudyLoadingProgress(progressId, progressData)\n },\n _clearProgressById: (progressId) => {\n this.props.clearStudyLoadingProgress(progressId)\n }\n }\n\n const { StudyLoadingListener } = OHIF.classes;\n this.studyLoadingListener = StudyLoadingListener.getInstance(options);\n this.studyLoadingListener.clear();\n this.studyLoadingListener.addStudies(this.props.studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Destroy stack loading listeners when we close the viewer\n this.studyLoadingListener.clear();\n }\n}\n\n\nexport default StudyLoadingMonitor;\n","import { connect } from 'react-redux';\nimport StudyLoadingMonitor from '../components/StudyLoadingMonitor.js';\nimport OHIF from 'ohif-core'\n\nconst { setStudyLoadingProgress, clearStudyLoadingProgress } = OHIF.redux.actions;\n\nconst mapDispatchToProps = dispatch => {\n return {\n setStudyLoadingProgress: (progressId, progressData) => {\n dispatch(setStudyLoadingProgress(progressId, progressData))\n },\n clearStudyLoadingProgress: progressId => {\n dispatch(clearStudyLoadingProgress(progressId))\n }\n };\n};\n\nconst ConnectedStudyLoadingMonitor = connect(\n null,\n mapDispatchToProps\n)(StudyLoadingMonitor);\n\nexport default ConnectedStudyLoadingMonitor;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nconst { StudyPrefetcher } = OHIF.classes;\n\nclass StudyPrefetcherComponent extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n componentDidMount() {\n const { studies } = this.props;\n\n this.studyPrefetcher = StudyPrefetcher.getInstance();\n this.studyPrefetcher.setStudies(studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Stop prefetching when we close the viewer\n this.studyPrefetcher.destroy();\n }\n}\n\n\nexport default StudyPrefetcherComponent;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport OHIF from 'ohif-core';\n//import { CineDialog } from 'react-viewerbase';\n\nimport Header from '../components/Header'\nimport ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';\nimport ConnectedToolbarRow from \"./ConnectedToolbarRow\";\nimport ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js';\nimport StudyPrefetcher from '../components/StudyPrefetcher.js';\nimport './Viewer.css';\n\nconst { StackManager } = OHIF.utils;\n\n/**\n * Inits OHIF Hanging Protocol's onReady.\n * It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine\n * Hanging Protocol will use OHIF LayoutManager to render viewports properly\n */\n/*const initHangingProtocol = () => {\n // When Hanging Protocol is ready\n HP.ProtocolStore.onReady(() => {\n\n // Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata\n const studyMetadataList = OHIF.viewer.StudyMetadataList.all();\n\n // Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata\n const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();\n\n // Get prior studies map\n const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);\n\n // Creates Protocol Engine object with required arguments\n const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);\n\n // Sets up Hanging Protocol engine\n HP.setEngine(ProtocolEngine);\n });\n};*/\n\n\nOHIF.viewer.defaultTool = {\n left: 'wwwc',\n right: 'zoom',\n middle: 'pan'\n};\n\nOHIF.viewer.refLinesEnabled = true;\n\n/*const viewportUtils = OHIF.viewerbase.viewportUtils;\n\nOHIF.viewer.functionList = {\n toggleCineDialog: viewportUtils.toggleCineDialog,\n toggleCinePlay: viewportUtils.toggleCinePlay,\n clearTools: viewportUtils.clearTools,\n resetViewport: viewportUtils.resetViewport,\n invert: viewportUtils.invert\n};*/\n\n// Create the synchronizer used to update reference lines\nOHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);\n\n// Metadata configuration\nconst metadataProvider = new OHIF.cornerstone.MetadataProvider();\ncornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));\n\nStackManager.setMetadataProvider(metadataProvider);\n\nclass Viewer extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n render() {\n return (<>\n
\n
\n {/**/}\n
\n
\n \n \n \n \n
\n \n );\n }\n}\n\n\nexport default Viewer;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport Viewer from \"./Viewer.js\";\n\nconst { createDisplaySets } = OHIF.utils;\n\nclass ViewerRetrieveStudyData extends Component {\n static propTypes = {\n studyInstanceUids: PropTypes.array.isRequired,\n seriesInstanceUids: PropTypes.array,\n server: PropTypes.object\n };\n\n state = {\n studies: null,\n error: null\n }\n\n componentDidMount() {\n // TODO: Avoid using timepoints here\n //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };\n const { studyInstanceUids, seriesInstanceUids, server } = this.props;\n const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)\n\n // Render the viewer when the data is ready\n promise.then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({\n studies: updatedStudies,\n });\n }).catch(error => {\n this.setState({\n error: true,\n });\n\n throw new Error(error);\n });\n\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default ViewerRetrieveStudyData;\n","import { connect } from 'react-redux';\nimport ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';\n\nconst isActive = (a) => a.active === true;\n\nconst mapStateToProps = state => {\n const activeServer = state.servers.servers.find(isActive);\n\n return {\n server: activeServer,\n };\n};\n\nconst ConnectedViewerRetrieveStudyData = connect(\n mapStateToProps,\n null\n)(ViewerRetrieveStudyData);\n\nexport default ConnectedViewerRetrieveStudyData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ConnectedViewerRetrieveStudyData from \"../connectedComponents/ConnectedViewerRetrieveStudyData\";\n\nfunction ViewerRouting({ match }) {\n const { studyInstanceUids, seriesInstanceUids } = match.params;\n\n let studyUIDs;\n let seriesUIDs;\n\n if (studyInstanceUids && !seriesInstanceUids) {\n studyUIDs = studyInstanceUids.split(';');\n } else if (studyInstanceUids && seriesInstanceUids) {\n studyUIDs = [match.params.studyInstanceUid];\n seriesUIDs = match.params.seriesInstanceUids.split(';');\n }\n\n return (\n \n );\n}\n\nViewerRouting.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n studyInstanceUids: PropTypes.string.isRequired,\n seriesInstanceUids: PropTypes.string\n })\n })\n};\n\nexport default ViewerRouting;\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport qs from 'query-string'\nimport Viewer from \"../connectedComponents/Viewer\";\nimport OHIF from 'ohif-core';\n\nconst { createDisplaySets } = OHIF.utils;\n\nfunction parseQueryAndFetchStudies(query) {\n return new Promise((resolve, reject) => {\n const url = query.url;\n\n if (!url) {\n reject(new Error('No URL was specified. Use ?url=$yourURL'));\n }\n\n // Define a request to the server to retrieve the study data\n // as JSON, given a URL that was in the Route\n const oReq = new XMLHttpRequest();\n\n // Add event listeners for request failure\n oReq.addEventListener('error', (error) => {\n OHIF.log.warn('An error occurred while retrieving the JSON data');\n reject(error)\n });\n\n // When the JSON has been returned, parse it into a JavaScript Object\n // and render the OHIF Viewer with this data\n oReq.addEventListener('load', () => {\n // Parse the response content\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText\n if (!oReq.responseText) {\n OHIF.log.warn('Response was undefined');\n reject(new Error('Response was undefined'));\n }\n\n OHIF.log.info(JSON.stringify(oReq.responseText, null, 2));\n\n const data = JSON.parse(oReq.responseText);\n if (data.servers && query.studyInstanceUids) {\n const server = data.servers.dicomWeb[0];\n server.type = 'dicomWeb';\n\n const studyInstanceUids = query.studyInstanceUids.split(';');\n const seriesInstanceUids = [];\n\n OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => {\n resolve(studies);\n }, error => {\n reject(error);\n });\n } else {\n resolve(data.studies);\n }\n });\n\n // Open the Request to the server for the JSON data\n // In this case we have a server-side route called /api/\n // which responds to GET requests with the study data\n OHIF.log.info(`Sending Request to: ${url}`);\n oReq.open('GET', url);\n oReq.setRequestHeader('Accept', 'application/json')\n\n // Fire the request to the server\n oReq.send();\n });\n}\n\nclass StandaloneRouting extends Component {\n state = {\n studies: null,\n error: null\n }\n\n static propTypes = {\n location: PropTypes.object,\n store: PropTypes.object\n };\n\n componentDidMount() {\n const query = qs.parse(this.props.location.search);\n parseQueryAndFetchStudies(query).then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({ studies: updatedStudies });\n }, error => {\n this.setState({ error });\n });\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default StandaloneRouting;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ViewerRetrieveStudyData from \"../connectedComponents/ViewerRetrieveStudyData.js\";\n\nfunction IHEInvokeImageDisplay({ match }) {\n const requestType = match.params.query.requestType;\n let studyInstanceUids;\n //let patientUids;\n let displayStudyList = false;\n\n if (requestType === \"STUDY\") {\n studyInstanceUids = match.params.query.studyUID.split(';');\n } else if (requestType === \"STUDYBASE64\") {\n const uids = this.params.query.studyUID;\n const decodedData = window.atob(uids);\n studyInstanceUids = decodedData.split(';');\n } else if (requestType === \"PATIENT\") {\n //patientUidspatientUids = this.params.query.patientID.split(';');\n displayStudyList = true\n } else {\n displayStudyList = true\n }\n\n if (displayStudyList) {\n return ('')//);\n }\n\n return (\n \n );\n}\n\nIHEInvokeImageDisplay.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n query: PropTypes.shape({\n requestType: PropTypes.string.isRequired,\n studyUID: PropTypes.string,\n patientID: PropTypes.string\n })\n })\n })\n};\n\nexport default IHEInvokeImageDisplay;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { ViewerbaseDragDropContext } from 'react-viewerbase';\nimport ViewerRouting from \"./routes/ViewerRouting.js\";\nimport StandaloneRouting from './routes/StandaloneRouting.js';\nimport IHEInvokeImageDisplay from './routes/IHEInvokeImageDisplay.js';\n//import CallbackPage from './CallbackPage.js';\n//import userManager from \"./userManager.js\";\nimport './OHIFStandaloneViewer.css';\nimport './variables.css';\nimport './theme-tide.css';\n\nconst reload = () => window.location.reload();\n\n/*function LoadingUser() {\n return (
Loading user...
);\n}*/\n\nclass App extends Component {\n static propTypes = {\n history: PropTypes.object.isRequired,\n user: PropTypes.object\n }\n\n componentDidMount() {\n this.unlisten = this.props.history.listen((location, action) => {\n if (this.props.setContext) {\n this.props.setContext(window.location.pathname);\n }\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n render() {\n const user = this.props.user;\n\n /*if (!user || user.expired) {\n // TODO: redirect to OAuth page if necessary\n return \n \n {\n userManager.signinRedirect();\n }}/>\n \n ;\n }*/\n\n return (\n \n \n \n \n \n \n\n \n \n {/* {\n userManager.signinRedirect();\n }}\n />*/\n /**/}\n \n
Sorry, this page does not exist.
}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {};\n /*return {\n user: state.oidc.user,\n };*/\n};\n\nconst ConnectedApp = connect(\n mapStateToProps,\n null\n)(App);\n\nexport default ViewerbaseDragDropContext(withRouter(ConnectedApp));\n","import React, { PureComponent, Component } from 'react';\n\n/*function metaDataProvider(type, imageId) {\n const metaData = cornerstoneWADOImageLoader.wadors.metaDataManager.get(\n imageId\n );\n\n if (!metaData) {\n return;\n }\n\n if (\n metaData[type] !== undefined &&\n metaData[type].Value !== undefined &&\n metaData[type].Value.length\n ) {\n return metaData[type].Value[0];\n }\n\n if (type === 'instance') {\n return metaData;\n }\n}\n\ncornerstone.metaData.addProvider(metaDataProvider);*/\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".scroll {\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scroll .scroll-holder {\\n height: calc(100% - 20px);\\n margin-top: 5px;\\n position: relative;\\n width: 12px;\\n}\\n.scroll .scroll-holder .imageSlider {\\n height: 12px;\\n left: 12px;\\n padding: 0;\\n position: absolute;\\n top: 0;\\n transform: rotate(90deg);\\n transform-origin: top left;\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider:focus {\\n outline: none;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-focus-outer {\\n border: none;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-runnable-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 5px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 2px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-track {\\n animate: 0.2s;\\n background: transparent;\\n border: none;\\n border-width: 15px 0;\\n color: rgba(0,0,0,0);\\n cursor: pointer;\\n height: 12px;\\n width: 100%;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-lower {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-upper {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb {\\n -webkit-appearance: none !important;\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -webkit-grab;\\n height: 12px;\\n margin-top: -4px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb:active {\\n background-color: #20a5d6;\\n cursor: -webkit-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -moz-grab;\\n height: 12px;\\n width: 39px;\\n z-index: 7;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb:active {\\n background-color: #20a5d6;\\n cursor: -moz-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: ns-resize;\\n height: 12px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb:active {\\n background-color: #20a5d6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-tooltip {\\n display: none;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .imageSlider {\\n left: 50px;\\n }\\n}\\n\";\nstyleInject(css);\n\nvar ImageScrollbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageScrollbar, _PureComponent);\n\n function ImageScrollbar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ImageScrollbar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ImageScrollbar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (event) {\n var intValue = parseInt(event.target.value, 10);\n\n _this.props.onInputCallback(intValue);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n // We don't allow direct keyboard up/down input on the\n // image sliders since the natural direction is reversed (0 is at the top)\n // Store the KeyCodes in an object for readability\n var keys = {\n DOWN: 40,\n UP: 38\n }; // TODO: Enable scroll down / scroll up without depending on ohif-core\n\n if (event.which === keys.DOWN) {\n //OHIF.commands.run('scrollDown');\n event.preventDefault();\n } else if (event.which === keys.UP) {\n //OHIF.commands.run('scrollUp');\n event.preventDefault();\n }\n });\n\n return _this;\n }\n\n _createClass(ImageScrollbar, [{\n key: \"render\",\n value: function render() {\n if (this.props.max === 0) {\n return null;\n }\n\n this.style = {\n width: \"\".concat(this.props.height)\n };\n return React.createElement(\"div\", {\n className: \"scroll\"\n }, React.createElement(\"div\", {\n className: \"scroll-holder\"\n }, React.createElement(\"input\", {\n className: \"imageSlider\",\n style: this.style,\n type: \"range\",\n min: \"0\",\n max: this.props.max,\n step: \"1\",\n value: this.props.value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown\n })));\n }\n }]);\n\n return ImageScrollbar;\n}(PureComponent);\n\n_defineProperty(ImageScrollbar, \"propTypes\", {\n value: propTypes.number.isRequired,\n max: propTypes.number.isRequired,\n height: propTypes.string.isRequired,\n onInputCallback: propTypes.func.isRequired\n});\n\n/**\n * Formats a patient name for display purposes\n */\nfunction formatPN(name) {\n if (!name) {\n return;\n } // Convert the first ^ to a ', '. String.replace() only affects\n // the first appearance of the character.\n\n\n var commaBetweenFirstAndLast = name.replace('^', ', '); // Replace any remaining '^' characters with spaces\n\n var cleaned = commaBetweenFirstAndLast.replace(/\\^/g, ' '); // Trim any extraneous whitespace\n\n return cleaned.trim();\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory();\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && ('object' !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.23.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n});\n\nfunction formatDA(date) {\n var strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';\n\n if (!date) {\n return;\n }\n\n var dateAsMoment = moment(date, 'YYYYMMDD');\n return dateAsMoment.format(strFormat);\n}\n\nfunction formatTM(time) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';\n\n if (!time) {\n return;\n } // DICOM Time is stored as HHmmss.SSS, where:\n // HH 24 hour time:\n // m mm 0..59 Minutes\n // s ss 0..59 Seconds\n // S SS SSS 0..999 Fractional seconds\n //\n // See MomentJS: http://momentjs.com/docs/#/parsing/string-format/\n\n\n var dateTime = moment(time, 'HHmmss.SSS');\n return dateTime.format(format);\n}\n\nfunction formatNumberPrecision(number, precision) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\nfunction isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar helpers = {\n formatPN: formatPN,\n formatDA: formatDA,\n formatTM: formatTM,\n formatNumberPrecision: formatNumberPrecision,\n isValidNumber: isValidNumber\n};\n\nvar css$1 = \".imageViewerViewport.empty ~ .ViewportOverlay {\\n display: none;\\n}\\n.ViewportOverlay {\\n color: #9ccef9;\\n}\\n.ViewportOverlay .overlay-element {\\n position: absolute;\\n font-weight: 400;\\n text-shadow: 1px 1px #000;\\n pointer-events: none;\\n}\\n.ViewportOverlay .top-left {\\n top: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .top-center {\\n top: 20px;\\n padding-top: 20px;\\n width: 100%;\\n text-align: center;\\n}\\n.ViewportOverlay .top-right {\\n top: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay .bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .bottom-right {\\n bottom: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay.controlsVisible .topright,\\n.ViewportOverlay.controlsVisible .bottomright {\\n right: calc(20px + 19px);\\n}\\n.ViewportOverlay svg {\\n color: #9ccef9;\\n fill: #9ccef9;\\n stroke: #9ccef9;\\n background-color: transparent;\\n margin: 2px;\\n width: 18px;\\n height: 18px;\\n}\\n\";\nstyleInject(css$1);\n\nvar formatPN$1 = helpers.formatPN,\n formatDA$1 = helpers.formatDA,\n formatNumberPrecision$1 = helpers.formatNumberPrecision,\n formatTM$1 = helpers.formatTM,\n isValidNumber$1 = helpers.isValidNumber;\n/*function getCompression(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n if (\n instance.lossyImageCompression === '01' &&\n instance.lossyImageCompressionRatio !== ''\n ) {\n const compressionMethod = instance.lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n instance.lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n\nfunction getImageDimensions(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n return `${instance.columns} x ${instance.rows}`;\n}*/\n\nvar ViewportOverlay =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOverlay, _PureComponent);\n\n function ViewportOverlay() {\n _classCallCheck(this, ViewportOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOverlay).apply(this, arguments));\n }\n\n _createClass(ViewportOverlay, [{\n key: \"render\",\n value: function render() {\n var zoom = this.props.viewport.scale * 100;\n var imageId = this.props.imageId; //const patientMetadata = cornerstone.metaData.get('patient', imageId);\n //const studyMetadata = cornerstone.metaData.get('study', imageId);\n //const seriesMetadata = cornerstone.metaData.get('generalSeriesModule', imageId);\n //const instanceMetadata = cornerstone.metaData.get('instance', imageId);\n\n var patientName = ''; //patientMetadata.name;\n\n var patientId = ''; //patientMetadata.id;\n\n /*const { studyDate, studyTime, studyDescription } = studyMetadata;\n const { seriesNumber, seriesDescription } = seriesMetadata;\n const { instanceNumber, frameTime, thickness, spacingBetweenSlices, sliceLocation } = instanceMetadata;*/\n //const frameRate = formatNumberPrecision(1000 / frameTime, 1);\n //const compression = getCompression(imageId);\n\n var windowWidth = this.props.viewport.voi.windowWidth || 0;\n var windowCenter = this.props.viewport.voi.windowCenter || 0;\n var wwwc = \"W: \".concat(windowWidth.toFixed(0), \" L: \").concat(windowCenter.toFixed(0));\n var imageIndex = this.props.stack.imageIds.indexOf(this.props.imageId) + 1;\n var numImages = this.props.stack.imageIds.length; //const imageDimensions = getImageDimensions(imageId);\n\n var studyDescription = '';\n var studyDate = null;\n var studyTime = null;\n var compression = null;\n var seriesNumber = null;\n var instanceNumber = null;\n var frameRate = null;\n var imageDimensions = null;\n var sliceLocation = null;\n var seriesDescription = null;\n var normal = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId)), React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Zoom: \", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\"), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, React.createElement(\"span\", null, isValidNumber$1(sliceLocation) ? \"Loc: \".concat(formatNumberPrecision$1(sliceLocation, 2), \" mm\") : ''), React.createElement(\"span\", null, ''), React.createElement(\"span\", null, '')), React.createElement(\"div\", null, seriesDescription))));\n var rightOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n var leftOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n return React.createElement(\"div\", {\n className: \"ViewportOverlay\"\n }, normal);\n }\n }]);\n\n return ViewportOverlay;\n}(PureComponent);\n\nViewportOverlay.propTypes = {\n viewport: propTypes.object.isRequired,\n imageId: propTypes.string.isRequired,\n stack: propTypes.object.isRequired\n};\n\nvar css$2 = \".imageViewerLoadingIndicator {\\n color: #91b9cd;\\n}\\n.faded {\\n opacity: 0.5;\\n}\\n.imageViewerErrorLoadingIndicator {\\n color: #e29e4a;\\n}\\n.imageViewerErrorLoadingIndicator p,\\n.imageViewerErrorLoadingIndicator h4 {\\n padding: 4px 0;\\n text-align: center;\\n word-wrap: break-word;\\n}\\n.imageViewerErrorLoadingIndicator p {\\n font-size: 11pt;\\n}\\n.loadingIndicator {\\n background-color: rgba(0,0,0,0.75);\\n font-size: 18px;\\n height: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index: 1;\\n}\\n.loadingIndicator .indicatorContents {\\n font-size: 30px;\\n font-weight: 300;\\n position: absolute;\\n text-align: center;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 100%;\\n}\\n\";\nstyleInject(css$2);\n\nvar LoadingIndicator =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LoadingIndicator, _PureComponent);\n\n function LoadingIndicator() {\n _classCallCheck(this, LoadingIndicator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LoadingIndicator).apply(this, arguments));\n }\n\n _createClass(LoadingIndicator, [{\n key: \"render\",\n value: function render() {\n // TODO[react]: Pass this in as a prop reactively\n //const percentComplete = Session.get('CornerstoneLoadProgress' + this.viewportIndex);\n var percComplete;\n\n if (this.props.percentComplete && this.props.percentComplete !== 100) {\n percComplete = \"\".concat(this.props.percentComplete, \"%\");\n }\n\n return React.createElement(React.Fragment, null, this.props.error ? React.createElement(\"div\", {\n className: \"imageViewerErrorLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"h4\", null, \"Error Loading Image\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, this.props.error.message))) : React.createElement(\"div\", {\n className: \"imageViewerLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"p\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spin fa-circle-o-notch fa-fw\"\n }), ' ', percComplete))));\n }\n }]);\n\n return LoadingIndicator;\n}(PureComponent);\n\n_defineProperty(LoadingIndicator, \"propTypes\", {\n percentComplete: propTypes.number,\n error: propTypes.object\n});\n\n_defineProperty(LoadingIndicator, \"defaultProps\", {\n percentComplete: 0,\n error: null\n});\n\nvar css$3 = \".ViewportOrientationMarkers {\\n pointer-events: none;\\n font-size: 15px;\\n color: #ccc;\\n line-height: 18px;\\n}\\n.ViewportOrientationMarkers .orientation-marker {\\n position: absolute;\\n}\\n.ViewportOrientationMarkers .top-mid {\\n top: 5px;\\n left: 50%;\\n}\\n.ViewportOrientationMarkers .left-mid {\\n top: 47%;\\n left: 5px;\\n}\\n\";\nstyleInject(css$3);\n\n/**\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param imageId The Cornerstone ImageId\n * @param viewport The current viewport\n */\n\nfunction getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools) {\n var imagePlane = cornerstone.metaData.get('imagePlane', imageId);\n\n if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {\n return;\n }\n\n var rowString = cornerstoneTools.orientation.getOrientationString(imagePlane.rowCosines);\n var columnString = cornerstoneTools.orientation.getOrientationString(imagePlane.columnCosines);\n var oppositeRowString = cornerstoneTools.orientation.invertOrientationString(rowString);\n var oppositeColumnString = cornerstoneTools.orientation.invertOrientationString(columnString);\n var markers = {\n top: oppositeColumnString,\n left: oppositeRowString\n }; // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n\n if (viewport.vflip) {\n markers.top = cornerstoneTools.orientation.invertOrientationString(markers.top);\n }\n\n if (viewport.hflip) {\n markers.left = cornerstoneTools.orientation.invertOrientationString(markers.left);\n } // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n\n\n if (viewport.rotation === 90 || viewport.rotation === -270) {\n return {\n top: markers.left,\n left: cornerstoneTools.orientation.invertOrientationString(markers.top)\n };\n } else if (viewport.rotation === -90 || viewport.rotation === 270) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.left),\n left: markers.top\n };\n } else if (viewport.rotation === 180 || viewport.rotation === -180) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.top),\n left: cornerstoneTools.orientation.invertOrientationString(markers.left)\n };\n }\n\n return markers;\n}\n\nvar ViewportOrientationMarkers =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOrientationMarkers, _PureComponent);\n\n function ViewportOrientationMarkers() {\n _classCallCheck(this, ViewportOrientationMarkers);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOrientationMarkers).apply(this, arguments));\n }\n\n _createClass(ViewportOrientationMarkers, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageId = _this$props.imageId,\n viewport = _this$props.viewport,\n cornerstone = _this$props.cornerstone,\n cornerstoneTools = _this$props.cornerstoneTools;\n var markers = getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools);\n\n if (!markers) {\n return '';\n }\n\n return React.createElement(\"div\", {\n className: \"ViewportOrientationMarkers noselect\"\n }, React.createElement(\"div\", {\n className: \"top-mid orientation-marker\"\n }, markers.top), React.createElement(\"div\", {\n className: \"left-mid orientation-marker\"\n }, markers.left));\n }\n }]);\n\n return ViewportOrientationMarkers;\n}(PureComponent);\n\nViewportOrientationMarkers.propTypes = {\n imageId: propTypes.string.isRequired,\n viewport: propTypes.object.isRequired\n};\n\nvar css$4 = \".CornerstoneViewport {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n\\n.viewport-element {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n background-color: black;\\n\\n /* Prevent the blue outline in Chrome when a viewport is selected */\\n outline: 0 !important;\\n\\n /* Prevents the entire page from getting larger\\n when the magnify tool is near the sides/corners of the page */\\n overflow: hidden;\\n}\\n\\n.viewportInstructions {\\n display: block;\\n font-size: 13px;\\n /*theme('color', '$textSecondaryColor')*/\\n color: #91b9cd;\\n line-height: 18px;\\n pointer-events: none; /* Necessary for drag/drop through to cornerstone element below */\\n text-align: center;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n margin: auto;\\n height: 20px;\\n}\\n\\n/* These are some good CSS settings for a circular magnifying glass\\n Try removing the border-radius to make a square magnifying glass */\\n.magnifyTool {\\n border: 4px white solid;\\n box-shadow: 2px 2px 10px #1e1e1e;\\n border-radius: 50%;\\n display: none;\\n cursor: none;\\n}\\n\";\nstyleInject(css$4);\n\nvar EVENT_RESIZE = 'resize';\n\nfunction setToolsPassive(cornerstoneTools, tools) {\n tools.forEach(function (tool) {\n cornerstoneTools.setToolPassive(tool);\n });\n}\n\nfunction initializeTools(cornerstoneTools, tools) {\n Array.from(tools).forEach(function (tool) {\n var apiTool = cornerstoneTools[\"\".concat(tool.name, \"Tool\")];\n\n if (apiTool) {\n cornerstoneTools.addTool(apiTool, tool.configuration);\n } else {\n throw new Error(\"Tool not found: \".concat(tool.name, \"Tool\"));\n }\n });\n}\n\nvar CornerstoneViewport =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CornerstoneViewport, _Component);\n\n function CornerstoneViewport(props) {\n var _this;\n\n _classCallCheck(this, CornerstoneViewport);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CornerstoneViewport).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onContextMenu\", function (event) {\n // Preventing the default behaviour for right-click is essential to\n // allow right-click tools to work.\n event.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWindowResize\", function () {\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageRendered\", function () {\n var viewport = _this.cornerstone.getViewport(_this.element);\n\n _this.setState({\n viewport: viewport\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onNewImage\", function () {\n var image = _this.cornerstone.getImage(_this.element);\n\n _this.setState({\n imageId: image.imageId\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setActiveTool\", function (activeTool) {\n // TODO: allow this config as props\n var leftMouseTools = ['Bidirectional', 'Wwwc', 'Length', 'Angle', 'StackScroll'];\n setToolsPassive(_this.cornerstoneTools, leftMouseTools); // pan is the default tool for middle mouse button\n\n var isPanToolActive = activeTool === 'Pan';\n var panOptions = {\n mouseButtonMask: isPanToolActive ? [1, 4] : [4],\n isTouchActive: isPanToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Pan', panOptions); // zoom is the default tool for right mouse button\n\n\n var isZoomToolActive = activeTool === 'Zoom';\n var zoomOptions = {\n mouseButtonMask: isZoomToolActive ? [1, 2] : [2],\n isTouchActive: isZoomToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Zoom', zoomOptions);\n\n _this.cornerstoneTools.setToolActive(activeTool, {\n mouseButtonMask: 1,\n isTouchActive: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onStackScroll\", function (event) {\n _this.setViewportActive();\n\n var element = event.currentTarget;\n\n var stackData = _this.cornerstoneTools.getToolState(element, 'stack');\n\n var stack = stackData.data[0];\n\n _this.hideExtraButtons();\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageLoaded\", function () {\n _this.setState({\n numImagesLoaded: _this.state.numImagesLoaded + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"startLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n _this.loadHandlerTimeout = setTimeout(function () {\n _this.setState({\n isLoading: true\n });\n }, CornerstoneViewport.loadIndicatorDelay);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"doneLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n\n _this.setState({\n isLoading: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMeasurementAddedOrRemoved\", function () {\n console.log('onMeasurementAddedOrRemoved');\n /* const { toolType, measurementData } = event.detail;\n // TODO: Pass in as prop?\n const toolsOfInterest = ['Bidirectional'];\n this.hideExtraButtons();\n if (toolsOfInterest.includes(toolType)) {\n const image = cornerstone.getImage(this.element);\n const viewport = cornerstone.getViewport(this.element);\n const type = {\n cornerstonetoolsmeasurementadded: 'added',\n cornerstonetoolsmeasurementremoved: 'removed'\n };\n const action = type[event.type];\n if (action === 'added') {\n measurementData._id = guid();\n measurementData.viewport = cloneDeep(viewport);\n }\n this.props.measurementsAddedOrRemoved(\n action,\n image.imageId,\n toolType,\n measurementData\n );\n }*/\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setViewportActive\", function () {\n if (!_this.props.isActive && _this.props.setViewportActive) {\n _this.props.setViewportActive();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMouseClick\", function (event) {\n _this.setViewportActive();\n\n if (event.detail.event.which === 3) {\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: false\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchPress\", function (event) {\n _this.setViewportActive();\n\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: true\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function () {\n _this.setViewportActive();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCloseToolContextMenu\", function () {\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"imageSliderOnInputCallback\", function (value) {\n _this.setViewportActive();\n\n var stack = _this.state.stack;\n stack.currentImageIdIndex = value;\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n // TODO: For some reason this isn't working?\n\n\n _this.scrollToIndex(_this.element, value);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hideExtraButtons\", function () {\n if (_this.state.bidirectionalAddLabelShow === true) {\n _this.setState({\n bidirectionalAddLabelShow: false\n });\n }\n\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _this.cornerstone = props.cornerstone;\n _this.cornerstoneTools = props.cornerstoneTools;\n _this.scrollToIndex = _this.cornerstoneTools.import('util/scrollToIndex'); // TODO: Allow viewport as a prop\n\n var _stack = props.viewportData.stack;\n _this.state = {\n stack: _stack,\n displaySetInstanceUid: props.viewportData.displaySetInstanceUid,\n imageId: _stack.imageIds[0],\n viewportHeight: '100%',\n isLoading: false,\n numImagesLoaded: 0,\n error: null,\n viewport: _this.cornerstone.getDefaultViewport(null, undefined)\n };\n var loadHandlerManager = _this.cornerstoneTools.loadHandlerManager;\n loadHandlerManager.setStartLoadHandler(_this.startLoadingHandler);\n loadHandlerManager.setEndLoadHandler(_this.doneLoadingHandler);\n _this.debouncedResize = lodash_debounce(function () {\n try {\n _this.cornerstone.getEnabledElement(_this.element);\n } catch (error) {\n console.error(error);\n return;\n }\n\n _this.cornerstone.resize(_this.element, true);\n\n _this.setState({\n viewportHeight: \"\".concat(_this.element.clientHeight - 20, \"px\")\n });\n }, 300);\n return _this;\n }\n\n _createClass(CornerstoneViewport, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var isLoading = this.state.isLoading || this.state.numImagesLoaded < 1;\n var displayLoadingIndicator = isLoading || this.state.error;\n var className = 'CornerstoneViewport';\n\n if (this.props.isActive) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"viewport-element\",\n onContextMenu: this.onContextMenu,\n ref: function ref(input) {\n _this2.element = input;\n }\n }, displayLoadingIndicator && React.createElement(LoadingIndicator, {\n error: this.state.error\n }), React.createElement(\"canvas\", {\n className: \"cornerstone-canvas\"\n }), React.createElement(ViewportOverlay, {\n stack: this.state.stack,\n viewport: this.state.viewport,\n imageId: this.state.imageId,\n numImagesLoaded: this.state.numImagesLoaded\n }), React.createElement(ViewportOrientationMarkers, {\n imageId: this.state.imageId,\n viewport: this.state.viewport,\n cornerstone: this.props.cornerstone,\n cornerstoneTools: this.props.cornerstoneTools\n })), React.createElement(ImageScrollbar, {\n onInputCallback: this.imageSliderOnInputCallback,\n max: this.state.stack.imageIds.length - 1,\n value: this.state.stack.currentImageIdIndex,\n height: this.state.viewportHeight\n }), this.props.children);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this3 = this;\n\n var element = this.element;\n this.eventHandlerData = [{\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.IMAGE_RENDERED,\n handler: this.onImageRendered\n }, {\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.NEW_IMAGE,\n handler: this.onNewImage\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.STACK_SCROLL,\n handler: this.onStackScroll\n },\n /*{\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_ADDED,\n handler: this.onMeasurementAddedOrRemoved\n },\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_REMOVED,\n handler: this.onMeasurementAddedOrRemoved\n },*/\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_CLICK,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_DOWN,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_PRESS,\n handler: this.onTouchPress\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_START,\n handler: this.onTouchStart\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_CLICK,\n handler: this.onDoubleClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_TAP,\n handler: this.onDoubleClick\n }, {\n eventTarget: window,\n eventType: EVENT_RESIZE,\n handler: this.onWindowResize\n }, {\n eventTarget: this.cornerstone.events,\n eventType: this.cornerstone.EVENTS.IMAGE_LOADED,\n handler: this.onImageLoaded\n }]; // Enable the DOM Element for use with Cornerstone\n\n this.cornerstone.enable(element, this.props.cornerstoneOptions); // Handle the case where the imageId isn't loaded correctly and the\n // imagePromise returns undefined\n // To test, uncomment the next line\n //let imageId = 'AfileThatDoesntWork'; // For testing only!\n\n var imageId = this.state.imageId;\n var imagePromise;\n\n try {\n imagePromise = this.cornerstone.loadAndCacheImage(imageId);\n } catch (error) {\n console.error(error);\n\n if (!imagePromise) {\n this.setState({\n error: error\n });\n return;\n }\n } // Load the first image in the stack\n\n\n imagePromise.then(function (image) {\n try {\n _this3.cornerstone.getEnabledElement(element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n } // Set Soft Tissue preset for all images by default\n\n\n var viewport = _this3.cornerstone.getDefaultViewportForImage(element, image);\n\n viewport.voi = {\n windowWidth: 400,\n windowCenter: 40\n }; // Display the first image\n\n _this3.cornerstone.displayImage(element, image, viewport); // Clear any previous tool state\n\n\n _this3.cornerstoneTools.clearToolState(_this3.element, 'stack');\n /* Add the stack tool state to the enabled element, and\n add stack state managers for the stack tool, CINE tool, and reference lines\n */\n\n\n var stack = _this3.state.stack;\n\n _this3.cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);\n\n _this3.cornerstoneTools.addToolState(element, 'stack', stack);\n\n if (_this3.props.enableStackPrefetch) {\n _this3.cornerstoneTools.stackPrefetch.enable(_this3.element);\n }\n\n var tools = [{\n name: 'Bidirectional',\n configuration: {\n getMeasurementLocationCallback: _this3.bidirectionalToolLabellingCallback,\n shadow: true,\n drawHandlesOnHover: true\n }\n }, {\n name: 'Wwwc'\n }, {\n name: 'Zoom',\n configuration: {\n minScale: 0.3,\n maxScale: 25,\n preventZoomOutsideImage: true\n }\n }, {\n name: 'Length'\n }, {\n name: 'Angle'\n }, {\n name: 'Pan'\n }, {\n name: 'StackScroll'\n }, {\n name: 'PanMultiTouch'\n }, {\n name: 'ZoomTouchPinch'\n }, {\n name: 'StackScrollMouseWheel'\n }, {\n name: 'StackScrollMultiTouch'\n }];\n initializeTools(_this3.cornerstoneTools, tools);\n\n _this3.setActiveTool(_this3.props.activeTool);\n /* For touch devices, by default we activate:\n - Pinch to zoom\n - Two-finger Pan\n - Three (or more) finger Stack Scroll\n */\n\n\n _this3.cornerstoneTools.setToolActive('PanMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('ZoomTouchPinch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('StackScrollMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n }); // TODO: We should probably configure this somewhere else\n\n\n _this3.cornerstoneTools.stackPrefetch.setConfiguration({\n maxImagesToPrefetch: Infinity,\n preserveExistingPool: false,\n maxSimultaneousRequests: 6\n });\n /* For mouse devices, by default we turn on:\n - Stack scrolling by mouse wheel\n - Stack scrolling by keyboard up / down arrow keys\n - Pan with middle click\n - Zoom with right click\n */\n\n\n _this3.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.addEventListener(eventType, handler);\n });\n\n _this3.setState({\n viewportHeight: \"\".concat(_this3.element.clientHeight - 20, \"px\")\n });\n }, function (error) {\n console.error(error);\n\n _this3.setState({\n error: error\n });\n });\n }\n }, {\n key: \"onDoubleClick\",\n value: function onDoubleClick() {\n console.log('onDoubleClick');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.removeEventListener(eventType, handler);\n });\n var element = this.element; // Remove all tools for the destroyed element\n // TODO[cornerstoneTools]: Make this happen internally\n // toolManager.removeToolsForElement(element);\n // Clear the stack prefetch data\n // TODO[cornerstoneTools]: Make this happen internally\n\n this.cornerstoneTools.clearToolState(element, 'stackPrefetch'); // Disable the viewport element with Cornerstone\n // This also triggers the removal of the element from all available\n // synchronizers, such as the one used for reference lines.\n\n this.cornerstone.disable(element); // Try to stop any currently playing clips\n // Otherwise the interval will continuously throw errors\n // TODO[cornerstoneTools]: Make this happen internally\n\n try {\n var enabledElement = this.cornerstone.getEnabledElement(element);\n\n if (enabledElement) {\n this.cornerstoneTools.stopClip(element);\n }\n } catch (error) {//console.warn(error);\n }\n\n if (this.props.clearViewportSpecificData) {\n this.props.clearViewportSpecificData();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n // TODO: Add a real object shallow comparison here?\n if (this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid) {\n var _this$props$viewportD = this.props.viewportData,\n displaySetInstanceUid = _this$props$viewportD.displaySetInstanceUid,\n studyInstanceUid = _this$props$viewportD.studyInstanceUid;\n var currentImageIdIndex = this.props.viewportData.stack.currentImageIdIndex; // Create shortcut to displaySet\n\n /*const study = OHIF.viewer.Studies.findBy({\n studyInstanceUid,\n });\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });*/\n\n var stack = this.props.viewportData.stack;\n var stackData = this.cornerstoneTools.getToolState(this.element, 'stack');\n var currentStack = stackData && stackData.data[0];\n\n if (!currentStack) {\n currentStack = {\n currentImageIdIndex: currentImageIdIndex,\n imageIds: stack.imageIds\n };\n this.cornerstoneTools.addStackStateManager(this.element, ['stack']);\n this.cornerstoneTools.addToolState(this.element, 'stack', currentStack);\n } else {\n // TODO: we should make something like setToolState by an ID\n currentStack.currentImageIdIndex = currentImageIdIndex;\n currentStack.imageIds = stack.imageIds;\n }\n\n var imageId = currentStack.imageIds[currentImageIdIndex];\n var viewportSpecificData = {\n displaySetInstanceUid: displaySetInstanceUid,\n studyInstanceUid: studyInstanceUid,\n stack: stack,\n imageId: imageId\n };\n this.setState(viewportSpecificData);\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData(viewportSpecificData);\n }*/\n\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n this.cornerstone.loadAndCacheImage(imageId).then(function (image) {\n try {\n _this4.cornerstone.getEnabledElement(_this4.element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n }\n\n var viewport = _this4.cornerstone.getDefaultViewportForImage(_this4.element, image); // Workaround for Cornerstone issue #304\n\n\n viewport.displayedArea.brhc = {\n x: image.width,\n y: image.height\n };\n\n _this4.cornerstone.displayImage(_this4.element, image, viewport);\n\n _this4.cornerstoneTools.stackPrefetch.enable(_this4.element);\n });\n }\n\n if (this.props.activeTool !== prevProps.activeTool) {\n this.setActiveTool(this.props.activeTool); // TODO: Why do we need to do this in v3?\n\n this.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.debouncedResize();\n }\n\n if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === true) {\n this.cornerstoneTools.stackPrefetch.enable(this.element);\n } else if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === false) {\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n }\n\n if (this.props.cineToolData.isPlaying !== prevProps.cineToolData.isPlaying) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element);\n } else {\n this.cornerstoneTools.stopClip(this.element);\n }\n }\n\n if (this.props.cineToolData.cineFrameRate !== prevProps.cineToolData.cineFrameRate) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element, this.props.cineToolData.cineFrameRate);\n } else {\n this.cornerstoneTools.stopClip(this.element, this.props.cineToolData.cineFrameRate);\n }\n }\n }\n }]);\n\n return CornerstoneViewport;\n}(Component);\n\n_defineProperty(CornerstoneViewport, \"defaultProps\", {\n activeTool: 'Wwwc',\n viewportData: {\n stack: {\n imageIds: [],\n currentImageIdIndex: 0\n }\n },\n isActive: false,\n cornerstoneOptions: {},\n enableStackPrefetch: true,\n cineToolData: {\n isPlaying: false,\n cineFrameRate: 24\n }\n});\n\n_defineProperty(CornerstoneViewport, \"propTypes\", {\n cornerstone: propTypes.object.isRequired,\n cornerstoneTools: propTypes.object.isRequired,\n children: propTypes.node,\n activeTool: propTypes.string,\n viewportData: propTypes.object.isRequired,\n measurementsAddedOrRemoved: propTypes.func,\n measurementsChanged: propTypes.func,\n isActive: propTypes.bool.isRequired,\n cornerstoneOptions: propTypes.object,\n setViewportActive: propTypes.func,\n setViewportSpecificData: propTypes.func,\n clearViewportSpecificData: propTypes.func,\n layout: propTypes.object,\n cineToolData: propTypes.object\n});\n\n_defineProperty(CornerstoneViewport, \"loadIndicatorDelay\", 45);\n\nexport default CornerstoneViewport;\n//# sourceMappingURL=index.es.js.map\n","import { connect } from 'react-redux';\nimport CornerstoneViewport from 'react-cornerstone-viewport';\nimport OHIF from 'ohif-core'\nimport cornerstone from \"cornerstone-core\";\nimport cornerstoneTools from \"cornerstone-tools\";\n\nconst { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;\n\nconst mapStateToProps = (state, ownProps) => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n // If this is the active viewport, enable prefetching.\n const { viewportIndex } = ownProps;//.viewportData;\n const isActive = viewportIndex === state.viewports.activeViewportIndex;\n const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {};\n\n return {\n layout: state.viewports.layout,\n isActive,\n activeTool: activeButton && activeButton.command,\n enableStackPrefetch: isActive,\n //stack: viewportSpecificData.stack,\n cineToolData: viewportSpecificData.cine,\n cornerstone,\n cornerstoneTools\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n const { viewportIndex } = ownProps;\n\n return {\n setViewportActive: () => {\n dispatch(setViewportActive(viewportIndex))\n },\n\n setViewportSpecificData: (data) => {\n dispatch(setViewportSpecificData(viewportIndex, data))\n },\n\n clearViewportSpecificData: () => {\n dispatch(clearViewportSpecificData(viewportIndex));\n }\n };\n};\n\nconst ConnectedCornerstoneViewport = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CornerstoneViewport);\n\nexport default ConnectedCornerstoneViewport;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction OHIFComponentPlugin(props) {\n return ({props.children});\n}\n\nOHIFComponentPlugin.propTypes = {\n id: PropTypes.string.isRequired,\n init: PropTypes.func.isRequired,\n destroy: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default OHIFComponentPlugin;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';\nimport OHIFComponentPlugin from './OHIFComponentPlugin.js';\n\nconst { StackManager } = OHIF.utils;\n\nclass OHIFCornerstoneViewportPlugin extends Component {\n static propTypes = {\n studies: PropTypes.object,\n displaySet: PropTypes.object,\n viewportIndex: PropTypes.number,\n };\n\n static id = 'CornerstoneViewportPlugin';\n\n static init() {\n console.log('CornerstoneViewportPlugin init()');\n }\n\n static destroy() {\n console.log('CornerstoneViewportPlugin destroy()');\n StackManager.clearStacks();\n }\n\n static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {\n // Create shortcut to displaySet\n const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);\n\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });\n\n // Get stack from Stack Manager\n return StackManager.findOrCreateStack(study, displaySet);\n }\n\n static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {\n const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);\n\n // Clone the stack here so we don't mutate it later\n const stack = Object.assign({}, currentStack);\n stack.currentImageIdIndex = 0;\n\n return stack;\n }\n\n render() {\n const { viewportIndex } = this.props;\n const { studies, displaySet } = this.props.viewportData;\n const { studyInstanceUid, displaySetInstanceUid } = displaySet;\n const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);\n const viewportData = {\n studyInstanceUid,\n displaySetInstanceUid,\n stack\n };\n\n const { id, init, destroy } = OHIFCornerstoneViewportPlugin;\n const pluginProps = { id, init, destroy };\n\n return (\n \n \n \n );\n }\n}\n\n\nexport default OHIFCornerstoneViewportPlugin;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers } from 'redux';\nimport PropTypes from 'prop-types';\nimport OHIF from 'ohif-core';\nimport './config';\nimport ui from './redux/ui.js'\nimport OHIFStandaloneViewer from './OHIFStandaloneViewer';\nimport OHIFCornerstoneViewportPlugin from './connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js';\n//import { loadUser, reducer as oidcReducer, OidcProvider} from 'redux-oidc';\n//import userManager from './userManager.js';\n//import Icons from \"./images/icons.svg\"\n\nconst Icons = 'icons.svg';\n\nconst reducers = OHIF.redux.reducers;\nreducers.ui = ui;\n//reducers.oidc = oidcReducer;\n\nconst combined = combineReducers(reducers)\n\nconst store = createStore(combined);\n//loadUser(store, userManager);\n\nconst defaultButtons = [\n {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: `${Icons}#icon-tools-stack-scroll`,\n active: false\n },\n {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: `${Icons}#icon-tools-zoom`,\n active: false\n },\n {\n command: 'Wwwc',\n type: 'tool',\n text: 'Levels',\n svgUrl: `${Icons}#icon-tools-levels`,\n active: true\n },\n {\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: `${Icons}#icon-tools-pan`,\n active: false\n },\n {\n command: 'Length',\n type: 'tool',\n text: 'Length',\n svgUrl: `${Icons}#icon-tools-measure-temp`,\n active: false\n },\n /*{\n command: 'Annotate',\n type: 'tool',\n text: 'Annotate',\n svgUrl: `${Icons}#icon-tools-measure-non-target`,\n active: false\n },*/\n {\n command: 'Angle',\n type: 'tool',\n text: 'Angle',\n iconClasses: 'fa fa-angle-left',\n active: false\n },\n {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: `${Icons}#icon-tools-measure-target`,\n active: false\n },\n {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: `${Icons}#icon-tools-reset`,\n active: false\n },\n];\n\nconst buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);\n\nstore.dispatch(buttonsAction);\n\nconst pluginAction = OHIF.redux.actions.addPlugin({\n id: 'cornerstone',\n type: 'viewport',\n component: OHIFCornerstoneViewportPlugin\n});\n\nstore.dispatch(pluginAction);\n\nconst servers = {\n dicomWeb: [\n {\n \"name\": \"DCM4CHEE\",\n //\"wadoUriRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoUriRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoUriRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado\",\n \"qidoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"qidoSupportsIncludeField\": true,\n \"imageRendering\": \"wadors\",\n \"thumbnailRendering\": \"wadors\",\n \"requestOptions\": {\n \"requestFromBrowser\": true,\n \"logRequests\": true,\n \"logResponses\": false,\n \"logTiming\": true,\n //\"auth\": \"admin:admin\"\n //\"auth\": \"cloud:healthcare\"\n }\n }\n ]\n};\n\nOHIF.utils.addServers(servers, store);\n\n// TODO[react] Use a provider when the whole tree is React\nwindow.store = store;\n\nclass App extends Component {\n static propTypes = {\n routerBasename: PropTypes.string\n }\n\n render() {\n return (\n \n {/**/}\n \n \n \n {/**/}\n \n );\n }\n}\n\nexport default App;\n"],"names":["_typeof","printWarning","ReactPropTypesSecret","require$$0","assign","checkPropTypes","require$$1","__DEV__","warning","_extends","invariant","HashChangeEvent","_classCallCheck","_possibleConstructorReturn","_inherits","React","PropTypes","createHistory","pathToRegexp","_objectWithoutProperties","patternCache","cacheLimit","cacheCount","addLeadingSlash","stripBasename","defineProperty","getOwnPropertySymbols","getPrototypeOf","hoistStatics","Component","_assertThisInitialized","REACT_STATICS","KNOWN_STATICS","ReactIs","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","isValidElementType","PureComponent","ponyfill","$$observable","isPlainObject","defaultSelectorFactory","cornerstone","window","cornerstoneTools","cornerstoneWADOImageLoader","cornerstoneMath","external","this","define","info","homepage","Hammer","init","dicomParser","OHIF","ROOT_URL","location","pathname","includes","origin","config","maxWebWorkers","Math","max","navigator","hardwareConcurrency","startWebWorkersOnDemand","webWorkerPath","taskConfiguration","decodeTask","loadCodecsOnStartup","initializeCodecsOnStartup","codecsPath","usePDFJS","strict","webWorkerManager","initialize","user","getAccessToken","state","store","getState","oidc","access_token","configure","beforeSend","xhr","headers","DICOMWeb","getAuthorizationHeader","Authorization","setRequestHeader","fontFamily","textStyle","setFont","toolStyle","setToolWidth","toolColors","setToolColor","setActiveColor","touchProximity","defaultState","leftSidebarOpen","rightSidebarOpen","ui","action","type","Object","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","objectAssign","styleInject","Icons","Header","home","studyLink","list","propTypes","bool","isRequired","object","defaultProps","withRouter","global","mapStateToProps","ownProps","stackLoadingProgressMap","loading","progress","studiesWithLoadingData","cloneDeep","studies","forEach","study","thumbnails","data","displaySetInstanceUid","stackId","stackProgressData","stackPercentComplete","percentComplete","ConnectedStudyBrowser","connect","StudyBrowser","viewportPluginIds","plugins","availablePlugins","filter","plugin","PLUGIN_TYPES","VIEWPORT","map","id","find","component","defaultPlugin","length","layout","viewports","activeViewportIndex","ConnectedLayoutManager","LayoutManager","ViewerMain","viewportData","viewportIndex","item","console","warn","updatedViewportData","slice","displaySet","findDisplaySet","props","studyInstanceUid","setState","displaySets","dSet","images","push","getDisplaySetsWithImages","setViewportData","viewer","updateImageSynchronizer","destroy","array","FlexboxLayout","studiesForBrowser","seriesDescription","seriesNumber","instanceNumber","numImageFrames","imageId","getImageId","getStudiesForBrowser","mainContentClassName","ConnectedFlexboxLayout","setToolActive","redux","actions","activeButton","tools","buttons","tool","active","activeCommand","command","mapDispatchToProps","dispatch","ConnectedToolbarSection","ToolbarSection","setLayout","currentLayout","onChange","selectedCell","rows","row","columns","col","numViewports","i","height","width","ConnectedLayoutButton","LayoutButton","setViewportSpecificData","getActiveViewportSpecificData","viewportSpecificData","activeViewportSpecificData","stack","imageIds","currentImageIdIndex","cine","isPlaying","cineFrameRate","activeViewportStackData","activeViewportCineData","dispatchSetViewportSpecificData","mergeProps","propsFromState","propsFromDispatch","onPlayPauseChanged","onFrameRateChanged","frameRate","onClickNextButton","largestPossibleIndex","min","onClickBackButton","onClickSkipToStart","onClickSkipToEnd","ConnectedCineDialog","CineDialog","ToolbarRow","value","setLeftSidebarOpen","leftSidebarToggle","svgLink","svgWidth","svgHeight","bottomLabel","leftSidebarValue","padding","onLeftSidebarValueChanged","marginLeft","display","func","setRightSidebarOpen","ConnectedToolbarRow","StudyLoadingMonitor","options","_setProgressData","progressId","progressData","setStudyLoadingProgress","_clearProgressById","clearStudyLoadingProgress","StudyLoadingListener","classes","studyLoadingListener","getInstance","clear","addStudies","ConnectedStudyLoadingMonitor","StudyPrefetcher","StudyPrefetcherComponent","studyPrefetcher","setStudies","StackManager","utils","defaultTool","left","right","middle","refLinesEnabled","Synchronizer","metadataProvider","MetadataProvider","metaData","addProvider","provider","bind","setMetadataProvider","Viewer","createDisplaySets","ViewerRetrieveStudyData","error","studyInstanceUids","seriesInstanceUids","server","promise","retrieveStudiesMetadata","then","updatedStudies","catch","Error","JSON","stringify","isActive","a","activeServer","servers","ConnectedViewerRetrieveStudyData","ViewerRouting","match","params","studyUIDs","seriesUIDs","split","shape","string","parseQueryAndFetchStudies","query","Promise","resolve","reject","url","oReq","XMLHttpRequest","addEventListener","log","responseText","parse","dicomWeb","open","send","StandaloneRouting","qs","search","IHEInvokeImageDisplay","requestType","displayStudyList","studyUID","uids","decodedData","atob","patientID","reload","App","unlisten","history","listen","setContext","ConnectedApp","ViewerbaseDragDropContext","setViewportActive","clearViewportSpecificData","activeTool","enableStackPrefetch","cineToolData","ConnectedCornerstoneViewport","CornerstoneViewport","OHIFComponentPlugin","children","node","OHIFCornerstoneViewportPlugin","getPluginViewportData","pluginProps","clearStacks","set","findOrCreateStack","number","currentStack","getCornerstoneStack","reducers","combined","combineReducers","createStore","defaultButtons","text","svgUrl","iconClasses","buttonsAction","setAvailableButtons","pluginAction","addPlugin","addServers","routerBasename"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,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,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC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,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,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C,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAA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AE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC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MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC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,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,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AAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KA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,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;ECfhhlG;EACA,CAAC,SAAS,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE;GACzD,AACC,cAAc,GAAG,OAAO,EAAE,CAAC,AAMK;GACjC,EAAE,MAAM,EAAE,WAAW;EACtB,gBAAgB,CAAC,SAAS,OAAO,EAAE;YACzB,SAAS,eAAe,CAAC,OAAO,EAAE;aACjC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;aAChC;YACD,IAAI,uBAAuB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACzD,MAAM,CAAC,kBAAkB,CAAC;YAC1B,SAAS,wBAAwB,CAAC,OAAO,EAAE,WAAW,EAAE;aACvD,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aACxC,IAAI,uBAAuB,EAAE,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aAC3E,EAAE;;;YAGH,SAAS,sBAAsB,CAAC,OAAO,EAAE;aACxC,IAAI,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC9C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;aACzB,MAAM,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,GAAG,GAAG,cAAc,GAAG,gBAAgB,CAAC;aAE5F,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACzB;;;YAGD,SAAS,mBAAmB,CAAC,cAAc,EAAE;aAC5C,cAAc,GAAG,cAAc,IAAI,KAAK,CAAC;aACzC,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;cAC5C,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;eAC1C,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;eAC/C;cACD,IAAI;eACH,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;eACnC,IAAI,WAAW,GAAG,mBAAmB,CAAC,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,kBAAkB,CAAC;eACnF,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;eACvC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC;eACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;eACnB,CAAC,OAAO,GAAG,EAAE;eACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;eACnB;cACD,OAAO,CAAC,kBAAkB,GAAG,WAAW;eACvC,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE,OAAO;eACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;;gBAEzB,MAAM;iBACL,IAAI,KAAK,CAAC,sBAAsB,GAAG,WAAW,GAAG,aAAa,CAAC;iBAC/D,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE;;gBAElC,OAAO,EAAE,CAAC;gBACV,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE;;gBAE5D,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC;gBACrE,MAAM;;gBAEN,IAAI;iBACH,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;iBAC9C,CAAC,OAAO,CAAC,EAAE;iBACX,MAAM,CAAC,CAAC,CAAC,CAAC;iBACV,OAAO;iBACP;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChB;eACD,CAAC;cACF,CAAC,CAAC;aACH;;YAED,IAAI,gBAAgB,GAAG,IAAI,CAAC;;YAE5B,IAAI,cAAc,GAAG,sBAAsB,CAAC;YAC5C,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,IAAI,oBAAoB,GAAG,EAAE,CAAC;YAC9B,IAAI,qBAAqB,CAAC;;YAE1B,IAAI,iBAAiB,GAAG,EAAE,CAAC;;YAE3B,IAAI,qBAAqB,GAAG,EAAE,CAAC;;;YAG/B,SAAS,gBAAgB,CAAC,QAAQ,EAAE;aACnC,IAAI,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aACpC,IAAI,CAAC,EAAE,EAAE,OAAO,mBAAmB,CAAC;aACpC,IAAI,EAAE,GAAG,SAAS,OAAO,EAAE;cAC1B,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;eAClB,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE;gBAC9B,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;iBAC/D,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACjD;gBACD,MAAM;gBACN,iBAAiB,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/B,qBAAqB,GAAG,OAAO,CAAC;gBAChC;eACD,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACxC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B;eACD,MAAM;eACN,OAAO,CAAC,IAAI;gBACX,2BAA2B;iBAC1B,OAAO;iBACP,yBAAyB;iBACzB,QAAQ;gBACT,CAAC;eACF,iBAAiB,GAAG,EAAE,CAAC;eACvB;cACD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;cACpC,CAAC;aACF,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,IAAI,EAAE;cAChD,OAAO;eACN,YAAY,EAAE,IAAI;eAClB,UAAU,EAAE,IAAI;eAChB,GAAG,EAAE,WAAW;gBACf,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACjC;eACD,GAAG,EAAE,SAAS,KAAK,EAAE;gBACpB,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAClC;eACD,CAAC;cACF,CAAC;aACF,KAAK,IAAI,IAAI,IAAI,mBAAmB,EAAE;cACrC;eACC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;eAC/D,IAAI,KAAK,GAAG;eACZ,IAAI,KAAK,GAAG;gBACX;eACD,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;eACrD;cACD;aACD,EAAE,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE;cACxB,IAAI,SAAS,KAAK,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;cACnD,gBAAgB,EAAE,CAAC;cACnB,OAAO,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,EAAE;eAC5E,kBAAkB,EAAE,CAAC;eACrB,MAAM,GAAG,CAAC;eACV,CAAC,CAAC;;cAEH,SAAS,kBAAkB,GAAG;eAC7B,gBAAgB,EAAE,CAAC;eACnB,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;iBACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;iBAC9B;gBACD,IAAI,gBAAgB,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,EAAE;iBACpD,mBAAmB,EAAE,CAAC;iBACtB;gBACD;eACD;cACD,CAAC;aACF,EAAE,CAAC,CAAC,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;cAC5B,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;cAChC,OAAO,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;cAC/C,CAAC;aACF,OAAO,EAAE,CAAC;aACV;;;YAGD,SAAS,eAAe,CAAC,QAAQ,EAAE;aAClC,IAAI,GAAG,GAAG;;cAET,qBAAqB,EAAE,EAAE;cACzB,qBAAqB,EAAE,EAAE;cACzB,aAAa,EAAE,KAAK;cACpB,aAAa,EAAE,KAAK;cACpB,gBAAgB,EAAE,EAAE;cACpB,KAAK,EAAE,qBAAqB,KAAK,QAAQ;;;cAGzC,MAAM,EAAE,IAAI;cACZ,MAAM,EAAE,SAAS,GAAG,EAAE,QAAQ,EAAE;eAC/B,IAAI,GAAG,KAAK,SAAS,EAAE,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC3C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC;oBACvD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;iBAClC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;oBAC3D,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;eAChE;cACD,OAAO,EAAE,SAAS,GAAG,EAAE;eACtB,IAAI,GAAG,KAAK,SAAS,EAAE,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;iBAClC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACtC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;eAC3C;cACD,OAAO,EAAE,SAAS,QAAQ,EAAE;eAC3B,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;eACpC;cACD,iBAAiB,EAAE,SAAS,QAAQ,EAAE;eACrC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;eACpC;cACD,oBAAoB,EAAE,SAAS,QAAQ,EAAE;eACxC,IAAI,GAAG,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;eACjD,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;eAClD;;;cAGD,KAAK,EAAE,QAAQ;cACf,KAAK,EAAE,QAAQ;cACf,MAAM,EAAE,SAAS,CAAC,EAAE;eACnB,IAAI,CAAC,CAAC,EAAE,OAAO,SAAS,CAAC;eACzB,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;eAC1B;cACD,gBAAgB,EAAE,SAAS,CAAC,EAAE;eAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;eAC1B;cACD,mBAAmB,EAAE,SAAS,CAAC,EAAE;eAChC,IAAI,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;eACvC,IAAI,GAAG,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;eAC/C;;;cAGD,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC;cACpC,CAAC;aACF,qBAAqB,GAAG,SAAS,CAAC;aAClC,OAAO,GAAG,CAAC;aACX;;YAED,IAAI,iBAAiB,GAAG,EAAE,CAAC;YAC3B,IAAI,SAAS,GAAG,MAAM,CAAC;;YAEvB,SAAS,YAAY,CAAC,SAAS,EAAE;aAChC,SAAS,GAAG,SAAS,CAAC;aACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE;cAChD,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;aAC5C;;;YAGD,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,IAAI,kBAAkB,GAAG,EAAE,CAAC;YAC5B,IAAI,oBAAoB,GAAG,EAAE,CAAC;YAC9B,IAAI,oBAAoB,GAAG,EAAE,CAAC;YAC9B,IAAI,WAAW,CAAC;;;YAGhB,IAAI,SAAS,EAAE,gBAAgB,CAAC;;YAEhC,SAAS,UAAU,CAAC,EAAE,EAAE;aACvB,IAAI,QAAQ,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;aAC/B,OAAO,QAAQ,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;aAC3B;;YAED,SAAS,QAAQ,CAAC,KAAK,EAAE;aACxB,IAAI,SAAS,KAAK,MAAM,EAAE;cACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;cAC1D;aACD,gBAAgB,GAAG,KAAK,CAAC;aACzB,YAAY,CAAC,OAAO,CAAC,CAAC;aACtB,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,EAAE;cACnE,IAAI,CAAC,MAAM,EAAE;eACZ,YAAY,CAAC,MAAM,CAAC,CAAC;eACrB,OAAO,IAAI,CAAC;eACZ;cACD,oBAAoB,GAAG,EAAE,CAAC;cAC1B,kBAAkB,GAAG,EAAE,CAAC;cACxB,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAC;cAChC,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC;;cAE5B,YAAY,CAAC,SAAS,CAAC,CAAC;cACxB,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;eACnD,WAAW,GAAG;gBACb,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,MAAM;gBACd,CAAC;eACF,CAAC,CAAC;cACH,SAAS,GAAG,EAAE,CAAC;cACf,IAAI,OAAO,GAAG,aAAa,CAAC;;cAE5B;;eAEC,oBAAoB,CAAC,OAAO,CAAC,CAAC;eAC9B;cACD;eACC,SAAS,KAAK,SAAS;eACvB,gBAAgB,KAAK,CAAC;eACtB,eAAe,KAAK,CAAC;gBACpB;eACD,mBAAmB,EAAE,CAAC;eACtB;cACD,OAAO,OAAO,CAAC;cACf,CAAC,CAAC;aACH;;;YAGD,SAAS,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE;aAChD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;cACnE,OAAO;aACR,oBAAoB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACtC,KAAK,IAAI,QAAQ,IAAI,WAAW,EAAE;cACjC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;eAChE,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;eAC5C;cACD;aACD,IAAI,EAAE,eAAe,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,EAAE;cACtD,mBAAmB,EAAE,CAAC;cACtB;aACD;;YAED,SAAS,oBAAoB,CAAC,OAAO,EAAE;aACtC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;cACnC,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;cACnC,MAAM;cACN,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;cACrC,eAAe,EAAE,CAAC;cAClB,sBAAsB,CAAC,OAAO,CAAC,CAAC;cAChC;aACD;;YAED,SAAS,mBAAmB,GAAG;aAC9B,YAAY,CAAC,OAAO,CAAC,CAAC;aACtB,IAAI,QAAQ,GAAG,WAAW,CAAC;aAC3B,WAAW,GAAG,IAAI,CAAC;aACnB,IAAI,CAAC,QAAQ,EAAE,OAAO;aACtB,IAAI,gBAAgB,EAAE;;;;cAIrB,OAAO,CAAC,OAAO,EAAE;gBACf,IAAI,CAAC,WAAW;gBAChB,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI;gBACJ,SAAS,MAAM,EAAE;iBAChB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBACzB;gBACD,SAAS,GAAG,EAAE;iBACb,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACrB;gBACD,CAAC;cACH,MAAM;cACN,IAAI,eAAe,GAAG,EAAE,CAAC;cACzB,KAAK,IAAI,EAAE,IAAI,SAAS,EAAE;eACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;gBACxD,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrC;eACD;cACD,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;cAClC;aACD;;YAED,SAAS,QAAQ,CAAC,OAAO,EAAE;aAC1B,IAAI,SAAS,KAAK,OAAO;cACxB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;aAC5D,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;aAExB,IAAI,EAAE,CAAC;aACP,IAAI,CAAC,CAAC;aACN,IAAI,CAAC,CAAC;aACN,IAAI,MAAM,CAAC;aACX,IAAI,QAAQ,CAAC;;aAEb,SAAS,gBAAgB,CAAC,cAAc,EAAE;cACzC,IAAI,eAAe,GAAG,CAAC,cAAc,CAAC,CAAC;cACvC,IAAI,oBAAoB,GAAG,EAAE,CAAC;;cAE9B,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE;eACpD,OAAO;gBACN,KAAK,EAAE,CAAC,EAAE,CAAC;gBACX,EAAE,EAAE,EAAE;gBACN,CAAC;eACF,CAAC,CAAC;cACH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;eACxB,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;eAC5B,IAAI,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;eAC5B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;eAC5B,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;eACpC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS;eAClD,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;gBAC7B,OAAO;iBACN,IAAI,EAAE,eAAe;iBACrB,KAAK,EAAE,KAAK;iBACZ,QAAQ,EAAE,QAAQ;iBAClB,CAAC;gBACF;eACD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;gBACrB,OAAO;iBACN,IAAI,EAAE,YAAY;iBAClB,KAAK,EAAE,KAAK;iBACZ,QAAQ,EAAE,QAAQ;iBAClB,CAAC;gBACF;eACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,EAAE,SAAS;gBACtB,IAAI,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE;iBAC/C,OAAO;kBACN,IAAI,EAAE,UAAU;kBAChB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;kBAC/B,QAAQ,EAAE,QAAQ;kBAClB,QAAQ,EAAE,QAAQ;kBAClB,CAAC;iBACF;gBACD,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;gBACvD,IAAI,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE;iBAC/C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;kBAClC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;iBACrC,WAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACxD,SAAS;iBACT;gBACD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACtC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC;iBACV,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;iBAC/B,EAAE,EAAE,QAAQ;iBACZ,CAAC,CAAC;gBACH;eACD;;cAED,OAAO;eACN,IAAI,EAAE,UAAU;eAChB,QAAQ,EAAE,cAAc;eACxB,eAAe,EAAE,eAAe;eAChC,oBAAoB,EAAE,oBAAoB;eAC1C,CAAC;cACF;;aAED,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;cAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;eAClC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;eAChB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;eACzC;cACD;;;;aAID,IAAI,oBAAoB,GAAG,EAAE,CAAC;aAC9B,IAAI,eAAe,GAAG,EAAE,CAAC;aACzB,IAAI,aAAa,GAAG,EAAE,CAAC;;aAEvB,IAAI,qBAAqB,GAAG,SAAS,qBAAqB,GAAG;cAC5D,OAAO,CAAC,IAAI;eACX,2BAA2B,GAAG,MAAM,CAAC,QAAQ,GAAG,sBAAsB;eACtE,CAAC;cACF,CAAC;;aAEF,KAAK,IAAI,EAAE,IAAI,SAAS,EAAE;cACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;eACxD,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;;eAE1B,IAAI,MAAM,CAAC;eACX,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;gBAClB,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM;gBACN,MAAM,GAAG;iBACR,IAAI,EAAE,UAAU;iBAChB,QAAQ,EAAE,EAAE;iBACZ,CAAC;gBACF;;eAED,IAAI,UAAU,GAAG,KAAK,CAAC;eACvB,IAAI,OAAO,GAAG,KAAK,CAAC;eACpB,IAAI,SAAS,GAAG,KAAK,CAAC;eACtB,IAAI,SAAS,GAAG,EAAE,CAAC;eACnB,IAAI,MAAM,CAAC,KAAK,EAAE;gBACjB,SAAS,GAAG,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjE;eACD,QAAQ,MAAM,CAAC,IAAI;gBAClB,KAAK,eAAe;iBACnB,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnD,IAAI,CAAC,OAAO,CAAC,cAAc;kBAC1B,UAAU,GAAG,IAAI,KAAK;mBACrB,mCAAmC;oBAClC,MAAM,CAAC,QAAQ;oBACf,SAAS;mBACV,CAAC;iBACH,MAAM;gBACP,KAAK,UAAU;iBACd,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnD,IAAI,CAAC,OAAO,CAAC,cAAc;kBAC1B,UAAU,GAAG,IAAI,KAAK;mBACrB,0CAA0C;oBACzC,MAAM,CAAC,QAAQ;oBACf,MAAM;oBACN,MAAM,CAAC,QAAQ;oBACf,SAAS;mBACV,CAAC;iBACH,MAAM;gBACP,KAAK,YAAY;iBAChB,IAAI,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBACvD,IAAI,CAAC,OAAO,CAAC,gBAAgB;kBAC5B,UAAU,GAAG,IAAI,KAAK;mBACrB,kBAAkB,GAAG,QAAQ,GAAG,kBAAkB,GAAG,SAAS;mBAC9D,CAAC;iBACH,MAAM;gBACP,KAAK,UAAU;iBACd,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnD,OAAO,GAAG,IAAI,CAAC;iBACf,MAAM;gBACP,KAAK,UAAU;iBACd,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnD,SAAS,GAAG,IAAI,CAAC;iBACjB,MAAM;gBACP;iBACC,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpD;eACD,IAAI,UAAU,EAAE;gBACf,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClC;eACD,IAAI,OAAO,EAAE;gBACZ,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC9C,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;gBACrD,KAAK,QAAQ,IAAI,MAAM,CAAC,oBAAoB,EAAE;iBAC7C;kBACC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI;mBACnC,MAAM,CAAC,oBAAoB;mBAC3B,QAAQ;mBACR;mBACA;kBACD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;mBAClC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;kBACrC,WAAW;mBACV,oBAAoB,CAAC,QAAQ,CAAC;mBAC9B,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC;mBACrC,CAAC;kBACF;iBACD;gBACD;eACD,IAAI,SAAS,EAAE;gBACd,WAAW,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChD,aAAa,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;gBAChD;eACD;cACD;;;aAGD,IAAI,2BAA2B,GAAG,EAAE,CAAC;aACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;cAC5C,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;cAC9B;eACC,gBAAgB,CAAC,QAAQ,CAAC;eAC1B,gBAAgB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,aAAa;;eAE5C,2BAA2B,CAAC,IAAI,CAAC;gBAChC,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,aAAa;gBAC1D,CAAC,CAAC;cACJ;;;aAGD,YAAY,CAAC,SAAS,CAAC,CAAC;aACxB,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,SAAS,OAAO,EAAE;cAC3D,IAAI,oBAAoB,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;eAC5C,eAAe,CAAC,OAAO,CAAC,CAAC;eACzB;cACD,CAAC,CAAC;;aAEH,IAAI,GAAG,CAAC;aACR,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;aACpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;cACxB,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;cACvB,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;cACpC,IAAI,CAAC,MAAM,EAAE,SAAS;;cAEtB,IAAI,IAAI,GAAG,EAAE,CAAC;;;cAGd,IAAI,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;cAClD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;eAC5C,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;eACxB,EAAE,CAAC,IAAI,CAAC,CAAC;eACT;cACD,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;;;cAGtC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;;;cAG1B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;;;cAGlC,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;;;cAGtC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;eAC5C,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;eACjD,IAAI,CAAC,KAAK,EAAE,SAAS;eACrB,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;eACtC,IAAI,GAAG,IAAI,CAAC,EAAE;gBACb,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC7B;eACD;cACD;;;aAGD,IAAI,UAAU,CAAC;aACf,IAAI,0BAA0B,CAAC;aAC/B,KAAK,QAAQ,IAAI,oBAAoB,EAAE;cACtC;eACC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC;gBACnE;eACD,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;eACpC,IAAI,MAAM,EAAE;gBACX,0BAA0B,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC5D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;iBACvD,UAAU,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;iBAC3C,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC1C,IAAI,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBAC7C;gBACD;eACD;cACD;;;aAGD,YAAY,CAAC,OAAO,CAAC,CAAC;;aAEtB,cAAc,GAAG,gBAAgB,CAAC;;;aAGlC,KAAK,QAAQ,IAAI,aAAa,EAAE;cAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE;eAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;eAC5C;cACD;;;aAGD,IAAI,KAAK,GAAG,IAAI,CAAC;aACjB,KAAK,QAAQ,IAAI,oBAAoB,EAAE;cACtC;eACC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC;gBACnE;eACD,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;eACpC,IAAI,MAAM,EAAE;gBACX,0BAA0B,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC5D,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;iBACvD,UAAU,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;iBAC3C,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;iBAClD,IAAI,EAAE,EAAE;kBACP,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;kBAC3C,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;kBACnB;iBACD;gBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;iBACtC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;iBAClB,IAAI;kBACH,EAAE,CAAC,0BAA0B,CAAC,CAAC;kBAC/B,CAAC,OAAO,GAAG,EAAE;kBACb,IAAI,OAAO,CAAC,SAAS,EAAE;mBACtB,OAAO,CAAC,SAAS,CAAC;oBACjB,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAC;oBAC3C,KAAK,EAAE,GAAG;oBACV,CAAC,CAAC;mBACH;kBACD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;mBAC3B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC;mBACxB;kBACD;iBACD;gBACD;eACD;cACD;;;aAGD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;cACxD,IAAI,IAAI,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;cAC1C,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;cACvB,iBAAiB,GAAG,CAAC,QAAQ,CAAC,CAAC;cAC/B,IAAI;eACH,mBAAmB,CAAC,QAAQ,CAAC,CAAC;eAC9B,CAAC,OAAO,GAAG,EAAE;eACb,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE;gBAC5C,IAAI;iBACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACvB,CAAC,OAAO,IAAI,EAAE;iBACd,IAAI,OAAO,CAAC,SAAS,EAAE;kBACtB,OAAO,CAAC,SAAS,CAAC;mBACjB,IAAI,EAAE,mCAAmC;mBACzC,QAAQ,EAAE,QAAQ;mBAClB,KAAK,EAAE,IAAI;mBACX,aAAa,EAAE,GAAG;mBAClB,CAAC,CAAC;kBACH;iBACD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;kBAC3B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;kBACzB;iBACD,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC;iBACxB;gBACD,MAAM;gBACN,IAAI,OAAO,CAAC,SAAS,EAAE;iBACtB,OAAO,CAAC,SAAS,CAAC;kBACjB,IAAI,EAAE,qBAAqB;kBAC3B,QAAQ,EAAE,QAAQ;kBAClB,KAAK,EAAE,GAAG;kBACV,CAAC,CAAC;iBACH;gBACD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;iBAC3B,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC;iBACxB;gBACD;eACD;cACD;;;aAGD,IAAI,KAAK,EAAE;cACV,YAAY,CAAC,MAAM,CAAC,CAAC;cACrB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;cAC7B;;aAED,YAAY,CAAC,MAAM,CAAC,CAAC;aACrB,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE;cACpC,OAAO,CAAC,eAAe,CAAC,CAAC;cACzB,CAAC,CAAC;aACH;;;YAGD,IAAI,gBAAgB,GAAG,EAAE,CAAC;;;YAG1B,SAAS,mBAAmB,CAAC,QAAQ,EAAE;;;aAGtC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE;cAC9B,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;cAC1C;;aAED,IAAI,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG;cACzC,CAAC,EAAE,QAAQ;cACX,CAAC,EAAE,KAAK;cACR,OAAO,EAAE,EAAE;cACX,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC;cAC9B,OAAO,GAAG,qBAAqB,GAAG,iBAAiB,EAAE,iBAAiB,GAAG,EAAE,EAAE,qBAAqB,CAAC;cACnG,QAAQ,EAAE,EAAE;cACZ,CAAC;;;aAGF,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;;;aAG3F,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;;;aAGhB,OAAO,MAAM,CAAC,OAAO,CAAC;aACtB;;;;YAID,mBAAmB,CAAC,CAAC,GAAG,OAAO,CAAC;;;YAGhC,mBAAmB,CAAC,CAAC,GAAG,gBAAgB,CAAC;;;YAGzC,mBAAmB,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;aACvD,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;cACzC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;cACxE;aACD,CAAC;;;YAGF,mBAAmB,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE;aACzC,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;cACvD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;cACxE;aACD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9D,CAAC;;;;;;;YAOF,mBAAmB,CAAC,CAAC,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;aAC7C,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;aAChD,GAAG,IAAI,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC;aAC1B,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,OAAO,KAAK,CAAC;aACtF,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7B,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC1B,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aACzE,GAAG,IAAI,GAAG,CAAC,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;aACpJ,OAAO,EAAE,CAAC;aACV,CAAC;;;YAGF,mBAAmB,CAAC,CAAC,GAAG,SAAS,MAAM,EAAE;aACxC,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,UAAU;cACvC,SAAS,UAAU,GAAG,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;cACnD,SAAS,gBAAgB,GAAG,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC;aAChD,mBAAmB,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;aAC3C,OAAO,MAAM,CAAC;aACd,CAAC;;;YAGF,mBAAmB,CAAC,CAAC,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;;;YAGtH,mBAAmB,CAAC,CAAC,GAAG,EAAE,CAAC;;;YAG3B,mBAAmB,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,cAAc,CAAC,EAAE,CAAC;;;;YAI9D,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;YAC5E;;YAEA;;QAEJ,oBAAoB;;;;;SAKnB,SAAS,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE;EAGlE,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;uBACtB,IAAI,gDAAgD,GAAG,mBAAmB,6BAA6B,sBAAsB,CAAC,CAAC;uBAC/H,IAAI,sDAAsD,GAAG,mBAAmB,mCAAmC,4BAA4B,CAAC,CAAC;;;;;;;;;;;;;;;;+BAgBzI,mBAAmB,CAAC,SAAS,CAAC,IAAI,UAAU,OAAO,EAAE,EAAE,EAAE;IACpF,IAAI,cAAc,GAAG,MAAM,CAAC,gDAAgD,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5G,IAAI,SAAS,GAAG,MAAM,CAAC,sDAAsD,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC1G,SAAS,CAAC,MAAM,EAAE,CAAC;IACnB,OAAO,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;GAC7C,CAAC,CAAC;;SAEI,CAAC;;QAEF,sBAAsB;;;;;SAKrB,SAAS,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE;EAGlE,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;iCACZ,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;iCACxG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;uBACxG,IAAI,4CAA4C,GAAG,mBAAmB,yBAAyB,yBAAyB,CAAC,CAAC;;EAE/I,IAAI,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;EASrC,IAAI,aAAa,GAAG;IAClB,OAAO,EAAE;MACP,IAAI,EAAE,UAAU;MAChB,WAAW,EAAE,GAAG;MAChB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACjwJ;IACD,GAAG,EAAE;MACH,IAAI,EAAE,KAAK;MACX,SAAS,EAAE,GAAG;MACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAC9jK;IACD,YAAY,EAAE;MACZ,IAAI,EAAE,gBAAgB;MACtB,SAAS,EAAE,GAAG;MACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACh3J;IACD,SAAS,EAAE;MACT,IAAI,EAAE,aAAa;MACnB,SAAS,EAAE,GAAG;MACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,G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IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjZ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IA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CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC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AC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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AAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,C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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC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C,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,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,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC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AAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,C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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/react-router-dom/node_modules/warning/warning.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/warning/warning.js","../node_modules/invariant/invariant.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/history/es/PathUtils.js","../node_modules/history/es/LocationUtils.js","../node_modules/history/es/createTransitionManager.js","../node_modules/history/es/DOMUtils.js","../node_modules/history/es/createBrowserHistory.js","../node_modules/history/es/createHashHistory.js","../node_modules/history/es/createMemoryHistory.js","../node_modules/react-router/node_modules/warning/warning.js","../node_modules/react-router/es/Router.js","../node_modules/react-router-dom/es/Router.js","../node_modules/react-router-dom/es/BrowserRouter.js","../node_modules/react-router-dom/es/HashRouter.js","../node_modules/react-router-dom/es/Link.js","../node_modules/react-router/es/MemoryRouter.js","../node_modules/react-router-dom/es/MemoryRouter.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/path-to-regexp/index.js","../node_modules/react-router/es/matchPath.js","../node_modules/react-router/es/Route.js","../node_modules/react-router-dom/es/Route.js","../node_modules/react-router-dom/es/NavLink.js","../node_modules/react-router/es/Prompt.js","../node_modules/react-router-dom/es/Prompt.js","../node_modules/react-router/es/generatePath.js","../node_modules/react-router/es/Redirect.js","../node_modules/react-router-dom/es/Redirect.js","../node_modules/react-router/es/StaticRouter.js","../node_modules/react-router-dom/es/StaticRouter.js","../node_modules/react-router/es/Switch.js","../node_modules/react-router-dom/es/Switch.js","../node_modules/react-router-dom/es/generatePath.js","../node_modules/react-router-dom/es/matchPath.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-router/es/withRouter.js","../node_modules/react-router-dom/es/withRouter.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/react-redux/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/utils/isPlainObject.js","../node_modules/react-redux/es/utils/warning.js","../node_modules/react-redux/es/utils/verifyPlainObject.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/verifySubselectors.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../../ohif-core/dist/index.es.js","../node_modules/dicom-parser/dist/dicomParser.min.js","../node_modules/cornerstone-core/dist/cornerstone.js","../node_modules/cornerstone-wado-image-loader/dist/cornerstoneWADOImageLoader.min.js","../node_modules/cornerstone-math/dist/cornerstoneMath.min.js","../node_modules/cornerstone-tools/dist/cornerstoneTools.min.js","../node_modules/hammerjs/hammer.js","../src/config.js","../src/redux/ui.js","../../react-viewerbase/dist/index.es.js","../node_modules/style-inject/dist/style-inject.es.js","../src/components/Header/Header.js","../node_modules/lodash.clonedeep/index.js","../src/connectedComponents/ConnectedStudyBrowser.js","../src/connectedComponents/ConnectedLayoutManager.js","../src/connectedComponents/ViewerMain.js","../src/connectedComponents/FlexboxLayout.js","../src/connectedComponents/ConnectedFlexboxLayout.js","../src/connectedComponents/ConnectedToolbarSection.js","../src/connectedComponents/ConnectedLayoutButton.js","../src/connectedComponents/ConnectedCineDialog.js","../src/connectedComponents/ToolbarRow.js","../src/redux/actions.js","../src/connectedComponents/ConnectedToolbarRow.js","../src/components/StudyLoadingMonitor.js","../src/connectedComponents/ConnectedStudyLoadingMonitor.js","../src/components/StudyPrefetcher.js","../src/connectedComponents/Viewer.js","../src/connectedComponents/ViewerRetrieveStudyData.js","../src/connectedComponents/ConnectedViewerRetrieveStudyData.js","../src/routes/ViewerRouting.js","../node_modules/strict-uri-encode/index.js","../node_modules/query-string/index.js","../src/routes/StandaloneRouting.js","../src/routes/IHEInvokeImageDisplay.js","../src/OHIFStandaloneViewer.js","../../react-cornerstone-viewport/dist/index.es.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/ConnectedCornerstoneViewport.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFComponentPlugin.js","../src/connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js","../src/App.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n\n function Router() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Router);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n\n\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n\n Router.prototype.render = function render() {\n var children = this.props.children;\n\n return children ? React.Children.only(children) : null;\n };\n\n return Router;\n}(React.Component);\n\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\n\nexport default Router;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, BrowserRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n\n BrowserRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nBrowserRouter.propTypes = {\n basename: PropTypes.string,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default BrowserRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createHashHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = function (_React$Component) {\n _inherits(HashRouter, _React$Component);\n\n function HashRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, HashRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n HashRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\");\n };\n\n HashRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return HashRouter;\n}(React.Component);\n\nHashRouter.propTypes = {\n basename: PropTypes.string,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"]),\n children: PropTypes.node\n};\n\n\nexport default HashRouter;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware .\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use outside a \");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = function (_React$Component) {\n _inherits(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, MemoryRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n MemoryRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\");\n };\n\n MemoryRouter.prototype.render = function render() {\n return React.createElement(Router, { history: this.history, children: this.props.children });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nMemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n};\n\n\nexport default MemoryRouter;","// Written in this round about way for babel-transform-imports\nimport MemoryRouter from \"react-router/es/MemoryRouter\";\n\nexport default MemoryRouter;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // already computed the match for us\n\n invariant(router, \"You should not use or withRouter() outside a \");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use and in the same route; will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from \n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\n\n/**\n * The public API for prompting the user before navigating away\n * from a screen with a component.\n */\n\nvar Prompt = function (_React$Component) {\n _inherits(Prompt, _React$Component);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Prompt.prototype.enable = function enable(message) {\n if (this.unblock) this.unblock();\n\n this.unblock = this.context.router.history.block(message);\n };\n\n Prompt.prototype.disable = function disable() {\n if (this.unblock) {\n this.unblock();\n this.unblock = null;\n }\n };\n\n Prompt.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.props.when) this.enable(this.props.message);\n };\n\n Prompt.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.when) {\n if (!this.props.when || this.props.message !== nextProps.message) this.enable(nextProps.message);\n } else {\n this.disable();\n }\n };\n\n Prompt.prototype.componentWillUnmount = function componentWillUnmount() {\n this.disable();\n };\n\n Prompt.prototype.render = function render() {\n return null;\n };\n\n return Prompt;\n}(React.Component);\n\nPrompt.propTypes = {\n when: PropTypes.bool,\n message: PropTypes.oneOfType([PropTypes.func, PropTypes.string]).isRequired\n};\nPrompt.defaultProps = {\n when: true\n};\nPrompt.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n block: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Prompt;","// Written in this round about way for babel-transform-imports\nimport Prompt from \"react-router/es/Prompt\";\n\nexport default Prompt;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var compiledGenerator = pathToRegexp.compile(pattern);\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, { pretty: true });\n};\n\nexport default generatePath;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n\n function Redirect() {\n _classCallCheck(this, Redirect);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n\n if (this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n\n this.perform();\n };\n\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n\n return to;\n };\n\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n\n var to = this.computeTo(this.props);\n\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n\n Redirect.prototype.render = function render() {\n return null;\n };\n\n return Redirect;\n}(React.Component);\n\nRedirect.propTypes = {\n computedMatch: PropTypes.object, // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\n\n\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\n\nexport default Redirect;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport Router from \"./Router\";\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n};\n\nvar addBasename = function addBasename(basename, location) {\n if (!basename) return location;\n\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n};\n\nvar stripBasename = function stripBasename(basename, location) {\n if (!basename) return location;\n\n var base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n};\n\nvar createURL = function createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n};\n\nvar staticHandler = function staticHandler(methodName) {\n return function () {\n invariant(false, \"You cannot %s with \", methodName);\n };\n};\n\nvar noop = function noop() {};\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = function (_React$Component) {\n _inherits(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, StaticRouter);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.createHref = function (path) {\n return addLeadingSlash(_this.props.basename + createURL(path));\n }, _this.handlePush = function (location) {\n var _this$props = _this.props,\n basename = _this$props.basename,\n context = _this$props.context;\n\n context.action = \"PUSH\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleReplace = function (location) {\n var _this$props2 = _this.props,\n basename = _this$props2.basename,\n context = _this$props2.context;\n\n context.action = \"REPLACE\";\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }, _this.handleListen = function () {\n return noop;\n }, _this.handleBlock = function () {\n return noop;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n StaticRouter.prototype.getChildContext = function getChildContext() {\n return {\n router: {\n staticContext: this.props.context\n }\n };\n };\n\n StaticRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\");\n };\n\n StaticRouter.prototype.render = function render() {\n var _props = this.props,\n basename = _props.basename,\n context = _props.context,\n location = _props.location,\n props = _objectWithoutProperties(_props, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: this.createHref,\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return React.createElement(Router, _extends({}, props, { history: history }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nStaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object.isRequired,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\nStaticRouter.defaultProps = {\n basename: \"\",\n location: \"/\"\n};\nStaticRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default StaticRouter;","// Written in this round about way for babel-transform-imports\nimport StaticRouter from \"react-router/es/StaticRouter\";\n\nexport default StaticRouter;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport matchPath from \"./matchPath\";\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Switch.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n };\n\n Switch.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(!(nextProps.location && !this.props.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n };\n\n Switch.prototype.render = function render() {\n var route = this.context.router.route;\n var children = this.props.children;\n\n var location = this.props.location || route.location;\n\n var match = void 0,\n child = void 0;\n React.Children.forEach(children, function (element) {\n if (match == null && React.isValidElement(element)) {\n var _element$props = element.props,\n pathProp = _element$props.path,\n exact = _element$props.exact,\n strict = _element$props.strict,\n sensitive = _element$props.sensitive,\n from = _element$props.from;\n\n var path = pathProp || from;\n\n child = element;\n match = matchPath(location.pathname, { path: path, exact: exact, strict: strict, sensitive: sensitive }, route.match);\n }\n });\n\n return match ? React.cloneElement(child, { location: location, computedMatch: match }) : null;\n };\n\n return Switch;\n}(React.Component);\n\nSwitch.contextTypes = {\n router: PropTypes.shape({\n route: PropTypes.object.isRequired\n }).isRequired\n};\nSwitch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n};\n\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport Switch from \"react-router/es/Switch\";\n\nexport default Switch;","// Written in this round about way for babel-transform-imports\nimport generatePath from \"react-router/es/generatePath\";\n\nexport default generatePath;","// Written in this round about way for babel-transform-imports\nimport matchPath from \"react-router/es/matchPath\";\n\nexport default matchPath;","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.state = {\n storeState: store.getState(),\n store: store\n };\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.subscribe();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n if (this.unsubscribe) this.unsubscribe();\n this.subscribe();\n }\n };\n\n _proto.subscribe = function subscribe() {\n var _this2 = this;\n\n var store = this.props.store;\n this.unsubscribe = store.subscribe(function () {\n var newStoreState = store.getState();\n\n if (!_this2._isMounted) {\n return;\n }\n\n _this2.setState(function (providerState) {\n // If the value is the same, skip the unnecessary state update.\n if (providerState.storeState === newStoreState) {\n return null;\n }\n\n return {\n storeState: newStoreState\n };\n });\n }); // Actions might have been dispatched between render and mount - handle those\n\n var postMountStoreState = store.getState();\n\n if (postMountStoreState !== this.state.storeState) {\n this.setState({\n storeState: postMountStoreState\n });\n }\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.7.0\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { Component, PureComponent } from 'react';\nimport { isValidElementType } from 'react-is';\nimport { ReactReduxContext } from './Context';\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React dev tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React-Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n var OuterBaseComponent = Component;\n var FinalWrappedComponent = WrappedComponent;\n\n if (pure) {\n OuterBaseComponent = PureComponent;\n }\n\n function makeDerivedPropsSelector() {\n var lastProps;\n var lastState;\n var lastDerivedProps;\n var lastStore;\n var sourceSelector;\n return function selectDerivedProps(state, props, store) {\n if (pure && lastProps === props && lastState === state) {\n return lastDerivedProps;\n }\n\n if (store !== lastStore) {\n lastStore = store;\n sourceSelector = selectorFactory(store.dispatch, selectorFactoryOptions);\n }\n\n lastProps = props;\n lastState = state;\n var nextProps = sourceSelector(state, props);\n\n if (lastDerivedProps === nextProps) {\n return lastDerivedProps;\n }\n\n lastDerivedProps = nextProps;\n return lastDerivedProps;\n };\n }\n\n function makeChildElementSelector() {\n var lastChildProps, lastForwardRef, lastChildElement;\n return function selectChildElement(childProps, forwardRef) {\n if (childProps !== lastChildProps || forwardRef !== lastForwardRef) {\n lastChildProps = childProps;\n lastForwardRef = forwardRef;\n lastChildElement = React.createElement(FinalWrappedComponent, _extends({}, childProps, {\n ref: forwardRef\n }));\n }\n\n return lastChildElement;\n };\n }\n\n var Connect =\n /*#__PURE__*/\n function (_OuterBaseComponent) {\n _inheritsLoose(Connect, _OuterBaseComponent);\n\n function Connect(props) {\n var _this;\n\n _this = _OuterBaseComponent.call(this, props) || this;\n invariant(forwardRef ? !props.wrapperProps[storeKey] : !props[storeKey], 'Passing redux store in props has been removed and does not do anything. ' + customStoreWarningMessage);\n _this.selectDerivedProps = makeDerivedPropsSelector();\n _this.selectChildElement = makeChildElementSelector();\n _this.renderWrappedComponent = _this.renderWrappedComponent.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.renderWrappedComponent = function renderWrappedComponent(value) {\n invariant(value, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var storeState = value.storeState,\n store = value.store;\n var wrapperProps = this.props;\n var forwardedRef;\n\n if (forwardRef) {\n wrapperProps = this.props.wrapperProps;\n forwardedRef = this.props.forwardedRef;\n }\n\n var derivedProps = this.selectDerivedProps(storeState, wrapperProps, store);\n return this.selectChildElement(derivedProps, forwardedRef);\n };\n\n _proto.render = function render() {\n var ContextToUse = this.props.context || Context;\n return React.createElement(ContextToUse.Consumer, null, this.renderWrappedComponent);\n };\n\n return Connect;\n }(OuterBaseComponent);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, {\n wrapperProps: props,\n forwardedRef: ref\n });\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose, ActionTypes as __DO_NOT_USE__ActionTypes };\n","/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar cornerstone = window.cornerstone;\nvar cornerstoneTools = window.cornerstoneTools;\nvar cornerstoneWADOImageLoader = window.cornerstoneWADOImageLoader;\nvar cornerstoneMath = window.cornerstoneMath;\nvar external = {\n set cornerstone(cs) {\n cornerstone = cs;\n },\n\n get cornerstone() {\n return cornerstone;\n },\n\n set cornerstoneTools(tools) {\n cornerstoneTools = tools;\n },\n\n get cornerstoneTools() {\n return cornerstoneTools;\n },\n\n set cornerstoneWADOImageLoader(wado) {\n cornerstoneWADOImageLoader = wado;\n },\n\n get cornerstoneWADOImageLoader() {\n return cornerstoneWADOImageLoader;\n },\n\n set cornerstoneMath(math) {\n cornerstoneMath = math;\n },\n\n get cornerstoneMath() {\n return cornerstoneMath;\n }\n\n};\n\nfunction getBoundingBox(context, textLines, x, y, options) {\n var cornerstoneTools = external.cornerstoneTools;\n\n if (Object.prototype.toString.call(textLines) !== '[object Array]') {\n textLines = [textLines];\n }\n\n var padding = 5;\n var font = cornerstoneTools.textStyle.getFont();\n var fontSize = cornerstoneTools.textStyle.getFontSize();\n context.save();\n context.font = font;\n context.textBaseline = 'top'; // Find the longest text width in the array of text data\n\n var maxWidth = 0;\n textLines.forEach(function (text) {\n // Get the text width in the current font\n var width = context.measureText(text).width; // Find the maximum with for all the text rows;\n\n maxWidth = Math.max(maxWidth, width);\n }); // Calculate the bounding box for this text box\n\n var boundingBox = {\n width: maxWidth + padding * 2,\n height: padding + textLines.length * (fontSize + padding)\n };\n\n if (options && options.centering && options.centering.x === true) {\n x -= boundingBox.width / 2;\n }\n\n if (options && options.centering && options.centering.y === true) {\n y -= boundingBox.height / 2;\n }\n\n boundingBox.left = x;\n boundingBox.top = y;\n context.restore(); // Return the bounding box so it can be used for pointNearHandle\n\n return boundingBox;\n}\n\nfunction pixelToPage(element, position) {\n var cornerstone = external.cornerstone;\n var enabledElement = cornerstone.getEnabledElement(element);\n var result = {\n x: 0,\n y: 0\n }; // Stop here if the cornerstone element is not enabled or position is not an object\n\n if (!enabledElement || _typeof(position) !== 'object') {\n return result;\n }\n\n var canvas = enabledElement.canvas;\n var canvasOffset = $(canvas).offset();\n result.x += canvasOffset.left;\n result.y += canvasOffset.top;\n var canvasPosition = cornerstone.pixelToCanvas(element, position);\n result.x += canvasPosition.x;\n result.y += canvasPosition.y;\n return result;\n}\n\nfunction repositionTextBox(eventData, measurementData, config) {\n var cornerstone = external.cornerstone; // Stop here if it's not a measurement creating\n\n if (!measurementData.isCreating) {\n return;\n }\n\n var element = eventData.element;\n var enabledElement = cornerstone.getEnabledElement(element);\n var image = enabledElement.image;\n var allowedBorders = OHIF.uiSettings.autoPositionMeasurementsTextCallOuts;\n var allow = {\n T: !allowedBorders || allowedBorders.includes('T'),\n R: !allowedBorders || allowedBorders.includes('R'),\n B: !allowedBorders || allowedBorders.includes('B'),\n L: !allowedBorders || allowedBorders.includes('L')\n };\n\n var getAvailableBlankAreas = function getAvailableBlankAreas(enabledElement, labelWidth, labelHeight) {\n var element = enabledElement.element,\n canvas = enabledElement.canvas,\n image = enabledElement.image;\n var topLeft = cornerstone.pixelToCanvas(element, {\n x: 0,\n y: 0\n });\n var bottomRight = cornerstone.pixelToCanvas(element, {\n x: image.width,\n y: image.height\n });\n var $canvas = $(canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var result = {};\n result['x-1'] = allow.L && topLeft.x > labelWidth;\n result['y-1'] = allow.T && topLeft.y > labelHeight;\n result.x1 = allow.R && canvasWidth - bottomRight.x > labelWidth;\n result.y1 = allow.B && canvasHeight - bottomRight.y > labelHeight;\n return result;\n };\n\n var getRenderingInformation = function getRenderingInformation(limits, tool) {\n var mid = {};\n mid.x = limits.x / 2;\n mid.y = limits.y / 2;\n var directions = {};\n directions.x = tool.x < mid.x ? -1 : 1;\n directions.y = tool.y < mid.y ? -1 : 1;\n var diffX = directions.x < 0 ? tool.x : limits.x - tool.x;\n var diffY = directions.y < 0 ? tool.y : limits.y - tool.y;\n var cornerAxis = diffY < diffX ? 'y' : 'x';\n var map = {\n 'x-1': 'L',\n 'y-1': 'T',\n x1: 'R',\n y1: 'B'\n };\n var current = 0;\n\n while (current < 4 && !allow[map[cornerAxis + directions[cornerAxis]]]) {\n // Invert the direction for the next iteration\n directions[cornerAxis] *= -1; // Invert the tempCornerAxis\n\n cornerAxis = cornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n return {\n directions: directions,\n cornerAxis: cornerAxis\n };\n };\n\n var calculateAxisCenter = function calculateAxisCenter(axis, start, end) {\n var a = start[axis];\n var b = end[axis];\n var lowest = Math.min(a, b);\n var highest = Math.max(a, b);\n return lowest + (highest - lowest) / 2;\n };\n\n var getTextBoxSizeInPixels = function getTextBoxSizeInPixels(element, bounds) {\n var topLeft = cornerstone.pageToPixel(element, 0, 0);\n var bottomRight = cornerstone.pageToPixel(element, bounds.x, bounds.y);\n return {\n x: bottomRight.x - topLeft.x,\n y: bottomRight.y - topLeft.y\n };\n };\n\n function getTextBoxOffset(config, cornerAxis, toolAxis, boxSize) {\n config = config || {};\n var centering = config.centering || {};\n var centerX = !!centering.x;\n var centerY = !!centering.y;\n var halfBoxSizeX = boxSize.x / 2;\n var halfBoxSizeY = boxSize.y / 2;\n var offset = {\n x: [],\n y: []\n };\n\n if (cornerAxis === 'x') {\n var offsetY = centerY ? 0 : halfBoxSizeY;\n offset.x[-1] = centerX ? halfBoxSizeX : 0;\n offset.x[1] = centerX ? -halfBoxSizeX : -boxSize.x;\n offset.y[-1] = offsetY;\n offset.y[1] = offsetY;\n } else {\n var offsetX = centerX ? 0 : halfBoxSizeX;\n offset.x[-1] = offsetX;\n offset.x[1] = offsetX;\n offset.y[-1] = centerY ? halfBoxSizeY : 0;\n offset.y[1] = centerY ? -halfBoxSizeY : -boxSize.y;\n }\n\n return offset;\n }\n\n var handles = measurementData.handles;\n var textBox = handles.textBox;\n var $canvas = $(enabledElement.canvas);\n var canvasWidth = $canvas.outerWidth();\n var canvasHeight = $canvas.outerHeight();\n var offset = $canvas.offset();\n var canvasDimensions = {\n x: canvasWidth,\n y: canvasHeight\n };\n var bounds = {};\n bounds.x = textBox.boundingBox.width;\n bounds.y = textBox.boundingBox.height;\n\n var getHandlePosition = function getHandlePosition(key) {\n var _handles$key = handles[key],\n x = _handles$key.x,\n y = _handles$key.y;\n return {\n x: x,\n y: y\n };\n };\n\n var start = getHandlePosition('start');\n var end = getHandlePosition('end');\n var tool = {};\n tool.x = calculateAxisCenter('x', start, end);\n tool.y = calculateAxisCenter('y', start, end);\n var limits = {};\n limits.x = image.width;\n limits.y = image.height;\n\n var _getRenderingInformat = getRenderingInformation(limits, tool),\n directions = _getRenderingInformat.directions,\n cornerAxis = _getRenderingInformat.cornerAxis;\n\n var availableAreas = getAvailableBlankAreas(enabledElement, bounds.x, bounds.y);\n var tempDirections = Object.assign({}, directions);\n var tempCornerAxis = cornerAxis;\n var foundPlace = false;\n var current = 0;\n\n while (current < 4) {\n if (availableAreas[tempCornerAxis + tempDirections[tempCornerAxis]]) {\n foundPlace = true;\n break;\n } // Invert the direction for the next iteration\n\n\n tempDirections[tempCornerAxis] *= -1; // Invert the tempCornerAxis\n\n tempCornerAxis = tempCornerAxis === 'x' ? 'y' : 'x';\n current++;\n }\n\n var cornerAxisPosition;\n\n if (foundPlace) {\n directions = Object.assign({}, directions, tempDirections);\n cornerAxis = tempCornerAxis;\n cornerAxisPosition = directions[cornerAxis] < 0 ? 0 : limits[cornerAxis];\n } else {\n limits = Object.assign({}, limits, canvasDimensions);\n var toolPositionOnCanvas = cornerstone.pixelToCanvas(element, tool);\n var renderingInformation = getRenderingInformation(limits, toolPositionOnCanvas);\n directions = renderingInformation.directions;\n cornerAxis = renderingInformation.cornerAxis;\n var position = {\n x: directions.x < 0 ? offset.left : offset.left + canvasWidth,\n y: directions.y < 0 ? offset.top : offset.top + canvasHeight\n };\n var pixelPosition = cornerstone.pageToPixel(element, position.x, position.y);\n cornerAxisPosition = pixelPosition[cornerAxis];\n }\n\n var toolAxis = cornerAxis === 'x' ? 'y' : 'x';\n var boxSize = getTextBoxSizeInPixels(element, bounds);\n textBox[cornerAxis] = cornerAxisPosition;\n textBox[toolAxis] = tool[toolAxis]; // Adjust the text box position reducing its size from the corner axis\n\n var textBoxOffset = getTextBoxOffset(config, cornerAxis, toolAxis, boxSize);\n textBox[cornerAxis] += textBoxOffset[cornerAxis][directions[cornerAxis]]; // Preventing the text box from partially going outside the canvas area\n\n var topLeft = cornerstone.pixelToCanvas(element, textBox);\n var bottomRight = {\n x: topLeft.x + bounds.x,\n y: topLeft.y + bounds.y\n };\n var canvasBorders = {\n x0: offset.left,\n y0: offset.top,\n x1: offset.left + canvasWidth,\n y1: offset.top + canvasHeight\n };\n\n if (topLeft[toolAxis] < 0) {\n var x = canvasBorders.x0;\n var y = canvasBorders.y0;\n\n var _pixelPosition = cornerstone.pageToPixel(element, x, y);\n\n textBox[toolAxis] = _pixelPosition[toolAxis];\n } else if (bottomRight[toolAxis] > canvasDimensions[toolAxis]) {\n var _x = canvasBorders.x1 - bounds.x;\n\n var _y = canvasBorders.y1 - bounds.y;\n\n var _pixelPosition2 = cornerstone.pageToPixel(element, _x, _y);\n\n textBox[toolAxis] = _pixelPosition2[toolAxis];\n }\n}\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar REGEX_TAG = /^x[0-9a-fx]{8}$/;\nvar DICOMTagDescriptions = Object.create(Object.prototype, {\n _descriptions: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n },\n tagNumberToString: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function tagNumberToString(tag) {\n var string; // by default, undefined is returned...\n\n if (this.isValidTagNumber(tag)) {\n // if it's a number, build its hexadecimal representation...\n string = 'x' + ('00000000' + tag.toString(16)).substr(-8);\n }\n\n return string;\n }\n },\n isValidTagNumber: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTagNumber(tag) {\n return _typeof(tag) === NUMBER && tag >= 0 && tag <= 0xffffffff;\n }\n },\n isValidTag: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function isValidTag(tag) {\n return _typeof(tag) === STRING ? REGEX_TAG.test(tag) : this.isValidTagNumber(tag);\n }\n },\n find: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function find(name) {\n var description; // by default, undefined is returned...\n\n if (_typeof(name) !== STRING) {\n // if it's a number, a tag string will be returned...\n name = this.tagNumberToString(name);\n }\n\n if (_typeof(name) === STRING) {\n description = this._descriptions[name];\n }\n\n return description;\n }\n },\n init: {\n configurable: false,\n enumerable: true,\n writable: false,\n value: function init(descriptionMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _descriptions = this._descriptions;\n\n for (var tag in descriptionMap) {\n if (_hasOwn.call(descriptionMap, tag)) {\n if (!this.isValidTag(tag)) {\n // Skip in case tag is not valid...\n console.info(\"DICOMTagDescriptions: Invalid tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n }\n\n if (tag in _descriptions) {\n // Skip in case the tag is duplicated...\n console.info(\"DICOMTagDescriptions: Duplicated tag \\\"\".concat(tag, \"\\\"...\"));\n continue;\n } // Save keyword...\n\n\n var keyword = descriptionMap[tag]; // Create a description entry and freeze it...\n\n var entry = Object.create(null);\n entry.tag = tag;\n entry.keyword = keyword;\n Object.freeze(entry); // Add tag references to entry...\n\n _descriptions[tag] = entry; // Add keyword references to entry (if not present already)...\n\n if (keyword in _descriptions) {\n var currentEntry = _descriptions[keyword];\n console.info(\"DICOMTagDescriptions: Using <\".concat(currentEntry.tag, \",\").concat(currentEntry.keyword, \"> instead of <\").concat(entry.tag, \",\").concat(entry.keyword, \"> for keyword \\\"\").concat(keyword, \"\\\"...\"));\n } else {\n _descriptions[keyword] = entry;\n }\n }\n } // Freeze internal description map...\n\n\n Object.freeze(_descriptions); // Freeze itself...\n\n Object.freeze(this);\n }\n }\n});\n/**\n * Map with DICOM Tag Descriptions\n */\n\nvar initialTagDescriptionMap = {\n x00020000: 'FileMetaInfoGroupLength',\n x00020001: 'FileMetaInfoVersion',\n x00020002: 'MediaStorageSOPClassUID',\n x00020003: 'MediaStorageSOPInstanceUID',\n x00020010: 'TransferSyntaxUID',\n x00020012: 'ImplementationClassUID',\n x00020013: 'ImplementationVersionName',\n x00020016: 'SourceApplicationEntityTitle',\n x00020100: 'PrivateInformationCreatorUID',\n x00020102: 'PrivateInformation',\n x00041130: 'FileSetID',\n x00041141: 'FileSetDescriptorFileID',\n x00041142: 'SpecificCharacterSetOfFile',\n x00041200: 'FirstDirectoryRecordOffset',\n x00041202: 'LastDirectoryRecordOffset',\n x00041212: 'FileSetConsistencyFlag',\n x00041220: 'DirectoryRecordSequence',\n x00041400: 'OffsetOfNextDirectoryRecord',\n x00041410: 'RecordInUseFlag',\n x00041420: 'LowerLevelDirectoryEntityOffset',\n x00041430: 'DirectoryRecordType',\n x00041432: 'PrivateRecordUID',\n x00041500: 'ReferencedFileID',\n x00041504: 'MRDRDirectoryRecordOffset',\n x00041510: 'ReferencedSOPClassUIDInFile',\n x00041511: 'ReferencedSOPInstanceUIDInFile',\n x00041512: 'ReferencedTransferSyntaxUIDInFile',\n x0004151a: 'ReferencedRelatedSOPClassUIDInFile',\n x00041600: 'NumberOfReferences',\n x00080000: 'IdentifyingGroupLength',\n x00080001: 'LengthToEnd',\n x00080005: 'SpecificCharacterSet',\n x00080006: 'LanguageCodeSequence',\n x00080008: 'ImageType',\n x00080010: 'RecognitionCode',\n x00080012: 'InstanceCreationDate',\n x00080013: 'InstanceCreationTime',\n x00080014: 'InstanceCreatorUID',\n x00080016: 'SOPClassUID',\n x00080018: 'SOPInstanceUID',\n x0008001a: 'RelatedGeneralSOPClassUID',\n x0008001b: 'OriginalSpecializedSOPClassUID',\n x00080020: 'StudyDate',\n x00080021: 'SeriesDate',\n x00080022: 'AcquisitionDate',\n x00080023: 'ContentDate',\n x00080024: 'OverlayDate',\n x00080025: 'CurveDate',\n x0008002a: 'AcquisitionDateTime',\n x00080030: 'StudyTime',\n x00080031: 'SeriesTime',\n x00080032: 'AcquisitionTime',\n x00080033: 'ContentTime',\n x00080034: 'OverlayTime',\n x00080035: 'CurveTime',\n x00080040: 'DataSetType',\n x00080041: 'DataSetSubtype',\n x00080042: 'NuclearMedicineSeriesType',\n x00080050: 'AccessionNumber',\n x00080052: 'QueryRetrieveLevel',\n x00080054: 'RetrieveAETitle',\n x00080056: 'InstanceAvailability',\n x00080058: 'FailedSOPInstanceUIDList',\n x00080060: 'Modality',\n x00080061: 'ModalitiesInStudy',\n x00080062: 'SOPClassesInStudy',\n x00080064: 'ConversionType',\n x00080068: 'PresentationIntentType',\n x00080070: 'Manufacturer',\n x00080080: 'InstitutionName',\n x00080081: 'InstitutionAddress',\n x00080082: 'InstitutionCodeSequence',\n x00080090: 'ReferringPhysicianName',\n x00080092: 'ReferringPhysicianAddress',\n x00080094: 'ReferringPhysicianTelephoneNumber',\n x00080096: 'ReferringPhysicianIDSequence',\n x00080100: 'CodeValue',\n x00080102: 'CodingSchemeDesignator',\n x00080103: 'CodingSchemeVersion',\n x00080104: 'CodeMeaning',\n x00080105: 'MappingResource',\n x00080106: 'ContextGroupVersion',\n x00080107: 'ContextGroupLocalVersion',\n x0008010b: 'ContextGroupExtensionFlag',\n x0008010c: 'CodingSchemeUID',\n x0008010d: 'ContextGroupExtensionCreatorUID',\n x0008010f: 'ContextIdentifier',\n x00080110: 'CodingSchemeIDSequence',\n x00080112: 'CodingSchemeRegistry',\n x00080114: 'CodingSchemeExternalID',\n x00080115: 'CodingSchemeName',\n x00080116: 'CodingSchemeResponsibleOrganization',\n x00080117: 'ContextUID',\n x00080201: 'TimezoneOffsetFromUTC',\n x00081000: 'NetworkID',\n x00081010: 'StationName',\n x00081030: 'StudyDescription',\n x00081032: 'ProcedureCodeSequence',\n x0008103e: 'SeriesDescription',\n x00081040: 'InstitutionalDepartmentName',\n x00081048: 'PhysiciansOfRecord',\n x00081049: 'PhysiciansOfRecordIDSequence',\n x00081050: 'PerformingPhysicianName',\n x00081052: 'PerformingPhysicianIDSequence',\n x00081060: 'NameOfPhysicianReadingStudy',\n x00081062: 'PhysicianReadingStudyIDSequence',\n x00081070: 'OperatorsName',\n x00081072: 'OperatorIDSequence',\n x00081080: 'AdmittingDiagnosesDescription',\n x00081084: 'AdmittingDiagnosesCodeSequence',\n x00081090: 'ManufacturersModelName',\n x00081100: 'ReferencedResultsSequence',\n x00081110: 'ReferencedStudySequence',\n x00081111: 'ReferencedPerformedProcedureStepSequence',\n x00081115: 'ReferencedSeriesSequence',\n x00081120: 'ReferencedPatientSequence',\n x00081125: 'ReferencedVisitSequence',\n x00081130: 'ReferencedOverlaySequence',\n x0008113a: 'ReferencedWaveformSequence',\n x00081140: 'ReferencedImageSequence',\n x00081145: 'ReferencedCurveSequence',\n x0008114a: 'ReferencedInstanceSequence',\n x00081150: 'ReferencedSOPClassUID',\n x00081155: 'ReferencedSOPInstanceUID',\n x0008115a: 'SOPClassesSupported',\n x00081160: 'ReferencedFrameNumber',\n x00081161: 'SimpleFrameList',\n x00081162: 'CalculatedFrameList',\n x00081163: 'TimeRange',\n x00081164: 'FrameExtractionSequence',\n x00081195: 'TransactionUID',\n x00081197: 'FailureReason',\n x00081198: 'FailedSOPSequence',\n x00081199: 'ReferencedSOPSequence',\n x00081200: 'OtherReferencedStudiesSequence',\n x00081250: 'RelatedSeriesSequence',\n x00082110: 'LossyImageCompressionRetired',\n x00082111: 'DerivationDescription',\n x00082112: 'SourceImageSequence',\n x00082120: 'StageName',\n x00082122: 'StageNumber',\n x00082124: 'NumberOfStages',\n x00082127: 'ViewName',\n x00082128: 'ViewNumber',\n x00082129: 'NumberOfEventTimers',\n x0008212a: 'NumberOfViewsInStage',\n x00082130: 'EventElapsedTimes',\n x00082132: 'EventTimerNames',\n x00082133: 'EventTimerSequence',\n x00082134: 'EventTimeOffset',\n x00082135: 'EventCodeSequence',\n x00082142: 'StartTrim',\n x00082143: 'StopTrim',\n x00082144: 'RecommendedDisplayFrameRate',\n x00082200: 'TransducerPosition',\n x00082204: 'TransducerOrientation',\n x00082208: 'AnatomicStructure',\n x00082218: 'AnatomicRegionSequence',\n x00082220: 'AnatomicRegionModifierSequence',\n x00082228: 'PrimaryAnatomicStructureSequence',\n x00082229: 'AnatomicStructureOrRegionSequence',\n x00082230: 'AnatomicStructureModifierSequence',\n x00082240: 'TransducerPositionSequence',\n x00082242: 'TransducerPositionModifierSequence',\n x00082244: 'TransducerOrientationSequence',\n x00082246: 'TransducerOrientationModifierSeq',\n x00082253: 'AnatomicEntrancePortalCodeSeqTrial',\n x00082255: 'AnatomicApproachDirCodeSeqTrial',\n x00082256: 'AnatomicPerspectiveDescrTrial',\n x00082257: 'AnatomicPerspectiveCodeSeqTrial',\n x00083001: 'AlternateRepresentationSequence',\n x00083010: 'IrradiationEventUID',\n x00084000: 'IdentifyingComments',\n x00089007: 'FrameType',\n x00089092: 'ReferencedImageEvidenceSequence',\n x00089121: 'ReferencedRawDataSequence',\n x00089123: 'CreatorVersionUID',\n x00089124: 'DerivationImageSequence',\n x00089154: 'SourceImageEvidenceSequence',\n x00089205: 'PixelPresentation',\n x00089206: 'VolumetricProperties',\n x00089207: 'VolumeBasedCalculationTechnique',\n x00089208: 'ComplexImageComponent',\n x00089209: 'AcquisitionContrast',\n x00089215: 'DerivationCodeSequence',\n x00089237: 'GrayscalePresentationStateSequence',\n x00089410: 'ReferencedOtherPlaneSequence',\n x00089458: 'FrameDisplaySequence',\n x00089459: 'RecommendedDisplayFrameRateInFloat',\n x00089460: 'SkipFrameRangeFlag',\n // x00091001: 'FullFidelity',\n // x00091002: 'SuiteID',\n // x00091004: 'ProductID',\n // x00091027: 'ImageActualDate',\n // x00091030: 'ServiceID',\n // x00091031: 'MobileLocationNumber',\n // x000910e3: 'EquipmentUID',\n // x000910e6: 'GenesisVersionNow',\n // x000910e7: 'ExamRecordChecksum',\n // x000910e9: 'ActualSeriesDataTimeStamp',\n x00100000: 'PatientGroupLength',\n x00100010: 'PatientName',\n x00100020: 'PatientID',\n x00100021: 'IssuerOfPatientID',\n x00100022: 'TypeOfPatientID',\n x00100030: 'PatientBirthDate',\n x00100032: 'PatientBirthTime',\n x00100040: 'PatientSex',\n x00100050: 'PatientInsurancePlanCodeSequence',\n x00100101: 'PatientPrimaryLanguageCodeSeq',\n x00100102: 'PatientPrimaryLanguageCodeModSeq',\n x00101000: 'OtherPatientIDs',\n x00101001: 'OtherPatientNames',\n x00101002: 'OtherPatientIDsSequence',\n x00101005: 'PatientBirthName',\n x00101010: 'PatientAge',\n x00101020: 'PatientSize',\n x00101030: 'PatientWeight',\n x00101040: 'PatientAddress',\n x00101050: 'InsurancePlanIdentification',\n x00101060: 'PatientMotherBirthName',\n x00101080: 'MilitaryRank',\n x00101081: 'BranchOfService',\n x00101090: 'MedicalRecordLocator',\n x00102000: 'MedicalAlerts',\n x00102110: 'Allergies',\n x00102150: 'CountryOfResidence',\n x00102152: 'RegionOfResidence',\n x00102154: 'PatientTelephoneNumbers',\n x00102160: 'EthnicGroup',\n x00102180: 'Occupation',\n x001021a0: 'SmokingStatus',\n x001021b0: 'AdditionalPatientHistory',\n x001021c0: 'PregnancyStatus',\n x001021d0: 'LastMenstrualDate',\n x001021f0: 'PatientReligiousPreference',\n x00102201: 'PatientSpeciesDescription',\n x00102202: 'PatientSpeciesCodeSequence',\n x00102203: 'PatientSexNeutered',\n x00102210: 'AnatomicalOrientationType',\n x00102292: 'PatientBreedDescription',\n x00102293: 'PatientBreedCodeSequence',\n x00102294: 'BreedRegistrationSequence',\n x00102295: 'BreedRegistrationNumber',\n x00102296: 'BreedRegistryCodeSequence',\n x00102297: 'ResponsiblePerson',\n x00102298: 'ResponsiblePersonRole',\n x00102299: 'ResponsibleOrganization',\n x00104000: 'PatientComments',\n x00109431: 'ExaminedBodyThickness',\n x00111010: 'PatientStatus',\n x00120010: 'ClinicalTrialSponsorName',\n x00120020: 'ClinicalTrialProtocolID',\n x00120021: 'ClinicalTrialProtocolName',\n x00120030: 'ClinicalTrialSiteID',\n x00120031: 'ClinicalTrialSiteName',\n x00120040: 'ClinicalTrialSubjectID',\n x00120042: 'ClinicalTrialSubjectReadingID',\n x00120050: 'ClinicalTrialTimePointID',\n x00120051: 'ClinicalTrialTimePointDescription',\n x00120060: 'ClinicalTrialCoordinatingCenter',\n x00120062: 'PatientIdentityRemoved',\n x00120063: 'DeidentificationMethod',\n x00120064: 'DeidentificationMethodCodeSequence',\n x00120071: 'ClinicalTrialSeriesID',\n x00120072: 'ClinicalTrialSeriesDescription',\n x00120084: 'DistributionType',\n x00120085: 'ConsentForDistributionFlag',\n x00180000: 'AcquisitionGroupLength',\n x00180010: 'ContrastBolusAgent',\n x00180012: 'ContrastBolusAgentSequence',\n x00180014: 'ContrastBolusAdministrationRoute',\n x00180015: 'BodyPartExamined',\n x00180020: 'ScanningSequence',\n x00180021: 'SequenceVariant',\n x00180022: 'ScanOptions',\n x00180023: 'MRAcquisitionType',\n x00180024: 'SequenceName',\n x00180025: 'AngioFlag',\n x00180026: 'InterventionDrugInformationSeq',\n x00180027: 'InterventionDrugStopTime',\n x00180028: 'InterventionDrugDose',\n x00180029: 'InterventionDrugSequence',\n x0018002a: 'AdditionalDrugSequence',\n x00180030: 'Radionuclide',\n x00180031: 'Radiopharmaceutical',\n x00180032: 'EnergyWindowCenterline',\n x00180033: 'EnergyWindowTotalWidth',\n x00180034: 'InterventionDrugName',\n x00180035: 'InterventionDrugStartTime',\n x00180036: 'InterventionSequence',\n x00180037: 'TherapyType',\n x00180038: 'InterventionStatus',\n x00180039: 'TherapyDescription',\n x0018003a: 'InterventionDescription',\n x00180040: 'CineRate',\n x00180042: 'InitialCineRunState',\n x00180050: 'SliceThickness',\n x00180060: 'KVP',\n x00180070: 'CountsAccumulated',\n x00180071: 'AcquisitionTerminationCondition',\n x00180072: 'EffectiveDuration',\n x00180073: 'AcquisitionStartCondition',\n x00180074: 'AcquisitionStartConditionData',\n x00180075: 'AcquisitionEndConditionData',\n x00180080: 'RepetitionTime',\n x00180081: 'EchoTime',\n x00180082: 'InversionTime',\n x00180083: 'NumberOfAverages',\n x00180084: 'ImagingFrequency',\n x00180085: 'ImagedNucleus',\n x00180086: 'EchoNumber',\n x00180087: 'MagneticFieldStrength',\n x00180088: 'SpacingBetweenSlices',\n x00180089: 'NumberOfPhaseEncodingSteps',\n x00180090: 'DataCollectionDiameter',\n x00180091: 'EchoTrainLength',\n x00180093: 'PercentSampling',\n x00180094: 'PercentPhaseFieldOfView',\n x00180095: 'PixelBandwidth',\n x00181000: 'DeviceSerialNumber',\n x00181002: 'DeviceUID',\n x00181003: 'DeviceID',\n x00181004: 'PlateID',\n x00181005: 'GeneratorID',\n x00181006: 'GridID',\n x00181007: 'CassetteID',\n x00181008: 'GantryID',\n x00181010: 'SecondaryCaptureDeviceID',\n x00181011: 'HardcopyCreationDeviceID',\n x00181012: 'DateOfSecondaryCapture',\n x00181014: 'TimeOfSecondaryCapture',\n x00181016: 'SecondaryCaptureDeviceManufacturer',\n x00181017: 'HardcopyDeviceManufacturer',\n x00181018: 'SecondaryCaptureDeviceModelName',\n x00181019: 'SecondaryCaptureDeviceSoftwareVers',\n x0018101a: 'HardcopyDeviceSoftwareVersion',\n x0018101b: 'HardcopyDeviceModelName',\n x00181020: 'SoftwareVersion',\n x00181022: 'VideoImageFormatAcquired',\n x00181023: 'DigitalImageFormatAcquired',\n x00181030: 'ProtocolName',\n x00181040: 'ContrastBolusRoute',\n x00181041: 'ContrastBolusVolume',\n x00181042: 'ContrastBolusStartTime',\n x00181043: 'ContrastBolusStopTime',\n x00181044: 'ContrastBolusTotalDose',\n x00181045: 'SyringeCounts',\n x00181046: 'ContrastFlowRate',\n x00181047: 'ContrastFlowDuration',\n x00181048: 'ContrastBolusIngredient',\n x00181049: 'ContrastBolusConcentration',\n x00181050: 'SpatialResolution',\n x00181060: 'TriggerTime',\n x00181061: 'TriggerSourceOrType',\n x00181062: 'NominalInterval',\n x00181063: 'FrameTime',\n x00181064: 'CardiacFramingType',\n x00181065: 'FrameTimeVector',\n x00181066: 'FrameDelay',\n x00181067: 'ImageTriggerDelay',\n x00181068: 'MultiplexGroupTimeOffset',\n x00181069: 'TriggerTimeOffset',\n x0018106a: 'SynchronizationTrigger',\n x0018106c: 'SynchronizationChannel',\n x0018106e: 'TriggerSamplePosition',\n x00181070: 'RadiopharmaceuticalRoute',\n x00181071: 'RadiopharmaceuticalVolume',\n x00181072: 'RadiopharmaceuticalStartTime',\n x00181073: 'RadiopharmaceuticalStopTime',\n x00181074: 'RadionuclideTotalDose',\n x00181075: 'RadionuclideHalfLife',\n x00181076: 'RadionuclidePositronFraction',\n x00181077: 'RadiopharmaceuticalSpecActivity',\n x00181078: 'RadiopharmaceuticalStartDateTime',\n x00181079: 'RadiopharmaceuticalStopDateTime',\n x00181080: 'BeatRejectionFlag',\n x00181081: 'LowRRValue',\n x00181082: 'HighRRValue',\n x00181083: 'IntervalsAcquired',\n x00181084: 'IntervalsRejected',\n x00181085: 'PVCRejection',\n x00181086: 'SkipBeats',\n x00181088: 'HeartRate',\n x00181090: 'CardiacNumberOfImages',\n x00181094: 'TriggerWindow',\n x00181100: 'ReconstructionDiameter',\n x00181110: 'DistanceSourceToDetector',\n x00181111: 'DistanceSourceToPatient',\n x00181114: 'EstimatedRadiographicMagnification',\n x00181120: 'GantryDetectorTilt',\n x00181121: 'GantryDetectorSlew',\n x00181130: 'TableHeight',\n x00181131: 'TableTraverse',\n x00181134: 'TableMotion',\n x00181135: 'TableVerticalIncrement',\n x00181136: 'TableLateralIncrement',\n x00181137: 'TableLongitudinalIncrement',\n x00181138: 'TableAngle',\n x0018113a: 'TableType',\n x00181140: 'RotationDirection',\n x00181141: 'AngularPosition',\n x00181142: 'RadialPosition',\n x00181143: 'ScanArc',\n x00181144: 'AngularStep',\n x00181145: 'CenterOfRotationOffset',\n x00181146: 'RotationOffset',\n x00181147: 'FieldOfViewShape',\n x00181149: 'FieldOfViewDimensions',\n x00181150: 'ExposureTime',\n x00181151: 'XRayTubeCurrent',\n x00181152: 'Exposure',\n x00181153: 'ExposureInMicroAmpSec',\n x00181154: 'AveragePulseWidth',\n x00181155: 'RadiationSetting',\n x00181156: 'RectificationType',\n x0018115a: 'RadiationMode',\n x0018115e: 'ImageAreaDoseProduct',\n x00181160: 'FilterType',\n x00181161: 'TypeOfFilters',\n x00181162: 'IntensifierSize',\n x00181164: 'ImagerPixelSpacing',\n x00181166: 'Grid',\n x00181170: 'GeneratorPower',\n x00181180: 'CollimatorGridName',\n x00181181: 'CollimatorType',\n x00181182: 'FocalDistance',\n x00181183: 'XFocusCenter',\n x00181184: 'YFocusCenter',\n x00181190: 'FocalSpots',\n x00181191: 'AnodeTargetMaterial',\n x001811a0: 'BodyPartThickness',\n x001811a2: 'CompressionForce',\n x00181200: 'DateOfLastCalibration',\n x00181201: 'TimeOfLastCalibration',\n x00181210: 'ConvolutionKernel',\n x00181240: 'UpperLowerPixelValues',\n x00181242: 'ActualFrameDuration',\n x00181243: 'CountRate',\n x00181244: 'PreferredPlaybackSequencing',\n x00181250: 'ReceiveCoilName',\n x00181251: 'TransmitCoilName',\n x00181260: 'PlateType',\n x00181261: 'PhosphorType',\n x00181300: 'ScanVelocity',\n x00181301: 'WholeBodyTechnique',\n x00181302: 'ScanLength',\n x00181310: 'AcquisitionMatrix',\n x00181312: 'InPlanePhaseEncodingDirection',\n x00181314: 'FlipAngle',\n x00181315: 'VariableFlipAngleFlag',\n x00181316: 'SAR',\n x00181318: 'DB-Dt',\n x00181400: 'AcquisitionDeviceProcessingDescr',\n x00181401: 'AcquisitionDeviceProcessingCode',\n x00181402: 'CassetteOrientation',\n x00181403: 'CassetteSize',\n x00181404: 'ExposuresOnPlate',\n x00181405: 'RelativeXRayExposure',\n x00181450: 'ColumnAngulation',\n x00181460: 'TomoLayerHeight',\n x00181470: 'TomoAngle',\n x00181480: 'TomoTime',\n x00181490: 'TomoType',\n x00181491: 'TomoClass',\n x00181495: 'NumberOfTomosynthesisSourceImages',\n x00181500: 'PositionerMotion',\n x00181508: 'PositionerType',\n x00181510: 'PositionerPrimaryAngle',\n x00181511: 'PositionerSecondaryAngle',\n x00181520: 'PositionerPrimaryAngleIncrement',\n x00181521: 'PositionerSecondaryAngleIncrement',\n x00181530: 'DetectorPrimaryAngle',\n x00181531: 'DetectorSecondaryAngle',\n x00181600: 'ShutterShape',\n x00181602: 'ShutterLeftVerticalEdge',\n x00181604: 'ShutterRightVerticalEdge',\n x00181606: 'ShutterUpperHorizontalEdge',\n x00181608: 'ShutterLowerHorizontalEdge',\n x00181610: 'CenterOfCircularShutter',\n x00181612: 'RadiusOfCircularShutter',\n x00181620: 'VerticesOfPolygonalShutter',\n x00181622: 'ShutterPresentationValue',\n x00181623: 'ShutterOverlayGroup',\n x00181624: 'ShutterPresentationColorCIELabVal',\n x00181700: 'CollimatorShape',\n x00181702: 'CollimatorLeftVerticalEdge',\n x00181704: 'CollimatorRightVerticalEdge',\n x00181706: 'CollimatorUpperHorizontalEdge',\n x00181708: 'CollimatorLowerHorizontalEdge',\n x00181710: 'CenterOfCircularCollimator',\n x00181712: 'RadiusOfCircularCollimator',\n x00181720: 'VerticesOfPolygonalCollimator',\n x00181800: 'AcquisitionTimeSynchronized',\n x00181801: 'TimeSource',\n x00181802: 'TimeDistributionProtocol',\n x00181803: 'NTPSourceAddress',\n x00182001: 'PageNumberVector',\n x00182002: 'FrameLabelVector',\n x00182003: 'FramePrimaryAngleVector',\n x00182004: 'FrameSecondaryAngleVector',\n x00182005: 'SliceLocationVector',\n x00182006: 'DisplayWindowLabelVector',\n x00182010: 'NominalScannedPixelSpacing',\n x00182020: 'DigitizingDeviceTransportDirection',\n x00182030: 'RotationOfScannedFilm',\n x00183100: 'IVUSAcquisition',\n x00183101: 'IVUSPullbackRate',\n x00183102: 'IVUSGatedRate',\n x00183103: 'IVUSPullbackStartFrameNumber',\n x00183104: 'IVUSPullbackStopFrameNumber',\n x00183105: 'LesionNumber',\n x00184000: 'AcquisitionComments',\n x00185000: 'OutputPower',\n x00185010: 'TransducerData',\n x00185012: 'FocusDepth',\n x00185020: 'ProcessingFunction',\n x00185021: 'PostprocessingFunction',\n x00185022: 'MechanicalIndex',\n x00185024: 'BoneThermalIndex',\n x00185026: 'CranialThermalIndex',\n x00185027: 'SoftTissueThermalIndex',\n x00185028: 'SoftTissueFocusThermalIndex',\n x00185029: 'SoftTissueSurfaceThermalIndex',\n x00185030: 'DynamicRange',\n x00185040: 'TotalGain',\n x00185050: 'DepthOfScanField',\n x00185100: 'PatientPosition',\n x00185101: 'ViewPosition',\n x00185104: 'ProjectionEponymousNameCodeSeq',\n x00185210: 'ImageTransformationMatrix',\n x00185212: 'ImageTranslationVector',\n x00186000: 'Sensitivity',\n x00186011: 'SequenceOfUltrasoundRegions',\n x00186012: 'RegionSpatialFormat',\n x00186014: 'RegionDataType',\n x00186016: 'RegionFlags',\n x00186018: 'RegionLocationMinX0',\n x0018601a: 'RegionLocationMinY0',\n x0018601c: 'RegionLocationMaxX1',\n x0018601e: 'RegionLocationMaxY1',\n x00186020: 'ReferencePixelX0',\n x00186022: 'ReferencePixelY0',\n x00186024: 'PhysicalUnitsXDirection',\n x00186026: 'PhysicalUnitsYDirection',\n x00186028: 'ReferencePixelPhysicalValueX',\n x0018602a: 'ReferencePixelPhysicalValueY',\n x0018602c: 'PhysicalDeltaX',\n x0018602e: 'PhysicalDeltaY',\n x00186030: 'TransducerFrequency',\n x00186031: 'TransducerType',\n x00186032: 'PulseRepetitionFrequency',\n x00186034: 'DopplerCorrectionAngle',\n x00186036: 'SteeringAngle',\n x00186038: 'DopplerSampleVolumeXPosRetired',\n x00186039: 'DopplerSampleVolumeXPosition',\n x0018603a: 'DopplerSampleVolumeYPosRetired',\n x0018603b: 'DopplerSampleVolumeYPosition',\n x0018603c: 'TMLinePositionX0Retired',\n x0018603d: 'TMLinePositionX0',\n x0018603e: 'TMLinePositionY0Retired',\n x0018603f: 'TMLinePositionY0',\n x00186040: 'TMLinePositionX1Retired',\n x00186041: 'TMLinePositionX1',\n x00186042: 'TMLinePositionY1Retired',\n x00186043: 'TMLinePositionY1',\n x00186044: 'PixelComponentOrganization',\n x00186046: 'PixelComponentMask',\n x00186048: 'PixelComponentRangeStart',\n x0018604a: 'PixelComponentRangeStop',\n x0018604c: 'PixelComponentPhysicalUnits',\n x0018604e: 'PixelComponentDataType',\n x00186050: 'NumberOfTableBreakPoints',\n x00186052: 'TableOfXBreakPoints',\n x00186054: 'TableOfYBreakPoints',\n x00186056: 'NumberOfTableEntries',\n x00186058: 'TableOfPixelValues',\n x0018605a: 'TableOfParameterValues',\n x00186060: 'RWaveTimeVector',\n x00187000: 'DetectorConditionsNominalFlag',\n x00187001: 'DetectorTemperature',\n x00187004: 'DetectorType',\n x00187005: 'DetectorConfiguration',\n x00187006: 'DetectorDescription',\n x00187008: 'DetectorMode',\n x0018700a: 'DetectorID',\n x0018700c: 'DateOfLastDetectorCalibration',\n x0018700e: 'TimeOfLastDetectorCalibration',\n x00187010: 'DetectorExposuresSinceCalibration',\n x00187011: 'DetectorExposuresSinceManufactured',\n x00187012: 'DetectorTimeSinceLastExposure',\n x00187014: 'DetectorActiveTime',\n x00187016: 'DetectorActiveOffsetFromExposure',\n x0018701a: 'DetectorBinning',\n x00187020: 'DetectorElementPhysicalSize',\n x00187022: 'DetectorElementSpacing',\n x00187024: 'DetectorActiveShape',\n x00187026: 'DetectorActiveDimensions',\n x00187028: 'DetectorActiveOrigin',\n x0018702a: 'DetectorManufacturerName',\n x0018702b: 'DetectorManufacturersModelName',\n x00187030: 'FieldOfViewOrigin',\n x00187032: 'FieldOfViewRotation',\n x00187034: 'FieldOfViewHorizontalFlip',\n x00187040: 'GridAbsorbingMaterial',\n x00187041: 'GridSpacingMaterial',\n x00187042: 'GridThickness',\n x00187044: 'GridPitch',\n x00187046: 'GridAspectRatio',\n x00187048: 'GridPeriod',\n x0018704c: 'GridFocalDistance',\n x00187050: 'FilterMaterial',\n x00187052: 'FilterThicknessMinimum',\n x00187054: 'FilterThicknessMaximum',\n x00187060: 'ExposureControlMode',\n x00187062: 'ExposureControlModeDescription',\n x00187064: 'ExposureStatus',\n x00187065: 'PhototimerSetting',\n x00188150: 'ExposureTimeInMicroSec',\n x00188151: 'XRayTubeCurrentInMicroAmps',\n x00189004: 'ContentQualification',\n x00189005: 'PulseSequenceName',\n x00189006: 'MRImagingModifierSequence',\n x00189008: 'EchoPulseSequence',\n x00189009: 'InversionRecovery',\n x00189010: 'FlowCompensation',\n x00189011: 'MultipleSpinEcho',\n x00189012: 'MultiPlanarExcitation',\n x00189014: 'PhaseContrast',\n x00189015: 'TimeOfFlightContrast',\n x00189016: 'Spoiling',\n x00189017: 'SteadyStatePulseSequence',\n x00189018: 'EchoPlanarPulseSequence',\n x00189019: 'TagAngleFirstAxis',\n x00189020: 'MagnetizationTransfer',\n x00189021: 'T2Preparation',\n x00189022: 'BloodSignalNulling',\n x00189024: 'SaturationRecovery',\n x00189025: 'SpectrallySelectedSuppression',\n x00189026: 'SpectrallySelectedExcitation',\n x00189027: 'SpatialPresaturation',\n x00189028: 'Tagging',\n x00189029: 'OversamplingPhase',\n x00189030: 'TagSpacingFirstDimension',\n x00189032: 'GeometryOfKSpaceTraversal',\n x00189033: 'SegmentedKSpaceTraversal',\n x00189034: 'RectilinearPhaseEncodeReordering',\n x00189035: 'TagThickness',\n x00189036: 'PartialFourierDirection',\n x00189037: 'CardiacSynchronizationTechnique',\n x00189041: 'ReceiveCoilManufacturerName',\n x00189042: 'MRReceiveCoilSequence',\n x00189043: 'ReceiveCoilType',\n x00189044: 'QuadratureReceiveCoil',\n x00189045: 'MultiCoilDefinitionSequence',\n x00189046: 'MultiCoilConfiguration',\n x00189047: 'MultiCoilElementName',\n x00189048: 'MultiCoilElementUsed',\n x00189049: 'MRTransmitCoilSequence',\n x00189050: 'TransmitCoilManufacturerName',\n x00189051: 'TransmitCoilType',\n x00189052: 'SpectralWidth',\n x00189053: 'ChemicalShiftReference',\n x00189054: 'VolumeLocalizationTechnique',\n x00189058: 'MRAcquisitionFrequencyEncodeSteps',\n x00189059: 'Decoupling',\n x00189060: 'DecoupledNucleus',\n x00189061: 'DecouplingFrequency',\n x00189062: 'DecouplingMethod',\n x00189063: 'DecouplingChemicalShiftReference',\n x00189064: 'KSpaceFiltering',\n x00189065: 'TimeDomainFiltering',\n x00189066: 'NumberOfZeroFills',\n x00189067: 'BaselineCorrection',\n x00189069: 'ParallelReductionFactorInPlane',\n x00189070: 'CardiacRRIntervalSpecified',\n x00189073: 'AcquisitionDuration',\n x00189074: 'FrameAcquisitionDateTime',\n x00189075: 'DiffusionDirectionality',\n x00189076: 'DiffusionGradientDirectionSequence',\n x00189077: 'ParallelAcquisition',\n x00189078: 'ParallelAcquisitionTechnique',\n x00189079: 'InversionTimes',\n x00189080: 'MetaboliteMapDescription',\n x00189081: 'PartialFourier',\n x00189082: 'EffectiveEchoTime',\n x00189083: 'MetaboliteMapCodeSequence',\n x00189084: 'ChemicalShiftSequence',\n x00189085: 'CardiacSignalSource',\n x00189087: 'DiffusionBValue',\n x00189089: 'DiffusionGradientOrientation',\n x00189090: 'VelocityEncodingDirection',\n x00189091: 'VelocityEncodingMinimumValue',\n x00189093: 'NumberOfKSpaceTrajectories',\n x00189094: 'CoverageOfKSpace',\n x00189095: 'SpectroscopyAcquisitionPhaseRows',\n x00189096: 'ParallelReductFactorInPlaneRetired',\n x00189098: 'TransmitterFrequency',\n x00189100: 'ResonantNucleus',\n x00189101: 'FrequencyCorrection',\n x00189103: 'MRSpectroscopyFOV-GeometrySequence',\n x00189104: 'SlabThickness',\n x00189105: 'SlabOrientation',\n x00189106: 'MidSlabPosition',\n x00189107: 'MRSpatialSaturationSequence',\n x00189112: 'MRTimingAndRelatedParametersSeq',\n x00189114: 'MREchoSequence',\n x00189115: 'MRModifierSequence',\n x00189117: 'MRDiffusionSequence',\n x00189118: 'CardiacTriggerSequence',\n x00189119: 'MRAveragesSequence',\n x00189125: 'MRFOV-GeometrySequence',\n x00189126: 'VolumeLocalizationSequence',\n x00189127: 'SpectroscopyAcquisitionDataColumns',\n x00189147: 'DiffusionAnisotropyType',\n x00189151: 'FrameReferenceDateTime',\n x00189152: 'MRMetaboliteMapSequence',\n x00189155: 'ParallelReductionFactorOutOfPlane',\n x00189159: 'SpectroscopyOutOfPlanePhaseSteps',\n x00189166: 'BulkMotionStatus',\n x00189168: 'ParallelReductionFactSecondInPlane',\n x00189169: 'CardiacBeatRejectionTechnique',\n x00189170: 'RespiratoryMotionCompTechnique',\n x00189171: 'RespiratorySignalSource',\n x00189172: 'BulkMotionCompensationTechnique',\n x00189173: 'BulkMotionSignalSource',\n x00189174: 'ApplicableSafetyStandardAgency',\n x00189175: 'ApplicableSafetyStandardDescr',\n x00189176: 'OperatingModeSequence',\n x00189177: 'OperatingModeType',\n x00189178: 'OperatingMode',\n x00189179: 'SpecificAbsorptionRateDefinition',\n x00189180: 'GradientOutputType',\n x00189181: 'SpecificAbsorptionRateValue',\n x00189182: 'GradientOutput',\n x00189183: 'FlowCompensationDirection',\n x00189184: 'TaggingDelay',\n x00189185: 'RespiratoryMotionCompTechDescr',\n x00189186: 'RespiratorySignalSourceID',\n x00189195: 'ChemicalShiftsMinIntegrateLimitHz',\n x00189196: 'ChemicalShiftsMaxIntegrateLimitHz',\n x00189197: 'MRVelocityEncodingSequence',\n x00189198: 'FirstOrderPhaseCorrection',\n x00189199: 'WaterReferencedPhaseCorrection',\n x00189200: 'MRSpectroscopyAcquisitionType',\n x00189214: 'RespiratoryCyclePosition',\n x00189217: 'VelocityEncodingMaximumValue',\n x00189218: 'TagSpacingSecondDimension',\n x00189219: 'TagAngleSecondAxis',\n x00189220: 'FrameAcquisitionDuration',\n x00189226: 'MRImageFrameTypeSequence',\n x00189227: 'MRSpectroscopyFrameTypeSequence',\n x00189231: 'MRAcqPhaseEncodingStepsInPlane',\n x00189232: 'MRAcqPhaseEncodingStepsOutOfPlane',\n x00189234: 'SpectroscopyAcqPhaseColumns',\n x00189236: 'CardiacCyclePosition',\n x00189239: 'SpecificAbsorptionRateSequence',\n x00189240: 'RFEchoTrainLength',\n x00189241: 'GradientEchoTrainLength',\n x00189295: 'ChemicalShiftsMinIntegrateLimitPPM',\n x00189296: 'ChemicalShiftsMaxIntegrateLimitPPM',\n x00189301: 'CTAcquisitionTypeSequence',\n x00189302: 'AcquisitionType',\n x00189303: 'TubeAngle',\n x00189304: 'CTAcquisitionDetailsSequence',\n x00189305: 'RevolutionTime',\n x00189306: 'SingleCollimationWidth',\n x00189307: 'TotalCollimationWidth',\n x00189308: 'CTTableDynamicsSequence',\n x00189309: 'TableSpeed',\n x00189310: 'TableFeedPerRotation',\n x00189311: 'SpiralPitchFactor',\n x00189312: 'CTGeometrySequence',\n x00189313: 'DataCollectionCenterPatient',\n x00189314: 'CTReconstructionSequence',\n x00189315: 'ReconstructionAlgorithm',\n x00189316: 'ConvolutionKernelGroup',\n x00189317: 'ReconstructionFieldOfView',\n x00189318: 'ReconstructionTargetCenterPatient',\n x00189319: 'ReconstructionAngle',\n x00189320: 'ImageFilter',\n x00189321: 'CTExposureSequence',\n x00189322: 'ReconstructionPixelSpacing',\n x00189323: 'ExposureModulationType',\n x00189324: 'EstimatedDoseSaving',\n x00189325: 'CTXRayDetailsSequence',\n x00189326: 'CTPositionSequence',\n x00189327: 'TablePosition',\n x00189328: 'ExposureTimeInMilliSec',\n x00189329: 'CTImageFrameTypeSequence',\n x00189330: 'XRayTubeCurrentInMilliAmps',\n x00189332: 'ExposureInMilliAmpSec',\n x00189333: 'ConstantVolumeFlag',\n x00189334: 'FluoroscopyFlag',\n x00189335: 'SourceToDataCollectionCenterDist',\n x00189337: 'ContrastBolusAgentNumber',\n x00189338: 'ContrastBolusIngredientCodeSeq',\n x00189340: 'ContrastAdministrationProfileSeq',\n x00189341: 'ContrastBolusUsageSequence',\n x00189342: 'ContrastBolusAgentAdministered',\n x00189343: 'ContrastBolusAgentDetected',\n x00189344: 'ContrastBolusAgentPhase',\n x00189345: 'CTDIvol',\n x00189346: 'CTDIPhantomTypeCodeSequence',\n x00189351: 'CalciumScoringMassFactorPatient',\n x00189352: 'CalciumScoringMassFactorDevice',\n x00189353: 'EnergyWeightingFactor',\n x00189360: 'CTAdditionalXRaySourceSequence',\n x00189401: 'ProjectionPixelCalibrationSequence',\n x00189402: 'DistanceSourceToIsocenter',\n x00189403: 'DistanceObjectToTableTop',\n x00189404: 'ObjectPixelSpacingInCenterOfBeam',\n x00189405: 'PositionerPositionSequence',\n x00189406: 'TablePositionSequence',\n x00189407: 'CollimatorShapeSequence',\n x00189412: 'XA-XRFFrameCharacteristicsSequence',\n x00189417: 'FrameAcquisitionSequence',\n x00189420: 'XRayReceptorType',\n x00189423: 'AcquisitionProtocolName',\n x00189424: 'AcquisitionProtocolDescription',\n x00189425: 'ContrastBolusIngredientOpaque',\n x00189426: 'DistanceReceptorPlaneToDetHousing',\n x00189427: 'IntensifierActiveShape',\n x00189428: 'IntensifierActiveDimensions',\n x00189429: 'PhysicalDetectorSize',\n x00189430: 'PositionOfIsocenterProjection',\n x00189432: 'FieldOfViewSequence',\n x00189433: 'FieldOfViewDescription',\n x00189434: 'ExposureControlSensingRegionsSeq',\n x00189435: 'ExposureControlSensingRegionShape',\n x00189436: 'ExposureControlSensRegionLeftEdge',\n x00189437: 'ExposureControlSensRegionRightEdge',\n x00189440: 'CenterOfCircExposControlSensRegion',\n x00189441: 'RadiusOfCircExposControlSensRegion',\n x00189447: 'ColumnAngulationPatient',\n x00189449: 'BeamAngle',\n x00189451: 'FrameDetectorParametersSequence',\n x00189452: 'CalculatedAnatomyThickness',\n x00189455: 'CalibrationSequence',\n x00189456: 'ObjectThicknessSequence',\n x00189457: 'PlaneIdentification',\n x00189461: 'FieldOfViewDimensionsInFloat',\n x00189462: 'IsocenterReferenceSystemSequence',\n x00189463: 'PositionerIsocenterPrimaryAngle',\n x00189464: 'PositionerIsocenterSecondaryAngle',\n x00189465: 'PositionerIsocenterDetRotAngle',\n x00189466: 'TableXPositionToIsocenter',\n x00189467: 'TableYPositionToIsocenter',\n x00189468: 'TableZPositionToIsocenter',\n x00189469: 'TableHorizontalRotationAngle',\n x00189470: 'TableHeadTiltAngle',\n x00189471: 'TableCradleTiltAngle',\n x00189472: 'FrameDisplayShutterSequence',\n x00189473: 'AcquiredImageAreaDoseProduct',\n x00189474: 'CArmPositionerTabletopRelationship',\n x00189476: 'XRayGeometrySequence',\n x00189477: 'IrradiationEventIDSequence',\n x00189504: 'XRay3DFrameTypeSequence',\n x00189506: 'ContributingSourcesSequence',\n x00189507: 'XRay3DAcquisitionSequence',\n x00189508: 'PrimaryPositionerScanArc',\n x00189509: 'SecondaryPositionerScanArc',\n x00189510: 'PrimaryPositionerScanStartAngle',\n x00189511: 'SecondaryPositionerScanStartAngle',\n x00189514: 'PrimaryPositionerIncrement',\n x00189515: 'SecondaryPositionerIncrement',\n x00189516: 'StartAcquisitionDateTime',\n x00189517: 'EndAcquisitionDateTime',\n x00189524: 'ApplicationName',\n x00189525: 'ApplicationVersion',\n x00189526: 'ApplicationManufacturer',\n x00189527: 'AlgorithmType',\n x00189528: 'AlgorithmDescription',\n x00189530: 'XRay3DReconstructionSequence',\n x00189531: 'ReconstructionDescription',\n x00189538: 'PerProjectionAcquisitionSequence',\n x00189601: 'DiffusionBMatrixSequence',\n x00189602: 'DiffusionBValueXX',\n x00189603: 'DiffusionBValueXY',\n x00189604: 'DiffusionBValueXZ',\n x00189605: 'DiffusionBValueYY',\n x00189606: 'DiffusionBValueYZ',\n x00189607: 'DiffusionBValueZZ',\n x00189701: 'DecayCorrectionDateTime',\n x00189715: 'StartDensityThreshold',\n x00189722: 'TerminationTimeThreshold',\n x00189725: 'DetectorGeometry',\n x00189727: 'AxialDetectorDimension',\n x00189735: 'PETPositionSequence',\n x00189739: 'NumberOfIterations',\n x00189740: 'NumberOfSubsets',\n x00189751: 'PETFrameTypeSequence',\n x00189756: 'ReconstructionType',\n x00189758: 'DecayCorrected',\n x00189759: 'AttenuationCorrected',\n x00189760: 'ScatterCorrected',\n x00189761: 'DeadTimeCorrected',\n x00189762: 'GantryMotionCorrected',\n x00189763: 'PatientMotionCorrected',\n x00189765: 'RandomsCorrected',\n x00189767: 'SensitivityCalibrated',\n x00189801: 'DepthsOfFocus',\n x00189804: 'ExclusionStartDatetime',\n x00189805: 'ExclusionDuration',\n x00189807: 'ImageDataTypeSequence',\n x00189808: 'DataType',\n x0018980b: 'AliasedDataType',\n x0018a001: 'ContributingEquipmentSequence',\n x0018a002: 'ContributionDateTime',\n x0018a003: 'ContributionDescription',\n // x00191002: 'NumberOfCellsIInDetector',\n // x00191003: 'CellNumberAtTheta',\n // x00191004: 'CellSpacing',\n // x0019100f: 'HorizFrameOfRef',\n // x00191011: 'SeriesContrast',\n // x00191012: 'LastPseq',\n // x00191013: 'StartNumberForBaseline',\n // x00191014: 'EndNumberForBaseline',\n // x00191015: 'StartNumberForEnhancedScans',\n // x00191016: 'EndNumberForEnhancedScans',\n // x00191017: 'SeriesPlane',\n // x00191018: 'FirstScanRas',\n // x00191019: 'FirstScanLocation',\n // x0019101a: 'LastScanRas',\n // x0019101b: 'LastScanLoc',\n // x0019101e: 'DisplayFieldOfView',\n // x00191023: 'TableSpeed',\n // x00191024: 'MidScanTime',\n // x00191025: 'MidScanFlag',\n // x00191026: 'DegreesOfAzimuth',\n // x00191027: 'GantryPeriod',\n // x0019102a: 'XRayOnPosition',\n // x0019102b: 'XRayOffPosition',\n // x0019102c: 'NumberOfTriggers',\n // x0019102e: 'AngleOfFirstView',\n // x0019102f: 'TriggerFrequency',\n // x00191039: 'ScanFOVType',\n // x00191040: 'StatReconFlag',\n // x00191041: 'ComputeType',\n // x00191042: 'SegmentNumber',\n // x00191043: 'TotalSegmentsRequested',\n // x00191044: 'InterscanDelay',\n // x00191047: 'ViewCompressionFactor',\n // x0019104a: 'TotalNoOfRefChannels',\n // x0019104b: 'DataSizeForScanData',\n // x00191052: 'ReconPostProcflag',\n // x00191057: 'CTWaterNumber',\n // x00191058: 'CTBoneNumber',\n // x0019105a: 'AcquisitionDuration',\n // x0019105e: 'NumberOfChannels',\n // x0019105f: 'IncrementBetweenChannels',\n // x00191060: 'StartingView',\n // x00191061: 'NumberOfViews',\n // x00191062: 'IncrementBetweenViews',\n // x0019106a: 'DependantOnNoViewsProcessed',\n // x0019106b: 'FieldOfViewInDetectorCells',\n // x00191070: 'ValueOfBackProjectionButton',\n // x00191071: 'SetIfFatqEstimatesWereUsed',\n // x00191072: 'ZChanAvgOverViews',\n // x00191073: 'AvgOfLeftRefChansOverViews',\n // x00191074: 'MaxLeftChanOverViews',\n // x00191075: 'AvgOfRightRefChansOverViews',\n // x00191076: 'MaxRightChanOverViews',\n // x0019107d: 'SecondEcho',\n // x0019107e: 'NumberOfEchoes',\n // x0019107f: 'TableDelta',\n // x00191081: 'Contiguous',\n // x00191084: 'PeakSAR',\n // x00191085: 'MonitorSAR',\n // x00191087: 'CardiacRepetitionTime',\n // x00191088: 'ImagesPerCardiacCycle',\n // x0019108a: 'ActualReceiveGainAnalog',\n // x0019108b: 'ActualReceiveGainDigital',\n // x0019108d: 'DelayAfterTrigger',\n // x0019108f: 'Swappf',\n // x00191090: 'PauseInterval',\n // x00191091: 'PulseTime',\n // x00191092: 'SliceOffsetOnFreqAxis',\n // x00191093: 'CenterFrequency',\n // x00191094: 'TransmitGain',\n // x00191095: 'AnalogReceiverGain',\n // x00191096: 'DigitalReceiverGain',\n // x00191097: 'BitmapDefiningCVs',\n // x00191098: 'CenterFreqMethod',\n // x0019109b: 'PulseSeqMode',\n // x0019109c: 'PulseSeqName',\n // x0019109d: 'PulseSeqDate',\n // x0019109e: 'InternalPulseSeqName',\n // x0019109f: 'TransmittingCoil',\n // x001910a0: 'SurfaceCoilType',\n // x001910a1: 'ExtremityCoilFlag',\n // x001910a2: 'RawDataRunNumber',\n // x001910a3: 'CalibratedFieldStrength',\n // x001910a4: 'SATFatWaterBone',\n // x001910a5: 'ReceiveBandwidth',\n // x001910a7: 'UserData01',\n // x001910a8: 'UserData02',\n // x001910a9: 'UserData03',\n // x001910aa: 'UserData04',\n // x001910ab: 'UserData05',\n // x001910ac: 'UserData06',\n // x001910ad: 'UserData07',\n // x001910ae: 'UserData08',\n // x001910af: 'UserData09',\n // x001910b0: 'UserData10',\n // x001910b1: 'UserData11',\n // x001910b2: 'UserData12',\n // x001910b3: 'UserData13',\n // x001910b4: 'UserData14',\n // x001910b5: 'UserData15',\n // x001910b6: 'UserData16',\n // x001910b7: 'UserData17',\n // x001910b8: 'UserData18',\n // x001910b9: 'UserData19',\n // x001910ba: 'UserData20',\n // x001910bb: 'UserData21',\n // x001910bc: 'UserData22',\n // x001910bd: 'UserData23',\n // x001910be: 'ProjectionAngle',\n // x001910c0: 'SaturationPlanes',\n // x001910c1: 'SurfaceCoilIntensity',\n // x001910c2: 'SATLocationR',\n // x001910c3: 'SATLocationL',\n // x001910c4: 'SATLocationA',\n // x001910c5: 'SATLocationP',\n // x001910c6: 'SATLocationH',\n // x001910c7: 'SATLocationF',\n // x001910c8: 'SATThicknessR-L',\n // x001910c9: 'SATThicknessA-P',\n // x001910ca: 'SATThicknessH-F',\n // x001910cb: 'PrescribedFlowAxis',\n // x001910cc: 'VelocityEncoding',\n // x001910cd: 'ThicknessDisclaimer',\n // x001910ce: 'PrescanType',\n // x001910cf: 'PrescanStatus',\n // x001910d0: 'RawDataType',\n // x001910d2: 'ProjectionAlgorithm',\n // x001910d3: 'ProjectionAlgorithm',\n // x001910d5: 'FractionalEcho',\n // x001910d6: 'PrepPulse',\n // x001910d7: 'CardiacPhases',\n // x001910d8: 'VariableEchoflag',\n // x001910d9: 'ConcatenatedSAT',\n // x001910da: 'ReferenceChannelUsed',\n // x001910db: 'BackProjectorCoefficient',\n // x001910dc: 'PrimarySpeedCorrectionUsed',\n // x001910dd: 'OverrangeCorrectionUsed',\n // x001910de: 'DynamicZAlphaValue',\n // x001910df: 'UserData',\n // x001910e0: 'UserData',\n // x001910e2: 'VelocityEncodeScale',\n // x001910f2: 'FastPhases',\n // x001910f9: 'TransmissionGain',\n x00200000: 'RelationshipGroupLength',\n x0020000d: 'StudyInstanceUID',\n x0020000e: 'SeriesInstanceUID',\n x00200010: 'StudyID',\n x00200011: 'SeriesNumber',\n x00200012: 'AcquisitionNumber',\n x00200013: 'InstanceNumber',\n x00200014: 'IsotopeNumber',\n x00200015: 'PhaseNumber',\n x00200016: 'IntervalNumber',\n x00200017: 'TimeSlotNumber',\n x00200018: 'AngleNumber',\n x00200019: 'ItemNumber',\n x00200020: 'PatientOrientation',\n x00200022: 'OverlayNumber',\n x00200024: 'CurveNumber',\n x00200026: 'LookupTableNumber',\n x00200030: 'ImagePosition',\n x00200032: 'ImagePositionPatient',\n x00200035: 'ImageOrientation',\n x00200037: 'ImageOrientationPatient',\n x00200050: 'Location',\n x00200052: 'FrameOfReferenceUID',\n x00200060: 'Laterality',\n x00200062: 'ImageLaterality',\n x00200070: 'ImageGeometryType',\n x00200080: 'MaskingImage',\n x00200100: 'TemporalPositionIdentifier',\n x00200105: 'NumberOfTemporalPositions',\n x00200110: 'TemporalResolution',\n x00200200: 'SynchronizationFrameOfReferenceUID',\n x00201000: 'SeriesInStudy',\n x00201001: 'AcquisitionsInSeries',\n x00201002: 'ImagesInAcquisition',\n x00201003: 'ImagesInSeries',\n x00201004: 'AcquisitionsInStudy',\n x00201005: 'ImagesInStudy',\n x00201020: 'Reference',\n x00201040: 'PositionReferenceIndicator',\n x00201041: 'SliceLocation',\n x00201070: 'OtherStudyNumbers',\n x00201200: 'NumberOfPatientRelatedStudies',\n x00201202: 'NumberOfPatientRelatedSeries',\n x00201204: 'NumberOfPatientRelatedInstances',\n x00201206: 'NumberOfStudyRelatedSeries',\n x00201208: 'NumberOfStudyRelatedInstances',\n x00201209: 'NumberOfSeriesRelatedInstances',\n x002031xx: 'SourceImageIDs',\n x00203401: 'ModifyingDeviceID',\n x00203402: 'ModifiedImageID',\n x00203403: 'ModifiedImageDate',\n x00203404: 'ModifyingDeviceManufacturer',\n x00203405: 'ModifiedImageTime',\n x00203406: 'ModifiedImageDescription',\n x00204000: 'ImageComments',\n x00205000: 'OriginalImageIdentification',\n x00205002: 'OriginalImageIdentNomenclature',\n x00209056: 'StackID',\n x00209057: 'InStackPositionNumber',\n x00209071: 'FrameAnatomySequence',\n x00209072: 'FrameLaterality',\n x00209111: 'FrameContentSequence',\n x00209113: 'PlanePositionSequence',\n x00209116: 'PlaneOrientationSequence',\n x00209128: 'TemporalPositionIndex',\n x00209153: 'TriggerDelayTime',\n x00209156: 'FrameAcquisitionNumber',\n x00209157: 'DimensionIndexValues',\n x00209158: 'FrameComments',\n x00209161: 'ConcatenationUID',\n x00209162: 'InConcatenationNumber',\n x00209163: 'InConcatenationTotalNumber',\n x00209164: 'DimensionOrganizationUID',\n x00209165: 'DimensionIndexPointer',\n x00209167: 'FunctionalGroupPointer',\n x00209213: 'DimensionIndexPrivateCreator',\n x00209221: 'DimensionOrganizationSequence',\n x00209222: 'DimensionIndexSequence',\n x00209228: 'ConcatenationFrameOffsetNumber',\n x00209238: 'FunctionalGroupPrivateCreator',\n x00209241: 'NominalPercentageOfCardiacPhase',\n x00209245: 'NominalPercentOfRespiratoryPhase',\n x00209246: 'StartingRespiratoryAmplitude',\n x00209247: 'StartingRespiratoryPhase',\n x00209248: 'EndingRespiratoryAmplitude',\n x00209249: 'EndingRespiratoryPhase',\n x00209250: 'RespiratoryTriggerType',\n x00209251: 'RRIntervalTimeNominal',\n x00209252: 'ActualCardiacTriggerDelayTime',\n x00209253: 'RespiratorySynchronizationSequence',\n x00209254: 'RespiratoryIntervalTime',\n x00209255: 'NominalRespiratoryTriggerDelayTime',\n x00209256: 'RespiratoryTriggerDelayThreshold',\n x00209257: 'ActualRespiratoryTriggerDelayTime',\n x00209301: 'ImagePositionVolume',\n x00209302: 'ImageOrientationVolume',\n x00209308: 'ApexPosition',\n x00209421: 'DimensionDescriptionLabel',\n x00209450: 'PatientOrientationInFrameSequence',\n x00209453: 'FrameLabel',\n x00209518: 'AcquisitionIndex',\n x00209529: 'ContributingSOPInstancesRefSeq',\n x00209536: 'ReconstructionIndex',\n // x00211003: 'SeriesFromWhichPrescribed',\n // x00211005: 'GenesisVersionNow',\n // x00211007: 'SeriesRecordChecksum',\n // x00211018: 'GenesisVersionNow',\n // x00211019: 'AcqreconRecordChecksum',\n // x00211020: 'TableStartLocation',\n // x00211035: 'SeriesFromWhichPrescribed',\n // x00211036: 'ImageFromWhichPrescribed',\n // x00211037: 'ScreenFormat',\n // x0021104a: 'AnatomicalReferenceForScout',\n // x0021104f: 'LocationsInAcquisition',\n // x00211050: 'GraphicallyPrescribed',\n // x00211051: 'RotationFromSourceXRot',\n // x00211052: 'RotationFromSourceYRot',\n // x00211053: 'RotationFromSourceZRot',\n // x00211054: 'ImagePosition',\n // x00211055: 'ImageOrientation',\n // x00211056: 'IntegerSlop',\n // x00211057: 'IntegerSlop',\n // x00211058: 'IntegerSlop',\n // x00211059: 'IntegerSlop',\n // x0021105a: 'IntegerSlop',\n // x0021105b: 'FloatSlop',\n // x0021105c: 'FloatSlop',\n // x0021105d: 'FloatSlop',\n // x0021105e: 'FloatSlop',\n // x0021105f: 'FloatSlop',\n // x00211081: 'AutoWindowLevelAlpha',\n // x00211082: 'AutoWindowLevelBeta',\n // x00211083: 'AutoWindowLevelWindow',\n // x00211084: 'ToWindowLevelLevel',\n // x00211090: 'TubeFocalSpotPosition',\n // x00211091: 'BiopsyPosition',\n // x00211092: 'BiopsyTLocation',\n // x00211093: 'BiopsyRefLocation',\n x00220001: 'LightPathFilterPassThroughWavelen',\n x00220002: 'LightPathFilterPassBand',\n x00220003: 'ImagePathFilterPassThroughWavelen',\n x00220004: 'ImagePathFilterPassBand',\n x00220005: 'PatientEyeMovementCommanded',\n x00220006: 'PatientEyeMovementCommandCodeSeq',\n x00220007: 'SphericalLensPower',\n x00220008: 'CylinderLensPower',\n x00220009: 'CylinderAxis',\n x0022000a: 'EmmetropicMagnification',\n x0022000b: 'IntraOcularPressure',\n x0022000c: 'HorizontalFieldOfView',\n x0022000d: 'PupilDilated',\n x0022000e: 'DegreeOfDilation',\n x00220010: 'StereoBaselineAngle',\n x00220011: 'StereoBaselineDisplacement',\n x00220012: 'StereoHorizontalPixelOffset',\n x00220013: 'StereoVerticalPixelOffset',\n x00220014: 'StereoRotation',\n x00220015: 'AcquisitionDeviceTypeCodeSequence',\n x00220016: 'IlluminationTypeCodeSequence',\n x00220017: 'LightPathFilterTypeStackCodeSeq',\n x00220018: 'ImagePathFilterTypeStackCodeSeq',\n x00220019: 'LensesCodeSequence',\n x0022001a: 'ChannelDescriptionCodeSequence',\n x0022001b: 'RefractiveStateSequence',\n x0022001c: 'MydriaticAgentCodeSequence',\n x0022001d: 'RelativeImagePositionCodeSequence',\n x00220020: 'StereoPairsSequence',\n x00220021: 'LeftImageSequence',\n x00220022: 'RightImageSequence',\n x00220030: 'AxialLengthOfTheEye',\n x00220031: 'OphthalmicFrameLocationSequence',\n x00220032: 'ReferenceCoordinates',\n x00220035: 'DepthSpatialResolution',\n x00220036: 'MaximumDepthDistortion',\n x00220037: 'AlongScanSpatialResolution',\n x00220038: 'MaximumAlongScanDistortion',\n x00220039: 'OphthalmicImageOrientation',\n x00220041: 'DepthOfTransverseImage',\n x00220042: 'MydriaticAgentConcUnitsSeq',\n x00220048: 'AcrossScanSpatialResolution',\n x00220049: 'MaximumAcrossScanDistortion',\n x0022004e: 'MydriaticAgentConcentration',\n x00220055: 'IlluminationWaveLength',\n x00220056: 'IlluminationPower',\n x00220057: 'IlluminationBandwidth',\n x00220058: 'MydriaticAgentSequence',\n // x00231001: 'NumberOfSeriesInStudy',\n // x00231002: 'NumberOfUnarchivedSeries',\n // x00231010: 'ReferenceImageField',\n // x00231050: 'SummaryImage',\n // x00231070: 'StartTimeSecsInFirstAxial',\n // x00231074: 'NoofUpdatesToHeader',\n // x0023107d: 'IndicatesIfTheStudyHasCompleteInfo',\n // x00251006: 'LastPulseSequenceUsed',\n // x00251007: 'ImagesInSeries',\n // x00251010: 'LandmarkCounter',\n // x00251011: 'NumberOfAcquisitions',\n // x00251014: 'IndicatesNoofUpdatesToHeader',\n // x00251017: 'SeriesCompleteFlag',\n // x00251018: 'NumberOfImagesArchived',\n // x00251019: 'LastImageNumberUsed',\n // x0025101a: 'PrimaryReceiverSuiteAndHost',\n // x00271006: 'ImageArchiveFlag',\n // x00271010: 'ScoutType',\n // x0027101c: 'VmaMamp',\n // x0027101d: 'VmaPhase',\n // x0027101e: 'VmaMod',\n // x0027101f: 'VmaClip',\n // x00271020: 'SmartScanOnOffFlag',\n // x00271030: 'ForeignImageRevision',\n // x00271031: 'ImagingMode',\n // x00271032: 'PulseSequence',\n // x00271033: 'ImagingOptions',\n // x00271035: 'PlaneType',\n // x00271036: 'ObliquePlane',\n // x00271040: 'RASLetterOfImageLocation',\n // x00271041: 'ImageLocation',\n // x00271042: 'CenterRCoordOfPlaneImage',\n // x00271043: 'CenterACoordOfPlaneImage',\n // x00271044: 'CenterSCoordOfPlaneImage',\n // x00271045: 'NormalRCoord',\n // x00271046: 'NormalACoord',\n // x00271047: 'NormalSCoord',\n // x00271048: 'RCoordOfTopRightCorner',\n // x00271049: 'ACoordOfTopRightCorner',\n // x0027104a: 'SCoordOfTopRightCorner',\n // x0027104b: 'RCoordOfBottomRightCorner',\n // x0027104c: 'ACoordOfBottomRightCorner',\n // x0027104d: 'SCoordOfBottomRightCorner',\n // x00271050: 'TableStartLocation',\n // x00271051: 'TableEndLocation',\n // x00271052: 'RASLetterForSideOfImage',\n // x00271053: 'RASLetterForAnteriorPosterior',\n // x00271054: 'RASLetterForScoutStartLoc',\n // x00271055: 'RASLetterForScoutEndLoc',\n // x00271060: 'ImageDimensionX',\n // x00271061: 'ImageDimensionY',\n // x00271062: 'NumberOfExcitations',\n x00280000: 'ImagePresentationGroupLength',\n x00280002: 'SamplesPerPixel',\n x00280003: 'SamplesPerPixelUsed',\n x00280004: 'PhotometricInterpretation',\n x00280005: 'ImageDimensions',\n x00280006: 'PlanarConfiguration',\n x00280008: 'NumberOfFrames',\n x00280009: 'FrameIncrementPointer',\n x0028000a: 'FrameDimensionPointer',\n x00280010: 'Rows',\n x00280011: 'Columns',\n x00280012: 'Planes',\n x00280014: 'UltrasoundColorDataPresent',\n x00280030: 'PixelSpacing',\n x00280031: 'ZoomFactor',\n x00280032: 'ZoomCenter',\n x00280034: 'PixelAspectRatio',\n x00280040: 'ImageFormat',\n x00280050: 'ManipulatedImage',\n x00280051: 'CorrectedImage',\n x0028005f: 'CompressionRecognitionCode',\n x00280060: 'CompressionCode',\n x00280061: 'CompressionOriginator',\n x00280062: 'CompressionLabel',\n x00280063: 'CompressionDescription',\n x00280065: 'CompressionSequence',\n x00280066: 'CompressionStepPointers',\n x00280068: 'RepeatInterval',\n x00280069: 'BitsGrouped',\n x00280070: 'PerimeterTable',\n x00280071: 'PerimeterValue',\n x00280080: 'PredictorRows',\n x00280081: 'PredictorColumns',\n x00280082: 'PredictorConstants',\n x00280090: 'BlockedPixels',\n x00280091: 'BlockRows',\n x00280092: 'BlockColumns',\n x00280093: 'RowOverlap',\n x00280094: 'ColumnOverlap',\n x00280100: 'BitsAllocated',\n x00280101: 'BitsStored',\n x00280102: 'HighBit',\n x00280103: 'PixelRepresentation',\n x00280104: 'SmallestValidPixelValue',\n x00280105: 'LargestValidPixelValue',\n x00280106: 'SmallestImagePixelValue',\n x00280107: 'LargestImagePixelValue',\n x00280108: 'SmallestPixelValueInSeries',\n x00280109: 'LargestPixelValueInSeries',\n x00280110: 'SmallestImagePixelValueInPlane',\n x00280111: 'LargestImagePixelValueInPlane',\n x00280120: 'PixelPaddingValue',\n x00280121: 'PixelPaddingRangeLimit',\n x00280200: 'ImageLocation',\n x00280300: 'QualityControlImage',\n x00280301: 'BurnedInAnnotation',\n x00280400: 'TransformLabel',\n x00280401: 'TransformVersionNumber',\n x00280402: 'NumberOfTransformSteps',\n x00280403: 'SequenceOfCompressedData',\n x00280404: 'DetailsOfCoefficients',\n x002804x2: 'CoefficientCoding',\n x002804x3: 'CoefficientCodingPointers',\n x00280700: 'DCTLabel',\n x00280701: 'DataBlockDescription',\n x00280702: 'DataBlock',\n x00280710: 'NormalizationFactorFormat',\n x00280720: 'ZonalMapNumberFormat',\n x00280721: 'ZonalMapLocation',\n x00280722: 'ZonalMapFormat',\n x00280730: 'AdaptiveMapFormat',\n x00280740: 'CodeNumberFormat',\n x002808x0: 'CodeLabel',\n x002808x2: 'NumberOfTables',\n x002808x3: 'CodeTableLocation',\n x002808x4: 'BitsForCodeWord',\n x002808x8: 'ImageDataLocation',\n x00280a02: 'PixelSpacingCalibrationType',\n x00280a04: 'PixelSpacingCalibrationDescription',\n x00281040: 'PixelIntensityRelationship',\n x00281041: 'PixelIntensityRelationshipSign',\n x00281050: 'WindowCenter',\n x00281051: 'WindowWidth',\n x00281052: 'RescaleIntercept',\n x00281053: 'RescaleSlope',\n x00281054: 'RescaleType',\n x00281055: 'WindowCenterAndWidthExplanation',\n x00281056: 'VOI_LUTFunction',\n x00281080: 'GrayScale',\n x00281090: 'RecommendedViewingMode',\n x00281100: 'GrayLookupTableDescriptor',\n x00281101: 'RedPaletteColorTableDescriptor',\n x00281102: 'GreenPaletteColorTableDescriptor',\n x00281103: 'BluePaletteColorTableDescriptor',\n x00281111: 'LargeRedPaletteColorTableDescr',\n x00281112: 'LargeGreenPaletteColorTableDescr',\n x00281113: 'LargeBluePaletteColorTableDescr',\n x00281199: 'PaletteColorTableUID',\n x00281200: 'GrayLookupTableData',\n x00281201: 'RedPaletteColorTableData',\n x00281202: 'GreenPaletteColorTableData',\n x00281203: 'BluePaletteColorTableData',\n x00281211: 'LargeRedPaletteColorTableData',\n x00281212: 'LargeGreenPaletteColorTableData',\n x00281213: 'LargeBluePaletteColorTableData',\n x00281214: 'LargePaletteColorLookupTableUID',\n x00281221: 'SegmentedRedColorTableData',\n x00281222: 'SegmentedGreenColorTableData',\n x00281223: 'SegmentedBlueColorTableData',\n x00281300: 'BreastImplantPresent',\n x00281350: 'PartialView',\n x00281351: 'PartialViewDescription',\n x00281352: 'PartialViewCodeSequence',\n x0028135a: 'SpatialLocationsPreserved',\n x00281402: 'DataPathAssignment',\n x00281404: 'BlendingLUT1Sequence',\n x00281406: 'BlendingWeightConstant',\n x00281408: 'BlendingLookupTableData',\n x0028140c: 'BlendingLUT2Sequence',\n x0028140e: 'DataPathID',\n x0028140f: 'RGBLUTTransferFunction',\n x00281410: 'AlphaLUTTransferFunction',\n x00282000: 'ICCProfile',\n x00282110: 'LossyImageCompression',\n x00282112: 'LossyImageCompressionRatio',\n x00282114: 'LossyImageCompressionMethod',\n x00283000: 'ModalityLUTSequence',\n x00283002: 'LUTDescriptor',\n x00283003: 'LUTExplanation',\n x00283004: 'ModalityLUTType',\n x00283006: 'LUTData',\n x00283010: 'VOILUTSequence',\n x00283110: 'SoftcopyVOILUTSequence',\n x00284000: 'ImagePresentationComments',\n x00285000: 'BiPlaneAcquisitionSequence',\n x00286010: 'RepresentativeFrameNumber',\n x00286020: 'FrameNumbersOfInterest',\n x00286022: 'FrameOfInterestDescription',\n x00286023: 'FrameOfInterestType',\n x00286030: 'MaskPointers',\n x00286040: 'RWavePointer',\n x00286100: 'MaskSubtractionSequence',\n x00286101: 'MaskOperation',\n x00286102: 'ApplicableFrameRange',\n x00286110: 'MaskFrameNumbers',\n x00286112: 'ContrastFrameAveraging',\n x00286114: 'MaskSubPixelShift',\n x00286120: 'TIDOffset',\n x00286190: 'MaskOperationExplanation',\n x00287fe0: 'PixelDataProviderURL',\n x00289001: 'DataPointRows',\n x00289002: 'DataPointColumns',\n x00289003: 'SignalDomainColumns',\n x00289099: 'LargestMonochromePixelValue',\n x00289108: 'DataRepresentation',\n x00289110: 'PixelMeasuresSequence',\n x00289132: 'FrameVOILUTSequence',\n x00289145: 'PixelValueTransformationSequence',\n x00289235: 'SignalDomainRows',\n x00289411: 'DisplayFilterPercentage',\n x00289415: 'FramePixelShiftSequence',\n x00289416: 'SubtractionItemID',\n x00289422: 'PixelIntensityRelationshipLUTSeq',\n x00289443: 'FramePixelDataPropertiesSequence',\n x00289444: 'GeometricalProperties',\n x00289445: 'GeometricMaximumDistortion',\n x00289446: 'ImageProcessingApplied',\n x00289454: 'MaskSelectionMode',\n x00289474: 'LUTFunction',\n x00289478: 'MaskVisibilityPercentage',\n x00289501: 'PixelShiftSequence',\n x00289502: 'RegionPixelShiftSequence',\n x00289503: 'VerticesOfTheRegion',\n x00289506: 'PixelShiftFrameRange',\n x00289507: 'LUTFrameRange',\n x00289520: 'ImageToEquipmentMappingMatrix',\n x00289537: 'EquipmentCoordinateSystemID',\n // x00291004: 'LowerRangeOfPixels1a',\n // x00291005: 'LowerRangeOfPixels1b',\n // x00291006: 'LowerRangeOfPixels1c',\n // x00291007: 'LowerRangeOfPixels1d',\n // x00291008: 'LowerRangeOfPixels1e',\n // x00291009: 'LowerRangeOfPixels1f',\n // x0029100a: 'LowerRangeOfPixels1g',\n // x00291015: 'LowerRangeOfPixels1h',\n // x00291016: 'LowerRangeOfPixels1i',\n // x00291017: 'LowerRangeOfPixels2',\n // x00291018: 'UpperRangeOfPixels2',\n // x0029101a: 'LenOfTotHdrInBytes',\n // x00291026: 'VersionOfTheHdrStruct',\n // x00291034: 'AdvantageCompOverflow',\n // x00291035: 'AdvantageCompUnderflow',\n x00320000: 'StudyGroupLength',\n x0032000a: 'StudyStatusID',\n x0032000c: 'StudyPriorityID',\n x00320012: 'StudyIDIssuer',\n x00320032: 'StudyVerifiedDate',\n x00320033: 'StudyVerifiedTime',\n x00320034: 'StudyReadDate',\n x00320035: 'StudyReadTime',\n x00321000: 'ScheduledStudyStartDate',\n x00321001: 'ScheduledStudyStartTime',\n x00321010: 'ScheduledStudyStopDate',\n x00321011: 'ScheduledStudyStopTime',\n x00321020: 'ScheduledStudyLocation',\n x00321021: 'ScheduledStudyLocationAETitle',\n x00321030: 'ReasonForStudy',\n x00321031: 'RequestingPhysicianIDSequence',\n x00321032: 'RequestingPhysician',\n x00321033: 'RequestingService',\n x00321040: 'StudyArrivalDate',\n x00321041: 'StudyArrivalTime',\n x00321050: 'StudyCompletionDate',\n x00321051: 'StudyCompletionTime',\n x00321055: 'StudyComponentStatusID',\n x00321060: 'RequestedProcedureDescription',\n x00321064: 'RequestedProcedureCodeSequence',\n x00321070: 'RequestedContrastAgent',\n x00324000: 'StudyComments',\n x00380004: 'ReferencedPatientAliasSequence',\n x00380008: 'VisitStatusID',\n x00380010: 'AdmissionID',\n x00380011: 'IssuerOfAdmissionID',\n x00380016: 'RouteOfAdmissions',\n x0038001a: 'ScheduledAdmissionDate',\n x0038001b: 'ScheduledAdmissionTime',\n x0038001c: 'ScheduledDischargeDate',\n x0038001d: 'ScheduledDischargeTime',\n x0038001e: 'ScheduledPatientInstitResidence',\n x00380020: 'AdmittingDate',\n x00380021: 'AdmittingTime',\n x00380030: 'DischargeDate',\n x00380032: 'DischargeTime',\n x00380040: 'DischargeDiagnosisDescription',\n x00380044: 'DischargeDiagnosisCodeSequence',\n x00380050: 'SpecialNeeds',\n x00380060: 'ServiceEpisodeID',\n x00380061: 'IssuerOfServiceEpisodeID',\n x00380062: 'ServiceEpisodeDescription',\n x00380100: 'PertinentDocumentsSequence',\n x00380300: 'CurrentPatientLocation',\n x00380400: 'PatientInstitutionResidence',\n x00380500: 'PatientState',\n x00380502: 'PatientClinicalTrialParticipSeq',\n x00384000: 'VisitComments',\n x003a0004: 'WaveformOriginality',\n x003a0005: 'NumberOfWaveformChannels',\n x003a0010: 'NumberOfWaveformSamples',\n x003a001a: 'SamplingFrequency',\n x003a0020: 'MultiplexGroupLabel',\n x003a0200: 'ChannelDefinitionSequence',\n x003a0202: 'WaveformChannelNumber',\n x003a0203: 'ChannelLabel',\n x003a0205: 'ChannelStatus',\n x003a0208: 'ChannelSourceSequence',\n x003a0209: 'ChannelSourceModifiersSequence',\n x003a020a: 'SourceWaveformSequence',\n x003a020c: 'ChannelDerivationDescription',\n x003a0210: 'ChannelSensitivity',\n x003a0211: 'ChannelSensitivityUnitsSequence',\n x003a0212: 'ChannelSensitivityCorrectionFactor',\n x003a0213: 'ChannelBaseline',\n x003a0214: 'ChannelTimeSkew',\n x003a0215: 'ChannelSampleSkew',\n x003a0218: 'ChannelOffset',\n x003a021a: 'WaveformBitsStored',\n x003a0220: 'FilterLowFrequency',\n x003a0221: 'FilterHighFrequency',\n x003a0222: 'NotchFilterFrequency',\n x003a0223: 'NotchFilterBandwidth',\n x003a0230: 'WaveformDataDisplayScale',\n x003a0231: 'WaveformDisplayBkgCIELabValue',\n x003a0240: 'WaveformPresentationGroupSequence',\n x003a0241: 'PresentationGroupNumber',\n x003a0242: 'ChannelDisplaySequence',\n x003a0244: 'ChannelRecommendDisplayCIELabValue',\n x003a0245: 'ChannelPosition',\n x003a0246: 'DisplayShadingFlag',\n x003a0247: 'FractionalChannelDisplayScale',\n x003a0248: 'AbsoluteChannelDisplayScale',\n x003a0300: 'MultiplexAudioChannelsDescrCodeSeq',\n x003a0301: 'ChannelIdentificationCode',\n x003a0302: 'ChannelMode',\n x00400001: 'ScheduledStationAETitle',\n x00400002: 'ScheduledProcedureStepStartDate',\n x00400003: 'ScheduledProcedureStepStartTime',\n x00400004: 'ScheduledProcedureStepEndDate',\n x00400005: 'ScheduledProcedureStepEndTime',\n x00400006: 'ScheduledPerformingPhysiciansName',\n x00400007: 'ScheduledProcedureStepDescription',\n x00400008: 'ScheduledProtocolCodeSequence',\n x00400009: 'ScheduledProcedureStepID',\n x0040000a: 'StageCodeSequence',\n x0040000b: 'ScheduledPerformingPhysicianIDSeq',\n x00400010: 'ScheduledStationName',\n x00400011: 'ScheduledProcedureStepLocation',\n x00400012: 'PreMedication',\n x00400020: 'ScheduledProcedureStepStatus',\n x00400031: 'LocalNamespaceEntityID',\n x00400032: 'UniversalEntityID',\n x00400033: 'UniversalEntityIDType',\n x00400035: 'IdentifierTypeCode',\n x00400036: 'AssigningFacilitySequence',\n x00400100: 'ScheduledProcedureStepSequence',\n x00400220: 'ReferencedNonImageCompositeSOPSeq',\n x00400241: 'PerformedStationAETitle',\n x00400242: 'PerformedStationName',\n x00400243: 'PerformedLocation',\n x00400244: 'PerformedProcedureStepStartDate',\n x00400245: 'PerformedProcedureStepStartTime',\n x00400250: 'PerformedProcedureStepEndDate',\n x00400251: 'PerformedProcedureStepEndTime',\n x00400252: 'PerformedProcedureStepStatus',\n x00400253: 'PerformedProcedureStepID',\n x00400254: 'PerformedProcedureStepDescription',\n x00400255: 'PerformedProcedureTypeDescription',\n x00400260: 'PerformedProtocolCodeSequence',\n x00400261: 'PerformedProtocolType',\n x00400270: 'ScheduledStepAttributesSequence',\n x00400275: 'RequestAttributesSequence',\n x00400280: 'CommentsOnPerformedProcedureStep',\n x00400281: 'ProcStepDiscontinueReasonCodeSeq',\n x00400293: 'QuantitySequence',\n x00400294: 'Quantity',\n x00400295: 'MeasuringUnitsSequence',\n x00400296: 'BillingItemSequence',\n x00400300: 'TotalTimeOfFluoroscopy',\n x00400301: 'TotalNumberOfExposures',\n x00400302: 'EntranceDose',\n x00400303: 'ExposedArea',\n x00400306: 'DistanceSourceToEntrance',\n x00400307: 'DistanceSourceToSupport',\n x0040030e: 'ExposureDoseSequence',\n x00400310: 'CommentsOnRadiationDose',\n x00400312: 'XRayOutput',\n x00400314: 'HalfValueLayer',\n x00400316: 'OrganDose',\n x00400318: 'OrganExposed',\n x00400320: 'BillingProcedureStepSequence',\n x00400321: 'FilmConsumptionSequence',\n x00400324: 'BillingSuppliesAndDevicesSequence',\n x00400330: 'ReferencedProcedureStepSequence',\n x00400340: 'PerformedSeriesSequence',\n x00400400: 'CommentsOnScheduledProcedureStep',\n x00400440: 'ProtocolContextSequence',\n x00400441: 'ContentItemModifierSequence',\n x0040050a: 'SpecimenAccessionNumber',\n x00400512: 'ContainerIdentifier',\n x0040051a: 'ContainerDescription',\n x00400550: 'SpecimenSequence',\n x00400551: 'SpecimenIdentifier',\n x00400552: 'SpecimenDescriptionSequenceTrial',\n x00400553: 'SpecimenDescriptionTrial',\n x00400554: 'SpecimenUID',\n x00400555: 'AcquisitionContextSequence',\n x00400556: 'AcquisitionContextDescription',\n x0040059a: 'SpecimenTypeCodeSequence',\n x00400600: 'SpecimenShortDescription',\n x004006fa: 'SlideIdentifier',\n x0040071a: 'ImageCenterPointCoordinatesSeq',\n x0040072a: 'XOffsetInSlideCoordinateSystem',\n x0040073a: 'YOffsetInSlideCoordinateSystem',\n x0040074a: 'ZOffsetInSlideCoordinateSystem',\n x004008d8: 'PixelSpacingSequence',\n x004008da: 'CoordinateSystemAxisCodeSequence',\n x004008ea: 'MeasurementUnitsCodeSequence',\n x004009f8: 'VitalStainCodeSequenceTrial',\n x00401001: 'RequestedProcedureID',\n x00401002: 'ReasonForRequestedProcedure',\n x00401003: 'RequestedProcedurePriority',\n x00401004: 'PatientTransportArrangements',\n x00401005: 'RequestedProcedureLocation',\n x00401006: 'PlacerOrderNumber-Procedure',\n x00401007: 'FillerOrderNumber-Procedure',\n x00401008: 'ConfidentialityCode',\n x00401009: 'ReportingPriority',\n x0040100a: 'ReasonForRequestedProcedureCodeSeq',\n x00401010: 'NamesOfIntendedRecipientsOfResults',\n x00401011: 'IntendedRecipientsOfResultsIDSeq',\n x00401101: 'PersonIdentificationCodeSequence',\n x00401102: 'PersonAddress',\n x00401103: 'PersonTelephoneNumbers',\n x00401400: 'RequestedProcedureComments',\n x00402001: 'ReasonForImagingServiceRequest',\n x00402004: 'IssueDateOfImagingServiceRequest',\n x00402005: 'IssueTimeOfImagingServiceRequest',\n x00402006: 'PlacerOrderNumberImagingServiceRequestRetired',\n x00402007: 'FillerOrderNumberImagingServiceRequestRetired',\n x00402008: 'OrderEnteredBy',\n x00402009: 'OrderEntererLocation',\n x00402010: 'OrderCallbackPhoneNumber',\n x00402016: 'PlacerOrderNum-ImagingServiceReq',\n x00402017: 'FillerOrderNum-ImagingServiceReq',\n x00402400: 'ImagingServiceRequestComments',\n x00403001: 'ConfidentialityOnPatientDataDescr',\n x00404001: 'GenPurposeScheduledProcStepStatus',\n x00404002: 'GenPurposePerformedProcStepStatus',\n x00404003: 'GenPurposeSchedProcStepPriority',\n x00404004: 'SchedProcessingApplicationsCodeSeq',\n x00404005: 'SchedProcedureStepStartDateAndTime',\n x00404006: 'MultipleCopiesFlag',\n x00404007: 'PerformedProcessingAppsCodeSeq',\n x00404009: 'HumanPerformerCodeSequence',\n x00404010: 'SchedProcStepModificationDateTime',\n x00404011: 'ExpectedCompletionDateAndTime',\n x00404015: 'ResultingGenPurposePerfProcStepSeq',\n x00404016: 'RefGenPurposeSchedProcStepSeq',\n x00404018: 'ScheduledWorkitemCodeSequence',\n x00404019: 'PerformedWorkitemCodeSequence',\n x00404020: 'InputAvailabilityFlag',\n x00404021: 'InputInformationSequence',\n x00404022: 'RelevantInformationSequence',\n x00404023: 'RefGenPurSchedProcStepTransUID',\n x00404025: 'ScheduledStationNameCodeSequence',\n x00404026: 'ScheduledStationClassCodeSequence',\n x00404027: 'SchedStationGeographicLocCodeSeq',\n x00404028: 'PerformedStationNameCodeSequence',\n x00404029: 'PerformedStationClassCodeSequence',\n x00404030: 'PerformedStationGeogLocCodeSeq',\n x00404031: 'RequestedSubsequentWorkItemCodeSeq',\n x00404032: 'NonDICOMOutputCodeSequence',\n x00404033: 'OutputInformationSequence',\n x00404034: 'ScheduledHumanPerformersSequence',\n x00404035: 'ActualHumanPerformersSequence',\n x00404036: 'HumanPerformersOrganization',\n x00404037: 'HumanPerformerName',\n x00404040: 'RawDataHandling',\n x00408302: 'EntranceDoseInMilliGy',\n x00409094: 'RefImageRealWorldValueMappingSeq',\n x00409096: 'RealWorldValueMappingSequence',\n x00409098: 'PixelValueMappingCodeSequence',\n x00409210: 'LUTLabel',\n x00409211: 'RealWorldValueLastValueMapped',\n x00409212: 'RealWorldValueLUTData',\n x00409216: 'RealWorldValueFirstValueMapped',\n x00409224: 'RealWorldValueIntercept',\n x00409225: 'RealWorldValueSlope',\n x0040a010: 'RelationshipType',\n x0040a027: 'VerifyingOrganization',\n x0040a030: 'VerificationDateTime',\n x0040a032: 'ObservationDateTime',\n x0040a040: 'ValueType',\n x0040a043: 'ConceptNameCodeSequence',\n x0040a050: 'ContinuityOfContent',\n x0040a073: 'VerifyingObserverSequence',\n x0040a075: 'VerifyingObserverName',\n x0040a078: 'AuthorObserverSequence',\n x0040a07a: 'ParticipantSequence',\n x0040a07c: 'CustodialOrganizationSequence',\n x0040a080: 'ParticipationType',\n x0040a082: 'ParticipationDateTime',\n x0040a084: 'ObserverType',\n x0040a088: 'VerifyingObserverIdentCodeSequence',\n x0040a090: 'EquivalentCDADocumentSequence',\n x0040a0b0: 'ReferencedWaveformChannels',\n x0040a120: 'DateTime',\n x0040a121: 'Date',\n x0040a122: 'Time',\n x0040a123: 'PersonName',\n x0040a124: 'UID',\n x0040a130: 'TemporalRangeType',\n x0040a132: 'ReferencedSamplePositions',\n x0040a136: 'ReferencedFrameNumbers',\n x0040a138: 'ReferencedTimeOffsets',\n x0040a13a: 'ReferencedDateTime',\n x0040a160: 'TextValue',\n x0040a168: 'ConceptCodeSequence',\n x0040a170: 'PurposeOfReferenceCodeSequence',\n x0040a180: 'AnnotationGroupNumber',\n x0040a195: 'ModifierCodeSequence',\n x0040a300: 'MeasuredValueSequence',\n x0040a301: 'NumericValueQualifierCodeSequence',\n x0040a30a: 'NumericValue',\n x0040a353: 'AddressTrial',\n x0040a354: 'TelephoneNumberTrial',\n x0040a360: 'PredecessorDocumentsSequence',\n x0040a370: 'ReferencedRequestSequence',\n x0040a372: 'PerformedProcedureCodeSequence',\n x0040a375: 'CurrentRequestedProcEvidenceSeq',\n x0040a385: 'PertinentOtherEvidenceSequence',\n x0040a390: 'HL7StructuredDocumentRefSeq',\n x0040a491: 'CompletionFlag',\n x0040a492: 'CompletionFlagDescription',\n x0040a493: 'VerificationFlag',\n x0040a494: 'ArchiveRequested',\n x0040a496: 'PreliminaryFlag',\n x0040a504: 'ContentTemplateSequence',\n x0040a525: 'IdenticalDocumentsSequence',\n x0040a730: 'ContentSequence',\n x0040b020: 'AnnotationSequence',\n x0040db00: 'TemplateIdentifier',\n x0040db06: 'TemplateVersion',\n x0040db07: 'TemplateLocalVersion',\n x0040db0b: 'TemplateExtensionFlag',\n x0040db0c: 'TemplateExtensionOrganizationUID',\n x0040db0d: 'TemplateExtensionCreatorUID',\n x0040db73: 'ReferencedContentItemIdentifier',\n x0040e001: 'HL7InstanceIdentifier',\n x0040e004: 'HL7DocumentEffectiveTime',\n x0040e006: 'HL7DocumentTypeCodeSequence',\n x0040e010: 'RetrieveURI',\n x0040e011: 'RetrieveLocationUID',\n x00420010: 'DocumentTitle',\n x00420011: 'EncapsulatedDocument',\n x00420012: 'MIMETypeOfEncapsulatedDocument',\n x00420013: 'SourceInstanceSequence',\n x00420014: 'ListOfMIMETypes',\n // x00431001: 'BitmapOfPrescanOptions',\n // x00431002: 'GradientOffsetInX',\n // x00431003: 'GradientOffsetInY',\n // x00431004: 'GradientOffsetInZ',\n // x00431005: 'ImgIsOriginalOrUnoriginal',\n // x00431006: 'NumberOfEPIShots',\n // x00431007: 'ViewsPerSegment',\n // x00431008: 'RespiratoryRateBpm',\n // x00431009: 'RespiratoryTriggerPoint',\n // x0043100a: 'TypeOfReceiverUsed',\n // x0043100b: 'PeakRateOfChangeOfGradientField',\n // x0043100c: 'LimitsInUnitsOfPercent',\n // x0043100d: 'PSDEstimatedLimit',\n // x0043100e: 'PSDEstimatedLimitInTeslaPerSecond',\n // x0043100f: 'Saravghead',\n // x00431010: 'WindowValue',\n // x00431011: 'TotalInputViews',\n // x00431012: 'X-RayChain',\n // x00431013: 'DeconKernelParameters',\n // x00431014: 'CalibrationParameters',\n // x00431015: 'TotalOutputViews',\n // x00431016: 'NumberOfOverranges',\n // x00431017: 'IBHImageScaleFactors',\n // x00431018: 'BBHCoefficients',\n // x00431019: 'NumberOfBBHChainsToBlend',\n // x0043101a: 'StartingChannelNumber',\n // x0043101b: 'PpscanParameters',\n // x0043101c: 'GEImageIntegrity',\n // x0043101d: 'LevelValue',\n // x0043101e: 'DeltaStartTime',\n // x0043101f: 'MaxOverrangesInAView',\n // x00431020: 'AvgOverrangesAllViews',\n // x00431021: 'CorrectedAfterGlowTerms',\n // x00431025: 'ReferenceChannels',\n // x00431026: 'NoViewsRefChansBlocked',\n // x00431027: 'ScanPitchRatio',\n // x00431028: 'UniqueImageIden',\n // x00431029: 'HistogramTables',\n // x0043102a: 'UserDefinedData',\n // x0043102b: 'PrivateScanOptions',\n // x0043102c: 'EffectiveEchoSpacing',\n // x0043102d: 'StringSlopField1',\n // x0043102e: 'StringSlopField2',\n // x0043102f: 'RawDataType',\n // x00431030: 'RawDataType',\n // x00431031: 'RACordOfTargetReconCenter',\n // x00431032: 'RawDataType',\n // x00431033: 'NegScanspacing',\n // x00431034: 'OffsetFrequency',\n // x00431035: 'UserUsageTag',\n // x00431036: 'UserFillMapMSW',\n // x00431037: 'UserFillMapLSW',\n // x00431038: 'User25-48',\n // x00431039: 'SlopInt6-9',\n // x00431040: 'TriggerOnPosition',\n // x00431041: 'DegreeOfRotation',\n // x00431042: 'DASTriggerSource',\n // x00431043: 'DASFpaGain',\n // x00431044: 'DASOutputSource',\n // x00431045: 'DASAdInput',\n // x00431046: 'DASCalMode',\n // x00431047: 'DASCalFrequency',\n // x00431048: 'DASRegXm',\n // x00431049: 'DASAutoZero',\n // x0043104a: 'StartingChannelOfView',\n // x0043104b: 'DASXmPattern',\n // x0043104c: 'TGGCTriggerMode',\n // x0043104d: 'StartScanToXrayOnDelay',\n // x0043104e: 'DurationOfXrayOn',\n // x00431060: 'SlopInt10-17',\n // x00431061: 'ScannerStudyEntityUID',\n // x00431062: 'ScannerStudyID',\n // x0043106f: 'ScannerTableEntry',\n x00440001: 'ProductPackageIdentifier',\n x00440002: 'SubstanceAdministrationApproval',\n x00440003: 'ApprovalStatusFurtherDescription',\n x00440004: 'ApprovalStatusDateTime',\n x00440007: 'ProductTypeCodeSequence',\n x00440008: 'ProductName',\n x00440009: 'ProductDescription',\n x0044000a: 'ProductLotIdentifier',\n x0044000b: 'ProductExpirationDateTime',\n x00440010: 'SubstanceAdministrationDateTime',\n x00440011: 'SubstanceAdministrationNotes',\n x00440012: 'SubstanceAdministrationDeviceID',\n x00440013: 'ProductParameterSequence',\n x00440019: 'SubstanceAdminParameterSeq',\n // x00451001: 'NumberOfMacroRowsInDetector',\n // x00451002: 'MacroWidthAtISOCenter',\n // x00451003: 'DASType',\n // x00451004: 'DASGain',\n // x00451005: 'DASTemperature',\n // x00451006: 'TableDirectionInOrOut',\n // x00451007: 'ZSmoothingFactor',\n // x00451008: 'ViewWeightingMode',\n // x00451009: 'SigmaRowNumberWhichRowsWereUsed',\n // x0045100a: 'MinimumDasValueFoundInTheScanData',\n // x0045100b: 'MaximumOffsetShiftValueUsed',\n // x0045100c: 'NumberOfViewsShifted',\n // x0045100d: 'ZTrackingFlag',\n // x0045100e: 'MeanZError',\n // x0045100f: 'ZTrackingMaximumError',\n // x00451010: 'StartingViewForRow2a',\n // x00451011: 'NumberOfViewsInRow2a',\n // x00451012: 'StartingViewForRow1a',\n // x00451013: 'SigmaMode',\n // x00451014: 'NumberOfViewsInRow1a',\n // x00451015: 'StartingViewForRow2b',\n // x00451016: 'NumberOfViewsInRow2b',\n // x00451017: 'StartingViewForRow1b',\n // x00451018: 'NumberOfViewsInRow1b',\n // x00451019: 'AirFilterCalibrationDate',\n // x0045101a: 'AirFilterCalibrationTime',\n // x0045101b: 'PhantomCalibrationDate',\n // x0045101c: 'PhantomCalibrationTime',\n // x0045101d: 'ZSlopeCalibrationDate',\n // x0045101e: 'ZSlopeCalibrationTime',\n // x0045101f: 'CrosstalkCalibrationDate',\n // x00451020: 'CrosstalkCalibrationTime',\n // x00451021: 'IterboneOptionFlag',\n // x00451022: 'PeristalticFlagOption',\n x00460012: 'LensDescription',\n x00460014: 'RightLensSequence',\n x00460015: 'LeftLensSequence',\n x00460018: 'CylinderSequence',\n x00460028: 'PrismSequence',\n x00460030: 'HorizontalPrismPower',\n x00460032: 'HorizontalPrismBase',\n x00460034: 'VerticalPrismPower',\n x00460036: 'VerticalPrismBase',\n x00460038: 'LensSegmentType',\n x00460040: 'OpticalTransmittance',\n x00460042: 'ChannelWidth',\n x00460044: 'PupilSize',\n x00460046: 'CornealSize',\n x00460060: 'DistancePupillaryDistance',\n x00460062: 'NearPupillaryDistance',\n x00460064: 'OtherPupillaryDistance',\n x00460075: 'RadiusOfCurvature',\n x00460076: 'KeratometricPower',\n x00460077: 'KeratometricAxis',\n x00460092: 'BackgroundColor',\n x00460094: 'Optotype',\n x00460095: 'OptotypePresentation',\n x00460100: 'AddNearSequence',\n x00460101: 'AddIntermediateSequence',\n x00460102: 'AddOtherSequence',\n x00460104: 'AddPower',\n x00460106: 'ViewingDistance',\n x00460125: 'ViewingDistanceType',\n x00460135: 'VisualAcuityModifiers',\n x00460137: 'DecimalVisualAcuity',\n x00460139: 'OptotypeDetailedDefinition',\n x00460146: 'SpherePower',\n x00460147: 'CylinderPower',\n x00500004: 'CalibrationImage',\n x00500010: 'DeviceSequence',\n x00500014: 'DeviceLength',\n x00500015: 'ContainerComponentWidth',\n x00500016: 'DeviceDiameter',\n x00500017: 'DeviceDiameterUnits',\n x00500018: 'DeviceVolume',\n x00500019: 'InterMarkerDistance',\n x0050001b: 'ContainerComponentID',\n x00500020: 'DeviceDescription',\n x00540010: 'EnergyWindowVector',\n x00540011: 'NumberOfEnergyWindows',\n x00540012: 'EnergyWindowInformationSequence',\n x00540013: 'EnergyWindowRangeSequence',\n x00540014: 'EnergyWindowLowerLimit',\n x00540015: 'EnergyWindowUpperLimit',\n x00540016: 'RadiopharmaceuticalInformationSeq',\n x00540017: 'ResidualSyringeCounts',\n x00540018: 'EnergyWindowName',\n x00540020: 'DetectorVector',\n x00540021: 'NumberOfDetectors',\n x00540022: 'DetectorInformationSequence',\n x00540030: 'PhaseVector',\n x00540031: 'NumberOfPhases',\n x00540032: 'PhaseInformationSequence',\n x00540033: 'NumberOfFramesInPhase',\n x00540036: 'PhaseDelay',\n x00540038: 'PauseBetweenFrames',\n x00540039: 'PhaseDescription',\n x00540050: 'RotationVector',\n x00540051: 'NumberOfRotations',\n x00540052: 'RotationInformationSequence',\n x00540053: 'NumberOfFramesInRotation',\n x00540060: 'RRIntervalVector',\n x00540061: 'NumberOfRRIntervals',\n x00540062: 'GatedInformationSequence',\n x00540063: 'DataInformationSequence',\n x00540070: 'TimeSlotVector',\n x00540071: 'NumberOfTimeSlots',\n x00540072: 'TimeSlotInformationSequence',\n x00540073: 'TimeSlotTime',\n x00540080: 'SliceVector',\n x00540081: 'NumberOfSlices',\n x00540090: 'AngularViewVector',\n x00540100: 'TimeSliceVector',\n x00540101: 'NumberOfTimeSlices',\n x00540200: 'StartAngle',\n x00540202: 'TypeOfDetectorMotion',\n x00540210: 'TriggerVector',\n x00540211: 'NumberOfTriggersInPhase',\n x00540220: 'ViewCodeSequence',\n x00540222: 'ViewModifierCodeSequence',\n x00540300: 'RadionuclideCodeSequence',\n x00540302: 'AdministrationRouteCodeSequence',\n x00540304: 'RadiopharmaceuticalCodeSequence',\n x00540306: 'CalibrationDataSequence',\n x00540308: 'EnergyWindowNumber',\n x00540400: 'ImageID',\n x00540410: 'PatientOrientationCodeSequence',\n x00540412: 'PatientOrientationModifierCodeSeq',\n x00540414: 'PatientGantryRelationshipCodeSeq',\n x00540500: 'SliceProgressionDirection',\n x00541000: 'SeriesType',\n x00541001: 'Units',\n x00541002: 'CountsSource',\n x00541004: 'ReprojectionMethod',\n x00541100: 'RandomsCorrectionMethod',\n x00541101: 'AttenuationCorrectionMethod',\n x00541102: 'DecayCorrection',\n x00541103: 'ReconstructionMethod',\n x00541104: 'DetectorLinesOfResponseUsed',\n x00541105: 'ScatterCorrectionMethod',\n x00541200: 'AxialAcceptance',\n x00541201: 'AxialMash',\n x00541202: 'TransverseMash',\n x00541203: 'DetectorElementSize',\n x00541210: 'CoincidenceWindowWidth',\n x00541220: 'SecondaryCountsType',\n x00541300: 'FrameReferenceTime',\n x00541310: 'PrimaryCountsAccumulated',\n x00541311: 'SecondaryCountsAccumulated',\n x00541320: 'SliceSensitivityFactor',\n x00541321: 'DecayFactor',\n x00541322: 'DoseCalibrationFactor',\n x00541323: 'ScatterFractionFactor',\n x00541324: 'DeadTimeFactor',\n x00541330: 'ImageIndex',\n x00541400: 'CountsIncluded',\n x00541401: 'DeadTimeCorrectionFlag',\n x00603000: 'HistogramSequence',\n x00603002: 'HistogramNumberOfBins',\n x00603004: 'HistogramFirstBinValue',\n x00603006: 'HistogramLastBinValue',\n x00603008: 'HistogramBinWidth',\n x00603010: 'HistogramExplanation',\n x00603020: 'HistogramData',\n x00620001: 'SegmentationType',\n x00620002: 'SegmentSequence',\n x00620003: 'SegmentedPropertyCategoryCodeSeq',\n x00620004: 'SegmentNumber',\n x00620005: 'SegmentLabel',\n x00620006: 'SegmentDescription',\n x00620008: 'SegmentAlgorithmType',\n x00620009: 'SegmentAlgorithmName',\n x0062000a: 'SegmentIdentificationSequence',\n x0062000b: 'ReferencedSegmentNumber',\n x0062000c: 'RecommendedDisplayGrayscaleValue',\n x0062000d: 'RecommendedDisplayCIELabValue',\n x0062000e: 'MaximumFractionalValue',\n x0062000f: 'SegmentedPropertyTypeCodeSequence',\n x00620010: 'SegmentationFractionalType',\n x00640002: 'DeformableRegistrationSequence',\n x00640003: 'SourceFrameOfReferenceUID',\n x00640005: 'DeformableRegistrationGridSequence',\n x00640007: 'GridDimensions',\n x00640008: 'GridResolution',\n x00640009: 'VectorGridData',\n x0064000f: 'PreDeformationMatrixRegistSeq',\n x00640010: 'PostDeformationMatrixRegistSeq',\n x00660001: 'NumberOfSurfaces',\n x00660002: 'SurfaceSequence',\n x00660003: 'SurfaceNumber',\n x00660004: 'SurfaceComments',\n x00660009: 'SurfaceProcessing',\n x0066000a: 'SurfaceProcessingRatio',\n x0066000e: 'FiniteVolume',\n x00660010: 'Manifold',\n x00660011: 'SurfacePointsSequence',\n x00660015: 'NumberOfSurfacePoints',\n x00660016: 'PointCoordinatesData',\n x00660017: 'PointPositionAccuracy',\n x00660018: 'MeanPointDistance',\n x00660019: 'MaximumPointDistance',\n x0066001b: 'AxisOfRotation',\n x0066001c: 'CenterOfRotation',\n x0066001e: 'NumberOfVectors',\n x0066001f: 'VectorDimensionality',\n x00660020: 'VectorAccuracy',\n x00660021: 'VectorCoordinateData',\n x00660023: 'TrianglePointIndexList',\n x00660024: 'EdgePointIndexList',\n x00660025: 'VertexPointIndexList',\n x00660026: 'TriangleStripSequence',\n x00660027: 'TriangleFanSequence',\n x00660028: 'LineSequence',\n x00660029: 'PrimitivePointIndexList',\n x0066002a: 'SurfaceCount',\n x0066002f: 'AlgorithmFamilyCodeSequ',\n x00660031: 'AlgorithmVersion',\n x00660032: 'AlgorithmParameters',\n x00660034: 'FacetSequence',\n x00660036: 'AlgorithmName',\n x00700001: 'GraphicAnnotationSequence',\n x00700002: 'GraphicLayer',\n x00700003: 'BoundingBoxAnnotationUnits',\n x00700004: 'AnchorPointAnnotationUnits',\n x00700005: 'GraphicAnnotationUnits',\n x00700006: 'UnformattedTextValue',\n x00700008: 'TextObjectSequence',\n x00700009: 'GraphicObjectSequence',\n x00700010: 'BoundingBoxTopLeftHandCorner',\n x00700011: 'BoundingBoxBottomRightHandCorner',\n x00700012: 'BoundingBoxTextHorizJustification',\n x00700014: 'AnchorPoint',\n x00700015: 'AnchorPointVisibility',\n x00700020: 'GraphicDimensions',\n x00700021: 'NumberOfGraphicPoints',\n x00700022: 'GraphicData',\n x00700023: 'GraphicType',\n x00700024: 'GraphicFilled',\n x00700040: 'ImageRotationRetired',\n x00700041: 'ImageHorizontalFlip',\n x00700042: 'ImageRotation',\n x00700050: 'DisplayedAreaTopLeftTrial',\n x00700051: 'DisplayedAreaBottomRightTrial',\n x00700052: 'DisplayedAreaTopLeft',\n x00700053: 'DisplayedAreaBottomRight',\n x0070005a: 'DisplayedAreaSelectionSequence',\n x00700060: 'GraphicLayerSequence',\n x00700062: 'GraphicLayerOrder',\n x00700066: 'GraphicLayerRecDisplayGraysclValue',\n x00700067: 'GraphicLayerRecDisplayRGBValue',\n x00700068: 'GraphicLayerDescription',\n x00700080: 'ContentLabel',\n x00700081: 'ContentDescription',\n x00700082: 'PresentationCreationDate',\n x00700083: 'PresentationCreationTime',\n x00700084: 'ContentCreatorName',\n x00700086: 'ContentCreatorIDCodeSequence',\n x00700100: 'PresentationSizeMode',\n x00700101: 'PresentationPixelSpacing',\n x00700102: 'PresentationPixelAspectRatio',\n x00700103: 'PresentationPixelMagRatio',\n x00700306: 'ShapeType',\n x00700308: 'RegistrationSequence',\n x00700309: 'MatrixRegistrationSequence',\n x0070030a: 'MatrixSequence',\n x0070030c: 'FrameOfRefTransformationMatrixType',\n x0070030d: 'RegistrationTypeCodeSequence',\n x0070030f: 'FiducialDescription',\n x00700310: 'FiducialIdentifier',\n x00700311: 'FiducialIdentifierCodeSequence',\n x00700312: 'ContourUncertaintyRadius',\n x00700314: 'UsedFiducialsSequence',\n x00700318: 'GraphicCoordinatesDataSequence',\n x0070031a: 'FiducialUID',\n x0070031c: 'FiducialSetSequence',\n x0070031e: 'FiducialSequence',\n x00700401: 'GraphicLayerRecomDisplayCIELabVal',\n x00700402: 'BlendingSequence',\n x00700403: 'RelativeOpacity',\n x00700404: 'ReferencedSpatialRegistrationSeq',\n x00700405: 'BlendingPosition',\n x00720002: 'HangingProtocolName',\n x00720004: 'HangingProtocolDescription',\n x00720006: 'HangingProtocolLevel',\n x00720008: 'HangingProtocolCreator',\n x0072000a: 'HangingProtocolCreationDateTime',\n x0072000c: 'HangingProtocolDefinitionSequence',\n x0072000e: 'HangingProtocolUserIDCodeSequence',\n x00720010: 'HangingProtocolUserGroupName',\n x00720012: 'SourceHangingProtocolSequence',\n x00720014: 'NumberOfPriorsReferenced',\n x00720020: 'ImageSetsSequence',\n x00720022: 'ImageSetSelectorSequence',\n x00720024: 'ImageSetSelectorUsageFlag',\n x00720026: 'SelectorAttribute',\n x00720028: 'SelectorValueNumber',\n x00720030: 'TimeBasedImageSetsSequence',\n x00720032: 'ImageSetNumber',\n x00720034: 'ImageSetSelectorCategory',\n x00720038: 'RelativeTime',\n x0072003a: 'RelativeTimeUnits',\n x0072003c: 'AbstractPriorValue',\n x0072003e: 'AbstractPriorCodeSequence',\n x00720040: 'ImageSetLabel',\n x00720050: 'SelectorAttributeVR',\n x00720052: 'SelectorSequencePointer',\n x00720054: 'SelectorSeqPointerPrivateCreator',\n x00720056: 'SelectorAttributePrivateCreator',\n x00720060: 'SelectorATValue',\n x00720062: 'SelectorCSValue',\n x00720064: 'SelectorISValue',\n x00720066: 'SelectorLOValue',\n x00720068: 'SelectorLTValue',\n x0072006a: 'SelectorPNValue',\n x0072006c: 'SelectorSHValue',\n x0072006e: 'SelectorSTValue',\n x00720070: 'SelectorUTValue',\n x00720072: 'SelectorDSValue',\n x00720074: 'SelectorFDValue',\n x00720076: 'SelectorFLValue',\n x00720078: 'SelectorULValue',\n x0072007a: 'SelectorUSValue',\n x0072007c: 'SelectorSLValue',\n x0072007e: 'SelectorSSValue',\n x00720080: 'SelectorCodeSequenceValue',\n x00720100: 'NumberOfScreens',\n x00720102: 'NominalScreenDefinitionSequence',\n x00720104: 'NumberOfVerticalPixels',\n x00720106: 'NumberOfHorizontalPixels',\n x00720108: 'DisplayEnvironmentSpatialPosition',\n x0072010a: 'ScreenMinimumGrayscaleBitDepth',\n x0072010c: 'ScreenMinimumColorBitDepth',\n x0072010e: 'ApplicationMaximumRepaintTime',\n x00720200: 'DisplaySetsSequence',\n x00720202: 'DisplaySetNumber',\n x00720203: 'DisplaySetLabel',\n x00720204: 'DisplaySetPresentationGroup',\n x00720206: 'DisplaySetPresentationGroupDescr',\n x00720208: 'PartialDataDisplayHandling',\n x00720210: 'SynchronizedScrollingSequence',\n x00720212: 'DisplaySetScrollingGroup',\n x00720214: 'NavigationIndicatorSequence',\n x00720216: 'NavigationDisplaySet',\n x00720218: 'ReferenceDisplaySets',\n x00720300: 'ImageBoxesSequence',\n x00720302: 'ImageBoxNumber',\n x00720304: 'ImageBoxLayoutType',\n x00720306: 'ImageBoxTileHorizontalDimension',\n x00720308: 'ImageBoxTileVerticalDimension',\n x00720310: 'ImageBoxScrollDirection',\n x00720312: 'ImageBoxSmallScrollType',\n x00720314: 'ImageBoxSmallScrollAmount',\n x00720316: 'ImageBoxLargeScrollType',\n x00720318: 'ImageBoxLargeScrollAmount',\n x00720320: 'ImageBoxOverlapPriority',\n x00720330: 'CineRelativeToRealTime',\n x00720400: 'FilterOperationsSequence',\n x00720402: 'FilterByCategory',\n x00720404: 'FilterByAttributePresence',\n x00720406: 'FilterByOperator',\n x00720432: 'SynchronizedImageBoxList',\n x00720434: 'TypeOfSynchronization',\n x00720500: 'BlendingOperationType',\n x00720510: 'ReformattingOperationType',\n x00720512: 'ReformattingThickness',\n x00720514: 'ReformattingInterval',\n x00720516: 'ReformattingOpInitialViewDir',\n x00720520: 'RenderingType3D',\n x00720600: 'SortingOperationsSequence',\n x00720602: 'SortByCategory',\n x00720604: 'SortingDirection',\n x00720700: 'DisplaySetPatientOrientation',\n x00720702: 'VOIType',\n x00720704: 'PseudoColorType',\n x00720706: 'ShowGrayscaleInverted',\n x00720710: 'ShowImageTrueSizeFlag',\n x00720712: 'ShowGraphicAnnotationFlag',\n x00720714: 'ShowPatientDemographicsFlag',\n x00720716: 'ShowAcquisitionTechniquesFlag',\n x00720717: 'DisplaySetHorizontalJustification',\n x00720718: 'DisplaySetVerticalJustification',\n x00741000: 'UnifiedProcedureStepState',\n x00741002: 'UPSProgressInformationSequence',\n x00741004: 'UnifiedProcedureStepProgress',\n x00741006: 'UnifiedProcedureStepProgressDescr',\n x00741008: 'UnifiedProcedureStepComURISeq',\n x0074100a: 'ContactURI',\n x0074100c: 'ContactDisplayName',\n x00741020: 'BeamTaskSequence',\n x00741022: 'BeamTaskType',\n x00741024: 'BeamOrderIndex',\n x00741030: 'DeliveryVerificationImageSequence',\n x00741032: 'VerificationImageTiming',\n x00741034: 'DoubleExposureFlag',\n x00741036: 'DoubleExposureOrdering',\n x00741038: 'DoubleExposureMeterset',\n x0074103a: 'DoubleExposureFieldDelta',\n x00741040: 'RelatedReferenceRTImageSequence',\n x00741042: 'GeneralMachineVerificationSequence',\n x00741044: 'ConventionalMachineVerificationSeq',\n x00741046: 'IonMachineVerificationSequence',\n x00741048: 'FailedAttributesSequence',\n x0074104a: 'OverriddenAttributesSequence',\n x0074104c: 'ConventionalControlPointVerifySeq',\n x0074104e: 'IonControlPointVerificationSeq',\n x00741050: 'AttributeOccurrenceSequence',\n x00741052: 'AttributeOccurrencePointer',\n x00741054: 'AttributeItemSelector',\n x00741056: 'AttributeOccurrencePrivateCreator',\n x00741200: 'ScheduledProcedureStepPriority',\n x00741202: 'StudyListLabel',\n x00741204: 'ProcedureStepLabel',\n x00741210: 'ScheduledProcessingParametersSeq',\n x00741212: 'PerformedProcessingParametersSeq',\n x00741216: 'UPSPerformedProcedureSequence',\n x00741220: 'RelatedProcedureStepSequence',\n x00741222: 'ProcedureStepRelationshipType',\n x00741230: 'DeletionLock',\n x00741234: 'ReceivingAE',\n x00741236: 'RequestingAE',\n x00741238: 'ReasonForCancellation',\n x00741242: 'SCPStatus',\n x00741244: 'SubscriptionListStatus',\n x00741246: 'UPSListStatus',\n x00880130: 'StorageMediaFileSetID',\n x00880140: 'StorageMediaFileSetUID',\n x00880200: 'IconImageSequence',\n x00880904: 'TopicTitle',\n x00880906: 'TopicSubject',\n x00880910: 'TopicAuthor',\n x00880912: 'TopicKeywords',\n x01000410: 'SOPInstanceStatus',\n x01000420: 'SOPAuthorizationDateAndTime',\n x01000424: 'SOPAuthorizationComment',\n x01000426: 'AuthorizationEquipmentCertNumber',\n x04000005: 'MACIDNumber',\n x04000010: 'MACCalculationTransferSyntaxUID',\n x04000015: 'MACAlgorithm',\n x04000020: 'DataElementsSigned',\n x04000100: 'DigitalSignatureUID',\n x04000105: 'DigitalSignatureDateTime',\n x04000110: 'CertificateType',\n x04000115: 'CertificateOfSigner',\n x04000120: 'Signature',\n x04000305: 'CertifiedTimestampType',\n x04000310: 'CertifiedTimestamp',\n x04000401: 'DigitalSignaturePurposeCodeSeq',\n x04000402: 'ReferencedDigitalSignatureSeq',\n x04000403: 'ReferencedSOPInstanceMACSeq',\n x04000404: 'MAC',\n x04000500: 'EncryptedAttributesSequence',\n x04000510: 'EncryptedContentTransferSyntaxUID',\n x04000520: 'EncryptedContent',\n x04000550: 'ModifiedAttributesSequence',\n x04000561: 'OriginalAttributesSequence',\n x04000562: 'AttributeModificationDateTime',\n x04000563: 'ModifyingSystem',\n x04000564: 'SourceOfPreviousValues',\n x04000565: 'ReasonForTheAttributeModification',\n x1000xxx0: 'EscapeTriplet',\n x1000xxx1: 'RunLengthTriplet',\n x1000xxx2: 'HuffmanTableSize',\n x1000xxx3: 'HuffmanTableTriplet',\n x1000xxx4: 'ShiftTableSize',\n x1000xxx5: 'ShiftTableTriplet',\n x1010xxxx: 'ZonalMap',\n x20000010: 'NumberOfCopies',\n x2000001e: 'PrinterConfigurationSequence',\n x20000020: 'PrintPriority',\n x20000030: 'MediumType',\n x20000040: 'FilmDestination',\n x20000050: 'FilmSessionLabel',\n x20000060: 'MemoryAllocation',\n x20000061: 'MaximumMemoryAllocation',\n x20000062: 'ColorImagePrintingFlag',\n x20000063: 'CollationFlag',\n x20000065: 'AnnotationFlag',\n x20000067: 'ImageOverlayFlag',\n x20000069: 'PresentationLUTFlag',\n x2000006a: 'ImageBoxPresentationLUTFlag',\n x200000a0: 'MemoryBitDepth',\n x200000a1: 'PrintingBitDepth',\n x200000a2: 'MediaInstalledSequence',\n x200000a4: 'OtherMediaAvailableSequence',\n x200000a8: 'SupportedImageDisplayFormatSeq',\n x20000500: 'ReferencedFilmBoxSequence',\n x20000510: 'ReferencedStoredPrintSequence',\n x20100010: 'ImageDisplayFormat',\n x20100030: 'AnnotationDisplayFormatID',\n x20100040: 'FilmOrientation',\n x20100050: 'FilmSizeID',\n x20100052: 'PrinterResolutionID',\n x20100054: 'DefaultPrinterResolutionID',\n x20100060: 'MagnificationType',\n x20100080: 'SmoothingType',\n x201000a6: 'DefaultMagnificationType',\n x201000a7: 'OtherMagnificationTypesAvailable',\n x201000a8: 'DefaultSmoothingType',\n x201000a9: 'OtherSmoothingTypesAvailable',\n x20100100: 'BorderDensity',\n x20100110: 'EmptyImageDensity',\n x20100120: 'MinDensity',\n x20100130: 'MaxDensity',\n x20100140: 'Trim',\n x20100150: 'ConfigurationInformation',\n x20100152: 'ConfigurationInformationDescr',\n x20100154: 'MaximumCollatedFilms',\n x2010015e: 'Illumination',\n x20100160: 'ReflectedAmbientLight',\n x20100376: 'PrinterPixelSpacing',\n x20100500: 'ReferencedFilmSessionSequence',\n x20100510: 'ReferencedImageBoxSequence',\n x20100520: 'ReferencedBasicAnnotationBoxSeq',\n x20200010: 'ImageBoxPosition',\n x20200020: 'Polarity',\n x20200030: 'RequestedImageSize',\n x20200040: 'RequestedDecimate-CropBehavior',\n x20200050: 'RequestedResolutionID',\n x202000a0: 'RequestedImageSizeFlag',\n x202000a2: 'DecimateCropResult',\n x20200110: 'BasicGrayscaleImageSequence',\n x20200111: 'BasicColorImageSequence',\n x20200130: 'ReferencedImageOverlayBoxSequence',\n x20200140: 'ReferencedVOILUTBoxSequence',\n x20300010: 'AnnotationPosition',\n x20300020: 'TextString',\n x20400010: 'ReferencedOverlayPlaneSequence',\n x20400011: 'ReferencedOverlayPlaneGroups',\n x20400020: 'OverlayPixelDataSequence',\n x20400060: 'OverlayMagnificationType',\n x20400070: 'OverlaySmoothingType',\n x20400072: 'OverlayOrImageMagnification',\n x20400074: 'MagnifyToNumberOfColumns',\n x20400080: 'OverlayForegroundDensity',\n x20400082: 'OverlayBackgroundDensity',\n x20400090: 'OverlayMode',\n x20400100: 'ThresholdDensity',\n x20400500: 'ReferencedImageBoxSequenceRetired',\n x20500010: 'PresentationLUTSequence',\n x20500020: 'PresentationLUTShape',\n x20500500: 'ReferencedPresentationLUTSequence',\n x21000010: 'PrintJobID',\n x21000020: 'ExecutionStatus',\n x21000030: 'ExecutionStatusInfo',\n x21000040: 'CreationDate',\n x21000050: 'CreationTime',\n x21000070: 'Originator',\n x21000140: 'DestinationAE',\n x21000160: 'OwnerID',\n x21000170: 'NumberOfFilms',\n x21000500: 'ReferencedPrintJobSequencePullStoredPrint',\n x21100010: 'PrinterStatus',\n x21100020: 'PrinterStatusInfo',\n x21100030: 'PrinterName',\n x21100099: 'PrintQueueID',\n x21200010: 'QueueStatus',\n x21200050: 'PrintJobDescriptionSequence',\n x21200070: 'ReferencedPrintJobSequence',\n x21300010: 'PrintManagementCapabilitiesSeq',\n x21300015: 'PrinterCharacteristicsSequence',\n x21300030: 'FilmBoxContentSequence',\n x21300040: 'ImageBoxContentSequence',\n x21300050: 'AnnotationContentSequence',\n x21300060: 'ImageOverlayBoxContentSequence',\n x21300080: 'PresentationLUTContentSequence',\n x213000a0: 'ProposedStudySequence',\n x213000c0: 'OriginalImageSequence',\n x22000001: 'LabelFromInfoExtractedFromInstance',\n x22000002: 'LabelText',\n x22000003: 'LabelStyleSelection',\n x22000004: 'MediaDisposition',\n x22000005: 'BarcodeValue',\n x22000006: 'BarcodeSymbology',\n x22000007: 'AllowMediaSplitting',\n x22000008: 'IncludeNonDICOMObjects',\n x22000009: 'IncludeDisplayApplication',\n x2200000a: 'SaveCompInstancesAfterMediaCreate',\n x2200000b: 'TotalNumberMediaPiecesCreated',\n x2200000c: 'RequestedMediaApplicationProfile',\n x2200000d: 'ReferencedStorageMediaSequence',\n x2200000e: 'FailureAttributes',\n x2200000f: 'AllowLossyCompression',\n x22000020: 'RequestPriority',\n x30020002: 'RTImageLabel',\n x30020003: 'RTImageName',\n x30020004: 'RTImageDescription',\n x3002000a: 'ReportedValuesOrigin',\n x3002000c: 'RTImagePlane',\n x3002000d: 'XRayImageReceptorTranslation',\n x3002000e: 'XRayImageReceptorAngle',\n x30020010: 'RTImageOrientation',\n x30020011: 'ImagePlanePixelSpacing',\n x30020012: 'RTImagePosition',\n x30020020: 'RadiationMachineName',\n x30020022: 'RadiationMachineSAD',\n x30020024: 'RadiationMachineSSD',\n x30020026: 'RTImageSID',\n x30020028: 'SourceToReferenceObjectDistance',\n x30020029: 'FractionNumber',\n x30020030: 'ExposureSequence',\n x30020032: 'MetersetExposure',\n x30020034: 'DiaphragmPosition',\n x30020040: 'FluenceMapSequence',\n x30020041: 'FluenceDataSource',\n x30020042: 'FluenceDataScale',\n x30020051: 'FluenceMode',\n x30020052: 'FluenceModeID',\n x30040001: 'DVHType',\n x30040002: 'DoseUnits',\n x30040004: 'DoseType',\n x30040006: 'DoseComment',\n x30040008: 'NormalizationPoint',\n x3004000a: 'DoseSummationType',\n x3004000c: 'GridFrameOffsetVector',\n x3004000e: 'DoseGridScaling',\n x30040010: 'RTDoseROISequence',\n x30040012: 'DoseValue',\n x30040014: 'TissueHeterogeneityCorrection',\n x30040040: 'DVHNormalizationPoint',\n x30040042: 'DVHNormalizationDoseValue',\n x30040050: 'DVHSequence',\n x30040052: 'DVHDoseScaling',\n x30040054: 'DVHVolumeUnits',\n x30040056: 'DVHNumberOfBins',\n x30040058: 'DVHData',\n x30040060: 'DVHReferencedROISequence',\n x30040062: 'DVHROIContributionType',\n x30040070: 'DVHMinimumDose',\n x30040072: 'DVHMaximumDose',\n x30040074: 'DVHMeanDose',\n x30060002: 'StructureSetLabel',\n x30060004: 'StructureSetName',\n x30060006: 'StructureSetDescription',\n x30060008: 'StructureSetDate',\n x30060009: 'StructureSetTime',\n x30060010: 'ReferencedFrameOfReferenceSequence',\n x30060012: 'RTReferencedStudySequence',\n x30060014: 'RTReferencedSeriesSequence',\n x30060016: 'ContourImageSequence',\n x30060020: 'StructureSetROISequence',\n x30060022: 'ROINumber',\n x30060024: 'ReferencedFrameOfReferenceUID',\n x30060026: 'ROIName',\n x30060028: 'ROIDescription',\n x3006002a: 'ROIDisplayColor',\n x3006002c: 'ROIVolume',\n x30060030: 'RTRelatedROISequence',\n x30060033: 'RTROIRelationship',\n x30060036: 'ROIGenerationAlgorithm',\n x30060038: 'ROIGenerationDescription',\n x30060039: 'ROIContourSequence',\n x30060040: 'ContourSequence',\n x30060042: 'ContourGeometricType',\n x30060044: 'ContourSlabThickness',\n x30060045: 'ContourOffsetVector',\n x30060046: 'NumberOfContourPoints',\n x30060048: 'ContourNumber',\n x30060049: 'AttachedContours',\n x30060050: 'ContourData',\n x30060080: 'RTROIObservationsSequence',\n x30060082: 'ObservationNumber',\n x30060084: 'ReferencedROINumber',\n x30060085: 'ROIObservationLabel',\n x30060086: 'RTROIIdentificationCodeSequence',\n x30060088: 'ROIObservationDescription',\n x300600a0: 'RelatedRTROIObservationsSequence',\n x300600a4: 'RTROIInterpretedType',\n x300600a6: 'ROIInterpreter',\n x300600b0: 'ROIPhysicalPropertiesSequence',\n x300600b2: 'ROIPhysicalProperty',\n x300600b4: 'ROIPhysicalPropertyValue',\n x300600b6: 'ROIElementalCompositionSequence',\n x300600b7: 'ROIElementalCompAtomicNumber',\n x300600b8: 'ROIElementalCompAtomicMassFraction',\n x300600c0: 'FrameOfReferenceRelationshipSeq',\n x300600c2: 'RelatedFrameOfReferenceUID',\n x300600c4: 'FrameOfReferenceTransformType',\n x300600c6: 'FrameOfReferenceTransformMatrix',\n x300600c8: 'FrameOfReferenceTransformComment',\n x30080010: 'MeasuredDoseReferenceSequence',\n x30080012: 'MeasuredDoseDescription',\n x30080014: 'MeasuredDoseType',\n x30080016: 'MeasuredDoseValue',\n x30080020: 'TreatmentSessionBeamSequence',\n x30080021: 'TreatmentSessionIonBeamSequence',\n x30080022: 'CurrentFractionNumber',\n x30080024: 'TreatmentControlPointDate',\n x30080025: 'TreatmentControlPointTime',\n x3008002a: 'TreatmentTerminationStatus',\n x3008002b: 'TreatmentTerminationCode',\n x3008002c: 'TreatmentVerificationStatus',\n x30080030: 'ReferencedTreatmentRecordSequence',\n x30080032: 'SpecifiedPrimaryMeterset',\n x30080033: 'SpecifiedSecondaryMeterset',\n x30080036: 'DeliveredPrimaryMeterset',\n x30080037: 'DeliveredSecondaryMeterset',\n x3008003a: 'SpecifiedTreatmentTime',\n x3008003b: 'DeliveredTreatmentTime',\n x30080040: 'ControlPointDeliverySequence',\n x30080041: 'IonControlPointDeliverySequence',\n x30080042: 'SpecifiedMeterset',\n x30080044: 'DeliveredMeterset',\n x30080045: 'MetersetRateSet',\n x30080046: 'MetersetRateDelivered',\n x30080047: 'ScanSpotMetersetsDelivered',\n x30080048: 'DoseRateDelivered',\n x30080050: 'TreatmentSummaryCalcDoseRefSeq',\n x30080052: 'CumulativeDoseToDoseReference',\n x30080054: 'FirstTreatmentDate',\n x30080056: 'MostRecentTreatmentDate',\n x3008005a: 'NumberOfFractionsDelivered',\n x30080060: 'OverrideSequence',\n x30080061: 'ParameterSequencePointer',\n x30080062: 'OverrideParameterPointer',\n x30080063: 'ParameterItemIndex',\n x30080064: 'MeasuredDoseReferenceNumber',\n x30080065: 'ParameterPointer',\n x30080066: 'OverrideReason',\n x30080068: 'CorrectedParameterSequence',\n x3008006a: 'CorrectionValue',\n x30080070: 'CalculatedDoseReferenceSequence',\n x30080072: 'CalculatedDoseReferenceNumber',\n x30080074: 'CalculatedDoseReferenceDescription',\n x30080076: 'CalculatedDoseReferenceDoseValue',\n x30080078: 'StartMeterset',\n x3008007a: 'EndMeterset',\n x30080080: 'ReferencedMeasuredDoseReferenceSeq',\n x30080082: 'ReferencedMeasuredDoseReferenceNum',\n x30080090: 'ReferencedCalculatedDoseRefSeq',\n x30080092: 'ReferencedCalculatedDoseRefNumber',\n x300800a0: 'BeamLimitingDeviceLeafPairsSeq',\n x300800b0: 'RecordedWedgeSequence',\n x300800c0: 'RecordedCompensatorSequence',\n x300800d0: 'RecordedBlockSequence',\n x300800e0: 'TreatmentSummaryMeasuredDoseRefSeq',\n x300800f0: 'RecordedSnoutSequence',\n x300800f2: 'RecordedRangeShifterSequence',\n x300800f4: 'RecordedLateralSpreadingDeviceSeq',\n x300800f6: 'RecordedRangeModulatorSequence',\n x30080100: 'RecordedSourceSequence',\n x30080105: 'SourceSerialNumber',\n x30080110: 'TreatmentSessionAppSetupSeq',\n x30080116: 'ApplicationSetupCheck',\n x30080120: 'RecordedBrachyAccessoryDeviceSeq',\n x30080122: 'ReferencedBrachyAccessoryDeviceNum',\n x30080130: 'RecordedChannelSequence',\n x30080132: 'SpecifiedChannelTotalTime',\n x30080134: 'DeliveredChannelTotalTime',\n x30080136: 'SpecifiedNumberOfPulses',\n x30080138: 'DeliveredNumberOfPulses',\n x3008013a: 'SpecifiedPulseRepetitionInterval',\n x3008013c: 'DeliveredPulseRepetitionInterval',\n x30080140: 'RecordedSourceApplicatorSequence',\n x30080142: 'ReferencedSourceApplicatorNumber',\n x30080150: 'RecordedChannelShieldSequence',\n x30080152: 'ReferencedChannelShieldNumber',\n x30080160: 'BrachyControlPointDeliveredSeq',\n x30080162: 'SafePositionExitDate',\n x30080164: 'SafePositionExitTime',\n x30080166: 'SafePositionReturnDate',\n x30080168: 'SafePositionReturnTime',\n x30080200: 'CurrentTreatmentStatus',\n x30080202: 'TreatmentStatusComment',\n x30080220: 'FractionGroupSummarySequence',\n x30080223: 'ReferencedFractionNumber',\n x30080224: 'FractionGroupType',\n x30080230: 'BeamStopperPosition',\n x30080240: 'FractionStatusSummarySequence',\n x30080250: 'TreatmentDate',\n x30080251: 'TreatmentTime',\n x300a0002: 'RTPlanLabel',\n x300a0003: 'RTPlanName',\n x300a0004: 'RTPlanDescription',\n x300a0006: 'RTPlanDate',\n x300a0007: 'RTPlanTime',\n x300a0009: 'TreatmentProtocols',\n x300a000a: 'PlanIntent',\n x300a000b: 'TreatmentSites',\n x300a000c: 'RTPlanGeometry',\n x300a000e: 'PrescriptionDescription',\n x300a0010: 'DoseReferenceSequence',\n x300a0012: 'DoseReferenceNumber',\n x300a0013: 'DoseReferenceUID',\n x300a0014: 'DoseReferenceStructureType',\n x300a0015: 'NominalBeamEnergyUnit',\n x300a0016: 'DoseReferenceDescription',\n x300a0018: 'DoseReferencePointCoordinates',\n x300a001a: 'NominalPriorDose',\n x300a0020: 'DoseReferenceType',\n x300a0021: 'ConstraintWeight',\n x300a0022: 'DeliveryWarningDose',\n x300a0023: 'DeliveryMaximumDose',\n x300a0025: 'TargetMinimumDose',\n x300a0026: 'TargetPrescriptionDose',\n x300a0027: 'TargetMaximumDose',\n x300a0028: 'TargetUnderdoseVolumeFraction',\n x300a002a: 'OrganAtRiskFullVolumeDose',\n x300a002b: 'OrganAtRiskLimitDose',\n x300a002c: 'OrganAtRiskMaximumDose',\n x300a002d: 'OrganAtRiskOverdoseVolumeFraction',\n x300a0040: 'ToleranceTableSequence',\n x300a0042: 'ToleranceTableNumber',\n x300a0043: 'ToleranceTableLabel',\n x300a0044: 'GantryAngleTolerance',\n x300a0046: 'BeamLimitingDeviceAngleTolerance',\n x300a0048: 'BeamLimitingDeviceToleranceSeq',\n x300a004a: 'BeamLimitingDevicePositionTol',\n x300a004b: 'SnoutPositionTolerance',\n x300a004c: 'PatientSupportAngleTolerance',\n x300a004e: 'TableTopEccentricAngleTolerance',\n x300a004f: 'TableTopPitchAngleTolerance',\n x300a0050: 'TableTopRollAngleTolerance',\n x300a0051: 'TableTopVerticalPositionTolerance',\n x300a0052: 'TableTopLongitudinalPositionTol',\n x300a0053: 'TableTopLateralPositionTolerance',\n x300a0055: 'RTPlanRelationship',\n x300a0070: 'FractionGroupSequence',\n x300a0071: 'FractionGroupNumber',\n x300a0072: 'FractionGroupDescription',\n x300a0078: 'NumberOfFractionsPlanned',\n x300a0079: 'NumberFractionPatternDigitsPerDay',\n x300a007a: 'RepeatFractionCycleLength',\n x300a007b: 'FractionPattern',\n x300a0080: 'NumberOfBeams',\n x300a0082: 'BeamDoseSpecificationPoint',\n x300a0084: 'BeamDose',\n x300a0086: 'BeamMeterset',\n x300a0088: 'BeamDosePointDepth',\n x300a0089: 'BeamDosePointEquivalentDepth',\n x300a008a: 'BeamDosePointSSD',\n x300a00a0: 'NumberOfBrachyApplicationSetups',\n x300a00a2: 'BrachyAppSetupDoseSpecPoint',\n x300a00a4: 'BrachyApplicationSetupDose',\n x300a00b0: 'BeamSequence',\n x300a00b2: 'TreatmentMachineName',\n x300a00b3: 'PrimaryDosimeterUnit',\n x300a00b4: 'SourceAxisDistance',\n x300a00b6: 'BeamLimitingDeviceSequence',\n x300a00b8: 'RTBeamLimitingDeviceType',\n x300a00ba: 'SourceToBeamLimitingDeviceDistance',\n x300a00bb: 'IsocenterToBeamLimitingDeviceDist',\n x300a00bc: 'NumberOfLeafJawPairs',\n x300a00be: 'LeafPositionBoundaries',\n x300a00c0: 'BeamNumber',\n x300a00c2: 'BeamName',\n x300a00c3: 'BeamDescription',\n x300a00c4: 'BeamType',\n x300a00c6: 'RadiationType',\n x300a00c7: 'HighDoseTechniqueType',\n x300a00c8: 'ReferenceImageNumber',\n x300a00ca: 'PlannedVerificationImageSequence',\n x300a00cc: 'ImagingDeviceSpecificAcqParams',\n x300a00ce: 'TreatmentDeliveryType',\n x300a00d0: 'NumberOfWedges',\n x300a00d1: 'WedgeSequence',\n x300a00d2: 'WedgeNumber',\n x300a00d3: 'WedgeType',\n x300a00d4: 'WedgeID',\n x300a00d5: 'WedgeAngle',\n x300a00d6: 'WedgeFactor',\n x300a00d7: 'TotalWedgeTrayWaterEquivThickness',\n x300a00d8: 'WedgeOrientation',\n x300a00d9: 'IsocenterToWedgeTrayDistance',\n x300a00da: 'SourceToWedgeTrayDistance',\n x300a00db: 'WedgeThinEdgePosition',\n x300a00dc: 'BolusID',\n x300a00dd: 'BolusDescription',\n x300a00e0: 'NumberOfCompensators',\n x300a00e1: 'MaterialID',\n x300a00e2: 'TotalCompensatorTrayFactor',\n x300a00e3: 'CompensatorSequence',\n x300a00e4: 'CompensatorNumber',\n x300a00e5: 'CompensatorID',\n x300a00e6: 'SourceToCompensatorTrayDistance',\n x300a00e7: 'CompensatorRows',\n x300a00e8: 'CompensatorColumns',\n x300a00e9: 'CompensatorPixelSpacing',\n x300a00ea: 'CompensatorPosition',\n x300a00eb: 'CompensatorTransmissionData',\n x300a00ec: 'CompensatorThicknessData',\n x300a00ed: 'NumberOfBoli',\n x300a00ee: 'CompensatorType',\n x300a00f0: 'NumberOfBlocks',\n x300a00f2: 'TotalBlockTrayFactor',\n x300a00f3: 'TotalBlockTrayWaterEquivThickness',\n x300a00f4: 'BlockSequence',\n x300a00f5: 'BlockTrayID',\n x300a00f6: 'SourceToBlockTrayDistance',\n x300a00f7: 'IsocenterToBlockTrayDistance',\n x300a00f8: 'BlockType',\n x300a00f9: 'AccessoryCode',\n x300a00fa: 'BlockDivergence',\n x300a00fb: 'BlockMountingPosition',\n x300a00fc: 'BlockNumber',\n x300a00fe: 'BlockName',\n x300a0100: 'BlockThickness',\n x300a0102: 'BlockTransmission',\n x300a0104: 'BlockNumberOfPoints',\n x300a0106: 'BlockData',\n x300a0107: 'ApplicatorSequence',\n x300a0108: 'ApplicatorID',\n x300a0109: 'ApplicatorType',\n x300a010a: 'ApplicatorDescription',\n x300a010c: 'CumulativeDoseReferenceCoefficient',\n x300a010e: 'FinalCumulativeMetersetWeight',\n x300a0110: 'NumberOfControlPoints',\n x300a0111: 'ControlPointSequence',\n x300a0112: 'ControlPointIndex',\n x300a0114: 'NominalBeamEnergy',\n x300a0115: 'DoseRateSet',\n x300a0116: 'WedgePositionSequence',\n x300a0118: 'WedgePosition',\n x300a011a: 'BeamLimitingDevicePositionSequence',\n x300a011c: 'LeafJawPositions',\n x300a011e: 'GantryAngle',\n x300a011f: 'GantryRotationDirection',\n x300a0120: 'BeamLimitingDeviceAngle',\n x300a0121: 'BeamLimitingDeviceRotateDirection',\n x300a0122: 'PatientSupportAngle',\n x300a0123: 'PatientSupportRotationDirection',\n x300a0124: 'TableTopEccentricAxisDistance',\n x300a0125: 'TableTopEccentricAngle',\n x300a0126: 'TableTopEccentricRotateDirection',\n x300a0128: 'TableTopVerticalPosition',\n x300a0129: 'TableTopLongitudinalPosition',\n x300a012a: 'TableTopLateralPosition',\n x300a012c: 'IsocenterPosition',\n x300a012e: 'SurfaceEntryPoint',\n x300a0130: 'SourceToSurfaceDistance',\n x300a0134: 'CumulativeMetersetWeight',\n x300a0140: 'TableTopPitchAngle',\n x300a0142: 'TableTopPitchRotationDirection',\n x300a0144: 'TableTopRollAngle',\n x300a0146: 'TableTopRollRotationDirection',\n x300a0148: 'HeadFixationAngle',\n x300a014a: 'GantryPitchAngle',\n x300a014c: 'GantryPitchRotationDirection',\n x300a014e: 'GantryPitchAngleTolerance',\n x300a0180: 'PatientSetupSequence',\n x300a0182: 'PatientSetupNumber',\n x300a0183: 'PatientSetupLabel',\n x300a0184: 'PatientAdditionalPosition',\n x300a0190: 'FixationDeviceSequence',\n x300a0192: 'FixationDeviceType',\n x300a0194: 'FixationDeviceLabel',\n x300a0196: 'FixationDeviceDescription',\n x300a0198: 'FixationDevicePosition',\n x300a0199: 'FixationDevicePitchAngle',\n x300a019a: 'FixationDeviceRollAngle',\n x300a01a0: 'ShieldingDeviceSequence',\n x300a01a2: 'ShieldingDeviceType',\n x300a01a4: 'ShieldingDeviceLabel',\n x300a01a6: 'ShieldingDeviceDescription',\n x300a01a8: 'ShieldingDevicePosition',\n x300a01b0: 'SetupTechnique',\n x300a01b2: 'SetupTechniqueDescription',\n x300a01b4: 'SetupDeviceSequence',\n x300a01b6: 'SetupDeviceType',\n x300a01b8: 'SetupDeviceLabel',\n x300a01ba: 'SetupDeviceDescription',\n x300a01bc: 'SetupDeviceParameter',\n x300a01d0: 'SetupReferenceDescription',\n x300a01d2: 'TableTopVerticalSetupDisplacement',\n x300a01d4: 'TableTopLongitudinalSetupDisplace',\n x300a01d6: 'TableTopLateralSetupDisplacement',\n x300a0200: 'BrachyTreatmentTechnique',\n x300a0202: 'BrachyTreatmentType',\n x300a0206: 'TreatmentMachineSequence',\n x300a0210: 'SourceSequence',\n x300a0212: 'SourceNumber',\n x300a0214: 'SourceType',\n x300a0216: 'SourceManufacturer',\n x300a0218: 'ActiveSourceDiameter',\n x300a021a: 'ActiveSourceLength',\n x300a0222: 'SourceEncapsulationNomThickness',\n x300a0224: 'SourceEncapsulationNomTransmission',\n x300a0226: 'SourceIsotopeName',\n x300a0228: 'SourceIsotopeHalfLife',\n x300a0229: 'SourceStrengthUnits',\n x300a022a: 'ReferenceAirKermaRate',\n x300a022b: 'SourceStrength',\n x300a022c: 'SourceStrengthReferenceDate',\n x300a022e: 'SourceStrengthReferenceTime',\n x300a0230: 'ApplicationSetupSequence',\n x300a0232: 'ApplicationSetupType',\n x300a0234: 'ApplicationSetupNumber',\n x300a0236: 'ApplicationSetupName',\n x300a0238: 'ApplicationSetupManufacturer',\n x300a0240: 'TemplateNumber',\n x300a0242: 'TemplateType',\n x300a0244: 'TemplateName',\n x300a0250: 'TotalReferenceAirKerma',\n x300a0260: 'BrachyAccessoryDeviceSequence',\n x300a0262: 'BrachyAccessoryDeviceNumber',\n x300a0263: 'BrachyAccessoryDeviceID',\n x300a0264: 'BrachyAccessoryDeviceType',\n x300a0266: 'BrachyAccessoryDeviceName',\n x300a026a: 'BrachyAccessoryDeviceNomThickness',\n x300a026c: 'BrachyAccessoryDevNomTransmission',\n x300a0280: 'ChannelSequence',\n x300a0282: 'ChannelNumber',\n x300a0284: 'ChannelLength',\n x300a0286: 'ChannelTotalTime',\n x300a0288: 'SourceMovementType',\n x300a028a: 'NumberOfPulses',\n x300a028c: 'PulseRepetitionInterval',\n x300a0290: 'SourceApplicatorNumber',\n x300a0291: 'SourceApplicatorID',\n x300a0292: 'SourceApplicatorType',\n x300a0294: 'SourceApplicatorName',\n x300a0296: 'SourceApplicatorLength',\n x300a0298: 'SourceApplicatorManufacturer',\n x300a029c: 'SourceApplicatorWallNomThickness',\n x300a029e: 'SourceApplicatorWallNomTrans',\n x300a02a0: 'SourceApplicatorStepSize',\n x300a02a2: 'TransferTubeNumber',\n x300a02a4: 'TransferTubeLength',\n x300a02b0: 'ChannelShieldSequence',\n x300a02b2: 'ChannelShieldNumber',\n x300a02b3: 'ChannelShieldID',\n x300a02b4: 'ChannelShieldName',\n x300a02b8: 'ChannelShieldNominalThickness',\n x300a02ba: 'ChannelShieldNominalTransmission',\n x300a02c8: 'FinalCumulativeTimeWeight',\n x300a02d0: 'BrachyControlPointSequence',\n x300a02d2: 'ControlPointRelativePosition',\n x300a02d4: 'ControlPoint3DPosition',\n x300a02d6: 'CumulativeTimeWeight',\n x300a02e0: 'CompensatorDivergence',\n x300a02e1: 'CompensatorMountingPosition',\n x300a02e2: 'SourceToCompensatorDistance',\n x300a02e3: 'TotalCompTrayWaterEquivThickness',\n x300a02e4: 'IsocenterToCompensatorTrayDistance',\n x300a02e5: 'CompensatorColumnOffset',\n x300a02e6: 'IsocenterToCompensatorDistances',\n x300a02e7: 'CompensatorRelStoppingPowerRatio',\n x300a02e8: 'CompensatorMillingToolDiameter',\n x300a02ea: 'IonRangeCompensatorSequence',\n x300a02eb: 'CompensatorDescription',\n x300a0302: 'RadiationMassNumber',\n x300a0304: 'RadiationAtomicNumber',\n x300a0306: 'RadiationChargeState',\n x300a0308: 'ScanMode',\n x300a030a: 'VirtualSourceAxisDistances',\n x300a030c: 'SnoutSequence',\n x300a030d: 'SnoutPosition',\n x300a030f: 'SnoutID',\n x300a0312: 'NumberOfRangeShifters',\n x300a0314: 'RangeShifterSequence',\n x300a0316: 'RangeShifterNumber',\n x300a0318: 'RangeShifterID',\n x300a0320: 'RangeShifterType',\n x300a0322: 'RangeShifterDescription',\n x300a0330: 'NumberOfLateralSpreadingDevices',\n x300a0332: 'LateralSpreadingDeviceSequence',\n x300a0334: 'LateralSpreadingDeviceNumber',\n x300a0336: 'LateralSpreadingDeviceID',\n x300a0338: 'LateralSpreadingDeviceType',\n x300a033a: 'LateralSpreadingDeviceDescription',\n x300a033c: 'LateralSpreadingDevWaterEquivThick',\n x300a0340: 'NumberOfRangeModulators',\n x300a0342: 'RangeModulatorSequence',\n x300a0344: 'RangeModulatorNumber',\n x300a0346: 'RangeModulatorID',\n x300a0348: 'RangeModulatorType',\n x300a034a: 'RangeModulatorDescription',\n x300a034c: 'BeamCurrentModulationID',\n x300a0350: 'PatientSupportType',\n x300a0352: 'PatientSupportID',\n x300a0354: 'PatientSupportAccessoryCode',\n x300a0356: 'FixationLightAzimuthalAngle',\n x300a0358: 'FixationLightPolarAngle',\n x300a035a: 'MetersetRate',\n x300a0360: 'RangeShifterSettingsSequence',\n x300a0362: 'RangeShifterSetting',\n x300a0364: 'IsocenterToRangeShifterDistance',\n x300a0366: 'RangeShifterWaterEquivThickness',\n x300a0370: 'LateralSpreadingDeviceSettingsSeq',\n x300a0372: 'LateralSpreadingDeviceSetting',\n x300a0374: 'IsocenterToLateralSpreadingDevDist',\n x300a0380: 'RangeModulatorSettingsSequence',\n x300a0382: 'RangeModulatorGatingStartValue',\n x300a0384: 'RangeModulatorGatingStopValue',\n x300a038a: 'IsocenterToRangeModulatorDistance',\n x300a0390: 'ScanSpotTuneID',\n x300a0392: 'NumberOfScanSpotPositions',\n x300a0394: 'ScanSpotPositionMap',\n x300a0396: 'ScanSpotMetersetWeights',\n x300a0398: 'ScanningSpotSize',\n x300a039a: 'NumberOfPaintings',\n x300a03a0: 'IonToleranceTableSequence',\n x300a03a2: 'IonBeamSequence',\n x300a03a4: 'IonBeamLimitingDeviceSequence',\n x300a03a6: 'IonBlockSequence',\n x300a03a8: 'IonControlPointSequence',\n x300a03aa: 'IonWedgeSequence',\n x300a03ac: 'IonWedgePositionSequence',\n x300a0401: 'ReferencedSetupImageSequence',\n x300a0402: 'SetupImageComment',\n x300a0410: 'MotionSynchronizationSequence',\n x300a0412: 'ControlPointOrientation',\n x300a0420: 'GeneralAccessorySequence',\n x300a0421: 'GeneralAccessoryID',\n x300a0422: 'GeneralAccessoryDescription',\n x300a0423: 'GeneralAccessoryType',\n x300a0424: 'GeneralAccessoryNumber',\n x300c0002: 'ReferencedRTPlanSequence',\n x300c0004: 'ReferencedBeamSequence',\n x300c0006: 'ReferencedBeamNumber',\n x300c0007: 'ReferencedReferenceImageNumber',\n x300c0008: 'StartCumulativeMetersetWeight',\n x300c0009: 'EndCumulativeMetersetWeight',\n x300c000a: 'ReferencedBrachyAppSetupSeq',\n x300c000c: 'ReferencedBrachyAppSetupNumber',\n x300c000e: 'ReferencedSourceNumber',\n x300c0020: 'ReferencedFractionGroupSequence',\n x300c0022: 'ReferencedFractionGroupNumber',\n x300c0040: 'ReferencedVerificationImageSeq',\n x300c0042: 'ReferencedReferenceImageSequence',\n x300c0050: 'ReferencedDoseReferenceSequence',\n x300c0051: 'ReferencedDoseReferenceNumber',\n x300c0055: 'BrachyReferencedDoseReferenceSeq',\n x300c0060: 'ReferencedStructureSetSequence',\n x300c006a: 'ReferencedPatientSetupNumber',\n x300c0080: 'ReferencedDoseSequence',\n x300c00a0: 'ReferencedToleranceTableNumber',\n x300c00b0: 'ReferencedBolusSequence',\n x300c00c0: 'ReferencedWedgeNumber',\n x300c00d0: 'ReferencedCompensatorNumber',\n x300c00e0: 'ReferencedBlockNumber',\n x300c00f0: 'ReferencedControlPointIndex',\n x300c00f2: 'ReferencedControlPointSequence',\n x300c00f4: 'ReferencedStartControlPointIndex',\n x300c00f6: 'ReferencedStopControlPointIndex',\n x300c0100: 'ReferencedRangeShifterNumber',\n x300c0102: 'ReferencedLateralSpreadingDevNum',\n x300c0104: 'ReferencedRangeModulatorNumber',\n x300e0002: 'ApprovalStatus',\n x300e0004: 'ReviewDate',\n x300e0005: 'ReviewTime',\n x300e0008: 'ReviewerName',\n x40000000: 'TextGroupLength',\n x40000010: 'Arbitrary',\n x40004000: 'TextComments',\n x40080040: 'ResultsID',\n x40080042: 'ResultsIDIssuer',\n x40080050: 'ReferencedInterpretationSequence',\n x40080100: 'InterpretationRecordedDate',\n x40080101: 'InterpretationRecordedTime',\n x40080102: 'InterpretationRecorder',\n x40080103: 'ReferenceToRecordedSound',\n x40080108: 'InterpretationTranscriptionDate',\n x40080109: 'InterpretationTranscriptionTime',\n x4008010a: 'InterpretationTranscriber',\n x4008010b: 'InterpretationText',\n x4008010c: 'InterpretationAuthor',\n x40080111: 'InterpretationApproverSequence',\n x40080112: 'InterpretationApprovalDate',\n x40080113: 'InterpretationApprovalTime',\n x40080114: 'PhysicianApprovingInterpretation',\n x40080115: 'InterpretationDiagnosisDescription',\n x40080117: 'InterpretationDiagnosisCodeSeq',\n x40080118: 'ResultsDistributionListSequence',\n x40080119: 'DistributionName',\n x4008011a: 'DistributionAddress',\n x40080200: 'InterpretationID',\n x40080202: 'InterpretationIDIssuer',\n x40080210: 'InterpretationTypeID',\n x40080212: 'InterpretationStatusID',\n x40080300: 'Impressions',\n x40084000: 'ResultsComments',\n x4ffe0001: 'MACParametersSequence',\n x50xx0005: 'CurveDimensions',\n x50xx0010: 'NumberOfPoints',\n x50xx0020: 'TypeOfData',\n x50xx0022: 'CurveDescription',\n x50xx0030: 'AxisUnits',\n x50xx0040: 'AxisLabels',\n x50xx0103: 'DataValueRepresentation',\n x50xx0104: 'MinimumCoordinateValue',\n x50xx0105: 'MaximumCoordinateValue',\n x50xx0106: 'CurveRange',\n x50xx0110: 'CurveDataDescriptor',\n x50xx0112: 'CoordinateStartValue',\n x50xx0114: 'CoordinateStepValue',\n x50xx1001: 'CurveActivationLayer',\n x50xx2000: 'AudioType',\n x50xx2002: 'AudioSampleFormat',\n x50xx2004: 'NumberOfChannels',\n x50xx2006: 'NumberOfSamples',\n x50xx2008: 'SampleRate',\n x50xx200a: 'TotalTime',\n x50xx200c: 'AudioSampleData',\n x50xx200e: 'AudioComments',\n x50xx2500: 'CurveLabel',\n x50xx2600: 'CurveReferencedOverlaySequence',\n x50xx2610: 'ReferencedOverlayGroup',\n x50xx3000: 'CurveData',\n x52009229: 'SharedFunctionalGroupsSequence',\n x52009230: 'PerFrameFunctionalGroupsSequence',\n x54000100: 'WaveformSequence',\n x54000110: 'ChannelMinimumValue',\n x54000112: 'ChannelMaximumValue',\n x54001004: 'WaveformBitsAllocated',\n x54001006: 'WaveformSampleInterpretation',\n x5400100a: 'WaveformPaddingValue',\n x54001010: 'WaveformData',\n x56000010: 'FirstOrderPhaseCorrectionAngle',\n x56000020: 'SpectroscopyData',\n x60000000: 'OverlayGroupLength',\n x60xx0010: 'OverlayRows',\n x60xx0011: 'OverlayColumns',\n x60xx0012: 'OverlayPlanes',\n x60xx0015: 'NumberOfFramesInOverlay',\n x60xx0022: 'OverlayDescription',\n x60xx0040: 'OverlayType',\n x60xx0045: 'OverlaySubtype',\n x60xx0050: 'OverlayOrigin',\n x60xx0051: 'ImageFrameOrigin',\n x60xx0052: 'OverlayPlaneOrigin',\n x60xx0060: 'OverlayCompressionCode',\n x60xx0061: 'OverlayCompressionOriginator',\n x60xx0062: 'OverlayCompressionLabel',\n x60xx0063: 'OverlayCompressionDescription',\n x60xx0066: 'OverlayCompressionStepPointers',\n x60xx0068: 'OverlayRepeatInterval',\n x60xx0069: 'OverlayBitsGrouped',\n x60xx0100: 'OverlayBitsAllocated',\n x60xx0102: 'OverlayBitPosition',\n x60xx0110: 'OverlayFormat',\n x60xx0200: 'OverlayLocation',\n x60xx0800: 'OverlayCodeLabel',\n x60xx0802: 'OverlayNumberOfTables',\n x60xx0803: 'OverlayCodeTableLocation',\n x60xx0804: 'OverlayBitsForCodeWord',\n x60xx1001: 'OverlayActivationLayer',\n x60xx1100: 'OverlayDescriptorGray',\n x60xx1101: 'OverlayDescriptorRed',\n x60xx1102: 'OverlayDescriptorGreen',\n x60xx1103: 'OverlayDescriptorBlue',\n x60xx1200: 'OverlaysGray',\n x60xx1201: 'OverlaysRed',\n x60xx1202: 'OverlaysGreen',\n x60xx1203: 'OverlaysBlue',\n x60xx1301: 'ROIArea',\n x60xx1302: 'ROIMean',\n x60xx1303: 'ROIStandardDeviation',\n x60xx1500: 'OverlayLabel',\n x60xx3000: 'OverlayData',\n x60xx4000: 'OverlayComments',\n x7fxx0000: 'PixelDataGroupLength',\n x7fxx0010: 'PixelData',\n x7fxx0011: 'VariableNextDataGroup',\n x7fxx0020: 'VariableCoefficientsSDVN',\n x7fxx0030: 'VariableCoefficientsSDHN',\n x7fxx0040: 'VariableCoefficientsSDDN',\n xfffafffa: 'DigitalSignaturesSequence',\n xfffcfffc: 'DataSetTrailingPadding',\n xfffee000: 'StartOfItem',\n xfffee00d: 'EndOfItems',\n xfffee0dd: 'EndOfSequence'\n};\nDICOMTagDescriptions.init(initialTagDescriptionMap); // Discard original map...\n\ninitialTagDescriptionMap = null;\n\n/**\n * A small set of utilities to help parsing DICOM element values.\n * In the future the functionality provided by this library might\n * be incorporated into dicomParser library.\n */\n\nvar parsingUtils = {\n /**\n * Check if supplied argument is a valid instance of the dicomParser.DataSet class.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @returns {Boolean} Returns true if data is a valid instance of the dicomParser.DataSet class.\n */\n isValidDataSet: function isValidDataSet(data) {\n var dicomParser = external.dicomParser;\n return data instanceof dicomParser.DataSet;\n },\n\n /**\n * Parses an element tag according to the 'AT' VR definition.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {String} A string representation of a data element tag or null if the field is not present or data is not long enough.\n */\n attributeTag: function attributeTag(data, tag) {\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length === 4) {\n var parser = data.byteArrayParser.readUint16,\n bytes = data.byteArray,\n offset = element.dataOffset;\n return 'x' + ('00000000' + (parser(bytes, offset) * 256 * 256 + parser(bytes, offset + 2)).toString(16)).substr(-8);\n }\n }\n\n return null;\n },\n\n /**\n * Parses the string representation of a multi-valued element into an array of strings. If the parser\n * parameter is passed and is a function, it will be applied to each element of the resulting array.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @param parser {Function} An optional parser function that can be applied to each element of the array.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n multiValue: function multiValue(data, tag, parser) {\n var dicomParser = external.dicomParser;\n\n if (this.isValidDataSet(data) && tag in data.elements) {\n var element = data.elements[tag];\n\n if (element && element.length > 0) {\n var string = dicomParser.readFixedString(data.byteArray, element.dataOffset, element.length);\n\n if (typeof string === 'string' && string.length > 0) {\n if (typeof parser !== 'function') {\n parser = null;\n }\n\n return string.split('\\\\').map(function (value) {\n value = value.trim();\n return parser !== null ? parser(value) : value;\n });\n }\n }\n }\n\n return null;\n },\n\n /**\n * Parses a string to an array of floats for a multi-valued element.\n * @param data {Object} An instance of the dicomParser.DataSet class.\n * @param tag {String} A DICOM tag with in the format xGGGGEEEE.\n * @returns {Array} An array of floating point numbers or null if the field is not present or data is not long enough.\n */\n floatArray: function floatArray(data, tag) {\n return this.multiValue(data, tag, parseFloat);\n }\n};\n\n/**\n * Returns the specified element as a dicom attribute group/element.\n *\n * @param element - The group/element of the element (e.g. '00280009')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getAttribute(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return convertToInt(element.Value);\n}\n\nfunction convertToInt(input) {\n function padFour(input) {\n var l = input.length;\n if (l == 0) return '0000';\n if (l == 1) return '000' + input;\n if (l == 2) return '00' + input;\n if (l == 3) return '0' + input;\n return input;\n }\n\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n for (var j = 0; j < input[i].length; j++) {\n output += padFour(input[i].charCodeAt(j).toString(16));\n }\n }\n\n return parseInt(output, 16);\n}\n\nvar btoa = function btoa(val) {\n return new Buffer(val).toString('base64');\n};\n\n// These should be overridden by the implementation\nvar user = {\n userLoggedIn: function userLoggedIn() {\n return false;\n },\n getUserId: function getUserId() {\n return null;\n },\n getName: function getName() {\n return null;\n },\n getAccessToken: function getAccessToken() {\n return null;\n },\n login: function login() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n logout: function logout() {\n return new Promise(function (resolve, reject) {\n return reject();\n });\n },\n getData: function getData(key) {\n return null;\n },\n setData: function setData(key, value) {\n return null;\n }\n};\n\n/**\n * Returns the Authorization header as part of an Object.\n *\n * @returns {Object}\n */\n\nfunction getAuthorizationHeader(server) {\n var headers = {}; // Check for OHIF.user since this can also be run on the server\n\n var accessToken = user && user.getAccessToken && user.getAccessToken();\n\n if (server && server.requestOptions && server.requestOptions.auth) {\n // HTTP Basic Auth (user:password)\n headers.Authorization = \"Basic \".concat(btoa(server.requestOptions.auth));\n } else if (accessToken) {\n headers.Authorization = \"Bearer \".concat(accessToken);\n }\n\n return headers;\n}\n\nfunction getModalities(modality, modalitiesInStudy) {\n var modalities = {};\n\n if (modality) {\n modalities = modality;\n }\n\n if (modalitiesInStudy) {\n // Find vr in modalities\n if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {\n for (var i = 0; i < modalitiesInStudy.Value.length; i++) {\n var value = modalitiesInStudy.Value[i];\n\n if (modalities.Value.indexOf(value) === -1) {\n modalities.Value.push(value);\n }\n }\n } else {\n modalities = modalitiesInStudy;\n }\n }\n\n return modalities;\n}\n\n/**\n * Returns the Alphabetic version of a PN\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element is not found\n * @returns {*}\n */\nfunction getName(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Return the Alphabetic component group\n\n\n if (element.Value[0].Alphabetic) {\n return element.Value[0].Alphabetic;\n } // Orthanc does not return PN properly so this is a temporary workaround\n\n\n return element.Value[0];\n}\n\n/**\n * Returns the first string value as a Javascript Number\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The default value to return if the element does not exist\n * @returns {*}\n */\nfunction getNumber(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n }\n\n return parseFloat(element.Value[0]);\n}\n\n/**\n * Returns the specified element as a string. Multi-valued elements will be separated by a backslash\n *\n * @param element - The group/element of the element (e.g. '00200013')\n * @param [defaultValue] - The value to return if the element is not present\n * @returns {*}\n */\nfunction getString(element, defaultValue) {\n if (!element) {\n return defaultValue;\n } // Value is not present if the attribute has a zero length value\n\n\n if (!element.Value) {\n return defaultValue;\n } // Sanity check to make sure we have at least one entry in the array.\n\n\n if (!element.Value.length) {\n return defaultValue;\n } // Join the array together separated by backslash\n // NOTE: Orthanc does not correctly split values into an array so the join is a no-op\n\n\n return element.Value.join('\\\\');\n}\n\nvar DICOMWeb = {\n getAttribute: getAttribute,\n getAuthorizationHeader: getAuthorizationHeader,\n getModalities: getModalities,\n getName: getName,\n getNumber: getNumber,\n getString: getString\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar dicomwebClient = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n factory(exports);\n}(commonjsGlobal, (function (exports) {\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n /**\n * Converts a Uint8Array to a String.\n * @param {Uint8Array} array that should be converted\n * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0)\n * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array)\n * @returns {String}\n */\n function uint8ArrayToString(arr, offset, limit) {\n offset = offset || 0;\n limit = limit || arr.length - offset;\n var str = '';\n\n for (var i = offset; i < offset + limit; i++) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n }\n /**\n * Converts a String to a Uint8Array.\n * @param {String} str string that should be converted\n * @returns {Uint8Array}\n */\n\n\n function stringToUint8Array(str) {\n var arr = new Uint8Array(str.length);\n\n for (var i = 0, j = str.length; i < j; i++) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n }\n /**\n * Identifies the boundary in a multipart/related message header.\n * @param {String} header message header\n * @returns {String} boundary\n */\n\n\n function identifyBoundary(header) {\n var parts = header.split('\\r\\n');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].substr(0, 2) === '--') {\n return parts[i];\n }\n }\n }\n /**\n * Checks whether a given token is contained by a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be present\n * @param {String} offset offset in message content from where search should start\n * @returns {Boolean} whether message contains token at offset\n */\n\n\n function containsToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (message + token.length > message.length) {\n return false;\n }\n\n var index = offset;\n\n for (var i = 0; i < token.length; i++) {\n if (token[i] !== message[index++]) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Finds a given token in a message at a given offset.\n * @param {Uint8Array} message message content\n * @param {Uint8Array} token substring that should be found\n * @param {String} offset message body offset from where search should start\n * @returns {Boolean} whether message has a part at given offset or not\n */\n\n\n function findToken(message, token) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var messageLength = message.length;\n\n for (var i = offset; i < messageLength; i++) {\n // If the first value of the message matches\n // the first value of the token, check if\n // this is the full token.\n if (message[i] === token[0]) {\n if (containsToken(message, token, i)) {\n return i;\n }\n }\n }\n\n return -1;\n }\n /**\n * @typedef {Object} MultipartEncodedData\n * @property {ArrayBuffer} data The encoded Multipart Data\n * @property {String} boundary The boundary used to divide pieces of the encoded data\n */\n\n /**\n * Encode one or more DICOM datasets into a single body so it can be\n * sent using the Multipart Content-Type.\n *\n * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers.\n * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated.\n * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it.\n */\n\n\n function multipartEncode(datasets) {\n var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid();\n var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'application/dicom';\n var contentTypeString = \"Content-Type: \".concat(contentType);\n var header = \"\\r\\n--\".concat(boundary, \"\\r\\n\").concat(contentTypeString, \"\\r\\n\\r\\n\");\n var footer = \"\\r\\n--\".concat(boundary, \"--\");\n var headerArray = stringToUint8Array(header);\n var footerArray = stringToUint8Array(footer);\n var headerLength = headerArray.length;\n var footerLength = footerArray.length;\n var length = 0; // Calculate the total length for the final array\n\n var contentArrays = datasets.map(function (datasetBuffer) {\n var contentArray = new Uint8Array(datasetBuffer);\n var contentLength = contentArray.length;\n length += headerLength + contentLength + footerLength;\n return contentArray;\n }); // Allocate the array\n\n var multipartArray = new Uint8Array(length); // Set the initial header\n\n multipartArray.set(headerArray, 0); // Write each dataset into the multipart array\n\n var position = 0;\n contentArrays.forEach(function (contentArray) {\n var contentLength = contentArray.length;\n multipartArray.set(headerArray, position);\n multipartArray.set(contentArray, position + headerLength);\n position += headerLength + contentArray.length;\n });\n multipartArray.set(footerArray, position);\n return {\n data: multipartArray.buffer,\n boundary: boundary\n };\n }\n /**\n * Decode a Multipart encoded ArrayBuffer and return the components as an Array.\n *\n * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message\n * @returns {Array} The content\n */\n\n function multipartDecode(response) {\n var message = new Uint8Array(response); // First look for the multipart mime header\n\n var separator = stringToUint8Array('\\r\\n\\r\\n');\n var headerIndex = findToken(message, separator);\n\n if (headerIndex === -1) {\n throw new Error('Response message has no multipart mime header');\n }\n\n var header = uint8ArrayToString(message, 0, headerIndex);\n var boundaryString = identifyBoundary(header);\n\n if (!boundaryString) {\n throw new Error('Header of response message does not specify boundary');\n }\n\n var boundary = stringToUint8Array(boundaryString);\n var boundaryLength = boundary.length;\n var components = [];\n var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries\n\n var boundaryIndex;\n\n while (boundaryIndex !== -1) {\n // Search for the next boundary in the message, starting\n // from the current offset position\n boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here.\n\n if (boundaryIndex === -1) {\n break;\n } // Extract data from response message, excluding \"\\r\\n\"\n\n\n var spacingLength = 2;\n var length = boundaryIndex - offset - spacingLength;\n var data = response.slice(offset, offset + length); // Add the data to the array of results\n\n components.push(data); // Move the offset to the end of the current section,\n // plus the identified boundary\n\n offset += length + spacingLength + boundaryLength;\n }\n\n return components;\n }\n /**\n * Create a random GUID\n *\n * @return {string}\n */\n\n\n function guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n }\n\n function isEmptyObject(obj) {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n }\n\n var getFirstResult = function getFirstResult(result) {\n return result[0];\n };\n\n var MIMETYPES = {\n DICOM: 'application/dicom',\n DICOM_JSON: 'application/dicom+json',\n OCTET_STREAM: 'application/octet-stream',\n JPEG: 'image/jpeg',\n PNG: 'image/png'\n };\n /**\n * Class for interacting with DICOMweb RESTful services.\n */\n\n var DICOMwebClient =\n /*#__PURE__*/\n function () {\n /**\n * @constructor\n * @param {Object} options (choices: \"url\", \"username\", \"password\", \"headers\")\n */\n function DICOMwebClient(options) {\n _classCallCheck(this, DICOMwebClient);\n\n this.baseURL = options.url;\n\n if (!this.baseURL) {\n console.error('no DICOMweb base url provided - calls will fail');\n }\n\n if ('username' in options) {\n this.username = options.username;\n\n if (!('password' in options)) {\n console.error('no password provided to authenticate with DICOMweb service');\n }\n\n this.password = options.password;\n }\n\n if ('qidoURLPrefix' in options) {\n console.log(\"use URL prefix for QIDO-RS: \".concat(options.qidoURLPrefix));\n this.qidoURL = this.baseURL + '/' + options.qidoURLPrefix;\n } else {\n this.qidoURL = this.baseURL;\n }\n\n if ('wadoURLPrefix' in options) {\n console.log(\"use URL prefix for WADO-RS: \".concat(options.wadoURLPrefix));\n this.wadoURL = this.baseURL + '/' + options.wadoURLPrefix;\n } else {\n this.wadoURL = this.baseURL;\n }\n\n if ('stowURLPrefix' in options) {\n console.log(\"use URL prefix for STOW-RS: \".concat(options.stowURLPrefix));\n this.stowURL = this.baseURL + '/' + options.stowURLPrefix;\n } else {\n this.stowURL = this.baseURL;\n }\n\n this.headers = options.headers || {};\n }\n\n _createClass(DICOMwebClient, [{\n key: \"_httpRequest\",\n value: function _httpRequest(url, method, headers) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return new Promise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.open(method, url, true);\n\n if ('responseType' in options) {\n request.responseType = options.responseType;\n }\n\n if (_typeof(headers) === 'object') {\n Object.keys(headers).forEach(function (key) {\n request.setRequestHeader(key, headers[key]);\n });\n } // now add custom headers from the user\n // (e.g. access tokens)\n\n\n var userHeaders = _this.headers;\n Object.keys(userHeaders).forEach(function (key) {\n request.setRequestHeader(key, userHeaders[key]);\n }); // Event triggered when upload starts\n\n request.onloadstart = function (event) {//console.log('upload started: ', url)\n }; // Event triggered when upload ends\n\n\n request.onloadend = function (event) {//console.log('upload finished')\n }; // Handle response message\n\n\n request.onreadystatechange = function (event) {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.response);\n } else if (request.status === 202) {\n console.warn('some resources already existed: ', request);\n resolve(request.response);\n } else if (request.status === 204) {\n console.warn('empty response for request: ', request);\n resolve([]);\n } else {\n console.error('request failed: ', request);\n var error = new Error('request failed');\n error.request = request;\n error.response = request.response;\n error.status = request.status;\n console.error(error);\n console.error(error.response);\n reject(error);\n }\n }\n }; // Event triggered while download progresses\n\n\n if ('progressCallback' in options) {\n if (typeof options.progressCallback === 'function') {\n request.onprogress = options.progressCallback;\n }\n } // request.onprogress = function (event) {\n // const loaded = progress.loaded;\n // let total;\n // let percentComplete;\n // if (progress.lengthComputable) {\n // total = progress.total;\n // percentComplete = Math.round((loaded / total) * 100);\n // j\n // // console.log('download progress: ', percentComplete, ' %');\n // return(percentComplete);\n // };\n\n\n if ('data' in options) {\n request.send(options.data);\n } else {\n request.send();\n }\n });\n }\n }, {\n key: \"_httpGet\",\n value: function _httpGet(url, headers, responseType, progressCallback) {\n return this._httpRequest(url, 'get', headers, {\n responseType: responseType,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpGetApplicationJson\",\n value: function _httpGetApplicationJson(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var progressCallback = arguments.length > 2 ? arguments[2] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': MIMETYPES.DICOM_JSON\n };\n var responseType = 'json';\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpGetByMimeType\",\n value: function _httpGetByMimeType(url, mimeType, params) {\n var responseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'arraybuffer';\n var progressCallback = arguments.length > 4 ? arguments[4] : undefined;\n\n if (_typeof(params) === 'object') {\n if (!isEmptyObject(params)) {\n url += DICOMwebClient._parseQueryParameters(params);\n }\n }\n\n var headers = {\n 'Accept': \"multipart/related; type=\\\"\".concat(mimeType, \"\\\"\")\n };\n return this._httpGet(url, headers, responseType, progressCallback);\n }\n }, {\n key: \"_httpPost\",\n value: function _httpPost(url, headers, data, progressCallback) {\n return this._httpRequest(url, 'post', headers, {\n data: data,\n progressCallback: progressCallback\n });\n }\n }, {\n key: \"_httpPostApplicationJson\",\n value: function _httpPostApplicationJson(url, data, progressCallback) {\n var headers = {\n 'Content-Type': MIMETYPES.DICOM_JSON\n };\n return this._httpPost(url, headers, data, progressCallback);\n }\n /**\n * Searches for DICOM studies.\n * @param {Object} options options object\n * @return {Array} study representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2)\n */\n\n }, {\n key: \"searchForStudies\",\n value: function searchForStudies() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.log('search for studies');\n var url = this.qidoURL + '/studies';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM study.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the study\n */\n\n }, {\n key: \"retrieveStudyMetadata\",\n value: function retrieveStudyMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of study metadata');\n }\n\n console.log(\"retrieve metadata of study \".concat(options.studyInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM series.\n * @param {Object} options options object\n * @returns {Array} series representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2a)\n */\n\n }, {\n key: \"searchForSeries\",\n value: function searchForSeries() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n console.log(\"search series of study \".concat(options.studyInstanceUID));\n url += '/studies/' + options.studyInstanceUID;\n }\n\n url += '/series';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves metadata for a DICOM series.\n * @param {Object} options options object\n * @returns {Array} metadata elements in DICOM JSON format for each instance belonging to the series\n */\n\n }, {\n key: \"retrieveSeriesMetadata\",\n value: function retrieveSeriesMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of series metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of series metadata');\n }\n\n console.log(\"retrieve metadata of series \".concat(options.seriesInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Searches for DICOM instances.\n * @param {Object} options options object\n * @returns {Array} instance representations (http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.7.html#table_6.7.1-2b)\n */\n\n }, {\n key: \"searchForInstances\",\n value: function searchForInstances() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var url = this.qidoURL;\n\n if ('studyInstanceUID' in options) {\n url += '/studies/' + options.studyInstanceUID;\n\n if ('seriesInstanceUID' in options) {\n console.log(\"search for instances of series \".concat(options.seriesInstanceUID));\n url += '/series/' + options.seriesInstanceUID;\n } else {\n console.log(\"search for instances of study \".concat(options.studyInstanceUID));\n }\n } else {\n console.log('search for instances');\n }\n\n url += '/instances';\n\n if ('queryParams' in options) {\n url += DICOMwebClient._parseQueryParameters(options.queryParams);\n }\n\n return this._httpGetApplicationJson(url);\n }\n /** Returns a WADO-URI URL for an instance\n * @param {Object} options options object\n * @returns {String} WADO-URI URL\n */\n\n }, {\n key: \"buildInstanceWadoURIUrl\",\n value: function buildInstanceWadoURIUrl(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required.');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required.');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required.');\n }\n\n var contentType = options.contentType || MIMETYPES.DICOM;\n var transferSyntax = options.transferSyntax || '*';\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(options.studyInstanceUID));\n params.push(\"seriesUID=\".concat(options.seriesInstanceUID));\n params.push(\"objectUID=\".concat(options.sopInstanceUID));\n params.push(\"contentType=\".concat(contentType));\n params.push(\"transferSyntax=\".concat(transferSyntax));\n var paramString = params.join('&');\n return \"\".concat(this.wadoURL, \"?\").concat(paramString);\n }\n /**\n * Retrieves metadata for a DICOM instance.\n *\n * @param {Object} options object\n * @returns {Object} metadata elements in DICOM JSON format\n */\n\n }, {\n key: \"retrieveInstanceMetadata\",\n value: function retrieveInstanceMetadata(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance metadata');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance metadata');\n }\n\n console.log(\"retrieve metadata of instance \".concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/metadata';\n return this._httpGetApplicationJson(url);\n }\n /**\n * Retrieves frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFrames\",\n value: function retrieveInstanceFrames(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of instance frames');\n }\n\n console.log(\"retrieve frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString();\n var mimeType = options.mimeType ? \"\".concat(options.mimeType) : MIMETYPES.OCTET_STREAM;\n return this._httpGetByMimeType(url, mimeType).then(multipartDecode);\n }\n /**\n * Retrieves rendered frames for a DICOM instance.\n * @param {Object} options options object\n * @returns {Array} frame items as byte arrays of the pixel data element\n */\n\n }, {\n key: \"retrieveInstanceFramesRendered\",\n value: function retrieveInstanceFramesRendered(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required for retrieval of rendered instance frames');\n }\n\n if (!('frameNumbers' in options)) {\n throw new Error('frame numbers are required for retrieval of rendered instance frames');\n }\n\n console.log(\"retrieve rendered frames \".concat(options.frameNumbers.toString(), \" of instance \").concat(options.sopInstanceUID));\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID + '/frames/' + options.frameNumbers.toString() + '/rendered';\n var headers = {}; // The choice of an acceptable media type depends on a variety of things:\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/chapter_6.html#table_6.1.1-3\n\n if ('mimeType' in options) {\n headers['Accept'] = options.mimeType;\n }\n\n var responseType = 'arraybuffer';\n return this._httpGet(url, headers, responseType);\n }\n /**\n * Retrieves a DICOM instance.\n * @param {Object} options options object\n * @returns {Arraybuffer} DICOM Part 10 file as Arraybuffer\n */\n\n }, {\n key: \"retrieveInstance\",\n value: function retrieveInstance(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n if (!('sopInstanceUID' in options)) {\n throw new Error('SOP Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID + '/instances/' + options.sopInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Retrieves a set of DICOM instance for a series.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveSeries\",\n value: function retrieveSeries(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n if (!('seriesInstanceUID' in options)) {\n throw new Error('Series Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID + '/series/' + options.seriesInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves a set of DICOM instance for a study.\n * @param {Object} options options object\n * @returns {Arraybuffer[]} Array of DICOM Part 10 files as Arraybuffers\n */\n\n }, {\n key: \"retrieveStudy\",\n value: function retrieveStudy(options) {\n if (!('studyInstanceUID' in options)) {\n throw new Error('Study Instance UID is required');\n }\n\n var url = this.wadoURL + '/studies/' + options.studyInstanceUID;\n return this._httpGetByMimeType(url, MIMETYPES.DICOM).then(multipartDecode);\n }\n /**\n * Retrieves and parses BulkData from a BulkDataURI location.\n * Decodes the multipart encoded data and returns the resulting data\n * as an ArrayBuffer.\n *\n * See http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_6.5.5.html\n *\n * @param {Object} options options object\n * @return {Promise}\n */\n\n }, {\n key: \"retrieveBulkData\",\n value: function retrieveBulkData(options) {\n if (!('BulkDataURI' in options)) {\n throw new Error('BulkDataURI is required.');\n }\n\n return this._httpGetByMimeType(options.BulkDataURI, MIMETYPES.OCTET_STREAM).then(multipartDecode).then(getFirstResult);\n }\n /**\n * Stores DICOM instances.\n *\n * @param {Object} options options object\n */\n\n }, {\n key: \"storeInstances\",\n value: function storeInstances(options) {\n if (!('datasets' in options)) {\n throw new Error('datasets are required for storing');\n }\n\n var url = \"\".concat(this.stowURL, \"/studies\");\n\n if ('studyInstanceUID' in options) {\n url += \"/\".concat(options.studyInstanceUID);\n }\n\n var _multipartEncode = multipartEncode(options.datasets),\n data = _multipartEncode.data,\n boundary = _multipartEncode.boundary;\n\n var headers = {\n 'Content-Type': \"multipart/related; type=application/dicom; boundary=\".concat(boundary)\n };\n return this._httpPost(url, headers, data, options.progressCallback);\n }\n }], [{\n key: \"_parseQueryParameters\",\n value: function _parseQueryParameters() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var queryString = '?';\n Object.keys(params).forEach(function (key, index) {\n if (index !== 0) {\n queryString += '&';\n }\n\n queryString += key + '=' + encodeURIComponent(params[key]);\n });\n return queryString;\n }\n }]);\n\n return DICOMwebClient;\n }();\n\n function findSubstring(str, before, after) {\n var beforeIndex = str.lastIndexOf(before) + before.length;\n\n if (beforeIndex < before.length) {\n return null;\n }\n\n if (after !== undefined) {\n var afterIndex = str.lastIndexOf(after);\n\n if (afterIndex < 0) {\n return null;\n } else {\n return str.substring(beforeIndex, afterIndex);\n }\n }\n\n return str.substring(beforeIndex);\n }\n\n function getStudyInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"studies/\", \"/series\");\n\n if (!uid) {\n uid = findSubstring(uri, \"studies/\");\n }\n\n if (!uid) {\n console.debug('Study Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSeriesInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"series/\", \"/instances\");\n\n if (!uid) {\n uid = findSubstring(uri, \"series/\");\n }\n\n if (!uid) {\n console.debug('Series Instance UID could not be dertermined from URI \"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getSOPInstanceUIDFromUri(uri) {\n var uid = findSubstring(uri, \"/instances/\", \"/frames\");\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\", \"/metadata\");\n }\n\n if (!uid) {\n uid = findSubstring(uri, \"/instances/\");\n }\n\n if (!uid) {\n console.debug('SOP Instance UID could not be dertermined from URI\"' + uri + '\"');\n }\n\n return uid;\n }\n\n function getFrameNumbersFromUri(uri) {\n var numbers = findSubstring(uri, \"/frames/\", \"/rendered\");\n\n if (!numbers) {\n numbers = findSubstring(uri, \"/frames/\");\n }\n\n if (numbers === undefined) {\n console.debug('Frames Numbers could not be dertermined from URI\"' + uri + '\"');\n }\n\n return numbers.split(',');\n }\n\n var version = '0.3.2';\n\n var api = {\n DICOMwebClient: DICOMwebClient\n };\n var utils = {\n getStudyInstanceUIDFromUri: getStudyInstanceUIDFromUri,\n getSeriesInstanceUIDFromUri: getSeriesInstanceUIDFromUri,\n getSOPInstanceUIDFromUri: getSOPInstanceUIDFromUri,\n getFrameNumbersFromUri: getFrameNumbersFromUri\n };\n\n exports.api = api;\n exports.utils = utils;\n exports.version = version;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n});\n\nvar DICOMwebClient = unwrapExports(dicomwebClient);\n\n/**\n * Parses data returned from a QIDO search and transforms it into\n * an array of series that are present in the study\n *\n * @param server The DICOM server\n * @param studyInstanceUid\n * @param resultData\n * @returns {Array} Series List\n */\n\nfunction resultDataToStudyMetadata(server, studyInstanceUid, resultData) {\n var seriesMap = {};\n var seriesList = [];\n resultData.forEach(function (instance) {\n // Use seriesMap to cache series data\n // If the series instance UID has already been used to\n // process series data, continue using that series\n var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n var series = seriesMap[seriesInstanceUid]; // If no series data exists in the seriesMap cache variable,\n // process any available series data\n\n if (!series) {\n series = {\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getString(instance['00200011']),\n instances: []\n }; // Save this data in the seriesMap cache variable\n\n seriesMap[seriesInstanceUid] = series;\n seriesList.push(series);\n } // The uri for the dicomweb\n // NOTE: DCM4CHEE seems to return the data zipped\n // NOTE: Orthanc returns the data with multi-part mime which cornerstoneWADOImageLoader doesn't\n // know how to parse yet\n //var uri = DICOMWeb.getString(instance['00081190']);\n //uri = uri.replace('wado-rs', 'dicom-web');\n // manually create a WADO-URI from the UIDs\n // NOTE: Haven't been able to get Orthanc's WADO-URI to work yet - maybe its not configured?\n\n\n var sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n var uri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom'; // Add this instance to the current series\n\n series.instances.push({\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n sopInstanceUid: sopInstanceUid,\n uri: uri,\n instanceNumber: DICOMWeb.getString(instance['00200013'])\n });\n });\n return seriesList;\n}\n/**\n * Retrieve a set of instances using a QIDO call\n * @param server\n * @param studyInstanceUid\n * @throws ECONNREFUSED\n * @returns {{wadoUriRoot: String, studyInstanceUid: String, seriesList: Array}}\n */\n\n\nfunction Instances(server, studyInstanceUid) {\n // TODO: Are we using this function anywhere?? Can we remove it?\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams(filter, server.qidoSupportsIncludeField);\n var options = {\n studyInstanceUID: studyInstanceUid\n };\n return dicomWeb.searchForInstances(options).then(function (result) {\n return {\n wadoUriRoot: server.wadoUriRoot,\n studyInstanceUid: studyInstanceUid,\n seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)\n };\n });\n}\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$1(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString(new Date(filter.studyDateFrom));\n var dateTo = dateToString(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$1(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies);\n}\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar WADOProxy = {\n convertURL: function convertURL(url, server) {\n // TODO: Remove all WADOProxy stuff from this file\n return url;\n }\n};\n\nfunction parseFloatArray(obj) {\n var result = [];\n\n if (!obj) {\n return result;\n }\n\n var objs = obj.split('\\\\');\n\n for (var i = 0; i < objs.length; i++) {\n result.push(parseFloat(objs[i]));\n }\n\n return result;\n}\n/**\n * Simple cache schema for retrieved color palettes.\n */\n\n\nvar paletteColorCache = {\n count: 0,\n maxAge: 24 * 60 * 60 * 1000,\n // 24h cache?\n entries: {},\n isValidUID: function isValidUID(paletteUID) {\n return typeof paletteUID === 'string' && paletteUID.length > 0;\n },\n get: function get(paletteUID) {\n var entry = null;\n\n if (this.entries.hasOwnProperty(paletteUID)) {\n entry = this.entries[paletteUID]; // check how the entry is...\n\n if (Date.now() - entry.time > this.maxAge) {\n // entry is too old... remove entry.\n delete this.entries[paletteUID];\n this.count--;\n entry = null;\n }\n }\n\n return entry;\n },\n add: function add(entry) {\n if (this.isValidUID(entry.uid)) {\n var paletteUID = entry.uid;\n\n if (this.entries.hasOwnProperty(paletteUID) !== true) {\n this.count++; // increment cache entry count...\n }\n\n entry.time = Date.now();\n this.entries[paletteUID] = entry; // @TODO: Add logic to get rid of old entries and reduce memory usage...\n }\n }\n};\n/** Returns a WADO url for an instance\n *\n * @param studyInstanceUid\n * @param seriesInstanceUid\n * @param sopInstanceUid\n * @returns {string}\n */\n\nfunction buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n // TODO: This can be removed, since DICOMWebClient has the same function. Not urgent, though\n var params = [];\n params.push('requestType=WADO');\n params.push(\"studyUID=\".concat(studyInstanceUid));\n params.push(\"seriesUID=\".concat(seriesInstanceUid));\n params.push(\"objectUID=\".concat(sopInstanceUid));\n params.push('contentType=application/dicom');\n params.push('transferSyntax=*');\n var paramString = params.join('&');\n return \"\".concat(server.wadoUriRoot, \"?\").concat(paramString);\n}\n\nfunction buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {\n return \"\".concat(server.wadoRoot, \"/studies/\").concat(studyInstanceUid, \"/series/\").concat(seriesInstanceUid, \"/instances/\").concat(sopInstanceUid);\n}\n\nfunction buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {\n var baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n frame = frame != null || 1;\n return \"\".concat(baseWadoRsUri, \"/frames/\").concat(frame);\n}\n/**\n * Parses the SourceImageSequence, if it exists, in order\n * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID\n * is used to refer to this image in any accompanying DICOM-SR documents.\n *\n * @param instance\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getSourceImageInstanceUid(instance) {\n // TODO= Parse the whole Source Image Sequence\n // This is a really poor workaround for now.\n // Later we should probably parse the whole sequence.\n var SourceImageSequence = instance['00082112'];\n\n if (SourceImageSequence && SourceImageSequence.Value && SourceImageSequence.Value.length) {\n return SourceImageSequence.Value[0]['00081155'].Value[0];\n }\n}\n\nfunction getPaletteColor(server, instance, tag, lutDescriptor) {\n var numLutEntries = lutDescriptor[0];\n var bits = lutDescriptor[2];\n var uri = WADOProxy.convertURL(instance[tag].BulkDataURI, server); // TODO: Workaround for dcm4chee behind SSL-terminating proxy returning\n // incorrect bulk data URIs\n\n if (server.wadoRoot.indexOf('https') === 0 && !uri.includes('https')) {\n uri = uri.replace('http', 'https');\n }\n\n var config = {\n url: server.wadoRoot,\n //BulkDataURI is absolute, so this isn't used\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var options = {\n BulkDataURI: uri\n };\n\n var readUInt16 = function readUInt16(byteArray, position) {\n return byteArray[position] + byteArray[position + 1] * 256;\n };\n\n var arrayBufferToPaletteColorLUT = function arrayBufferToPaletteColorLUT(arraybuffer) {\n var byteArray = new Uint8Array(arraybuffer);\n var lut = [];\n\n for (var i = 0; i < numLutEntries; i++) {\n if (bits === 16) {\n lut[i] = readUInt16(byteArray, i * 2);\n } else {\n lut[i] = byteArray[i];\n }\n }\n\n return lut;\n };\n\n return dicomWeb.retrieveBulkData(options).then(arrayBufferToPaletteColorLUT);\n}\n/**\n * Fetch palette colors for instances with \"PALETTE COLOR\" photometricInterpretation.\n *\n * @param server {Object} Current server;\n * @param instance {Object} The retrieved instance metadata;\n * @returns {String} The ReferenceSOPInstanceUID\n */\n\n\nfunction getPaletteColors(_x, _x2, _x3) {\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction _getPaletteColors() {\n _getPaletteColors = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(server, instance, lutDescriptor) {\n var paletteUID;\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n paletteUID = DICOMWeb.getString(instance['00281199']);\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n if (paletteColorCache.isValidUID(paletteUID)) {\n var _entry = paletteColorCache.get(paletteUID);\n\n if (_entry) {\n return resolve(_entry);\n }\n } // no entry in cache... Fetch remote data.\n\n\n var r = getPaletteColor(server, instance, '00281201', lutDescriptor);\n var g = getPaletteColor(server, instance, '00281202', lutDescriptor);\n var b = getPaletteColor(server, instance, '00281203', lutDescriptor);\n var promises = [r, g, b];\n Promise.all(promises).then(function (args) {\n entry = {\n red: args[0],\n green: args[1],\n blue: args[2]\n }; // when paletteUID is present, the entry can be cached...\n\n entry.uid = paletteUID;\n paletteColorCache.add(entry);\n resolve(entry);\n });\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n return _getPaletteColors.apply(this, arguments);\n}\n\nfunction getFrameIncrementPointer(element) {\n var frameIncrementPointerNames = {\n '00181065': 'frameTimeVector',\n '00181063': 'frameTime'\n };\n\n if (!element || !element.Value || !element.Value.length) {\n return;\n }\n\n var value = element.Value[0];\n return frameIncrementPointerNames[value];\n}\n\nfunction getRadiopharmaceuticalInfo(instance) {\n var modality = DICOMWeb.getString(instance['00080060']);\n\n if (modality !== 'PT') {\n return;\n }\n\n var radiopharmaceuticalInfo = instance['00540016'];\n\n if (radiopharmaceuticalInfo === undefined || !radiopharmaceuticalInfo.Value || !radiopharmaceuticalInfo.Value.length) {\n return;\n }\n\n var firstPetRadiopharmaceuticalInfo = radiopharmaceuticalInfo.Value[0];\n return {\n radiopharmaceuticalStartTime: DICOMWeb.getString(firstPetRadiopharmaceuticalInfo['00181072']),\n radionuclideTotalDose: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181074']),\n radionuclideHalfLife: DICOMWeb.getNumber(firstPetRadiopharmaceuticalInfo['00181075'])\n };\n}\n/**\n * Parses result data from a WADO search into Study MetaData\n * Returns an object populated with study metadata, including the\n * series list.\n *\n * @param server\n * @param studyInstanceUid\n * @param resultData\n * @returns {{seriesList: Array, patientName: *, patientId: *, accessionNumber: *, studyDate: *, modalities: *, studyDescription: *, imageCount: *, studyInstanceUid: *}}\n */\n\n\nfunction resultDataToStudyMetadata$1(_x4, _x5, _x6) {\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n/**\n * Retrieve Study MetaData from a DICOM server using a WADO call\n *\n * @param server\n * @param studyInstanceUid\n * @returns {Promise}\n */\n\n\nfunction _resultDataToStudyMetadata() {\n _resultDataToStudyMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee3(server, studyInstanceUid, resultData) {\n var _studyData;\n\n var anInstance, studyData, seriesMap;\n return regenerator.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (resultData.length) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 2:\n anInstance = resultData[0];\n\n if (anInstance) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 5:\n studyData = (_studyData = {\n seriesList: [],\n studyInstanceUid: studyInstanceUid,\n wadoUriRoot: server.wadoUriRoot,\n patientName: DICOMWeb.getName(anInstance['00100010']),\n patientId: DICOMWeb.getString(anInstance['00100020']),\n patientAge: DICOMWeb.getNumber(anInstance['00101010']),\n patientSize: DICOMWeb.getNumber(anInstance['00101020']),\n patientWeight: DICOMWeb.getNumber(anInstance['00101030']),\n accessionNumber: DICOMWeb.getString(anInstance['00080050']),\n studyDate: DICOMWeb.getString(anInstance['00080020']),\n modalities: DICOMWeb.getString(anInstance['00080061']),\n studyDescription: DICOMWeb.getString(anInstance['00081030']),\n imageCount: DICOMWeb.getString(anInstance['00201208'])\n }, _defineProperty(_studyData, \"studyInstanceUid\", DICOMWeb.getString(anInstance['0020000D'])), _defineProperty(_studyData, \"institutionName\", DICOMWeb.getString(anInstance['00080080'])), _studyData);\n seriesMap = {};\n _context3.next = 9;\n return Promise.all(resultData.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2(instance) {\n var seriesInstanceUid, series, sopInstanceUid, wadouri, baseWadoRsUri, wadorsuri, instanceSummary, redPaletteColorLookupTableDescriptor, greenPaletteColorLookupTableDescriptor, bluePaletteColorLookupTableDescriptor, palettes;\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);\n series = seriesMap[seriesInstanceUid];\n\n if (!series) {\n series = {\n seriesDescription: DICOMWeb.getString(instance['0008103E']),\n modality: DICOMWeb.getString(instance['00080060']),\n seriesInstanceUid: seriesInstanceUid,\n seriesNumber: DICOMWeb.getNumber(instance['00200011']),\n seriesDate: DICOMWeb.getString(instance['00080021']),\n seriesTime: DICOMWeb.getString(instance['00080031']),\n instances: []\n };\n seriesMap[seriesInstanceUid] = series;\n studyData.seriesList.push(series);\n }\n\n sopInstanceUid = DICOMWeb.getString(instance['00080018']);\n wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);\n instanceSummary = {\n imageType: DICOMWeb.getString(instance['00080008']),\n sopClassUid: DICOMWeb.getString(instance['00080016']),\n modality: DICOMWeb.getString(instance['00080060']),\n sopInstanceUid: sopInstanceUid,\n instanceNumber: DICOMWeb.getNumber(instance['00200013']),\n imagePositionPatient: DICOMWeb.getString(instance['00200032']),\n imageOrientationPatient: DICOMWeb.getString(instance['00200037']),\n frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),\n sliceLocation: DICOMWeb.getNumber(instance['00201041']),\n samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),\n photometricInterpretation: DICOMWeb.getString(instance['00280004']),\n planarConfiguration: DICOMWeb.getNumber(instance['00280006']),\n rows: DICOMWeb.getNumber(instance['00280010']),\n columns: DICOMWeb.getNumber(instance['00280011']),\n pixelSpacing: DICOMWeb.getString(instance['00280030']),\n pixelAspectRatio: DICOMWeb.getString(instance['00280034']),\n bitsAllocated: DICOMWeb.getNumber(instance['00280100']),\n bitsStored: DICOMWeb.getNumber(instance['00280101']),\n highBit: DICOMWeb.getNumber(instance['00280102']),\n pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),\n smallestPixelValue: DICOMWeb.getNumber(instance['00280106']),\n largestPixelValue: DICOMWeb.getNumber(instance['00280107']),\n windowCenter: DICOMWeb.getString(instance['00281050']),\n windowWidth: DICOMWeb.getString(instance['00281051']),\n rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),\n rescaleSlope: DICOMWeb.getNumber(instance['00281053']),\n rescaleType: DICOMWeb.getNumber(instance['00281054']),\n sourceImageInstanceUid: getSourceImageInstanceUid(instance),\n laterality: DICOMWeb.getString(instance['00200062']),\n viewPosition: DICOMWeb.getString(instance['00185101']),\n acquisitionDateTime: DICOMWeb.getString(instance['0008002A']),\n numberOfFrames: DICOMWeb.getNumber(instance['00280008']),\n frameIncrementPointer: getFrameIncrementPointer(instance['00280009']),\n frameTime: DICOMWeb.getNumber(instance['00181063']),\n frameTimeVector: parseFloatArray(DICOMWeb.getString(instance['00181065'])),\n sliceThickness: DICOMWeb.getNumber(instance['00180050']),\n lossyImageCompression: DICOMWeb.getString(instance['00282110']),\n derivationDescription: DICOMWeb.getString(instance['00282111']),\n lossyImageCompressionRatio: DICOMWeb.getString(instance['00282112']),\n lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),\n echoNumber: DICOMWeb.getString(instance['00180086']),\n contrastBolusAgent: DICOMWeb.getString(instance['00180010']),\n radiopharmaceuticalInfo: getRadiopharmaceuticalInfo(instance),\n baseWadoRsUri: baseWadoRsUri,\n wadouri: WADOProxy.convertURL(wadouri, server),\n wadorsuri: WADOProxy.convertURL(wadorsuri, server),\n imageRendering: server.imageRendering,\n thumbnailRendering: server.thumbnailRendering\n }; // Get additional information if the instance uses \"PALETTE COLOR\" photometric interpretation\n\n if (!(instanceSummary.photometricInterpretation === 'PALETTE COLOR')) {\n _context2.next = 16;\n break;\n }\n\n redPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281101']));\n greenPaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281102']));\n bluePaletteColorLookupTableDescriptor = parseFloatArray(DICOMWeb.getString(instance['00281103']));\n _context2.next = 14;\n return getPaletteColors(server, instance, redPaletteColorLookupTableDescriptor);\n\n case 14:\n palettes = _context2.sent;\n\n if (palettes) {\n if (palettes.uid) {\n instanceSummary.paletteColorLookupTableUID = palettes.uid;\n }\n\n instanceSummary.redPaletteColorLookupTableData = palettes.red;\n instanceSummary.greenPaletteColorLookupTableData = palettes.green;\n instanceSummary.bluePaletteColorLookupTableData = palettes.blue;\n instanceSummary.redPaletteColorLookupTableDescriptor = redPaletteColorLookupTableDescriptor;\n instanceSummary.greenPaletteColorLookupTableDescriptor = greenPaletteColorLookupTableDescriptor;\n instanceSummary.bluePaletteColorLookupTableDescriptor = bluePaletteColorLookupTableDescriptor;\n }\n\n case 16:\n series.instances.push(instanceSummary);\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x9) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n return _context3.abrupt(\"return\", studyData);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n return _resultDataToStudyMetadata.apply(this, arguments);\n}\n\nfunction RetrieveMetadata(_x7, _x8) {\n return _RetrieveMetadata.apply(this, arguments);\n}\n\nfunction _RetrieveMetadata() {\n _RetrieveMetadata = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee4(server, studyInstanceUid) {\n var config, dicomWeb, options;\n return regenerator.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n config = {\n url: server.wadoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n options = {\n studyInstanceUID: studyInstanceUid\n };\n return _context4.abrupt(\"return\", dicomWeb.retrieveStudyMetadata(options).then(function (result) {\n return resultDataToStudyMetadata$1(server, studyInstanceUid, result);\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n return _RetrieveMetadata.apply(this, arguments);\n}\n\n// DICOMWeb instance, study, and metadata retrieval\nvar WADO = {\n RetrieveMetadata: RetrieveMetadata\n};\nvar QIDO = {\n Studies: Studies,\n Instances: Instances\n};\n\nvar log$1 = {\n error: console.error,\n warn: console.warn,\n info: console.log,\n debug: console.debug,\n time: console.time,\n timeEnd: console.timeEnd\n};\n\n// promises and prevent unnecessary subsequent calls to the server\n\nvar StudyMetaDataPromises = new Map();\n/**\n * Delete the cached study metadata retrieval promise to ensure that the browser will\n * re-retrieve the study metadata when it is next requested\n *\n * @param {String} studyInstanceUid The UID of the Study to be removed from cache\n *\n */\n\nfunction deleteStudyMetadataPromise(studyInstanceUid) {\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n StudyMetaDataPromises.delete(studyInstanceUid);\n }\n}\n/**\n * Retrieves study metadata using a server call\n *\n * @param {String} studyInstanceUid The UID of the Study to be retrieved\n * @returns {Promise} that will be resolved with the metadata or rejected with the error\n */\n\nfunction retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids) {\n // @TODO: Whenever a study metadata request has failed, its related promise will be rejected once and for all\n // and further requests for that metadata will always fail. On failure, we probably need to remove the\n // corresponding promise from the \"StudyMetaDataPromises\" map...\n // If the StudyMetaDataPromises cache already has a pending or resolved promise related to the\n // given studyInstanceUid, then that promise is returned\n if (StudyMetaDataPromises.has(studyInstanceUid)) {\n return StudyMetaDataPromises.get(studyInstanceUid);\n }\n\n var seriesKeys = Array.isArray(seriesInstanceUids) ? '|' + seriesInstanceUids.join('|') : '';\n var timingKey = \"retrieveStudyMetadata[\".concat(studyInstanceUid).concat(seriesKeys, \"]\");\n log$1.time(timingKey); // Create a promise to handle the data retrieval\n\n var promise = new Promise(function (resolve, reject) {\n // If no study metadata is in the cache variable, we need to retrieve it from\n // the server with a call.\n if (server.type === 'dicomWeb' && server.requestOptions.requestFromBrowser === true) {\n RetrieveMetadata(server, studyInstanceUid).then(function (data) {\n resolve(data);\n }, reject);\n }\n }); // Store the promise in cache\n\n StudyMetaDataPromises.set(studyInstanceUid, promise);\n return promise;\n}\n\n/**\n * Constants\n */\nvar STRING$1 = 'string';\nvar NUMBER$1 = 'number';\nvar FUNCTION = 'function';\nvar OBJECT = 'object';\n/**\n * Class Definition\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor and Instance Methods\n */\n function Metadata(data, uid) {\n _classCallCheck(this, Metadata);\n\n // Define the main \"_data\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n Object.defineProperty(this, '_data', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: data\n }); // Define the main \"_uid\" private property as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_uid', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: uid\n }); // Define \"_custom\" properties as an immutable property.\n // IMPORTANT: This property can only be set during instance construction.\n\n Object.defineProperty(this, '_custom', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n });\n }\n\n _createClass(Metadata, [{\n key: \"getData\",\n value: function getData() {\n return this._data;\n }\n }, {\n key: \"getDataProperty\",\n value: function getDataProperty(propertyName) {\n var propertyValue;\n var _data = this._data;\n\n if (_data instanceof Object || _typeof(_data) === OBJECT && _data !== null) {\n propertyValue = _data[propertyName];\n }\n\n return propertyValue;\n }\n /**\n * Get unique object ID\n */\n\n }, {\n key: \"getObjectID\",\n value: function getObjectID() {\n return this._uid;\n }\n /**\n * Set custom attribute value\n * @param {String} attribute Custom attribute name\n * @param {Any} value Custom attribute value\n */\n\n }, {\n key: \"setCustomAttribute\",\n value: function setCustomAttribute(attribute, value) {\n this._custom[attribute] = value;\n }\n /**\n * Get custom attribute value\n * @param {String} attribute Custom attribute name\n * @return {Any} Custom attribute value\n */\n\n }, {\n key: \"getCustomAttribute\",\n value: function getCustomAttribute(attribute) {\n return this._custom[attribute];\n }\n /**\n * Check if a custom attribute exists\n * @param {String} attribute Custom attribute name\n * @return {Boolean} True if custom attribute exists or false if not\n */\n\n }, {\n key: \"customAttributeExists\",\n value: function customAttributeExists(attribute) {\n return attribute in this._custom;\n }\n /**\n * Set custom attributes in batch mode.\n * @param {Object} attributeMap An object whose own properties will be used as custom attributes.\n */\n\n }, {\n key: \"setCustomAttributes\",\n value: function setCustomAttributes(attributeMap) {\n var _hasOwn = Object.prototype.hasOwnProperty;\n var _custom = this._custom;\n\n for (var attribute in attributeMap) {\n if (_hasOwn.call(attributeMap, attribute)) {\n _custom[attribute] = attributeMap[attribute];\n }\n }\n }\n /**\n * Static Methods\n */\n\n }], [{\n key: \"isValidUID\",\n value: function isValidUID(uid) {\n return _typeof(uid) === STRING$1 && uid.length > 0;\n }\n }, {\n key: \"isValidIndex\",\n value: function isValidIndex(index) {\n return _typeof(index) === NUMBER$1 && index >= 0 && (index | 0) === index;\n }\n }, {\n key: \"isValidCallback\",\n value: function isValidCallback(callback) {\n return _typeof(callback) === FUNCTION;\n }\n }]);\n\n return Metadata;\n}();\n\n// @TODO: improve this object\n\n/**\n * Objects to be used to throw errors\n */\nvar OHIFError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(OHIFError, _Error);\n\n function OHIFError(message) {\n var _this;\n\n _classCallCheck(this, OHIFError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFError).call(this));\n _this.message = message;\n _this.stack = new Error().stack;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return OHIFError;\n}(_wrapNativeSuper(Error));\n\n/**\n * ATTENTION! This class should never depend on StudyMetadata or SeriesMetadata classes as this could\n * possibly cause circular dependency issues.\n */\n\nvar UNDEFINED = 'undefined';\nvar STRING$2 = 'string';\nvar STUDY_INSTANCE_UID = 'x0020000d';\nvar SERIES_INSTANCE_UID = 'x0020000e';\nvar InstanceMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(InstanceMetadata, _Metadata);\n\n function InstanceMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, InstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InstanceMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _sopInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _imageId: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(InstanceMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.sopInstanceUID\n * Same as this.getSOPInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * sopInstanceCollection.findBy({\n * sopInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'sopInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSOPInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the StudyInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this.getTagValue(STUDY_INSTANCE_UID, null);\n }\n /**\n * Returns the SeriesInstanceUID of the current instance. This method is basically a shorthand the full \"getTagValue\" method call.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this.getTagValue(SERIES_INSTANCE_UID, null);\n }\n /**\n * Returns the SOPInstanceUID of the current instance.\n */\n\n }, {\n key: \"getSOPInstanceUID\",\n value: function getSOPInstanceUID() {\n return this._sopInstanceUID;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getStringValue\",\n value: function getStringValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n\n if (_typeof(value) !== STRING$2 && _typeof(value) !== UNDEFINED) {\n value = value.toString();\n }\n\n return InstanceMetadata.getIndexedValue(value, index, defaultValue);\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getFloatValue\",\n value: function getFloatValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseFloat(value) : value;\n } // @TODO: Improve this... (E.g.: blob data)\n\n }, {\n key: \"getIntValue\",\n value: function getIntValue(tagOrProperty, index, defaultValue) {\n var value = this.getTagValue(tagOrProperty, defaultValue);\n value = InstanceMetadata.getIndexedValue(value, index, defaultValue);\n\n if (value instanceof Array) {\n value.forEach(function (val, idx) {\n value[idx] = parseFloat(val);\n });\n return value;\n }\n\n return _typeof(value) === STRING$2 ? parseInt(value) : value;\n }\n /**\n * @deprecated Please use getTagValue instead.\n */\n\n }, {\n key: \"getRawValue\",\n value: function getRawValue(tagOrProperty, defaultValue) {\n return this.getTagValue(tagOrProperty, defaultValue);\n }\n /**\n * This function should be overriden by specialized classes in order to allow client libraries or viewers to take advantage of the Study Metadata API.\n */\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('InstanceMetadata::getTagValue is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Compares the current instance with another one.\n * @param {InstanceMetadata} instance An instance of the InstanceMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same instance.\n */\n\n }, {\n key: \"equals\",\n value: function equals(instance) {\n var self = this;\n return instance === self || instance instanceof InstanceMetadata && instance.getSOPInstanceUID() === self.getSOPInstanceUID();\n }\n /**\n * Check if the tagOrProperty exists\n * @param {String} tagOrProperty tag or property be checked\n * @return {Boolean} True if the tag or property exists or false if doesn't\n */\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::tagExists is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Get custom image id of a sop instance\n * @return {Any} sop instance image id\n */\n\n }, {\n key: \"getImageId\",\n value: function getImageId(frame) {\n /**\n * Please override this method\n */\n throw new OHIFError('InstanceMetadata::getImageId is not overriden. Please, override it in a specialized class. See OHIFInstanceMetadata for example');\n }\n /**\n * Static Methods\n */\n\n /**\n * Get an value based that can be index based. This function is called by all getters. See above functions.\n * - If value is a String and has indexes:\n * - If undefined index: returns an array of the split values.\n * - If defined index:\n * - If invalid: returns defaultValue\n * - If valid: returns the indexed value\n * - If value is not a String, returns default value.\n */\n\n }], [{\n key: \"getIndexedValue\",\n value: function getIndexedValue(value, index, defaultValue) {\n var result = defaultValue;\n\n if (_typeof(value) === STRING$2) {\n var hasIndexValues = value.indexOf('\\\\') !== -1;\n result = value;\n\n if (hasIndexValues) {\n var splitValues = value.split('\\\\');\n\n if (Metadata.isValidIndex(index)) {\n var indexedValue = splitValues[index];\n result = _typeof(indexedValue) !== STRING$2 ? defaultValue : indexedValue;\n } else {\n result = splitValues;\n }\n }\n }\n\n return result;\n }\n }]);\n\n return InstanceMetadata;\n}(Metadata);\n\nvar SeriesMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(SeriesMetadata, _Metadata);\n\n function SeriesMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, SeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SeriesMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _seriesInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _instances: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(SeriesMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.seriesInstanceUID\n * Same as this.getSeriesInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * seriesCollection.findBy({\n * seriesInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getSeriesInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Returns the SeriesInstanceUID of the current series.\n */\n\n }, {\n key: \"getSeriesInstanceUID\",\n value: function getSeriesInstanceUID() {\n return this._seriesInstanceUID;\n }\n /**\n * Append an instance to the current series.\n * @param {InstanceMetadata} instance The instance to be added to the current series.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addInstance\",\n value: function addInstance(instance) {\n var result = false;\n\n if (instance instanceof InstanceMetadata && this.getInstanceByUID(instance.getSOPInstanceUID()) === void 0) {\n this._instances.push(instance);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Get the first instance of the current series retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var found = this.getInstanceByIndex(0);\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n\n return instance;\n }\n /**\n * Find an instance by index.\n * @param {number} index An integer representing a list index.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByIndex\",\n value: function getInstanceByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._instances[index];\n }\n\n return found;\n }\n /**\n * Find an instance by SOPInstanceUID.\n * @param {string} uid An UID string.\n * @returns {InstanceMetadata} Returns a InstanceMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getInstanceByUID\",\n value: function getInstanceByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._instances.find(function (instance) {\n return instance.getSOPInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of instances within the current series.\n * @returns {number} The number of instances in the current series.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._instances.length;\n }\n /**\n * Invokes the supplied callback for each instance in the current series passing\n * two arguments: instance (an InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance in the series.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachInstance\",\n value: function forEachInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._instances.forEach(function (instance, index) {\n callback.call(null, instance, index);\n });\n }\n }\n /**\n * Find the index of an instance inside the series.\n * @param {InstanceMetadata} instance An instance of the SeriesMetadata class.\n * @returns {number} The index of the instance inside the series or -1 if not found.\n */\n\n }, {\n key: \"indexOfInstance\",\n value: function indexOfInstance(instance) {\n return this._instances.indexOf(instance);\n }\n /**\n * Search the associated instances using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._instances.find(function (instance, index) {\n return callback.call(null, instance, index);\n });\n }\n }\n /**\n * Compares the current series with another one.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same series.\n */\n\n }, {\n key: \"equals\",\n value: function equals(series) {\n var self = this;\n return series === self || series instanceof SeriesMetadata && series.getSeriesInstanceUID() === self.getSeriesInstanceUID();\n }\n }]);\n\n return SeriesMetadata;\n}(Metadata);\n\n/**\n * Create a random GUID\n *\n * @return {string}\n */\nfunction guid() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\nvar OBJECT$1 = 'object';\n/**\n * This class defines an ImageSet object which will be used across the viewer. This object represents\n * a list of images that are associated by any arbitrary criteria being thus content agnostic. Besides the\n * main attributes (images and uid) it allows additional attributes to be appended to it (currently\n * indiscriminately, but this should be changed).\n */\n\nvar ImageSet =\n/*#__PURE__*/\nfunction () {\n function ImageSet(images) {\n _classCallCheck(this, ImageSet);\n\n if (Array.isArray(images) !== true) {\n throw new OHIFError('ImageSet expects an array of images');\n } // @property \"images\"\n\n\n Object.defineProperty(this, 'images', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: images\n }); // @property \"uid\"\n\n Object.defineProperty(this, 'uid', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: guid() // Unique ID of the instance\n\n });\n }\n\n _createClass(ImageSet, [{\n key: \"getUID\",\n value: function getUID() {\n return this.uid;\n }\n }, {\n key: \"setAttribute\",\n value: function setAttribute(attribute, value) {\n this[attribute] = value;\n }\n }, {\n key: \"getAttribute\",\n value: function getAttribute(attribute) {\n return this[attribute];\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n if (_typeof(attributes) === OBJECT$1 && attributes !== null) {\n var imageSet = this,\n hasOwn = Object.prototype.hasOwnProperty;\n\n for (var attribute in attributes) {\n if (hasOwn.call(attributes, attribute)) {\n imageSet[attribute] = attributes[attribute];\n }\n }\n }\n }\n }, {\n key: \"getImage\",\n value: function getImage(index) {\n return this.images[index];\n }\n }, {\n key: \"sortBy\",\n value: function sortBy(sortingCallback) {\n return this.images.sort(sortingCallback);\n }\n }]);\n\n return ImageSet;\n}();\n\nvar StudyMetadata =\n/*#__PURE__*/\nfunction (_Metadata) {\n _inherits(StudyMetadata, _Metadata);\n\n function StudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, StudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyMetadata).call(this, data, uid)); // Initialize Private Properties\n\n Object.defineProperties(_assertThisInitialized(_assertThisInitialized(_this)), {\n _studyInstanceUID: {\n configurable: true,\n // configurable so that it can be redefined in sub-classes...\n enumerable: false,\n writable: true,\n value: null\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _displaySets: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: []\n },\n _firstSeries: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n },\n _firstInstance: {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n }\n }); // Initialize Public Properties\n\n _this._definePublicProperties();\n\n return _this;\n }\n /**\n * Private Methods\n */\n\n /**\n * Define Public Properties\n * This method should only be called during initialization (inside the class constructor)\n */\n\n\n _createClass(StudyMetadata, [{\n key: \"_definePublicProperties\",\n value: function _definePublicProperties() {\n /**\n * Property: this.studyInstanceUID\n * Same as this.getStudyInstanceUID()\n * It's specially useful in contexts where a method call is not suitable like in search criteria. For example:\n * studyCollection.findBy({\n * studyInstanceUID: '1.2.3.4.5.6.77777.8888888.99999999999.0'\n * });\n */\n Object.defineProperty(this, 'studyInstanceUID', {\n configurable: false,\n enumerable: false,\n get: function get() {\n return this.getStudyInstanceUID();\n }\n });\n }\n /**\n * Public Methods\n */\n\n /**\n * Getter for displaySets\n * @return {Array} Array of display set object\n */\n\n }, {\n key: \"getDisplaySets\",\n value: function getDisplaySets() {\n return this._displaySets.slice();\n }\n /**\n * Set display sets\n * @param {Array} displaySets Array of display sets (ImageSet[])\n */\n\n }, {\n key: \"setDisplaySets\",\n value: function setDisplaySets(displaySets) {\n var _this2 = this;\n\n displaySets.forEach(function (displaySet) {\n return _this2.addDisplaySet(displaySet);\n });\n }\n /**\n * Add a single display set to the list\n * @param {Object} displaySet Display set object\n * @returns {boolean} True on success, false on failure.\n */\n\n }, {\n key: \"addDisplaySet\",\n value: function addDisplaySet(displaySet) {\n if (displaySet instanceof ImageSet) {\n this._displaySets.push(displaySet);\n\n return true;\n }\n\n return false;\n }\n /**\n * Invokes the supplied callback for each display set in the current study passing\n * two arguments: display set (a ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachDisplaySet\",\n value: function forEachDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._displaySets.forEach(function (displaySet, index) {\n callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Search the associated display sets using the supplied callback as criteria. The callback is passed\n * two arguments: display set (an ImageSet instance) and index (the integer\n * index of the display set within the current study)\n * @param {function} callback The callback function which will be invoked for each display set instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"findDisplaySet\",\n value: function findDisplaySet(callback) {\n if (Metadata.isValidCallback(callback)) {\n return this._displaySets.find(function (displaySet, index) {\n return callback.call(null, displaySet, index);\n });\n }\n }\n /**\n * Retrieve the number of display sets within the current study.\n * @returns {number} The number of display sets in the current study.\n */\n\n }, {\n key: \"getDisplaySetCount\",\n value: function getDisplaySetCount() {\n return this._displaySets.length;\n }\n /**\n * Returns the StudyInstanceUID of the current study.\n */\n\n }, {\n key: \"getStudyInstanceUID\",\n value: function getStudyInstanceUID() {\n return this._studyInstanceUID;\n }\n /**\n * Getter for series\n * @return {Array} Array of SeriesMetadata object\n */\n\n }, {\n key: \"getSeries\",\n value: function getSeries() {\n return this._series.slice();\n }\n /**\n * Append a series to the current study.\n * @param {SeriesMetadata} series The series to be added to the current study.\n * @returns {boolean} Returns true on success, false otherwise.\n */\n\n }, {\n key: \"addSeries\",\n value: function addSeries(series) {\n var result = false;\n\n if (series instanceof SeriesMetadata && this.getSeriesByUID(series.getSeriesInstanceUID()) === void 0) {\n this._series.push(series);\n\n result = true;\n }\n\n return result;\n }\n /**\n * Find a series by index.\n * @param {number} index An integer representing a list index.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByIndex\",\n value: function getSeriesByIndex(index) {\n var found; // undefined by default...\n\n if (Metadata.isValidIndex(index)) {\n found = this._series[index];\n }\n\n return found;\n }\n /**\n * Find a series by SeriesInstanceUID.\n * @param {string} uid An UID string.\n * @returns {SeriesMetadata} Returns a SeriesMetadata instance when found or undefined otherwise.\n */\n\n }, {\n key: \"getSeriesByUID\",\n value: function getSeriesByUID(uid) {\n var found; // undefined by default...\n\n if (Metadata.isValidUID(uid)) {\n found = this._series.find(function (series) {\n return series.getSeriesInstanceUID() === uid;\n });\n }\n\n return found;\n }\n /**\n * Retrieve the number of series within the current study.\n * @returns {number} The number of series in the current study.\n */\n\n }, {\n key: \"getSeriesCount\",\n value: function getSeriesCount() {\n return this._series.length;\n }\n /**\n * Retrieve the number of instances within the current study.\n * @returns {number} The number of instances in the current study.\n */\n\n }, {\n key: \"getInstanceCount\",\n value: function getInstanceCount() {\n return this._series.reduce(function (sum, series) {\n return sum + series.getInstanceCount();\n }, 0);\n }\n /**\n * Invokes the supplied callback for each series in the current study passing\n * two arguments: series (a SeriesMetadata instance) and index (the integer\n * index of the series within the current study)\n * @param {function} callback The callback function which will be invoked for each series instance.\n * @returns {undefined} Nothing is returned.\n */\n\n }, {\n key: \"forEachSeries\",\n value: function forEachSeries(callback) {\n if (Metadata.isValidCallback(callback)) {\n this._series.forEach(function (series, index) {\n callback.call(null, series, index);\n });\n }\n }\n /**\n * Find the index of a series inside the study.\n * @param {SeriesMetadata} series An instance of the SeriesMetadata class.\n * @returns {number} The index of the series inside the study or -1 if not found.\n */\n\n }, {\n key: \"indexOfSeries\",\n value: function indexOfSeries(series) {\n return this._series.indexOf(series);\n }\n /**\n * It sorts the series based on display sets order. Each series must be an instance\n * of SeriesMetadata and each display sets must be an instance of ImageSet.\n * Useful example of usage:\n * Study data provided by backend does not sort series at all and client-side\n * needs series sorted by the same criteria used for sorting display sets.\n */\n\n }, {\n key: \"sortSeriesByDisplaySets\",\n value: function sortSeriesByDisplaySets() {\n var _this3 = this;\n\n // Object for mapping display sets' index by seriesInstanceUid\n var displaySetsMapping = {}; // Loop through each display set to create the mapping\n\n this.forEachDisplaySet(function (displaySet, index) {\n if (!(displaySet instanceof ImageSet)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets display set at index \".concat(index, \" is not an instance of ImageSet\"));\n } // In case of multiframe studies, just get the first index occurence\n\n\n if (displaySetsMapping[displaySet.seriesInstanceUid] === void 0) {\n displaySetsMapping[displaySet.seriesInstanceUid] = index;\n }\n }); // Clone of actual series\n\n var actualSeries = this.getSeries();\n actualSeries.forEach(function (series, index) {\n if (!(series instanceof SeriesMetadata)) {\n throw new OHIFError(\"StudyMetadata::sortSeriesByDisplaySets series at index \".concat(index, \" is not an instance of SeriesMetadata\"));\n } // Get the new series index\n\n\n var seriesIndex = displaySetsMapping[series.getSeriesInstanceUID()]; // Update the series object with the new series position\n\n _this3._series[seriesIndex] = series;\n });\n }\n /**\n * Compares the current study instance with another one.\n * @param {StudyMetadata} study An instance of the StudyMetadata class.\n * @returns {boolean} Returns true if both instances refer to the same study.\n */\n\n }, {\n key: \"equals\",\n value: function equals(study) {\n var self = this;\n return study === self || study instanceof StudyMetadata && study.getStudyInstanceUID() === self.getStudyInstanceUID();\n }\n /**\n * Get the first series of the current study retaining a consistent result across multiple calls.\n * @return {SeriesMetadata} An instance of the SeriesMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstSeries\",\n value: function getFirstSeries() {\n var series = this._firstSeries;\n\n if (!(series instanceof SeriesMetadata)) {\n series = null;\n var found = this.getSeriesByIndex(0);\n\n if (found instanceof SeriesMetadata) {\n this._firstSeries = found;\n series = found;\n }\n }\n\n return series;\n }\n /**\n * Get the first instance of the current study retaining a consistent result across multiple calls.\n * @return {InstanceMetadata} An instance of the InstanceMetadata class or null if it does not exist.\n */\n\n }, {\n key: \"getFirstInstance\",\n value: function getFirstInstance() {\n var instance = this._firstInstance;\n\n if (!(instance instanceof InstanceMetadata)) {\n instance = null;\n var firstSeries = this.getFirstSeries();\n\n if (firstSeries instanceof SeriesMetadata) {\n var found = firstSeries.getFirstInstance();\n\n if (found instanceof InstanceMetadata) {\n this._firstInstance = found;\n instance = found;\n }\n }\n }\n\n return instance;\n }\n /**\n * Search the associated series to find an specific instance using the supplied callback as criteria.\n * The callback is passed two arguments: instance (a InstanceMetadata instance) and index (the integer\n * index of the instance within the current series)\n * @param {function} callback The callback function which will be invoked for each instance instance.\n * @returns {Object} Result object containing series (SeriesMetadata) and instance (InstanceMetadata)\n * objects or an empty object if not found.\n */\n\n }, {\n key: \"findSeriesAndInstanceByInstance\",\n value: function findSeriesAndInstanceByInstance(callback) {\n var result;\n\n if (Metadata.isValidCallback(callback)) {\n var instance;\n\n var series = this._series.find(function (series) {\n instance = series.findInstance(callback);\n return instance instanceof InstanceMetadata;\n }); // No series found\n\n\n if (series instanceof SeriesMetadata) {\n result = {\n series: series,\n instance: instance\n };\n }\n }\n\n return result || {};\n }\n /**\n * Find series by instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {SeriesMetadata|undefined} If a series is found based on callback criteria it\n * returns a SeriesMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findSeriesByInstance\",\n value: function findSeriesByInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.series;\n }\n /**\n * Find an instance using the supplied callback as criteria. The callback is passed\n * two arguments: instance (a InstanceMetadata instance) and index (the integer index of\n * the instance within its series)\n * @param {function} callback The callback function which will be invoked for each instance.\n * @returns {InstanceMetadata|undefined} If an instance is found based on callback criteria it\n * returns a InstanceMetadata. \"undefined\" is returned otherwise\n */\n\n }, {\n key: \"findInstance\",\n value: function findInstance(callback) {\n var result = this.findSeriesAndInstanceByInstance(callback);\n return result.instance;\n }\n }]);\n\n return StudyMetadata;\n}(Metadata);\n\nvar WadoRsMetaDataBuilder =\n/*#__PURE__*/\nfunction () {\n function WadoRsMetaDataBuilder() {\n _classCallCheck(this, WadoRsMetaDataBuilder);\n\n this.tags = {};\n }\n\n _createClass(WadoRsMetaDataBuilder, [{\n key: \"addTag\",\n value: function addTag(tag, value, multi) {\n this.tags[tag] = {\n tag: tag,\n value: value,\n multi: multi\n };\n return this;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var _this = this;\n\n var json = {};\n var keys = Object.keys(this.tags);\n keys.forEach(function (key) {\n if (!_this.tags.hasOwnProperty(key)) {\n return;\n }\n\n var tag = _this.tags[key];\n var multi = !!tag.multi;\n var value = tag.value;\n\n if (value == null || value.length === 1 && value[0] == null) {\n return;\n }\n\n if (typeof value === 'string' && multi) {\n value = value.split('\\\\');\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n json[key] = {\n Value: value\n };\n });\n return json;\n }\n }]);\n\n return WadoRsMetaDataBuilder;\n}();\n\nfunction getWADORSImageUrl(instance, frame) {\n var wadorsuri = instance.wadorsuri;\n\n if (!wadorsuri) {\n return;\n } // We need to sum 1 because WADO-RS frame number is 1-based\n\n\n frame = (frame || 0) + 1; // Replaces /frame/1 by /frame/{frame}\n\n wadorsuri = wadorsuri.replace(/(%2Fframes%2F)(\\d+)/, \"$1\".concat(frame));\n return wadorsuri;\n}\n/**\n * Obtain an imageId for Cornerstone based on the WADO-RS scheme\n *\n * @param {object} instanceMetada metadata object (InstanceMetadata)\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getWADORSImageId(instance, frame) {\n var uri = getWADORSImageUrl(instance, frame);\n\n if (!uri) {\n return;\n }\n\n return \"wadors:\".concat(uri);\n}\n\nfunction getRadiopharmaceuticalInfoMetaData(instance) {\n var radiopharmaceuticalInfo = instance.radiopharmaceuticalInfo;\n\n if (instance.modality !== 'PT' || !radiopharmaceuticalInfo) {\n return;\n }\n\n return new WadoRsMetaDataBuilder().addTag('00181072', radiopharmaceuticalInfo.radiopharmaceuticalStartTime).addTag('00181074', radiopharmaceuticalInfo.radionuclideTotalDose).addTag('00181075', radiopharmaceuticalInfo.radionuclideHalfLife).toJSON();\n}\n\nvar getWadoRsInstanceMetaData = function getWadoRsInstanceMetaData(study, series, instance) {\n return new WadoRsMetaDataBuilder().addTag('00080016', instance.sopClassUid).addTag('00080018', instance.sopInstanceUid).addTag('00080021', series.seriesDate).addTag('00080031', series.seriesTime).addTag('00080060', instance.modality).addTag('00101010', study.patientAge).addTag('00101020', study.patientSize).addTag('00101030', study.patientWeight).addTag('00180050', instance.sliceThickness).addTag('0020000e', series.seriesInstanceUid).addTag('00200011', series.seriesNumber).addTag('0020000d', study.studyInstanceUid).addTag('00200013', instance.instanceNumber).addTag('00200032', instance.imagePositionPatient, true).addTag('00200037', instance.imageOrientationPatient, true).addTag('00200052', instance.frameOfReferenceUID).addTag('00201041', instance.sliceLocation).addTag('00280002', instance.samplesPerPixel).addTag('00280004', instance.photometricInterpretation).addTag('00280006', instance.planarConfiguration).addTag('00280010', instance.rows).addTag('00280011', instance.columns).addTag('00280030', instance.pixelSpacing, true).addTag('00280034', instance.pixelAspectRatio, true).addTag('00280100', instance.bitsAllocated).addTag('00280101', instance.bitsStored).addTag('00280102', instance.highBit).addTag('00280103', instance.pixelRepresentation).addTag('00280106', instance.smallestPixelValue).addTag('00280107', instance.largestPixelValue).addTag('00281050', instance.windowCenter, true).addTag('00281051', instance.windowWidth, true).addTag('00281052', instance.rescaleIntercept).addTag('00281053', instance.rescaleSlope).addTag('00281054', instance.rescaleType).addTag('00281101', instance.redPaletteColorLookupTableDescriptor).addTag('00281102', instance.greenPaletteColorLookupTableDescriptor).addTag('00281103', instance.bluePaletteColorLookupTableDescriptor).addTag('00281201', instance.redPaletteColorLookupTableData).addTag('00281202', instance.greenPaletteColorLookupTableData).addTag('00281203', instance.bluePaletteColorLookupTableData).addTag('00540016', getRadiopharmaceuticalInfoMetaData(instance)).toJSON();\n};\n\nfunction updateMetaDataManager(study) {\n study.seriesList.forEach(function (series) {\n series.instances.forEach(function (instance) {\n // Cache just images that are going to be loaded via WADO-RS\n if (instance.imageRendering !== 'wadors' && instance.thumbnailRendering !== 'wadors') {\n return;\n }\n\n var metaData = getWadoRsInstanceMetaData(study, series, instance);\n var numberOfFrames = instance.numberOfFrames || 1; // We can share the same metaData with all frames because it doesn't have\n // any frame specific data, such as frameNumber, pixelData, offset, etc.\n // WADO-RS frame number is 1-based\n\n for (var frameNumber = 0; frameNumber < numberOfFrames; frameNumber++) {\n var imageId = getWADORSImageId(instance, frameNumber); // TODO Drop dependency on this\n\n external.cornerstoneWADOImageLoader.wadors.metaDataManager.add(imageId, metaData);\n }\n });\n });\n}\n\n/**\n * Retrieves metaData for multiple studies at once.\n *\n * This function calls retrieveStudyMetadata several times, asynchronously,\n * and waits for all of the results to be returned.\n *\n * @param studyInstanceUids The UIDs of the Studies to be retrieved\n * @return Promise\n */\n\nfunction retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids) {\n // Create an empty array to store the Promises for each metaData retrieval call\n var promises = []; // Loop through the array of studyInstanceUids\n\n studyInstanceUids.forEach(function (studyInstanceUid) {\n // Send the call and resolve or reject the related promise based on its outcome\n var promise = retrieveStudyMetadata(server, studyInstanceUid, seriesInstanceUids); // Add the current promise to the array of promises\n\n promises.push(promise);\n }); // When all of the promises are complete, this callback runs\n\n var promise = Promise.all(promises); // Warn the error on console if some retrieval failed\n\n promise.catch(function (error) {\n return log$1.warn(error);\n });\n return promise;\n}\n\n/**\n * Overridable namespace to allow getting study boxes data externally.\n *\n * The function must handle the first parameter as a studyInformation object containing at least the\n * studyInstanceUid attribute.\n *\n * Shall return a promise that will be resolved with an object containing those attributes:\n * - studyInstanceUid {String}: copy of studyInformation.studyInstanceUid\n * - modalities {String}: 2 uppercase letters for each modality split by any non-alphabetical char(s)\n * - studyDate {String}: date formatted as YYYYMMDD\n * - studyDescription {String}: study description string\n */\n// TODO: What is this for?\nvar getStudyBoxData = false;\n\n/**\n * Creates a QIDO date string for a date range query\n * Assumes the year is positive, at most 4 digits long.\n *\n * @param date The Date object to be formatted\n * @returns {string} The formatted date string\n */\n\nfunction dateToString$1(date) {\n if (!date) return '';\n var year = date.getFullYear().toString();\n var month = (date.getMonth() + 1).toString();\n var day = date.getDate().toString();\n year = '0'.repeat(4 - year.length).concat(year);\n month = '0'.repeat(2 - month.length).concat(month);\n day = '0'.repeat(2 - day.length).concat(day);\n return ''.concat(year, month, day);\n}\n/**\n * Produces a QIDO URL given server details and a set of specified search filter\n * items\n *\n * @param filter\n * @param serverSupportsQIDOIncludeField\n * @returns {string} The URL with encoded filter query data\n */\n\n\nfunction getQIDOQueryParams$2(filter, serverSupportsQIDOIncludeField) {\n var commaSeparatedFields = ['00081030', // Study Description\n '00080060' //Modality\n // Add more fields here if you want them in the result\n ].join(',');\n var parameters = {\n PatientName: filter.patientName,\n PatientID: filter.patientId,\n AccessionNumber: filter.accessionNumber,\n StudyDescription: filter.studyDescription,\n ModalitiesInStudy: filter.modalitiesInStudy,\n limit: filter.limit,\n offset: filter.offset,\n includefield: serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all'\n }; // build the StudyDate range parameter\n\n if (filter.studyDateFrom || filter.studyDateTo) {\n var dateFrom = dateToString$1(new Date(filter.studyDateFrom));\n var dateTo = dateToString$1(new Date(filter.studyDateTo));\n parameters.StudyDate = \"\".concat(dateFrom, \"-\").concat(dateTo);\n } // Build the StudyInstanceUID parameter\n\n\n if (filter.studyInstanceUid) {\n var studyUids = filter.studyInstanceUid;\n studyUids = Array.isArray(studyUids) ? studyUids.join() : studyUids;\n studyUids = studyUids.replace(/[^0-9.]+/g, '\\\\');\n parameters.StudyInstanceUID = studyUids;\n } // Clean query params of undefined values.\n\n\n var params = {};\n Object.keys(parameters).forEach(function (key) {\n if (parameters[key] !== undefined && parameters[key] !== \"\") {\n params[key] = parameters[key];\n }\n });\n return params;\n}\n/**\n * Parses resulting data from a QIDO call into a set of Study MetaData\n *\n * @param resultData\n * @returns {Array} An array of Study MetaData objects\n */\n\n\nfunction resultDataToStudies$1(resultData) {\n var studies = [];\n if (!resultData || !resultData.length) return;\n resultData.forEach(function (study) {\n return studies.push({\n studyInstanceUid: DICOMWeb.getString(study['0020000D']),\n // 00080005 = SpecificCharacterSet\n studyDate: DICOMWeb.getString(study['00080020']),\n studyTime: DICOMWeb.getString(study['00080030']),\n accessionNumber: DICOMWeb.getString(study['00080050']),\n referringPhysicianName: DICOMWeb.getString(study['00080090']),\n // 00081190 = URL\n patientName: DICOMWeb.getName(study['00100010']),\n patientId: DICOMWeb.getString(study['00100020']),\n patientBirthdate: DICOMWeb.getString(study['00100030']),\n patientSex: DICOMWeb.getString(study['00100040']),\n studyId: DICOMWeb.getString(study['00200010']),\n numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),\n numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),\n studyDescription: DICOMWeb.getString(study['00081030']),\n // modality: DICOMWeb.getString(study['00080060']),\n // modalitiesInStudy: DICOMWeb.getString(study['00080061']),\n modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))\n });\n });\n return studies;\n}\n\nfunction Studies$1(server, filter) {\n var config = {\n url: server.qidoRoot,\n headers: DICOMWeb.getAuthorizationHeader(server)\n };\n var dicomWeb = new DICOMwebClient.api.DICOMwebClient(config);\n var queryParams = getQIDOQueryParams$2(filter, server.qidoSupportsIncludeField);\n var options = {\n queryParams: queryParams\n };\n return dicomWeb.searchForStudies(options).then(resultDataToStudies$1);\n}\n\nvar studySearchPromises = new Map();\n/**\n * Search for studies information by the given filter\n *\n * @param {Object} filter Filter that will be used on search\n * @returns {Promise} resolved with an array of studies information or rejected with an error\n */\n\nfunction searchStudies(server, filter) {\n var promiseKey = JSON.stringify(filter);\n\n if (studySearchPromises.has(promiseKey)) {\n return studySearchPromises.get(promiseKey);\n } else {\n var promise = Studies$1(server, filter);\n studySearchPromises.set(promiseKey, promise);\n return promise;\n }\n}\n\nvar studies = {\n services: {\n QIDO: QIDO,\n WADO: WADO\n },\n loadingDict: {},\n retrieveStudyMetadata: retrieveStudyMetadata,\n deleteStudyMetadataPromise: deleteStudyMetadataPromise,\n retrieveStudiesMetadata: retrieveStudiesMetadata,\n getStudyBoxData: getStudyBoxData,\n searchStudies: searchStudies\n};\n\nfunction isFunction(subject) {\n return typeof subject === 'function';\n}\n\nvar CommandsManager =\n/*#__PURE__*/\nfunction () {\n function CommandsManager() {\n _classCallCheck(this, CommandsManager);\n\n this.contexts = {}; // Enable reactivity by storing the last executed command\n //this.last = new ReactiveVar('');\n }\n\n _createClass(CommandsManager, [{\n key: \"getContext\",\n value: function getContext(contextName) {\n var context = this.contexts[contextName];\n\n if (!context) {\n return log$1.warn(\"No context found with name \\\"\".concat(contextName, \"\\\"\"));\n }\n\n return context;\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n var contextName = OHIF.context.get();\n\n if (!contextName) {\n return log$1.warn('There is no selected context');\n }\n\n return this.getContext(contextName);\n }\n }, {\n key: \"createContext\",\n value: function createContext(contextName) {\n if (!contextName) return;\n\n if (this.contexts[contextName]) {\n return this.clear(contextName);\n }\n\n this.contexts[contextName] = {};\n }\n }, {\n key: \"set\",\n value: function set(contextName, definitions) {\n var extend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (_typeof(definitions) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n\n if (!extend) {\n this.clear(contextName);\n }\n\n Object.keys(definitions).forEach(function (command) {\n return context[command] = definitions[command];\n });\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, definition) {\n if (_typeof(definition) !== 'object') return;\n var context = this.getContext(contextName);\n if (!context) return;\n context[command] = definition;\n }\n }, {\n key: \"setDisabledFunction\",\n value: function setDisabledFunction(contextName, command, func) {\n if (!command || typeof func !== 'function') return;\n var context = this.getContext(contextName);\n if (!context) return;\n var definition = context[command];\n\n if (!definition) {\n return log$1.warn(\"Trying to set a disabled function to a command \\\"\".concat(command, \"\\\" that was not yet defined\"));\n }\n\n definition.disabled = func;\n }\n }, {\n key: \"clear\",\n value: function clear(contextName) {\n if (!contextName) return;\n this.contexts[contextName] = {};\n }\n }, {\n key: \"getDefinition\",\n value: function getDefinition(command) {\n var context = this.getCurrentContext();\n if (!context) return;\n return context[command];\n }\n }, {\n key: \"isDisabled\",\n value: function isDisabled(command) {\n var definition = this.getDefinition(command);\n if (!definition) return false;\n var disabled = definition.disabled;\n if (isFunction(disabled) && disabled()) return true;\n if (!isFunction(disabled) && disabled) return true;\n return false;\n }\n }, {\n key: \"run\",\n value: function run(command) {\n var definition = this.getDefinition(command);\n\n if (!definition) {\n return log$1.warn(\"Command \\\"\".concat(command, \"\\\" not found in current context\"));\n }\n\n var action = definition.action,\n params = definition.params;\n if (this.isDisabled(command)) return;\n\n if (typeof action !== 'function') {\n return log$1.warn(\"No action was defined for command \\\"\".concat(command, \"\\\"\"));\n } else {\n var result = action(params);\n /*if (this.last.get() === command) {\n this.last.dep.changed();\n } else {\n this.last.set(command);\n }*/\n\n return result;\n }\n }\n }]);\n\n return CommandsManager;\n}();\n\nvar commands = new CommandsManager(); // Export relevant objects\n\nvar HotkeysContext =\n/*#__PURE__*/\nfunction () {\n function HotkeysContext(name, definitions, enabled) {\n _classCallCheck(this, HotkeysContext);\n\n this.name = name;\n this.definitions = Object.assign({}, definitions);\n this.enabled = enabled;\n }\n\n _createClass(HotkeysContext, [{\n key: \"extend\",\n value: function extend() {\n var _this = this;\n\n var definitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (_typeof(definitions) !== 'object') return;\n this.definitions = Object.assign({}, definitions);\n Object.keys(definitions).forEach(function (command) {\n var hotkey = definitions[command];\n\n _this.unregister(command);\n\n if (hotkey) {\n _this.register(command, hotkey);\n }\n\n _this.definitions[command] = hotkey;\n });\n }\n }, {\n key: \"register\",\n value: function register(command, hotkey) {\n var _this2 = this;\n\n if (!hotkey) {\n return;\n }\n\n if (!command) {\n return log$1.warn(\"No command was defined for hotkey \\\"\".concat(hotkey, \"\\\"\"));\n }\n\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n var bind = function bind(hotkey) {\n return $(document).bind(bindingKey, hotkey, function (event) {\n if (!_this2.enabled.get()) return;\n OHIF.commands.run(command);\n event.preventDefault();\n });\n };\n\n if (hotkey instanceof Array) {\n hotkey.forEach(function (hotkey) {\n return bind(hotkey);\n });\n } else {\n bind(hotkey);\n }\n }\n }, {\n key: \"unregister\",\n value: function unregister(command) {\n var bindingKey = \"keydown.hotkey.\".concat(this.name, \".\").concat(command);\n\n if (this.definitions[command]) {\n $(document).unbind(bindingKey);\n delete this.definitions[command];\n }\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n var _this3 = this;\n\n Object.keys(this.definitions).forEach(function (command) {\n var hotkey = _this3.definitions[command];\n\n _this3.register(command, hotkey);\n });\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n $(document).unbind(\"keydown.hotkey.\".concat(this.name));\n }\n }]);\n\n return HotkeysContext;\n}();\n\nvar HotkeysManager =\n/*#__PURE__*/\nfunction () {\n function HotkeysManager() {\n _classCallCheck(this, HotkeysManager);\n\n this.contexts = {};\n this.defaults = {};\n this.currentContextName = null;\n this.enabled = true;\n this.retrieveFunction = null;\n this.storeFunction = null;\n }\n\n _createClass(HotkeysManager, [{\n key: \"setRetrieveFunction\",\n value: function setRetrieveFunction(retrieveFunction) {\n this.retrieveFunction = retrieveFunction;\n }\n }, {\n key: \"setStoreFunction\",\n value: function setStoreFunction(storeFunction) {\n this.storeFunction = storeFunction;\n }\n }, {\n key: \"store\",\n value: function store(contextName, definitions) {\n var _this = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this.storeFunction) {\n _this.storeFunction.call(_this, storageKey, definitions).then(resolve).catch(reject); //} else if (OHIF.user.userLoggedIn()) {\n // OHIF.user.setData(storageKey, definitions).then(resolve).catch(reject);\n\n } else {\n var definitionsJSON = JSON.stringify(definitions);\n localStorage.setItem(storageKey, definitionsJSON);\n resolve();\n }\n });\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(contextName) {\n var _this2 = this;\n\n var storageKey = \"hotkeysDefinitions.\".concat(contextName);\n return new Promise(function (resolve, reject) {\n if (_this2.retrieveFunction) {\n _this2.retrieveFunction(contextName).then(resolve).catch(reject);\n } else if (OHIF.user.userLoggedIn()) {\n try {\n resolve(OHIF.user.getData(storageKey));\n } catch (error) {\n reject(error);\n }\n } else {\n var definitionsJSON = localStorage.getItem(storageKey) || '';\n var definitions = JSON.parse(definitionsJSON) || undefined;\n resolve(definitions);\n }\n });\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled.set(false);\n }\n }, {\n key: \"enable\",\n value: function enable() {\n this.enabled.set(true);\n }\n }, {\n key: \"getContext\",\n value: function getContext(contextName) {\n return this.contexts[contextName];\n }\n }, {\n key: \"getCurrentContext\",\n value: function getCurrentContext() {\n return this.getContext(this.currentContextName);\n }\n }, {\n key: \"load\",\n value: function load(contextName) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var context = _this3.getContext(contextName);\n\n if (!context) return reject();\n\n _this3.retrieve(contextName).then(function (defs) {\n var definitions = defs || _this3.defaults[contextName];\n\n if (!definitions) {\n _this3.changeObserver.changed();\n\n return reject();\n }\n\n context.destroy();\n context.definitions = definitions;\n context.initialize();\n\n _this3.changeObserver.changed();\n\n resolve(definitions);\n }).catch(reject);\n });\n }\n }, {\n key: \"set\",\n value: function set(contextName, contextDefinitions) {\n var isDefaultDefinitions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var enabled = this.enabled;\n var context = new HotkeysContext(contextName, contextDefinitions, enabled);\n var currentContext = this.getCurrentContext();\n\n if (currentContext && currentContext.name === contextName) {\n currentContext.destroy();\n context.initialize();\n }\n\n this.contexts[contextName] = context;\n\n if (isDefaultDefinitions) {\n this.defaults[contextName] = contextDefinitions;\n }\n }\n }, {\n key: \"register\",\n value: function register(contextName, command, hotkey) {\n if (!command || !hotkey) return;\n var context = this.getContext(contextName);\n\n if (!context) {\n this.set(contextName, {});\n }\n\n context.register(command, hotkey);\n }\n }, {\n key: \"unsetContext\",\n value: function unsetContext(contextName) {\n if (contextName === this.currentContextName) {\n this.getCurrentContext().destroy();\n }\n\n delete this.contexts[contextName];\n delete this.defaults[contextName];\n }\n }, {\n key: \"resetDefaults\",\n value: function resetDefaults(contextName) {\n var context = this.getContext(contextName);\n var definitions = this.defaults[contextName];\n if (!context || !definitions) return;\n context.extend(definitions);\n return this.store(contextName, definitions);\n }\n }, {\n key: \"switchToContext\",\n value: function switchToContext(contextName) {\n var currentContext = this.getCurrentContext();\n\n if (currentContext) {\n currentContext.destroy();\n }\n\n var newContext = this.contexts[contextName];\n if (!newContext) return;\n this.currentContextName = contextName;\n newContext.initialize();\n this.load(contextName).catch(function () {});\n }\n }]);\n\n return HotkeysManager;\n}();\n\n//import 'jquery.hotkeys';\n// Create hotkeys namespace using a HotkeysManager class instance\n\nvar hotkeys = new HotkeysManager(); // Export relevant objects\n\nvar FUNCTION$1 = 'function';\nvar STRING$3 = 'string';\nvar WILDCARD = '*'; // \"*\" is a special name which means \"all children\".\n\nvar SEPARATOR = '.';\n/**\n * Main Namespace Component Class\n */\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n function Node() {\n _classCallCheck(this, Node);\n\n this.value = 0;\n this.children = {};\n this.handlers = {};\n }\n\n _createClass(Node, [{\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return _typeof(path) === STRING$3 ? path.split(SEPARATOR) : null;\n }\n }, {\n key: \"getNodeUpToIndex\",\n value: function getNodeUpToIndex(path, index) {\n var node = this;\n\n for (var i = 0; i < index; ++i) {\n var item = path[i];\n\n if (node.children.hasOwnProperty(item)) {\n node = node.children[item];\n } else {\n node = null;\n break;\n }\n }\n\n return node;\n }\n }, {\n key: \"append\",\n value: function append(name, value) {\n var children = this.children;\n var node = null;\n\n if (children.hasOwnProperty(name)) {\n node = children[name];\n } else if (_typeof(name) === STRING$3 && name !== WILDCARD) {\n node = new Node();\n children[name] = node;\n }\n\n if (node !== null) {\n node.value += value > 0 ? parseInt(value) : 0;\n }\n\n return node;\n }\n }, {\n key: \"probe\",\n value: function probe(recursively) {\n var value = this.value; // Calculate entire tree value recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n }\n\n return value;\n }\n }, {\n key: \"clear\",\n value: function clear(recursively) {\n this.value = 0; // Clear entire tree recursively?\n\n if (recursively === true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n }\n }\n }, {\n key: \"appendPath\",\n value: function appendPath(path, value) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this;\n\n for (var i = 0; i < last; ++i) {\n node = node.append(path[i], 0);\n\n if (node === null) {\n return false;\n }\n }\n\n return node.append(path[last], value) !== null;\n }\n\n return false;\n }\n }, {\n key: \"clearPath\",\n value: function clearPath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n node.children[item].clear(recursively);\n return true;\n }\n } else {\n var children = node.children;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].clear(recursively);\n }\n }\n\n return true;\n }\n }\n }\n\n return false;\n }\n }, {\n key: \"probePath\",\n value: function probePath(path, recursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var last = path.length - 1;\n var node = this.getNodeUpToIndex(path, last);\n\n if (node !== null) {\n var item = path[last];\n\n if (item !== WILDCARD) {\n if (node.children.hasOwnProperty(item)) {\n return node.children[item].probe(recursively);\n }\n } else {\n var children = node.children;\n var value = 0;\n\n for (item in children) {\n if (children.hasOwnProperty(item)) {\n value += children[item].probe(recursively);\n }\n }\n\n return value;\n }\n }\n }\n\n return 0;\n }\n }, {\n key: \"attachHandler\",\n value: function attachHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n var list = handlers.hasOwnProperty(type) ? handlers[type] : handlers[type] = [];\n var length = list.length;\n var notFound = true;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n notFound = false;\n break;\n }\n }\n\n if (notFound) {\n list[length] = handler;\n result = true;\n }\n }\n\n return result;\n }\n }, {\n key: \"removeHandler\",\n value: function removeHandler(type, handler) {\n var result = false;\n\n if (_typeof(type) === STRING$3 && _typeof(handler) === FUNCTION$1) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n if (handler === list[i]) {\n list.splice(i, 1);\n result = true;\n break;\n }\n }\n }\n }\n\n return result;\n }\n }, {\n key: \"trigger\",\n value: function trigger(type, nonRecursively) {\n if (_typeof(type) === STRING$3) {\n var handlers = this.handlers;\n\n if (handlers.hasOwnProperty(type)) {\n var list = handlers[type];\n var length = list.length;\n\n for (var i = 0; i < length; ++i) {\n list[i].call(null);\n }\n }\n\n if (nonRecursively !== true) {\n var children = this.children;\n\n for (var item in children) {\n if (children.hasOwnProperty(item)) {\n children[item].trigger(type);\n }\n }\n }\n }\n }\n }, {\n key: \"attachHandlerForPath\",\n value: function attachHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.attachHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"removeHandlerForPath\",\n value: function removeHandlerForPath(path, type, handler) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n return node.removeHandler(type, handler);\n }\n }\n\n return false;\n }\n }, {\n key: \"triggerHandlersForPath\",\n value: function triggerHandlersForPath(path, type, nonRecursively) {\n path = this.getPathComponents(path);\n\n if (path !== null) {\n var node = this.getNodeUpToIndex(path, path.length);\n\n if (node !== null) {\n node.trigger(type, nonRecursively);\n }\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * Root Namespace Node and API\n */\n\n\nvar rootNode = new Node();\n\nfunction handleError(error) {\n var title = error.title,\n message = error.message;\n\n if (!title) {\n if (error instanceof Error) {\n title = error.name;\n }\n }\n\n if (!message) {\n if (error instanceof Error) {\n message = error.message;\n }\n }\n\n var data = Object.assign({\n title: title,\n message: message,\n class: 'themed',\n hideConfirm: true,\n cancelLabel: 'Dismiss',\n cancelClass: 'btn-secondary'\n }, error || {});\n log$1.error(error); // TODO: Find a better way to handle errors instead of displaying a dialog for all of them.\n // OHIF.ui.showDialog('dialogForm', data);\n}\n\n/**\n * Check if the pressed key combination will result in a character input\n * Got from https://stackoverflow.com/questions/4179708/how-to-detect-if-the-pressed-key-will-produce-a-character-inside-an-input-text\n *\n * @returns {Boolean} Whether the pressed key combination will input a character or not\n */\nfunction isCharacterKeyPress(event) {\n if (typeof event.which === 'undefined') {\n // This is IE, which only fires keypress events for printable keys\n return true;\n } else if (typeof event.which === 'number' && event.which > 0) {\n // In other browsers except old versions of WebKit, event.which is\n // only greater than zero if the keypress is a printable key.\n // We need to filter out backspace and ctrl/alt/meta key combinations\n return !event.ctrlKey && !event.metaKey && !event.altKey && event.which !== 8;\n }\n\n return false;\n}\n\n/**\n * Get the offset for the given element\n *\n * @param {Object} element DOM element which will have the offser calculated\n * @returns {Object} Object containing the top and left offset\n */\nfunction getOffset(element) {\n var top = 0;\n var left = 0;\n\n if (element.offsetParent) {\n do {\n left += element.offsetLeft;\n top += element.offsetTop;\n } while (element = element.offsetParent);\n }\n\n return {\n left: left,\n top: top\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar ui = {\n getScrollbarSize: getScrollbarSize,\n getOffset: getOffset,\n isCharacterKeyPress: isCharacterKeyPress,\n handleError: handleError\n};\n\n//import Dropdown from './ui/dropdown/class.js';\n\n/*\n * Defines the base OHIF header object\n */\n//const dropdown = new OHIF.ui.Dropdown();\nvar header = {};\n\nvar ObjectPath =\n/*#__PURE__*/\nfunction () {\n function ObjectPath() {\n _classCallCheck(this, ObjectPath);\n }\n\n _createClass(ObjectPath, null, [{\n key: \"set\",\n\n /**\n * Set an object property based on \"path\" (namespace) supplied creating\n * ... intermediary objects if they do not exist.\n * @param object {Object} An object where the properties specified on path should be set.\n * @param path {String} A string representing the property to be set, e.g. \"user.study.series.timepoint\".\n * @param value {Any} The value of the property that will be set.\n * @return {Boolean} Returns \"true\" on success, \"false\" if any intermediate component of the supplied path\n * ... is not a valid Object, in which case the property cannot be set. No excpetions are thrown.\n */\n value: function set(object, path, value) {\n var components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0,\n result = false;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n\n if (field in currentObject) {\n if (!ObjectPath.isValidObject(currentObject[field])) {\n break;\n }\n } else {\n currentObject[field] = {};\n }\n\n currentObject = currentObject[field];\n i++;\n }\n\n if (i === last) {\n currentObject[components[last]] = value;\n result = true;\n }\n }\n\n return result;\n }\n /**\n * Get an object property based on \"path\" (namespace) supplied traversing the object\n * ... tree as necessary.\n * @param object {Object} An object where the properties specified might exist.\n * @param path {String} A string representing the property to be searched for, e.g. \"user.study.series.timepoint\".\n * @return {Any} The value of the property if found. By default, returns the special type \"undefined\".\n */\n\n }, {\n key: \"get\",\n value: function get(object, path) {\n var found,\n // undefined by default\n components = ObjectPath.getPathComponents(path),\n length = components !== null ? components.length : 0;\n\n if (length > 0 && ObjectPath.isValidObject(object)) {\n var i = 0,\n last = length - 1,\n currentObject = object;\n\n while (i < last) {\n var field = components[i];\n var isValid = ObjectPath.isValidObject(currentObject[field]);\n\n if (field in currentObject && isValid) {\n currentObject = currentObject[field];\n i++;\n } else {\n break;\n }\n }\n\n if (i === last && components[last] in currentObject) {\n found = currentObject[components[last]];\n }\n }\n\n return found;\n }\n /**\n * Check if the supplied argument is a real JavaScript Object instance.\n * @param object {Any} The subject to be tested.\n * @return {Boolean} Returns \"true\" if the object is a real Object instance and \"false\" otherwise.\n */\n\n }, {\n key: \"isValidObject\",\n value: function isValidObject(object) {\n return _typeof(object) === 'object' && object !== null && object instanceof Object;\n }\n }, {\n key: \"getPathComponents\",\n value: function getPathComponents(path) {\n return typeof path === 'string' ? path.split('.') : null;\n }\n }]);\n\n return ObjectPath;\n}();\n\nfunction absoluteUrl(path) {\n var absolutePath = '/'; // TODO: Find another way to get root url\n\n var absoluteUrl = window.location.origin;\n var absoluteUrlParts = absoluteUrl.split('/');\n\n if (absoluteUrlParts.length > 4) {\n var rootUrlPrefixIndex = absoluteUrl.indexOf(absoluteUrlParts[3]);\n absolutePath += absoluteUrl.substring(rootUrlPrefixIndex) + path;\n } else {\n absolutePath += path;\n }\n\n return absolutePath.replace(/\\/\\/+/g, '/');\n}\n\n// TODO: figure out where else to put this function\nfunction addServers(servers, store) {\n Object.keys(servers).forEach(function (serverType) {\n var endpoints = servers[serverType];\n endpoints.forEach(function (endpoint) {\n var server = Object.assign({}, endpoint);\n server.type = serverType;\n store.dispatch({\n type: 'ADD_SERVER',\n server: server\n });\n });\n });\n}\n\n// Return the array sorting function for its object's properties\nfunction sortBy() {\n var fields = [].slice.call(arguments),\n n_fields = fields.length;\n return function (A, B) {\n var a, b, field, key, reverse, result, i;\n\n for (i = 0; i < n_fields; i++) {\n result = 0;\n field = fields[i];\n key = typeof field === 'string' ? field : field.name;\n a = A[key];\n b = B[key];\n\n if (typeof field.primer !== 'undefined') {\n a = field.primer(a);\n b = field.primer(b);\n }\n\n reverse = field.reverse ? -1 : 1;\n\n if (a < b) {\n result = reverse * -1;\n }\n\n if (a > b) {\n result = reverse * 1;\n }\n\n if (result !== 0) {\n break;\n }\n }\n\n return result;\n };\n}\n\n/* jshint -W060 */\nfunction writeScript(fileName, callback) {\n var script = document.createElement('script');\n script.src = absoluteUrl(fileName);\n\n script.onload = function () {\n if (typeof callback === 'function') {\n callback(script);\n }\n };\n\n document.body.appendChild(script);\n}\n\nfunction updateQueryStringParameter(uri, key, value) {\n var regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n\n if (uri.match(regex)) {\n return uri.replace(regex, '$1' + key + '=' + value + '$2');\n } else {\n return uri + separator + key + '=' + value;\n }\n}\n/**\n * Obtain an imageId for Cornerstone from an image instance\n *\n * @param instance\n * @param frame\n * @param thumbnail\n * @returns {string} The imageId to be used by Cornerstone\n */\n\n\nfunction getImageId(instance, frame) {\n var thumbnail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!instance) {\n return;\n }\n\n if (typeof instance.getImageId === 'function') {\n return instance.getImageId();\n }\n\n if (instance.url) {\n if (frame !== undefined) {\n instance.url = updateQueryStringParameter(instance.url, 'frame', frame);\n }\n\n return instance.url;\n }\n\n var renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';\n\n if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {\n var imageId = 'dicomweb:' + instance.wadouri;\n\n if (frame !== undefined) {\n imageId += '&frame=' + frame;\n }\n\n return imageId;\n } else {\n return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame\n }\n}\n\nvar stackMap = {};\nvar configuration = {};\nvar stackManagerMetaDataProvider;\nvar stackUpdatedCallbacks = [];\n/**\n * Loop through the current series and add metadata to the\n * Cornerstone meta data provider. This will be used to fill information\n * into the viewport overlays, and to calculate reference lines and orientation markers\n * @param {Object} stackMap stackMap object\n * @param {Object} study Study object\n * @param {Object} displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n\nfunction createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, metadataProvider) {\n var numImages = displaySet.images.length;\n var imageIds = [];\n var imageId;\n displaySet.images.forEach(function (instance, imageIndex) {\n var image = instance.getData();\n var metaData = {\n instance: image,\n // in this context, instance will be the data of the InstanceMetadata object...\n series: displaySet,\n // TODO: Check this\n study: study,\n numImages: numImages,\n imageIndex: imageIndex + 1\n };\n var numberOfFrames = image.numberOfFrames;\n\n if (numberOfFrames > 1) {\n OHIF.log.info('Multiframe image detected');\n\n for (var i = 0; i < numberOfFrames; i++) {\n metaData.frameNumber = i;\n imageId = getImageId(image, i);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n } else {\n metaData.frameNumber = 1;\n imageId = getImageId(image);\n imageIds.push(imageId);\n metadataProvider.addMetadata(imageId, metaData);\n }\n });\n var stack = {\n studyInstanceUid: study.studyInstanceUid,\n displaySetInstanceUid: displaySet.displaySetInstanceUid,\n imageIds: imageIds,\n frameRate: displaySet.frameRate,\n isClip: displaySet.isClip\n };\n stackMap[displaySet.displaySetInstanceUid] = stack;\n return stack;\n}\n\nconfiguration = {\n createAndAddStack: createAndAddStack\n};\n/**\n * This object contains all the functions needed for interacting with the stack manager.\n * Generally, findStack is the only function used. If you want to know when new stacks\n * come in, you can register a callback with addStackUpdatedCallback.\n */\n\nvar StackManager = {\n setMetadataProvider: function setMetadataProvider(provider) {\n stackManagerMetaDataProvider = provider;\n },\n\n /**\n * Removes all current stacks\n */\n clearStacks: function clearStacks() {\n stackMap = {};\n },\n\n /**\n * Create a stack from an image set, as well as add in the metadata on a per image bases.\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n makeAndAddStack: function makeAndAddStack(study, displaySet) {\n if (!stackManagerMetaDataProvider) {\n throw new Error('Please call StackManager.setMetadataProvider(provider) first.');\n }\n\n return configuration.createAndAddStack(stackMap, study, displaySet, stackUpdatedCallbacks, stackManagerMetaDataProvider);\n },\n\n /**\n * Find a stack from the currently created stacks.\n * @param displaySetInstanceUid The UID of the stack to find.\n * @returns {*} undefined if not found, otherwise the stack object is returned.\n */\n findStack: function findStack(displaySetInstanceUid) {\n return stackMap[displaySetInstanceUid];\n },\n\n /**\n * Find a stack or reate one if it has not been created yet\n * @param study The study who's metadata will be added\n * @param displaySet The set of images to make the stack from\n * @return {Array} Array with image IDs\n */\n findOrCreateStack: function findOrCreateStack(study, displaySet) {\n var stack = this.findStack(displaySet.displaySetInstanceUid);\n\n if (!stack || !stack.imageIds) {\n stack = this.makeAndAddStack(study, displaySet);\n }\n\n return stack;\n },\n\n /**\n * Gets the underlying map of displaySetInstanceUid to stack object.\n * WARNING: Do not change this object. It directly affects the manager.\n * @returns {{}} map of displaySetInstanceUid -> stack.\n */\n getAllStacks: function getAllStacks() {\n return stackMap;\n },\n\n /**\n * Adds in a callback to be called on a stack being added / updated.\n * @param callback must accept at minimum one argument,\n * which is the stack that was added / updated.\n */\n addStackUpdatedCallback: function addStackUpdatedCallback(callback) {\n if (typeof callback !== 'function') {\n throw new OHIFError('callback must be provided as a function');\n }\n\n stackUpdatedCallbacks.push(callback);\n },\n\n /**\n * Return configuration\n */\n getConfiguration: function getConfiguration() {\n return configuration;\n },\n\n /**\n * Set configuration, in order to provide compatibility\n * with other systems by overriding this functions\n * @param {Object} config object with functions to be overrided\n *\n * For now, only makeAndAddStack can be overrided\n */\n setConfiguration: function setConfiguration(config) {\n configuration = config;\n }\n};\n\n// TODO: Deprecate since we have the same thing in dcmjs?\nvar sopClassDictionary = {\n ComputedRadiographyImageStorage: '1.2.840.10008.5.1.4.1.1.1',\n DigitalXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.1',\n DigitalXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.1.1',\n DigitalMammographyXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.2',\n DigitalMammographyXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.2.1',\n DigitalIntraOralXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.1.3',\n DigitalIntraOralXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.1.3.1',\n CTImageStorage: '1.2.840.10008.5.1.4.1.1.2',\n EnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.1',\n LegacyConvertedEnhancedCTImageStorage: '1.2.840.10008.5.1.4.1.1.2.2',\n UltrasoundMultiframeImageStorage: '1.2.840.10008.5.1.4.1.1.3.1',\n MRImageStorage: '1.2.840.10008.5.1.4.1.1.4',\n EnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.1',\n MRSpectroscopyStorage: '1.2.840.10008.5.1.4.1.1.4.2',\n EnhancedMRColorImageStorage: '1.2.840.10008.5.1.4.1.1.4.3',\n LegacyConvertedEnhancedMRImageStorage: '1.2.840.10008.5.1.4.1.1.4.4',\n UltrasoundImageStorage: '1.2.840.10008.5.1.4.1.1.6.1',\n EnhancedUSVolumeStorage: '1.2.840.10008.5.1.4.1.1.6.2',\n SecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7',\n MultiframeSingleBitSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.1',\n MultiframeGrayscaleByteSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.2',\n MultiframeGrayscaleWordSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.3',\n MultiframeTrueColorSecondaryCaptureImageStorage: '1.2.840.10008.5.1.4.1.1.7.4',\n Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1',\n GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2',\n AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3',\n HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1',\n CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.3.1',\n BasicVoiceAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.1',\n GeneralAudioWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.4.2',\n ArterialPulseWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.5.1',\n RespiratoryWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.6.1',\n GrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.1',\n ColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.2',\n PseudoColorSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.3',\n BlendingSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.4',\n XAXRFGrayscaleSoftcopyPresentationStateStorage: '1.2.840.10008.5.1.4.1.1.11.5',\n XRayAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.12.1',\n EnhancedXAImageStorage: '1.2.840.10008.5.1.4.1.1.12.1.1',\n XRayRadiofluoroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.12.2',\n EnhancedXRFImageStorage: '1.2.840.10008.5.1.4.1.1.12.2.1',\n XRay3DAngiographicImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.1',\n XRay3DCraniofacialImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.2',\n BreastTomosynthesisImageStorage: '1.2.840.10008.5.1.4.1.1.13.1.3',\n BreastProjectionXRayImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.13.1.4',\n BreastProjectionXRayImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.13.1.5',\n IntravascularOpticalCoherenceTomographyImageStorageForPresentation: '1.2.840.10008.5.1.4.1.1.14.1',\n IntravascularOpticalCoherenceTomographyImageStorageForProcessing: '1.2.840.10008.5.1.4.1.1.14.2',\n NuclearMedicineImageStorage: '1.2.840.10008.5.1.4.1.1.20',\n RawDataStorage: '1.2.840.10008.5.1.4.1.1.66',\n SpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.1',\n SpatialFiducialsStorage: '1.2.840.10008.5.1.4.1.1.66.2',\n DeformableSpatialRegistrationStorage: '1.2.840.10008.5.1.4.1.1.66.3',\n SegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.4',\n SurfaceSegmentationStorage: '1.2.840.10008.5.1.4.1.1.66.5',\n RealWorldValueMappingStorage: '1.2.840.10008.5.1.4.1.1.67',\n SurfaceScanMeshStorage: '1.2.840.10008.5.1.4.1.1.68.1',\n SurfaceScanPointCloudStorage: '1.2.840.10008.5.1.4.1.1.68.2',\n VLEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1',\n VideoEndoscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.1.1',\n VLMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2',\n VideoMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.2.1',\n VLSlideCoordinatesMicroscopicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.3',\n VLPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4',\n VideoPhotographicImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.4.1',\n OphthalmicPhotography8BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.1',\n OphthalmicPhotography16BitImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.2',\n StereometricRelationshipStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.3',\n OphthalmicTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.5.4',\n VLWholeSlideMicroscopyImageStorage: '1.2.840.10008.5.1.4.1.1.77.1.6',\n LensometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.1',\n AutorefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.2',\n KeratometryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.3',\n SubjectiveRefractionMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.4',\n VisualAcuityMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.5',\n SpectaclePrescriptionReportStorage: '1.2.840.10008.5.1.4.1.1.78.6',\n OphthalmicAxialMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.78.7',\n IntraocularLensCalculationsStorage: '1.2.840.10008.5.1.4.1.1.78.8',\n MacularGridThicknessandVolumeReport: '1.2.840.10008.5.1.4.1.1.79.1',\n OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: '1.2.840.10008.5.1.4.1.1.80.1',\n OphthalmicThicknessMapStorage: '1.2.840.10008.5.1.4.1.1.81.1',\n CornealTopographyMapStorage: '1.2.840.10008.5.1.4.1.1.82.1',\n BasicTextSR: '1.2.840.10008.5.1.4.1.1.88.11',\n EnhancedSR: '1.2.840.10008.5.1.4.1.1.88.22',\n ComprehensiveSR: '1.2.840.10008.5.1.4.1.1.88.33',\n Comprehensive3DSR: '1.2.840.10008.5.1.4.1.1.88.34',\n ProcedureLog: '1.2.840.10008.5.1.4.1.1.88.40',\n MammographyCADSR: '1.2.840.10008.5.1.4.1.1.88.50',\n KeyObjectSelection: '1.2.840.10008.5.1.4.1.1.88.59',\n ChestCADSR: '1.2.840.10008.5.1.4.1.1.88.65',\n XRayRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.67',\n RadiopharmaceuticalRadiationDoseSR: '1.2.840.10008.5.1.4.1.1.88.68',\n ColonCADSR: '1.2.840.10008.5.1.4.1.1.88.69',\n ImplantationPlanSRDocumentStorage: '1.2.840.10008.5.1.4.1.1.88.70',\n EncapsulatedPDFStorage: '1.2.840.10008.5.1.4.1.1.104.1',\n EncapsulatedCDAStorage: '1.2.840.10008.5.1.4.1.1.104.2',\n PositronEmissionTomographyImageStorage: '1.2.840.10008.5.1.4.1.1.128',\n EnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.130',\n LegacyConvertedEnhancedPETImageStorage: '1.2.840.10008.5.1.4.1.1.128.1',\n BasicStructuredDisplayStorage: '1.2.840.10008.5.1.4.1.1.131',\n RTImageStorage: '1.2.840.10008.5.1.4.1.1.481.1',\n RTDoseStorage: '1.2.840.10008.5.1.4.1.1.481.2',\n RTStructureSetStorage: '1.2.840.10008.5.1.4.1.1.481.3',\n RTBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.4',\n RTPlanStorage: '1.2.840.10008.5.1.4.1.1.481.5',\n RTBrachyTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.6',\n RTTreatmentSummaryRecordStorage: '1.2.840.10008.5.1.4.1.1.481.7',\n RTIonPlanStorage: '1.2.840.10008.5.1.4.1.1.481.8',\n RTIonBeamsTreatmentRecordStorage: '1.2.840.10008.5.1.4.1.1.481.9',\n RTBeamsDeliveryInstructionStorage: '1.2.840.10008.5.1.4.34.7',\n GenericImplantTemplateStorage: '1.2.840.10008.5.1.4.43.1',\n ImplantAssemblyTemplateStorage: '1.2.840.10008.5.1.4.44.1',\n ImplantTemplateGroupStorage: '1.2.840.10008.5.1.4.45.1'\n};\n\n/**\n * Checks whether dicom files with specified SOP Class UID have image data\n * @param {string} sopClassUid - SOP Class UID to be checked\n * @returns {boolean} - true if it has image data\n */\n\nfunction isImage(sopClassUid) {\n if (sopClassUid === sopClassDictionary.ComputedRadiographyImageStorage || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.CTImageStorage || sopClassUid === sopClassDictionary.EnhancedCTImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedCTImageStorage || sopClassUid === sopClassDictionary.UltrasoundMultiframeImageStorage || sopClassUid === sopClassDictionary.MRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRImageStorage || sopClassUid === sopClassDictionary.EnhancedMRColorImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedMRImageStorage || sopClassUid === sopClassDictionary.UltrasoundImageStorage || sopClassUid === sopClassDictionary.SecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage || sopClassUid === sopClassDictionary.XRayAngiographicImageStorage || sopClassUid === sopClassDictionary.EnhancedXAImageStorage || sopClassUid === sopClassDictionary.XRayRadiofluoroscopicImageStorage || sopClassUid === sopClassDictionary.EnhancedXRFImageStorage || sopClassUid === sopClassDictionary.XRay3DAngiographicImageStorage || sopClassUid === sopClassDictionary.XRay3DCraniofacialImageStorage || sopClassUid === sopClassDictionary.BreastTomosynthesisImageStorage || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForPresentation || sopClassUid === sopClassDictionary.BreastProjectionXRayImageStorageForProcessing || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation || sopClassUid === sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing || sopClassUid === sopClassDictionary.NuclearMedicineImageStorage || sopClassUid === sopClassDictionary.VLEndoscopicImageStorage || sopClassUid === sopClassDictionary.VideoEndoscopicImageStorage || sopClassUid === sopClassDictionary.VLMicroscopicImageStorage || sopClassUid === sopClassDictionary.VideoMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage || sopClassUid === sopClassDictionary.VLPhotographicImageStorage || sopClassUid === sopClassDictionary.VideoPhotographicImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography8BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicPhotography16BitImageStorage || sopClassUid === sopClassDictionary.OphthalmicTomographyImageStorage || sopClassUid === sopClassDictionary.VLWholeSlideMicroscopyImageStorage || sopClassUid === sopClassDictionary.PositronEmissionTomographyImageStorage || sopClassUid === sopClassDictionary.EnhancedPETImageStorage || sopClassUid === sopClassDictionary.LegacyConvertedEnhancedPETImageStorage || sopClassUid === sopClassDictionary.RTImageStorage) {\n return true;\n }\n\n return false;\n}\n\nvar isMultiFrame = function isMultiFrame(instance) {\n // NumberOfFrames (0028,0008)\n return instance.getRawValue('x00280008') > 1;\n};\n\nvar makeDisplaySet = function makeDisplaySet(series, instances) {\n var instance = instances[0];\n var imageSet = new ImageSet(instances);\n var seriesData = series.getData(); // set appropriate attributes to image set...\n\n imageSet.setAttributes({\n displaySetInstanceUid: imageSet.uid,\n // create a local alias for the imageSet UID\n seriesDate: seriesData.seriesDate,\n seriesTime: seriesData.seriesTime,\n seriesInstanceUid: series.getSeriesInstanceUID(),\n seriesNumber: instance.getRawValue('x00200011'),\n seriesDescription: instance.getRawValue('x0008103e'),\n numImageFrames: instances.length,\n frameRate: instance.getRawValue('x00181063'),\n modality: instance.getRawValue('x00080060'),\n isMultiFrame: isMultiFrame(instance)\n }); // Sort the images in this series if needed\n\n {\n imageSet.sortBy(function (a, b) {\n // Sort by InstanceNumber (0020,0013)\n return (parseInt(a.getRawValue('x00200013', 0)) || 0) - (parseInt(b.getRawValue('x00200013', 0)) || 0);\n });\n } // Include the first image instance number (after sorted)\n\n\n imageSet.setAttribute('instanceNumber', imageSet.getImage(0).getRawValue('x00200013'));\n return imageSet;\n};\n\nvar isSingleImageModality = function isSingleImageModality(modality) {\n return modality === 'CR' || modality === 'MG' || modality === 'DX';\n};\n/**\n * Creates a set of series to be placed in the Study Metadata\n * The series that appear in the Study Metadata must represent\n * imaging modalities.\n *\n * Furthermore, for drag/drop functionality,\n * it is easiest if the stack objects also contain information about\n * which study they are linked to.\n *\n * @param study The study instance metadata to be used\n * @returns {Array} An array of series to be placed in the Study Metadata\n */\n\n\nfunction createStacks(study) {\n // Define an empty array of display sets\n var displaySets = [];\n\n if (!study || !study.getSeriesCount()) {\n return displaySets;\n } // Loop through the series (SeriesMetadata)\n\n\n study.forEachSeries(function (series) {\n // If the series has no instances, skip it\n if (!series.getInstanceCount()) {\n return;\n } // Search through the instances (InstanceMetadata object) of this series\n // Split Multi-frame instances and Single-image modalities\n // into their own specific display sets. Place the rest of each\n // series into another display set.\n\n\n var stackableInstances = [];\n series.forEachInstance(function (instance) {\n // All imaging modalities must have a valid value for sopClassUid (x00080016) or rows (x00280010)\n if (!isImage(instance.getRawValue('x00080016')) && !instance.getRawValue('x00280010')) {\n return;\n }\n\n var displaySet;\n\n if (isMultiFrame(instance)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n isClip: true,\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid for drag/drop purposes\n numImageFrames: instance.getRawValue('x00280008'),\n // Override the default value of instances.length\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else if (isSingleImageModality(instance.modality)) {\n displaySet = makeDisplaySet(series, [instance]);\n displaySet.setAttributes({\n studyInstanceUid: study.getStudyInstanceUID(),\n // Include the study instance Uid\n instanceNumber: instance.getRawValue('x00200013'),\n // Include the instance number\n acquisitionDatetime: instance.getRawValue('x0008002a') // Include the acquisition datetime\n\n });\n displaySets.push(displaySet);\n } else {\n stackableInstances.push(instance);\n }\n });\n\n if (stackableInstances.length) {\n var displaySet = makeDisplaySet(series, stackableInstances);\n displaySet.setAttribute('studyInstanceUid', study.getStudyInstanceUID());\n displaySets.push(displaySet);\n }\n });\n return displaySets;\n}\n\nvar OHIFInstanceMetadata =\n/*#__PURE__*/\nfunction (_InstanceMetadata) {\n _inherits(OHIFInstanceMetadata, _InstanceMetadata);\n\n /**\n * @param {Object} Instance object.\n */\n function OHIFInstanceMetadata(data, series, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFInstanceMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFInstanceMetadata).call(this, data, uid));\n\n _this.init(series, study);\n\n return _this;\n }\n\n _createClass(OHIFInstanceMetadata, [{\n key: \"init\",\n value: function init(series, study) {\n var instance = this.getData(); // Initialize Private Properties\n\n Object.defineProperties(this, {\n _sopInstanceUID: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance.sopInstanceUid\n },\n _study: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study\n },\n _series: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series\n },\n _instance: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: instance\n },\n _cache: {\n configurable: false,\n enumerable: false,\n writable: false,\n value: Object.create(null)\n }\n });\n } // Override\n\n }, {\n key: \"getTagValue\",\n value: function getTagValue(tagOrProperty, defaultValue, bypassCache) {\n // check if this property has been cached...\n if (tagOrProperty in this._cache && bypassCache !== true) {\n return this._cache[tagOrProperty];\n }\n\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty); // Search property value in the whole study metadata chain...\n\n var rawValue;\n\n if (propertyName in this._instance) {\n rawValue = this._instance[propertyName];\n } else if (propertyName in this._series) {\n rawValue = this._series[propertyName];\n } else if (propertyName in this._study) {\n rawValue = this._study[propertyName];\n }\n\n if (rawValue !== void 0) {\n // if rawValue value is not undefined, cache result...\n this._cache[tagOrProperty] = rawValue;\n return rawValue;\n }\n\n return defaultValue;\n } // Override\n\n }, {\n key: \"tagExists\",\n value: function tagExists(tagOrProperty) {\n var propertyName = OHIFInstanceMetadata.getPropertyName(tagOrProperty);\n return propertyName in this._instance || propertyName in this._series || propertyName in this._study;\n } // Override\n\n }, {\n key: \"getImageId\",\n value: function getImageId$$1(frame, thumbnail) {\n // If _imageID is not cached, create it\n if (this._imageId === null) {\n this._imageId = getImageId(this.getData(), frame, thumbnail);\n }\n\n return this._imageId;\n }\n /**\n * Static methods\n */\n // @TODO: The current mapping of standard DICOM property names to local property names is not optimal.\n // The inconsistency in property naming makes this function increasingly complex.\n // A possible solution to improve this would be adapt retriveMetadata names to use DICOM standard names as in dicomTagDescriptions.js\n\n }], [{\n key: \"getPropertyName\",\n value: function getPropertyName(tagOrProperty) {\n var propertyName;\n var tagInfo = DICOMTagDescriptions.find(tagOrProperty);\n\n if (tagInfo !== void 0) {\n // This function tries to translate standard DICOM property names into local naming convention.\n propertyName = tagInfo.keyword.replace(/^SOP/, 'sop').replace(/UID$/, 'Uid').replace(/ID$/, 'Id');\n propertyName = propertyName.charAt(0).toLowerCase() + propertyName.substr(1);\n }\n\n return propertyName;\n }\n }]);\n\n return OHIFInstanceMetadata;\n}(InstanceMetadata);\n\nvar OHIFSeriesMetadata =\n/*#__PURE__*/\nfunction (_SeriesMetadata) {\n _inherits(OHIFSeriesMetadata, _SeriesMetadata);\n\n /**\n * @param {Object} Series object.\n */\n function OHIFSeriesMetadata(data, study, uid) {\n var _this;\n\n _classCallCheck(this, OHIFSeriesMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFSeriesMetadata).call(this, data, uid));\n\n _this.init(study);\n\n return _this;\n }\n\n _createClass(OHIFSeriesMetadata, [{\n key: \"init\",\n value: function init(study) {\n var _this2 = this;\n\n var series = this.getData(); // define \"_seriesInstanceUID\" protected property...\n\n Object.defineProperty(this, '_seriesInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: series.seriesInstanceUid\n }); // populate internal list of instances...\n\n series.instances.forEach(function (instance) {\n _this2.addInstance(new OHIFInstanceMetadata(instance, series, study));\n });\n }\n }]);\n\n return OHIFSeriesMetadata;\n}(SeriesMetadata);\n\nvar OHIFStudyMetadata =\n/*#__PURE__*/\nfunction (_StudyMetadata) {\n _inherits(OHIFStudyMetadata, _StudyMetadata);\n\n /**\n * @param {Object} Study object.\n */\n function OHIFStudyMetadata(data, uid) {\n var _this;\n\n _classCallCheck(this, OHIFStudyMetadata);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OHIFStudyMetadata).call(this, data, uid));\n\n _this.init();\n\n return _this;\n }\n\n _createClass(OHIFStudyMetadata, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var study = this.getData(); // define \"_studyInstanceUID\" protected property\n\n Object.defineProperty(this, '_studyInstanceUID', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: study.studyInstanceUid\n }); // populate internal list of series\n\n study.seriesList.forEach(function (series) {\n _this2.addSeries(new OHIFSeriesMetadata(series, study));\n });\n }\n }]);\n\n return OHIFStudyMetadata;\n}(StudyMetadata);\n\nvar getDisplaySets = function getDisplaySets(studyMetadata, seriesNumber, iteratorFunction) {\n var iteratorFn = typeof iteratorFunction !== 'function' ? createStacks : iteratorFunction;\n return iteratorFn(studyMetadata, seriesNumber);\n};\n\nvar sortingManager = {\n getDisplaySets: getDisplaySets\n};\n\nfunction createDisplaySets(studies) {\n // Define the OHIF.viewer.data global object\n // TODO: Save all data that is currently in OHIF.viewer in redux instead\n //OHIF.viewer.data = OHIF.viewer.data || {};\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n //OHIF.viewer.data.studyInstanceUids = [];\n var updatedStudies = studies.map(function (study) {\n var studyMetadata = new OHIFStudyMetadata(study, study.studyInstanceUid);\n var displaySets = study.displaySets;\n\n if (!study.displaySets) {\n displaySets = sortingManager.getDisplaySets(studyMetadata);\n study.displaySets = displaySets;\n }\n\n studyMetadata.setDisplaySets(displaySets); //OHIF.viewer.Studies.insert(study);\n //OHIF.viewer.StudyMetadataList.insert(studyMetadata);\n //OHIF.viewer.data.studyInstanceUids.push(study.studyInstanceUid);\n // Updates WADO-RS metaDataManager\n\n updateMetaDataManager(study);\n return study;\n });\n return updatedStudies;\n}\n\nvar utils = {\n guid: guid,\n ObjectPath: ObjectPath,\n absoluteUrl: absoluteUrl,\n addServers: addServers,\n sortBy: sortBy,\n writeScript: writeScript,\n StackManager: StackManager,\n createStacks: createStacks,\n createDisplaySets: createDisplaySets\n};\n\nvar metadata = {\n Metadata: Metadata,\n WadoRsMetaDataBuilder: WadoRsMetaDataBuilder,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n OHIFStudyMetadata: OHIFStudyMetadata,\n OHIFSeriesMetadata: OHIFSeriesMetadata,\n OHIFInstanceMetadata: OHIFInstanceMetadata\n};\n\nvar FUNCTION$2 = 'function';\n\nvar MetadataProvider =\n/*#__PURE__*/\nfunction () {\n function MetadataProvider() {\n _classCallCheck(this, MetadataProvider);\n\n // Define the main \"metadataLookup\" private property as an immutable property.\n Object.defineProperty(this, 'metadataLookup', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: new Map()\n }); // Local reference to provider function bound to current instance.\n\n Object.defineProperty(this, '_provider', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: null\n });\n }\n /**\n * Cornerstone Metadata provider to store image meta data\n * Data from instances, series, and studies are associated with\n * imageIds to facilitate usage of this information by Cornerstone's Tools\n *\n * e.g. the imagePlane metadata object contains instance information about\n * row/column pixel spacing, patient position, and patient orientation. It\n * is used in CornerstoneTools to position reference lines and orientation markers.\n *\n * @param {String} imageId The Cornerstone ImageId\n * @param {Object} data An object containing instance, series, and study metadata\n */\n\n\n _createClass(MetadataProvider, [{\n key: \"addMetadata\",\n value: function addMetadata(imageId, data) {\n var instanceMetadata = data.instance;\n var seriesMetadata = data.series;\n var studyMetadata = data.study;\n var numImages = data.numImages;\n var metadata = {};\n metadata.frameNumber = data.frameNumber;\n metadata.study = {\n accessionNumber: studyMetadata.accessionNumber,\n patientId: studyMetadata.patientId,\n studyInstanceUid: studyMetadata.studyInstanceUid,\n studyDate: studyMetadata.studyDate,\n studyTime: studyMetadata.studyTime,\n studyDescription: studyMetadata.studyDescription,\n institutionName: studyMetadata.institutionName,\n patientHistory: studyMetadata.patientHistory\n };\n metadata.series = {\n seriesDescription: seriesMetadata.seriesDescription,\n seriesNumber: seriesMetadata.seriesNumber,\n seriesDate: seriesMetadata.seriesDate,\n seriesTime: seriesMetadata.seriesTime,\n modality: seriesMetadata.modality,\n seriesInstanceUid: seriesMetadata.seriesInstanceUid,\n numImages: numImages\n };\n metadata.instance = instanceMetadata;\n metadata.patient = {\n name: studyMetadata.patientName,\n id: studyMetadata.patientId,\n birthDate: studyMetadata.patientBirthDate,\n sex: studyMetadata.patientSex,\n age: studyMetadata.patientAge\n }; // If there is sufficient information, populate\n // the imagePlane object for easier use in the Viewer\n\n metadata.imagePlane = this.getImagePlane(instanceMetadata); // Add the metadata to the imageId lookup object\n\n this.metadataLookup.set(imageId, metadata);\n }\n /**\n * Return the metadata for the given imageId\n * @param {String} imageId The Cornerstone ImageId\n * @returns image metadata\n */\n\n }, {\n key: \"getMetadata\",\n value: function getMetadata(imageId) {\n return this.metadataLookup.get(imageId);\n }\n /**\n * Adds a set of metadata to the Cornerstone metadata provider given a specific\n * imageId, type, and dataset\n *\n * @param imageId\n * @param type (e.g. series, instance, tagDisplay)\n * @param data\n */\n\n }, {\n key: \"addSpecificMetadata\",\n value: function addSpecificMetadata(imageId, type, data) {\n var metadata = {};\n metadata[type] = data;\n var oldMetadata = this.metadataLookup.get(imageId);\n this.metadataLookup.set(imageId, Object.assign(oldMetadata, metadata));\n }\n }, {\n key: \"getFromImage\",\n value: function getFromImage(image, type, tag, attrName, defaultValue) {\n var value;\n\n if (image.data) {\n value = this.getFromDataSet(image.data, type, tag);\n } else {\n value = image.instance[attrName];\n }\n\n return value === null ? defaultValue : value;\n }\n }, {\n key: \"getFromDataSet\",\n value: function getFromDataSet(dataSet, type, tag) {\n if (!dataSet) {\n return;\n }\n\n var fn = dataSet[type];\n\n if (!fn) {\n return;\n }\n\n return fn.call(dataSet, tag);\n }\n }, {\n key: \"getFrameIncrementPointer\",\n value: function getFrameIncrementPointer(image) {\n var dataSet = image.data;\n var frameInstancePointer = '';\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n var frameInstancePointerNames = {\n x00181063: 'frameTime',\n x00181065: 'frameTimeVector'\n }; // (0028,0009) = Frame Increment Pointer\n\n var frameInstancePointerTag = parsingUtils.attributeTag(dataSet, 'x00280009');\n frameInstancePointer = frameInstancePointerNames[frameInstancePointerTag];\n } else {\n frameInstancePointer = image.instance.frameIncrementPointer;\n }\n\n return frameInstancePointer || '';\n }\n }, {\n key: \"getFrameTimeVector\",\n value: function getFrameTimeVector(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n return parsingUtils.floatArray(dataSet, 'x00181065');\n }\n\n return image.instance.frameTimeVector;\n }\n }, {\n key: \"getFrameTime\",\n value: function getFrameTime(image) {\n var dataSet = image.data;\n\n if (parsingUtils.isValidDataSet(dataSet)) {\n // Frame Increment Pointer points to Frame Time (0018,1063) field or is not defined (for addtional flexibility).\n // Yet another value is possible for this field (5200,9230 for Multi-frame Functional Groups)\n // but that case is currently not supported.\n return dataSet.floatString('x00181063', -1);\n }\n\n return image.instance.frameTime;\n }\n /**\n * Updates the related metadata for missing fields given a specified image\n *\n * @param image\n */\n\n }, {\n key: \"updateMetadata\",\n value: function updateMetadata(image) {\n var imageMetadata = this.metadataLookup.get(image.imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n imageMetadata.patient.age = imageMetadata.patient.age || this.getFromDataSet(image.data, 'string', 'x00101010');\n imageMetadata.instance.rows = imageMetadata.instance.rows || image.rows;\n imageMetadata.instance.columns = imageMetadata.instance.columns || image.columns;\n imageMetadata.instance.sopClassUid = imageMetadata.instance.sopClassUid || this.getFromDataSet(image.data, 'string', 'x00080016');\n imageMetadata.instance.sopInstanceUid = imageMetadata.instance.sopInstanceUid || this.getFromDataSet(image.data, 'string', 'x00080018');\n imageMetadata.instance.pixelSpacing = imageMetadata.instance.pixelSpacing || this.getFromDataSet(image.data, 'string', 'x00280030');\n imageMetadata.instance.frameOfReferenceUID = imageMetadata.instance.frameOfReferenceUID || this.getFromDataSet(image.data, 'string', 'x00200052');\n imageMetadata.instance.imageOrientationPatient = imageMetadata.instance.imageOrientationPatient || this.getFromDataSet(image.data, 'string', 'x00200037');\n imageMetadata.instance.imagePositionPatient = imageMetadata.instance.imagePositionPatient || this.getFromDataSet(image.data, 'string', 'x00200032');\n imageMetadata.instance.sliceThickness = imageMetadata.instance.sliceThickness || this.getFromDataSet(image.data, 'string', 'x00180050');\n imageMetadata.instance.sliceLocation = imageMetadata.instance.sliceLocation || this.getFromDataSet(image.data, 'string', 'x00201041');\n imageMetadata.instance.tablePosition = imageMetadata.instance.tablePosition || this.getFromDataSet(image.data, 'string', 'x00189327');\n imageMetadata.instance.spacingBetweenSlices = imageMetadata.instance.spacingBetweenSlices || this.getFromDataSet(image.data, 'string', 'x00180088');\n imageMetadata.instance.lossyImageCompression = imageMetadata.instance.lossyImageCompression || this.getFromDataSet(image.data, 'string', 'x00282110');\n imageMetadata.instance.lossyImageCompressionRatio = imageMetadata.instance.lossyImageCompressionRatio || this.getFromDataSet(image.data, 'string', 'x00282112');\n imageMetadata.instance.frameIncrementPointer = imageMetadata.instance.frameIncrementPointer || this.getFromDataSet(image.data, 'string', 'x00280009');\n imageMetadata.instance.frameTime = imageMetadata.instance.frameTime || this.getFromDataSet(image.data, 'string', 'x00181063');\n imageMetadata.instance.frameTimeVector = imageMetadata.instance.frameTimeVector || this.getFromDataSet(image.data, 'string', 'x00181065');\n\n if ((image.data || image.instance) && !imageMetadata.instance.multiframeMetadata) {\n imageMetadata.instance.multiframeMetadata = this.getMultiframeModuleMetadata(image);\n }\n\n imageMetadata.imagePlane = imageMetadata.imagePlane || this.getImagePlane(imageMetadata.instance);\n }\n /**\n * Constructs and returns the imagePlane given the metadata instance\n *\n * @param metadataInstance The metadata instance (InstanceMetadata class) containing information to construct imagePlane\n * @returns imagePlane The constructed imagePlane to be used in viewer easily\n */\n\n }, {\n key: \"getImagePlane\",\n value: function getImagePlane(instance) {\n if (!instance.rows || !instance.columns || !instance.pixelSpacing || !instance.frameOfReferenceUID || !instance.imageOrientationPatient || !instance.imagePositionPatient) {\n return;\n }\n\n var imageOrientation = instance.imageOrientationPatient.split('\\\\');\n var imagePosition = instance.imagePositionPatient.split('\\\\');\n var columnPixelSpacing = 1.0;\n var rowPixelSpacing = 1.0;\n\n if (instance.pixelSpacing) {\n var split = instance.pixelSpacing.split('\\\\');\n rowPixelSpacing = parseFloat(split[0]);\n columnPixelSpacing = parseFloat(split[1]);\n }\n\n var cornerstoneMath = external.cornerstoneMath;\n return {\n frameOfReferenceUID: instance.frameOfReferenceUID,\n rows: instance.rows,\n columns: instance.columns,\n rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),\n columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),\n imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),\n rowPixelSpacing: rowPixelSpacing,\n columnPixelSpacing: columnPixelSpacing\n };\n }\n /**\n * This function extracts miltiframe information from a dicomParser.DataSet object.\n *\n * @param dataSet {Object} An instance of dicomParser.DataSet object where multiframe information can be found.\n * @return {Object} An object containing multiframe image metadata (frameIncrementPointer, frameTime, frameTimeVector, etc).\n */\n\n }, {\n key: \"getMultiframeModuleMetadata\",\n value: function getMultiframeModuleMetadata(image) {\n var imageInfo = {\n isMultiframeImage: false,\n frameIncrementPointer: null,\n numberOfFrames: 0,\n frameTime: 0,\n frameTimeVector: null,\n averageFrameRate: 0 // backwards compatibility only... it might be useless in the future\n\n };\n var frameTime;\n var numberOfFrames = this.getFromImage(image, 'intString', 'x00280008', 'numberOfFrames', -1);\n\n if (numberOfFrames > 0) {\n // set multi-frame image indicator\n imageInfo.isMultiframeImage = true;\n imageInfo.numberOfFrames = numberOfFrames; // (0028,0009) = Frame Increment Pointer\n\n var frameIncrementPointer = this.getFrameIncrementPointer(image);\n\n if (frameIncrementPointer === 'frameTimeVector') {\n // Frame Increment Pointer points to Frame Time Vector (0018,1065) field\n var frameTimeVector = this.getFrameTimeVector(image);\n\n if (frameTimeVector instanceof Array && frameTimeVector.length > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTimeVector = frameTimeVector;\n frameTime = frameTimeVector.reduce(function (a, b) {\n return a + b;\n }) / frameTimeVector.length;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n } else if (frameIncrementPointer === 'frameTime' || frameIncrementPointer === '') {\n frameTime = this.getFrameTime(image);\n\n if (frameTime > 0) {\n imageInfo.frameIncrementPointer = frameIncrementPointer;\n imageInfo.frameTime = frameTime;\n imageInfo.averageFrameRate = 1000 / frameTime;\n }\n }\n }\n\n return imageInfo;\n }\n /**\n * Get a bound reference to the provider function.\n */\n\n }, {\n key: \"getProvider\",\n value: function getProvider() {\n var provider = this._provider;\n\n if (_typeof(this._provider) !== FUNCTION$2) {\n provider = this.provider.bind(this);\n this._provider = provider;\n }\n\n return provider;\n }\n /**\n * Looks up metadata for Cornerstone Tools given a specified type and imageId\n * A type may be, e.g. 'study', or 'patient', or 'imagePlane'. These types\n * are keys in the stored metadata objects.\n *\n * @param type\n * @param imageId\n * @returns {Object} Relevant metadata of the specified type\n */\n\n }, {\n key: \"provider\",\n value: function provider(type, imageId) {\n // TODO: Cornerstone Tools use 'imagePlaneModule', but OHIF use 'imagePlane'. It must be consistent.\n if (type === 'imagePlaneModule') {\n type = 'imagePlane';\n }\n\n var imageMetadata = this.metadataLookup.get(imageId);\n\n if (!imageMetadata) {\n return;\n }\n\n if (imageMetadata.hasOwnProperty(type)) {\n return imageMetadata[type];\n }\n }\n }]);\n\n return MetadataProvider;\n}();\n\nvar cornerstone$1 = {\n MetadataProvider: MetadataProvider,\n getBoundingBox: getBoundingBox,\n pixelToPage: pixelToPage,\n repositionTextBox: repositionTextBox\n};\n\nvar StudyPrefetcher =\n/*#__PURE__*/\nfunction () {\n function StudyPrefetcher(studies) {\n var _this = this;\n\n _classCallCheck(this, StudyPrefetcher);\n\n _defineProperty(this, \"cacheFullHandler\", function () {\n log$1.warn('Cache full');\n\n _this.stopPrefetching();\n });\n\n this.studies = studies || [];\n this.prefetchDisplaySetsTimeout = 300;\n this.lastActiveViewportElement = null;\n external.cornerstone.events.addEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n\n _createClass(StudyPrefetcher, [{\n key: \"destroy\",\n value: function destroy() {\n this.stopPrefetching();\n external.cornerstone.events.removeEventListener('cornerstoneimagecachefull.StudyPrefetcher', this.cacheFullHandler);\n }\n }, {\n key: \"setStudies\",\n value: function setStudies(studies) {\n this.stopPrefetching();\n this.studies = studies;\n }\n }, {\n key: \"prefetch\",\n value: function prefetch() {\n if (!this.studies || !this.studies.length) {\n return;\n }\n\n this.stopPrefetching();\n this.prefetchDisplaySets();\n }\n }, {\n key: \"stopPrefetching\",\n value: function stopPrefetching() {\n external.cornerstoneTools.requestPoolManager.clearRequestStack('prefetch');\n }\n }, {\n key: \"prefetchDisplaySetsAsync\",\n value: function prefetchDisplaySetsAsync(timeout) {\n var _this2 = this;\n\n timeout = timeout || this.prefetchDisplaySetsTimeout;\n clearTimeout(this.prefetchDisplaySetsHandler);\n this.prefetchDisplaySetsHandler = setTimeout(function () {\n _this2.prefetchDisplaySets();\n }, timeout);\n }\n }, {\n key: \"prefetchDisplaySets\",\n value: function prefetchDisplaySets() {\n // TODO: Allow passing in config\n var config = {\n order: 'closest',\n displaySetCount: 1\n };\n var displaySetsToPrefetch = this.getDisplaySetsToPrefetch(config);\n var imageIds = this.getImageIdsFromDisplaySets(displaySetsToPrefetch);\n this.prefetchImageIds(imageIds);\n }\n }, {\n key: \"prefetchImageIds\",\n value: function prefetchImageIds(imageIds) {\n var nonCachedImageIds = this.filterCachedImageIds(imageIds);\n var requestPoolManager = external.cornerstoneTools.requestPoolManager;\n var requestType = 'prefetch';\n var preventCache = false;\n\n var noop = function noop() {};\n\n nonCachedImageIds.forEach(function (imageId) {\n requestPoolManager.addRequest({}, imageId, requestType, preventCache, noop, noop);\n });\n requestPoolManager.startGrabbing();\n }\n }, {\n key: \"getStudy\",\n value: function getStudy(image) {\n var studyMetadata = external.cornerstone.metaData.get('study', image.imageId);\n return OHIF.viewer.Studies.find(function (study) {\n return study.studyInstanceUid === studyMetadata.studyInstanceUid;\n });\n }\n }, {\n key: \"getSeries\",\n value: function getSeries(study, image) {\n var seriesMetadata = external.cornerstone.metaData.get('series', image.imageId);\n var studyMetadata = OHIF.viewerbase.getStudyMetadata(study);\n return studyMetadata.getSeriesByUID(seriesMetadata.seriesInstanceUid);\n }\n }, {\n key: \"getInstance\",\n value: function getInstance(series, image) {\n var instanceMetadata = external.cornerstone.metaData.get('instance', image.imageId);\n return series.getInstanceByUID(instanceMetadata.sopInstanceUid);\n }\n }, {\n key: \"getActiveDisplaySet\",\n value: function getActiveDisplaySet(displaySets, instance) {\n return displaySets.find(function (displaySet) {\n return displaySet.images.some(function (displaySetImage) {\n return displaySetImage.sopInstanceUid === instance.sopInstanceUid;\n });\n });\n }\n }, {\n key: \"getDisplaySetsToPrefetch\",\n value: function getDisplaySetsToPrefetch(config) {\n var image = this.getActiveViewportImage();\n\n if (!image || !config || !config.displaySetCount) {\n return [];\n }\n /*const study = this.getStudy(image);\n const series = this.getSeries(study, image);\n const instance = this.getInstance(series, image);*/\n\n\n var displaySets = study.displaySets;\n var activeDisplaySet = null; //this.getActiveDisplaySet(displaySets, instance);\n\n var prefetchMethodMap = {\n topdown: 'getFirstDisplaySets',\n downward: 'getNextDisplaySets',\n closest: 'getClosestDisplaySets'\n };\n var prefetchOrder = config.order;\n var methodName = prefetchMethodMap[prefetchOrder];\n var getDisplaySets = this[methodName];\n\n if (!getDisplaySets) {\n if (prefetchOrder) {\n log$1.warn(\"Invalid prefetch order configuration (\".concat(prefetchOrder, \")\"));\n }\n\n return [];\n }\n\n return getDisplaySets.call(this, displaySets, activeDisplaySet, config.displaySetCount);\n }\n }, {\n key: \"getFirstDisplaySets\",\n value: function getFirstDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var length = displaySets.length;\n var selectedDisplaySets = [];\n\n for (var i = 0; i < length && displaySetCount; i++) {\n var displaySet = displaySets[i];\n\n if (displaySet !== activeDisplaySet) {\n selectedDisplaySets.push(displaySet);\n displaySetCount--;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getNextDisplaySets\",\n value: function getNextDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var begin = activeDisplaySetIndex + 1;\n var end = Math.min(begin + displaySetCount, displaySets.length);\n return displaySets.slice(begin, end);\n }\n }, {\n key: \"getClosestDisplaySets\",\n value: function getClosestDisplaySets(displaySets, activeDisplaySet, displaySetCount) {\n var activeDisplaySetIndex = displaySets.indexOf(activeDisplaySet);\n var length = displaySets.length;\n var selectedDisplaySets = [];\n var left = activeDisplaySetIndex - 1;\n var right = activeDisplaySetIndex + 1;\n\n while ((left >= 0 || right < length) && displaySetCount) {\n if (left >= 0) {\n selectedDisplaySets.push(displaySets[left]);\n displaySetCount--;\n left--;\n }\n\n if (right < length && displaySetCount) {\n selectedDisplaySets.push(displaySets[right]);\n displaySetCount--;\n right++;\n }\n }\n\n return selectedDisplaySets;\n }\n }, {\n key: \"getImageIdsFromDisplaySets\",\n value: function getImageIdsFromDisplaySets(displaySets) {\n var _this3 = this;\n\n var imageIds = [];\n displaySets.forEach(function (displaySet) {\n imageIds = imageIds.concat(_this3.getImageIdsFromDisplaySet(displaySet));\n });\n return imageIds;\n }\n }, {\n key: \"getImageIdsFromDisplaySet\",\n value: function getImageIdsFromDisplaySet(displaySet) {\n var imageIds = []; // TODO: This duplicates work done by the stack manager\n\n displaySet.images.forEach(function (image) {\n var numFrames = image.numFrames;\n\n if (numFrames > 1) {\n for (var i = 0; i < numFrames; i++) {\n var imageId = getImageId(image, i);\n imageIds.push(imageId);\n }\n } else {\n var _imageId = getImageId(image);\n\n imageIds.push(_imageId);\n }\n });\n return imageIds;\n }\n }, {\n key: \"filterCachedImageIds\",\n value: function filterCachedImageIds(imageIds) {\n var _this4 = this;\n\n return imageIds.filter(function (imageId) {\n return !_this4.isImageCached(imageId);\n });\n }\n }, {\n key: \"isImageCached\",\n value: function isImageCached(imageId) {\n var image = external.cornerstone.imageCache.imageCache[imageId];\n return image && image.sizeInBytes;\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!StudyPrefetcher.instance) {\n StudyPrefetcher.instance = new StudyPrefetcher([]);\n }\n\n return StudyPrefetcher.instance;\n }\n }]);\n\n return StudyPrefetcher;\n}();\n\nvar setToolActive = function setToolActive(tool) {\n return {\n type: 'SET_TOOL_ACTIVE',\n tool: tool\n };\n};\nvar setViewportActive = function setViewportActive(viewportIndex) {\n return {\n type: 'SET_VIEWPORT_ACTIVE',\n viewportIndex: viewportIndex\n };\n};\nvar setLayout = function setLayout(layout) {\n return {\n type: 'SET_LAYOUT',\n layout: layout\n };\n};\nvar setStudyLoadingProgress = function setStudyLoadingProgress(progressId, progressData) {\n return {\n type: 'SET_STUDY_LOADING_PROGRESS',\n progressId: progressId,\n progressData: progressData\n };\n};\nvar clearStudyLoadingProgress = function clearStudyLoadingProgress(progressId) {\n return {\n type: 'CLEAR_STUDY_LOADING_PROGRESS',\n progressId: progressId\n };\n};\nvar setViewportSpecificData = function setViewportSpecificData(viewportIndex, data) {\n return {\n type: 'SET_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex,\n data: data\n };\n};\nvar clearViewportSpecificData = function clearViewportSpecificData(viewportIndex) {\n return {\n type: 'CLEAR_VIEWPORT_SPECIFIC_DATA',\n viewportIndex: viewportIndex\n };\n};\nvar addPlugin = function addPlugin(plugin) {\n return {\n type: \"ADD_PLUGIN\",\n plugin: plugin\n };\n};\nvar setAvailableButtons = function setAvailableButtons(buttons) {\n return {\n type: 'SET_AVAILABLE_BUTTONS',\n buttons: buttons\n };\n};\nvar actions = {\n setToolActive: setToolActive,\n setViewportActive: setViewportActive,\n setLayout: setLayout,\n setStudyLoadingProgress: setStudyLoadingProgress,\n clearStudyLoadingProgress: clearStudyLoadingProgress,\n setViewportSpecificData: setViewportSpecificData,\n clearViewportSpecificData: clearViewportSpecificData,\n addPlugin: addPlugin,\n setAvailableButtons: setAvailableButtons\n};\n\nvar BaseLoadingListener =\n/*#__PURE__*/\nfunction () {\n function BaseLoadingListener(stack) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BaseLoadingListener);\n\n this.id = BaseLoadingListener.getNewId();\n this.stack = stack;\n this.startListening();\n this.statsItemsLimit = options.statsItemsLimit || 2;\n this.stats = {\n items: [],\n total: 0,\n elapsedTime: 0,\n speed: 0\n };\n this._setProgressData = options._setProgressData;\n this._clearProgressById = options._clearProgressById; // Register the start point to make it possible to calculate\n // bytes/s or frames/s when the first byte or frame is received\n\n this._addStatsData(0); // Update the progress before starting the download\n // to make it possible to update the UI\n\n\n this._updateProgress();\n }\n\n _createClass(BaseLoadingListener, [{\n key: \"_addStatsData\",\n value: function _addStatsData(value) {\n var date = new Date();\n var stats = this.stats;\n var items = stats.items;\n var newItem = {\n value: value,\n date: date\n };\n items.push(newItem);\n stats.total += newItem.value; // Remove items until it gets below the limit\n\n while (items.length > this.statsItemsLimit) {\n var item = items.shift();\n stats.total -= item.value;\n } // Update the elapsedTime (seconds) based on first and last\n // elements and recalculate the speed (bytes/s or frames/s)\n\n\n if (items.length > 1) {\n var oldestItem = items[0];\n stats.elapsedTime = (newItem.date.getTime() - oldestItem.date.getTime()) / 1000;\n stats.speed = (stats.total - oldestItem.value) / stats.elapsedTime;\n }\n }\n }, {\n key: \"_getProgressId\",\n value: function _getProgressId() {\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n return 'StackProgress:' + displaySetInstanceUid;\n }\n }, {\n key: \"_clearProgress\",\n value: function _clearProgress() {\n var progressId = this._getProgressId();\n\n this._clearProgressById(progressId);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n throw new Error('`startListening` must be implemented by child classes');\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n throw new Error('`stopListening` must be implemented by child classes');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.stopListening();\n\n this._clearProgress();\n }\n }], [{\n key: \"getNewId\",\n value: function getNewId() {\n var timeSlice = new Date().getTime().toString().slice(-8);\n var randomNumber = parseInt(Math.random() * 1000000000);\n return timeSlice.toString() + randomNumber.toString();\n }\n }]);\n\n return BaseLoadingListener;\n}();\n\nvar DICOMFileLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener) {\n _inherits(DICOMFileLoadingListener, _BaseLoadingListener);\n\n function DICOMFileLoadingListener(stack, options) {\n var _this;\n\n _classCallCheck(this, DICOMFileLoadingListener);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DICOMFileLoadingListener).call(this, stack, options));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"_imageLoadProgressEventHandler\", function (e) {\n var eventData = e.detail;\n\n var dataSetUrl = _this._convertImageIdToDataSetUrl(eventData.imageId);\n\n var bytesDiff = eventData.loaded - _this._lastLoaded;\n\n if (!_this._dataSetUrl === dataSetUrl) {\n return;\n } // Add the bytes downloaded to the stats\n\n\n _this._addStatsData(bytesDiff); // Update the download progress\n\n\n _this._updateProgress(eventData); // Cache the last eventData.loaded value\n\n\n _this._lastLoaded = eventData.loaded;\n });\n\n _this._dataSetUrl = _this._getDataSetUrl(stack);\n _this._lastLoaded = 0; // Check how many instances has already been download (cached)\n\n _this._checkCachedData();\n\n return _this;\n }\n\n _createClass(DICOMFileLoadingListener, [{\n key: \"_checkCachedData\",\n value: function _checkCachedData() {\n var dataSet = external.cornerstoneWADOImageLoader.wadouri.dataSetCacheManager.get(this._dataSetUrl);\n\n if (dataSet) {\n var dataSetLength = dataSet.byteArray.length;\n\n this._updateProgress({\n percentComplete: 100,\n loaded: dataSetLength,\n total: dataSetLength\n });\n }\n }\n }, {\n key: \"_getImageLoadProgressEventName\",\n value: function _getImageLoadProgressEventName() {\n // TODO: Add this event as a constant in Cornerstone\n return 'cornerstoneimageloadprogress.' + this.id;\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n this.imageLoadProgressEventHandler = this._imageLoadProgressEventHandle.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadProgressEventName = this._getImageLoadProgressEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadProgressEventName, this.imageLoadProgressEventHandle);\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress(eventData) {\n var progressId = this._getProgressId();\n\n eventData = eventData || {};\n var progressData = {\n multiFrame: false,\n percentComplete: eventData.percentComplete,\n bytesLoaded: eventData.loaded,\n bytesTotal: eventData.total,\n bytesPerSecond: this.stats.speed\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_convertImageIdToDataSetUrl\",\n value: function _convertImageIdToDataSetUrl(imageId) {\n // Remove the prefix (\"dicomweb:\" or \"wadouri:\"\")\n imageId = imageId.replace(/^(dicomweb:|wadouri:)/i, ''); // Remove \"frame=999&\" from the imageId\n\n imageId = imageId.replace(/frame=\\d+&?/i, ''); // Remove the last \"&\" like in \"http://...?foo=1&bar=2&\"\n\n imageId = imageId.replace(/&$/, '');\n return imageId;\n }\n }, {\n key: \"_getDataSetUrl\",\n value: function _getDataSetUrl(stack) {\n var imageId = stack.imageIds[0];\n return this._convertImageIdToDataSetUrl(imageId);\n }\n }]);\n\n return DICOMFileLoadingListener;\n}(BaseLoadingListener);\n\nvar StackLoadingListener =\n/*#__PURE__*/\nfunction (_BaseLoadingListener2) {\n _inherits(StackLoadingListener, _BaseLoadingListener2);\n\n function StackLoadingListener(stack) {\n var _this2;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, StackLoadingListener);\n\n options.statsItemsLimit = 20;\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(StackLoadingListener).call(this, stack, options));\n _this2.imageDataMap = _this2._convertImageIdsArrayToMap(stack.imageIds);\n _this2.framesStatus = _this2._createArray(stack.imageIds.length, false);\n _this2.loadedCount = 0; // Check how many instances has already been download (cached)\n\n _this2._checkCachedData();\n\n return _this2;\n }\n\n _createClass(StackLoadingListener, [{\n key: \"_convertImageIdsArrayToMap\",\n value: function _convertImageIdsArrayToMap(imageIds) {\n var imageIdsMap = new Map();\n\n for (var i = 0; i < imageIds.length; i++) {\n imageIdsMap.set(imageIds[i], {\n index: i,\n loaded: false\n });\n }\n\n return imageIdsMap;\n }\n }, {\n key: \"_createArray\",\n value: function _createArray(length, defaultValue) {\n // `new Array(length)` is an anti-pattern in javascript because its\n // funny API. Otherwise I would go for `new Array(length).fill(false)`\n var array = [];\n\n for (var i = 0; i < length; i++) {\n array[i] = defaultValue;\n }\n\n return array;\n }\n }, {\n key: \"_checkCachedData\",\n value: function _checkCachedData() {// const imageIds = this.stack.imageIds;\n // TODO: No way to check status of Promise.\n\n /*for(let i = 0; i < imageIds.length; i++) {\n const imageId = imageIds[i];\n const imagePromise = cornerstone.imageCache.getImageLoadObject(imageId).promise;\n if (imagePromise && (imagePromise.state() === 'resolved')) {\n this._updateFrameStatus(imageId, true);\n }\n }*/\n }\n }, {\n key: \"_getImageLoadedEventName\",\n value: function _getImageLoadedEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_LOADED, \".\").concat(this.id);\n }\n }, {\n key: \"_getImageCachePromiseRemoveEventName\",\n value: function _getImageCachePromiseRemoveEventName() {\n return \"\".concat(external.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED, \".\").concat(this.id);\n }\n }, {\n key: \"_imageLoadedEventHandler\",\n value: function _imageLoadedEventHandler(e) {\n this._updateFrameStatus(e.detail.image.imageId, true);\n }\n }, {\n key: \"_imageCachePromiseRemovedEventHandler\",\n value: function _imageCachePromiseRemovedEventHandler(e) {\n this._updateFrameStatus(e.detail.imageId, false);\n }\n }, {\n key: \"startListening\",\n value: function startListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n this.imageLoadedEventHandler = this._imageLoadedEventHandler.bind(this);\n this.imageCachePromiseRemovedEventHandler = this._imageCachePromiseRemovedEventHandler.bind(this);\n this.stopListening();\n external.cornerstone.events.addEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.addEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"stopListening\",\n value: function stopListening() {\n var imageLoadedEventName = this._getImageLoadedEventName();\n\n var imageCachePromiseRemovedEventName = this._getImageCachePromiseRemoveEventName();\n\n external.cornerstone.events.removeEventListener(imageLoadedEventName, this.imageLoadedEventHandler);\n external.cornerstone.events.removeEventListener(imageCachePromiseRemovedEventName, this.imageCachePromiseRemovedEventHandler);\n }\n }, {\n key: \"_updateFrameStatus\",\n value: function _updateFrameStatus(imageId, loaded) {\n var imageData = this.imageDataMap.get(imageId);\n\n if (!imageData || imageData.loaded === loaded) {\n return;\n } // Add one more frame to the stats\n\n\n if (loaded) {\n this._addStatsData(1);\n }\n\n imageData.loaded = loaded;\n this.framesStatus[imageData.index] = loaded;\n this.loadedCount += loaded ? 1 : -1;\n\n this._updateProgress();\n }\n }, {\n key: \"_setProgressData\",\n value: function _setProgressData(progressId, progressData) {\n // TODO: This method (and _clearProgressById) need to access\n // the Redux store and should therefore be provided from the\n // application. I've added a workaround to pass this in through\n // the 'options' variable on instantiation, but this is really ugly.\n // We could consider making the StudyLoadingListener a higher-order\n // component which would set this stuff itself.\n throw new Error(\"The _setProgressData function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_clearProgressById\",\n value: function _clearProgressById(progressId) {\n throw new Error(\"The _clearProgressById function must be provided in StudyLoadingListener's options\");\n }\n }, {\n key: \"_updateProgress\",\n value: function _updateProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var loadedFramesCount = this.loadedCount;\n var loadingFramesCount = totalFramesCount - loadedFramesCount;\n var percentComplete = Math.round(loadedFramesCount / totalFramesCount * 100);\n\n var progressId = this._getProgressId();\n\n var progressData = {\n multiFrame: true,\n totalFramesCount: totalFramesCount,\n loadedFramesCount: loadedFramesCount,\n loadingFramesCount: loadingFramesCount,\n percentComplete: percentComplete,\n framesPerSecond: this.stats.speed,\n framesStatus: this.framesStatus\n };\n\n this._setProgressData(progressId, progressData);\n }\n }, {\n key: \"_logProgress\",\n value: function _logProgress() {\n var totalFramesCount = this.stack.imageIds.length;\n var displaySetInstanceUid = this.stack.displaySetInstanceUid;\n var progressBar = '[';\n\n for (var i = 0; i < totalFramesCount; i++) {\n var ch = this.framesStatus[i] ? '|' : '.';\n progressBar += \"\".concat(ch);\n }\n\n progressBar += ']';\n log.info(\"\".concat(displaySetInstanceUid, \": \").concat(progressBar));\n }\n }]);\n\n return StackLoadingListener;\n}(BaseLoadingListener);\n\nvar StudyLoadingListener =\n/*#__PURE__*/\nfunction () {\n function StudyLoadingListener(options) {\n _classCallCheck(this, StudyLoadingListener);\n\n this.listeners = {};\n this.options = options;\n }\n\n _createClass(StudyLoadingListener, [{\n key: \"addStack\",\n value: function addStack(stack, stackMetaData) {\n var displaySetInstanceUid = stack.displaySetInstanceUid;\n\n if (!this.listeners[displaySetInstanceUid]) {\n var listener = this._createListener(stack, stackMetaData);\n\n if (listener) {\n this.listeners[displaySetInstanceUid] = listener;\n }\n }\n }\n }, {\n key: \"addStudy\",\n value: function addStudy(study) {\n var _this3 = this;\n\n study.displaySets.forEach(function (displaySet) {\n var stack = StackManager.findOrCreateStack(study, displaySet);\n\n _this3.addStack(stack, {\n isMultiFrame: displaySet.isMultiFrame\n });\n });\n }\n }, {\n key: \"addStudies\",\n value: function addStudies(studies) {\n var _this4 = this;\n\n if (!studies || !studies.length) {\n return;\n }\n\n studies.forEach(function (study) {\n return _this4.addStudy(study);\n });\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var displaySetInstanceUids = Object.keys(this.listeners);\n var length = displaySetInstanceUids.length;\n\n for (var i = 0; i < length; i++) {\n var displaySetInstanceUid = displaySetInstanceUids[i];\n var displaySet = this.listeners[displaySetInstanceUid];\n displaySet.destroy();\n }\n\n this.listeners = {};\n }\n }, {\n key: \"_createListener\",\n value: function _createListener(stack, stackMetaData) {\n var schema = this._getSchema(stack); // A StackLoadingListener can be created if it's wadors or not a multiframe\n // wadouri instance (single file) that means \"N\" files will have to be\n // downloaded where \"N\" is the number of frames. DICOMFileLoadingListener\n // is created only if it's a single DICOM file and there's no way to know\n // how many frames has already been loaded (bytes/s instead of frames/s).\n\n\n if (schema === 'wadors' || !stackMetaData.isMultiFrame) {\n return new StackLoadingListener(stack, this.options);\n } else {\n return new DICOMFileLoadingListener(stack, this.options);\n }\n }\n }, {\n key: \"_getSchema\",\n value: function _getSchema(stack) {\n var imageId = stack.imageIds[0];\n var colonIndex = imageId.indexOf(':');\n return imageId.substring(0, colonIndex);\n } // Singleton\n\n }], [{\n key: \"getInstance\",\n value: function getInstance(options) {\n if (!StudyLoadingListener._instance) {\n StudyLoadingListener._instance = new StudyLoadingListener(options);\n }\n\n return StudyLoadingListener._instance;\n }\n }]);\n\n return StudyLoadingListener;\n}();\n\n/**\n * Constants\n */\nvar PROPERTY_SEPARATOR = '.';\nvar ORDER_ASC = 'asc';\nvar ORDER_DESC = 'desc';\nvar MIN_COUNT = 0x00000000;\nvar MAX_COUNT = 0x7fffffff;\n/**\n * Class Definition\n */\n\nvar TypeSafeCollection =\n/*#__PURE__*/\nfunction () {\n function TypeSafeCollection() {\n _classCallCheck(this, TypeSafeCollection);\n\n this._operationCount = MIN_COUNT;\n this._elementList = [];\n this._handlers = Object.create(null);\n }\n /**\n * Private Methods\n */\n\n\n _createClass(TypeSafeCollection, [{\n key: \"_invalidate\",\n value: function _invalidate() {\n var count = this._operationCount;\n this._operationCount = count < MAX_COUNT ? count + 1 : MIN_COUNT;\n }\n }, {\n key: \"_elements\",\n value: function _elements(silent) {\n silent === true || this._operationCount;\n return this._elementList;\n }\n }, {\n key: \"_elementWithPayload\",\n value: function _elementWithPayload(payload, silent) {\n return this._elements(silent).find(function (item) {\n return item.payload === payload;\n });\n }\n }, {\n key: \"_elementWithId\",\n value: function _elementWithId(id, silent) {\n return this._elements(silent).find(function (item) {\n return item.id === id;\n });\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(event, data) {\n var handlers = this._handlers;\n\n if (event in handlers) {\n handlers = handlers[event];\n\n if (!(handlers instanceof Array)) {\n return;\n }\n\n for (var i = 0, limit = handlers.length; i < limit; ++i) {\n var handler = handlers[i];\n\n if (_isFunction(handler)) {\n handler.call(null, data);\n }\n }\n }\n }\n /**\n * Public Methods\n */\n\n }, {\n key: \"onInsert\",\n value: function onInsert(callback) {\n if (_isFunction(callback)) {\n var handlers = this._handlers.insert;\n\n if (!(handlers instanceof Array)) {\n handlers = [];\n this._handlers.insert = handlers;\n }\n\n handlers.push(callback);\n }\n }\n /**\n * Update the payload associated with the given ID to be the new supplied payload.\n * @param {string} id The ID of the entry that will be updated.\n * @param {any} payload The element that will replace the previous payload.\n * @returns {boolean} Returns true if the given ID is present in the collection, false otherwise.\n */\n\n }, {\n key: \"updateById\",\n value: function updateById(id, payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n if (found.id === id) {\n // set result to true since the ids match...\n result = true;\n\n this._invalidate();\n }\n } else {\n found = this._elementWithId(id, true);\n\n if (found) {\n found.payload = payload;\n result = true;\n\n this._invalidate();\n }\n }\n\n return result;\n }\n /**\n * Signal that the given element has been changed by notifying reactive data-source observers.\n * This method is basically a means to invalidate the inernal reactive data-source.\n * @param {any} payload The element that has been altered.\n * @returns {boolean} Returns true if the element is present in the collection, false otherwise.\n */\n\n }, {\n key: \"update\",\n value: function update(payload) {\n var result = false,\n found = this._elementWithPayload(payload, true);\n\n if (found) {\n // nothing to do since the element is already in the collection...\n result = true;\n\n this._invalidate();\n }\n\n return result;\n }\n /**\n * Insert an element in the collection. On success, the element ID (a unique string) is returned. On failure, returns null.\n * A failure scenario only happens when the given payload is already present in the collection. Note that NO exceptions are thrown!\n * @param {any} payload The element to be stored.\n * @returns {string} The ID of the inserted element or null if the element already exists...\n */\n\n }, {\n key: \"insert\",\n value: function insert(payload) {\n var id = null,\n found = this._elementWithPayload(payload, true);\n\n if (!found) {\n id = OHIF.utils.guid();\n\n this._elements(true).push({\n id: id,\n payload: payload\n });\n\n this._invalidate();\n\n this._trigger('insert', {\n id: id,\n data: payload\n });\n }\n\n return id;\n }\n /**\n * Remove all elements from the collection.\n * @returns {void} No meaningful value is returned.\n */\n\n }, {\n key: \"removeAll\",\n value: function removeAll() {\n var all = this._elements(true),\n length = all.length;\n\n for (var i = length - 1; i >= 0; i--) {\n var item = all[i];\n delete item.id;\n delete item.payload;\n all[i] = null;\n }\n\n all.splice(0, length);\n\n this._invalidate();\n }\n /**\n * Remove elements from the collection that match the criteria given in the property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} A list with all removed elements.\n */\n\n }, {\n key: \"remove\",\n value: function remove(propertyMap) {\n var found = this.findAllEntriesBy(propertyMap),\n foundCount = found.length,\n removed = [];\n\n if (foundCount > 0) {\n var all = this._elements(true);\n\n for (var i = foundCount - 1; i >= 0; i--) {\n var item = found[i];\n all.splice(item[2], 1);\n removed.push(item[0]);\n }\n\n this._invalidate();\n }\n\n return removed;\n }\n /**\n * Provides the ID of the given element inside the collection.\n * @param {any} payload The element being searched for.\n * @returns {string} The ID of the given element or undefined if the element is not present.\n */\n\n }, {\n key: \"getElementId\",\n value: function getElementId(payload) {\n var found = this._elementWithPayload(payload);\n\n return found && found.id;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"findById\",\n value: function findById(id) {\n var found = this._elementWithId(id);\n\n return found && found.payload;\n }\n /**\n * Provides the position of the given element in the internal list returning -1 if the element is not present.\n * @param {any} payload The element being searched for.\n * @returns {number} The position of the given element in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfElement\",\n value: function indexOfElement(payload) {\n return this._elements().indexOf(this._elementWithPayload(payload, true));\n }\n /**\n * Provides the position of the element associated with the given ID in the internal list returning -1 if the element is not present.\n * @param {string} id The index of the element.\n * @returns {number} The position of the element associated with the given ID in the internal list. If the element is not present -1 is returned.\n */\n\n }, {\n key: \"indexOfId\",\n value: function indexOfId(id) {\n return this._elements().indexOf(this._elementWithId(id, true));\n }\n /**\n * Provides a list-like approach to the collection returning an element by index.\n * @param {number} index The index of the element.\n * @returns {any} If out of bounds, undefined is returned. Otherwise the element in the given position is returned.\n */\n\n }, {\n key: \"getElementByIndex\",\n value: function getElementByIndex(index) {\n var found = this._elements()[index >= 0 ? index : -1];\n\n return found && found.payload;\n }\n /**\n * Find an element by a criteria defined by the given callback function.\n * Attention!!! The reactive source will not be notified if no valid callback is supplied...\n * @param {function} callback A callback function which will define the search criteria. The callback\n * function will be passed the collection element, its ID and its index in this very order. The callback\n * shall return true when its criterea has been fulfilled.\n * @returns {any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"find\",\n value: function find(callback) {\n var _this = this;\n\n var found;\n\n if (_isFunction(callback)) {\n found = this._elements().find(function (item, index) {\n return callback.call(_this, item.payload, item.id, index);\n });\n }\n\n return found && found.payload;\n }\n /**\n * Find the first element that strictly matches the specified property map.\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Any} The matched element or undefined if not match was found.\n */\n\n }, {\n key: \"findBy\",\n value: function findBy(propertyMap, options) {\n var found;\n\n if (_isObject(options)) {\n // if the \"options\" argument is provided and is a valid object,\n // it must be applied to the dataset before search...\n var all = this.all(options);\n\n if (all.length > 0) {\n if (_isObject(propertyMap)) {\n found = all.find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item);\n });\n } else {\n found = all[0]; // simply extract the first element...\n }\n }\n } else if (_isObject(propertyMap)) {\n found = this._elements().find(function (item) {\n return _compareToPropertyMapStrict(propertyMap, item.payload);\n });\n\n if (found) {\n found = found.payload;\n }\n }\n\n return found;\n }\n /**\n * Find all elements that strictly match the specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @returns {Array} An array of entries of all elements that match the given criteria. Each set in\n * in the array has the following format: [ elementData, elementId, elementIndex ].\n */\n\n }, {\n key: \"findAllEntriesBy\",\n value: function findAllEntriesBy(propertyMap) {\n var found = [];\n\n if (_isObject(propertyMap)) {\n this._elements().forEach(function (item, index) {\n if (_compareToPropertyMapStrict(propertyMap, item.payload)) {\n // Match! Add it to the found list...\n found.push([item.payload, item.id, index]);\n }\n });\n }\n\n return found;\n }\n /**\n * Find all elements that match a specified property map.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {Object} propertyMap A property map that will be macthed against all collection elements.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements that match the given criteria and sorted in the specified sorting order.\n */\n\n }, {\n key: \"findAllBy\",\n value: function findAllBy(propertyMap, options) {\n var found = this.findAllEntriesBy(propertyMap).map(function (item) {\n return item[0];\n }); // Only payload is relevant...\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(found, options.sort);\n }\n }\n\n return found;\n }\n /**\n * Executes the supplied callback function for each element of the collection.\n * Attention!!! The reactive source will not be notified if no valid property map is supplied...\n * @param {function} callback The callback function to be executed. The callback is passed the element,\n * its ID and its index in this very order.\n * @returns {void} Nothing is returned.\n */\n\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n var _this2 = this;\n\n if (_isFunction(callback)) {\n this._elements().forEach(function (item, index) {\n callback.call(_this2, item.payload, item.id, index);\n });\n }\n }\n /**\n * Count the number of elements currently in the collection.\n * @returns {number} The current number of elements in the collection.\n */\n\n }, {\n key: \"count\",\n value: function count() {\n return this._elements().length;\n }\n /**\n * Returns a list with all elements of the collection optionally sorted by a sorting specifier criteria.\n * @param {Object} options A set of options. Currently only \"options.sort\" option is supported.\n * @param {Object.SortingSpecifier} options.sort An optional sorting specifier. If a sorting specifier is supplied\n * but is not valid, an exception will be thrown.\n * @returns {Array} An array with all elements stored in the collection.\n */\n\n }, {\n key: \"all\",\n value: function all(options) {\n var list = this._elements().map(function (item) {\n return item.payload;\n });\n\n if (_isObject(options)) {\n if ('sort' in options) {\n _sortListBy(list, options.sort);\n }\n }\n\n return list;\n }\n }]);\n\n return TypeSafeCollection;\n}();\n/**\n * Utility Functions\n */\n\n/**\n * Test if supplied argument is a valid object for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\nfunction _isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n}\n/**\n * Test if supplied argument is a valid string for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isString(subject) {\n return typeof subject === 'string';\n}\n/**\n * Test if supplied argument is a valid function for current class purposes.\n * Atention! The underscore version of this function should not be used for performance reasons.\n */\n\n\nfunction _isFunction(subject) {\n return typeof subject === 'function';\n}\n/**\n * Shortcut for Object's prototype \"hasOwnProperty\" method.\n */\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Retrieve an object's property value by name. Composite property names (e.g., 'address.country.name') are accepted.\n * @param {Object} targetObject The object we want read the property from...\n * @param {String} propertyName The property to be read (e.g., 'address.street.name' or 'address.street.number'\n * to read object.address.street.name or object.address.street.number, respectively);\n * @returns {Any} Returns whatever the property holds or undefined if the property cannot be read or reached.\n */\n\nfunction _getPropertyValue(targetObject, propertyName) {\n var propertyValue; // undefined (the default return value)\n\n if (_isObject(targetObject) && _isString(propertyName)) {\n var fragments = propertyName.split(PROPERTY_SEPARATOR);\n var fragmentCount = fragments.length;\n\n if (fragmentCount > 0) {\n var firstFragment = fragments[0];\n var remainingFragments = fragmentCount > 1 ? fragments.slice(1).join(PROPERTY_SEPARATOR) : null;\n propertyValue = targetObject[firstFragment];\n\n if (remainingFragments !== null) {\n propertyValue = _getPropertyValue(propertyValue, remainingFragments);\n }\n }\n }\n\n return propertyValue;\n}\n/**\n * Compare a property map with a target object using strict comparison.\n * @param {Object} propertyMap The property map whose properties will be used for comparison. Composite\n * property names (e.g., 'address.country.name') will be tested against the \"resolved\" properties from the target object.\n * @param {Object} targetObject The target object whose properties will be tested.\n * @returns {boolean} Returns true if the properties match, false otherwise.\n */\n\n\nfunction _compareToPropertyMapStrict(propertyMap, targetObject) {\n var result = false; // \"for in\" loops do not thown exceptions for invalid data types...\n\n for (var propertyName in propertyMap) {\n if (_hasOwnProperty.call(propertyMap, propertyName)) {\n if (propertyMap[propertyName] !== _getPropertyValue(targetObject, propertyName)) {\n result = false;\n break;\n } else if (result !== true) {\n result = true;\n }\n }\n }\n\n return result;\n}\n/**\n * Checks if a sorting specifier is valid.\n * A valid sorting specifier consists of an array of arrays being each subarray a pair\n * in the format [\"property name\", \"sorting order\"].\n * The following exemple can be used to sort studies by \"date\"\" and use \"time\" to break ties in descending order.\n * [ [ 'study.date', 'desc' ], [ 'study.time', 'desc' ] ]\n * @param {Array} specifiers The sorting specifier to be tested.\n * @returns {boolean} Returns true if the specifiers are valid, false otherwise.\n */\n\n\nfunction _isValidSortingSpecifier(specifiers) {\n var result = true;\n\n if (specifiers instanceof Array && specifiers.length > 0) {\n for (var i = specifiers.length - 1; i >= 0; i--) {\n var item = specifiers[i];\n\n if (item instanceof Array) {\n var property = item[0];\n var order = item[1];\n\n if (_isString(property) && (order === ORDER_ASC || order === ORDER_DESC)) {\n continue;\n }\n }\n\n result = false;\n break;\n }\n }\n\n return result;\n}\n/**\n * Sorts an array based on sorting specifier options.\n * @param {Array} list The that needs to be sorted.\n * @param {Array} specifiers An array of specifiers. Please read isValidSortingSpecifier method definition for further details.\n * @returns {void} No value is returned. The array is sorted in place.\n */\n\n\nfunction _sortListBy(list, specifiers) {\n if (list instanceof Array && _isValidSortingSpecifier(specifiers)) {\n var specifierCount = specifiers.length;\n list.sort(function _sortListByCallback(a, b) {\n // callback name for stack traces...\n var index = 0;\n\n while (index < specifierCount) {\n var specifier = specifiers[index];\n var property = specifier[0];\n var order = specifier[1] === ORDER_DESC ? -1 : 1;\n\n var aValue = _getPropertyValue(a, property);\n\n var bValue = _getPropertyValue(b, property); // @TODO: should we check for the types being compared, like:\n // ~~ if (typeof aValue !== typeof bValue) continue;\n // Not sure because dates, for example, can be correctly compared to numbers...\n\n\n if (aValue < bValue) {\n return order * -1;\n }\n\n if (aValue > bValue) {\n return order * 1;\n }\n\n if (++index >= specifierCount) {\n return 0;\n }\n }\n });\n } else {\n throw new Error('Invalid Arguments');\n }\n}\n\n/**\n * Abstract class to fetch study metadata.\n */\n\nvar StudyMetadataSource =\n/*#__PURE__*/\nfunction () {\n function StudyMetadataSource() {\n _classCallCheck(this, StudyMetadataSource);\n }\n\n _createClass(StudyMetadataSource, [{\n key: \"getByInstanceUID\",\n\n /**\n * Get study metadata for a study with given study InstanceUID.\n * @param {String} studyInstanceUID Study InstanceUID.\n */\n value: function getByInstanceUID(studyInstanceUID) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::getByInstanceUID is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n /**\n * Load study info and study metadata for a given study into the viewer.\n * @param {StudySummary|StudyMetadata} study of StudySummary or StudyMetadata object.\n */\n\n }, {\n key: \"loadStudy\",\n value: function loadStudy(study) {\n /**\n * Please override this method on a specialized class.\n */\n throw new OHIFError('StudyMetadataSource::loadStudy is not overriden. Please, override it in a specialized class. See OHIFStudyMetadataSource for example');\n }\n }]);\n\n return StudyMetadataSource;\n}();\n\nvar classes = {\n MetadataProvider: MetadataProvider,\n CommandsManager: CommandsManager,\n HotkeysContext: HotkeysContext,\n HotkeysManager: HotkeysManager,\n ImageSet: ImageSet,\n StudyPrefetcher: StudyPrefetcher,\n StudyLoadingListener: StudyLoadingListener,\n StackLoadingListener: StackLoadingListener,\n DICOMFileLoadingListener: DICOMFileLoadingListener,\n StudyMetadata: StudyMetadata,\n SeriesMetadata: SeriesMetadata,\n InstanceMetadata: InstanceMetadata,\n //StudySummary,\n TypeSafeCollection: TypeSafeCollection,\n OHIFError: OHIFError,\n StudyMetadataSource: StudyMetadataSource\n};\n\nvar defaultButtons = [{\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: '/icons.svg#icon-tools-pan',\n active: false\n}, {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: '/icons.svg#icon-tools-zoom',\n active: false\n}, {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: '/icons.svg#icon-tools-measure-target',\n active: false\n}, {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: '/icons.svg#icon-tools-stack-scroll',\n active: false\n}, {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: '/icons.svg#icon-tools-reset',\n active: false\n}, {\n command: 'Wwwc',\n type: 'tool',\n text: 'Manual',\n svgUrl: '/icons.svg#icon-tools-levels',\n active: true\n}, {\n command: 'setWLPresetSoftTissue',\n type: 'command',\n text: 'Soft Tissue',\n svgUrl: '/icons.svg#icon-wl-soft-tissue',\n active: false\n}, {\n command: 'setWLPresetLung',\n type: 'command',\n text: 'Lung',\n svgUrl: '/icons.svg#icon-wl-lung',\n active: false\n}, {\n command: 'setWLPresetLiver',\n type: 'command',\n text: 'Liver',\n svgUrl: '/icons.svg#icon-wl-liver',\n active: false\n}, {\n command: 'setWLPresetBrain',\n type: 'command',\n text: 'Brain',\n svgUrl: '/icons.svg#icon-wl-brain',\n active: false\n}];\n\nvar tools = function tools() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n buttons: defaultButtons\n };\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'SET_TOOL_ACTIVE':\n var item = state.buttons.find(function (button) {\n return button.command === action.tool;\n });\n var buttons = [];\n\n if (item.type === 'tool') {\n buttons = state.buttons.map(function (button) {\n if (button.command === action.tool) {\n button.active = true;\n } else if (button.type === 'tool') {\n button.active = false;\n }\n\n return button;\n });\n }\n\n return {\n buttons: buttons\n };\n\n case 'SET_AVAILABLE_BUTTONS':\n return {\n buttons: action.buttons\n };\n\n default:\n return state;\n }\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_merge = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n});\n\nvar defaultState = {\n activeViewportIndex: 0,\n layout: {\n viewports: [{\n height: '100%',\n width: '100%'\n }]\n },\n viewportSpecificData: {}\n};\n\nvar viewports = function viewports() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var viewportSpecificData;\n\n switch (action.type) {\n case 'SET_VIEWPORT_ACTIVE':\n return Object.assign({}, state, {\n activeViewportIndex: action.viewportIndex\n });\n\n case 'SET_LAYOUT':\n return Object.assign({}, state, {\n layout: action.layout\n });\n\n case 'SET_VIEWPORT_SPECIFIC_DATA':\n var currentData = lodash_clonedeep(state.viewportSpecificData[action.viewportIndex]) || {};\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = lodash_merge({}, currentData, action.data);\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n case 'CLEAR_VIEWPORT_SPECIFIC_DATA':\n viewportSpecificData = lodash_clonedeep(state.viewportSpecificData);\n viewportSpecificData[action.viewportIndex] = {};\n return Object.assign({}, state, {\n viewportSpecificData: viewportSpecificData\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$1 = {\n servers: []\n};\n\nvar servers = function servers() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$1;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_SERVER':\n var _servers = state.servers;\n\n var alreadyExists = _servers.find(function (server) {\n return server.id === action.server.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n _servers.push(action.server);\n\n if (_servers.length === 1) {\n _servers[0].active = true;\n }\n\n return Object.assign({}, state, {\n servers: _servers\n });\n\n default:\n return state;\n }\n};\n\nvar defaultState$2 = {\n progress: {},\n lastUpdated: null\n};\n\nvar loading = function loading() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$2;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var progress;\n var lastUpdated;\n\n switch (action.type) {\n case 'SET_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n progress[action.progressId] = action.progressData; // This is a workaround so we can easily identify changes\n // to the progress object without doing deep comparison.\n\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n case 'CLEAR_STUDY_LOADING_PROGRESS':\n progress = lodash_clonedeep(state).progress;\n delete progress[action.progressId];\n lastUpdated = new Date().getTime();\n return Object.assign({}, state, {\n progress: progress,\n lastUpdated: lastUpdated\n });\n\n default:\n return state;\n }\n};\n\nvar PLUGIN_TYPES = {\n VIEWPORT: 'viewport'\n};\nvar plugins = {\n PLUGIN_TYPES: PLUGIN_TYPES,\n availablePlugins: []\n};\n\nvar defaultState$3 = {\n availablePlugins: []\n};\n\nvar plugins$1 = function plugins$$1() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState$3;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case 'ADD_PLUGIN':\n var availablePlugins = state.availablePlugins;\n var alreadyExists = availablePlugins.find(function (plugin) {\n return plugin.id === action.plugin.id;\n });\n\n if (alreadyExists) {\n return state;\n }\n\n availablePlugins.push({\n id: action.plugin.id,\n type: action.plugin.type\n }); // Not sure where else to put this. We shouldn't store functions in Redux, so I'll do this instead\n\n plugins.availablePlugins.push(action.plugin);\n return Object.assign({}, state, {\n availablePlugins: availablePlugins\n });\n\n default:\n return state;\n }\n};\n\nvar reducers = {\n tools: tools,\n viewports: viewports,\n servers: servers,\n loading: loading,\n plugins: plugins$1\n};\n\nvar redux = {\n reducers: reducers,\n actions: actions\n};\n\n// TODO: This is duplicated in TypeSafeCollection\nfunction isObject(subject) {\n return subject instanceof Object || _typeof(subject) === 'object' && subject !== null;\n} // TODO: This is duplicated in TypeSafeCollection\n\n\nfunction isString(subject) {\n return typeof subject === 'string';\n} // Search for some string inside any object or array\n\n\nfunction search(object, query) {\n var property = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var result = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n // Create the search pattern\n var pattern = new RegExp(query.trim(), 'i');\n Object.keys(object).forEach(function (key) {\n var item = object[key]; // Stop here if item is empty\n\n if (!item) {\n return;\n } // Get the value to be compared\n\n\n var value = isString(property) ? item[property] : item; // Check if the value match the pattern\n\n if (isString(value) && pattern.test(value)) {\n // Add the current item to the result\n result.push(item);\n }\n\n if (isObject(item)) {\n // Search recursively the item if the current item is an object\n search(item, query, property, result);\n }\n }); // Return the found items\n\n return result;\n} // Encode any string into a safe format for HTML id attribute\n\n\nfunction encodeId(input) {\n var string = input && input.toString ? input.toString() : input; // Return an underscore if the given string is empty or if it's not a string\n\n if (string === '' || typeof string !== 'string') {\n return '_';\n } // Create a converter to replace non accepted chars\n\n\n var converter = function converter(match) {\n return '_' + match[0].charCodeAt(0).toString(16) + '_';\n }; // Encode the given string and return it\n\n\n return string.replace(/[^a-zA-Z0-9-]/g, converter);\n}\n\nvar string = {\n search: search,\n encodeId: encodeId\n};\n\n// Transforms a shallow object with keys separated by \".\" into a nested object\nfunction getNestedObject(shallowObject) {\n var nestedObject = {};\n\n for (var key in shallowObject) {\n if (!shallowObject.hasOwnProperty(key)) continue;\n var value = shallowObject[key];\n var propertyArray = key.split('.');\n var currentObject = nestedObject;\n\n while (propertyArray.length) {\n var currentProperty = propertyArray.shift();\n\n if (!propertyArray.length) {\n currentObject[currentProperty] = value;\n } else {\n if (!currentObject[currentProperty]) {\n currentObject[currentProperty] = {};\n }\n\n currentObject = currentObject[currentProperty];\n }\n }\n }\n\n return nestedObject;\n}\n\nfunction getShallowObject(nestedObject) {\n var shallowObject = {};\n\n var putValues = function putValues(baseKey, nestedObject, resultObject) {\n for (var key in nestedObject) {\n if (!nestedObject.hasOwnProperty(key)) continue;\n var currentKey = baseKey ? \"\".concat(baseKey, \".\").concat(key) : key;\n var currentValue = nestedObject[key];\n\n if (_typeof(currentValue) === 'object') {\n if (currentValue instanceof Array) {\n currentKey += '[]';\n }\n\n putValues(currentKey, currentValue, resultObject);\n } else {\n resultObject[currentKey] = currentValue;\n }\n }\n };\n\n putValues('', nestedObject, shallowObject);\n return shallowObject;\n}\nvar object = {\n getNestedObject: getNestedObject,\n getShallowObject: getShallowObject\n};\n\nvar validate = createCommonjsModule(function (module, exports) {\n/*!\n * validate.js 0.12.0\n *\n * (c) 2013-2017 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n ;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 12,\n patch: 0,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"\", error: \"\"}, ...]\n runValidations: function(attributes, constraints, options) {\n var results = []\n , attr\n , validatorName\n , value\n , validators\n , validator\n , validatorOptions\n , error;\n\n if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) {\n attributes = v.collectFormValues(attributes);\n }\n\n // Loops through each constraints, finds the correct validator and run it.\n for (attr in constraints) {\n value = v.getDeepObjectValue(attributes, attr);\n // This allows the constraints for an attribute to be a function.\n // The function will be called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validators = v.result(constraints[attr], value, attributes, attr, options, constraints);\n\n for (validatorName in validators) {\n validator = v.validators[validatorName];\n\n if (!validator) {\n error = v.format(\"Unknown validator %{name}\", {name: validatorName});\n throw new Error(error);\n }\n\n validatorOptions = validators[validatorName];\n // This allows the options to be a function. The function will be\n // called with the value, attribute name, the complete dict of\n // attributes as well as the options and constraints passed in.\n // This is useful when you want to have different\n // validations depending on the attribute value.\n validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints);\n if (!validatorOptions) {\n continue;\n }\n results.push({\n attribute: attr,\n value: value,\n validator: validatorName,\n globalOptions: options,\n attributes: attributes,\n options: validatorOptions,\n error: validator.call(validator,\n value,\n validatorOptions,\n attr,\n attributes,\n options)\n });\n }\n }\n\n return results;\n },\n\n // Takes the output from runValidations and converts it to the correct\n // output format.\n processValidationResults: function(errors, options) {\n errors = v.pruneEmptyErrors(errors, options);\n errors = v.expandMultipleErrors(errors, options);\n errors = v.convertErrorMessages(errors, options);\n\n var format = options.format || \"grouped\";\n\n if (typeof v.formatters[format] === 'function') {\n errors = v.formatters[format](errors);\n } else {\n throw new Error(v.format(\"Unknown format %{format}\", options));\n }\n\n return v.isEmpty(errors) ? undefined : errors;\n },\n\n // Runs the validations with support for promises.\n // This function will return a promise that is settled when all the\n // validation promises have been completed.\n // It can be called even if no validations returned a promise.\n async: function(attributes, constraints, options) {\n options = v.extend({}, v.async.options, options);\n\n var WrapErrors = options.wrapErrors || function(errors) {\n return errors;\n };\n\n // Removes unknown attributes\n if (options.cleanAttributes !== false) {\n attributes = v.cleanAttributes(attributes, constraints);\n }\n\n var results = v.runValidations(attributes, constraints, options);\n\n return new v.Promise(function(resolve, reject) {\n v.waitForResults(results).then(function() {\n var errors = v.processValidationResults(results, options);\n if (errors) {\n reject(new WrapErrors(errors, options, attributes, constraints));\n } else {\n resolve(attributes);\n }\n }, function(err) {\n reject(err);\n });\n });\n },\n\n single: function(value, constraints, options) {\n options = v.extend({}, v.single.options, options, {\n format: \"flat\",\n fullMessages: false\n });\n return v({single: value}, {single: constraints}, options);\n },\n\n // Returns a promise that is resolved when all promises in the results array\n // are settled. The promise returned from this function is always resolved,\n // never rejected.\n // This function modifies the input argument, it replaces the promises\n // with the value returned from the promise.\n waitForResults: function(results) {\n // Create a sequence of all the results starting with a resolved promise.\n return results.reduce(function(memo, result) {\n // If this result isn't a promise skip it in the sequence.\n if (!v.isPromise(result.error)) {\n return memo;\n }\n\n return memo.then(function() {\n return result.error.then(function(error) {\n result.error = error || null;\n });\n });\n }, new v.Promise(function(r) { r(); })); // A resolved promise\n },\n\n // If the given argument is a call: function the and: function return the value\n // otherwise just return the value. Additional arguments will be passed as\n // arguments to the function.\n // Example:\n // ```\n // result('foo') // 'foo'\n // result(Math.max, 1, 2) // 2\n // ```\n result: function(value) {\n var args = [].slice.call(arguments, 1);\n if (typeof value === 'function') {\n value = value.apply(null, args);\n }\n return value;\n },\n\n // Checks if the value is a number. This function does not consider NaN a\n // number like many other `isNumber` functions do.\n isNumber: function(value) {\n return typeof value === 'number' && !isNaN(value);\n },\n\n // Returns false if the object is not a function\n isFunction: function(value) {\n return typeof value === 'function';\n },\n\n // A simple check to verify that the value is an integer. Uses `isNumber`\n // and a simple modulo check.\n isInteger: function(value) {\n return v.isNumber(value) && value % 1 === 0;\n },\n\n // Checks if the value is a boolean\n isBoolean: function(value) {\n return typeof value === 'boolean';\n },\n\n // Uses the `Object` function to check if the given argument is an object.\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n // Simply checks if the object is an instance of a date\n isDate: function(obj) {\n return obj instanceof Date;\n },\n\n // Returns false if the object is `null` of `undefined`\n isDefined: function(obj) {\n return obj !== null && obj !== undefined;\n },\n\n // Checks if the given argument is a promise. Anything with a `then`\n // function is considered a promise.\n isPromise: function(p) {\n return !!p && v.isFunction(p.then);\n },\n\n isJqueryElement: function(o) {\n return o && v.isString(o.jquery);\n },\n\n isDomElement: function(o) {\n if (!o) {\n return false;\n }\n\n if (!o.querySelectorAll || !o.querySelector) {\n return false;\n }\n\n if (v.isObject(document) && o === document) {\n return true;\n }\n\n // http://stackoverflow.com/a/384380/699304\n /* istanbul ignore else */\n if (typeof HTMLElement === \"object\") {\n return o instanceof HTMLElement;\n } else {\n return o &&\n typeof o === \"object\" &&\n o !== null &&\n o.nodeType === 1 &&\n typeof o.nodeName === \"string\";\n }\n },\n\n isEmpty: function(value) {\n var attr;\n\n // Null and undefined are empty\n if (!v.isDefined(value)) {\n return true;\n }\n\n // functions are non empty\n if (v.isFunction(value)) {\n return false;\n }\n\n // Whitespace only strings are empty\n if (v.isString(value)) {\n return v.EMPTY_STRING_REGEXP.test(value);\n }\n\n // For arrays we use the length property\n if (v.isArray(value)) {\n return value.length === 0;\n }\n\n // Dates have no attributes but aren't empty\n if (v.isDate(value)) {\n return false;\n }\n\n // If we find at least one property we consider it non empty\n if (v.isObject(value)) {\n for (attr in value) {\n return false;\n }\n return true;\n }\n\n return false;\n },\n\n // Formats the specified strings with the given values like so:\n // ```\n // format(\"Foo: %{foo}\", {foo: \"bar\"}) // \"Foo bar\"\n // ```\n // If you want to write %{...} without having it replaced simply\n // prefix it with % like this `Foo: %%{foo}` and it will be returned\n // as `\"Foo: %{foo}\"`\n format: v.extend(function(str, vals) {\n if (!v.isString(str)) {\n return str;\n }\n return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) {\n if (m1 === '%') {\n return \"%{\" + m2 + \"}\";\n } else {\n return String(vals[m2]);\n }\n });\n }, {\n // Finds %{key} style patterns in the given string\n FORMAT_REGEXP: /(%?)%\\{([^\\}]+)\\}/g\n }),\n\n // \"Prettifies\" the given string.\n // Prettifying means replacing [.\\_-] with spaces as well as splitting\n // camel case words.\n prettify: function(str) {\n if (v.isNumber(str)) {\n // If there are more than 2 decimals round it to two\n if ((str * 100) % 1 === 0) {\n return \"\" + str;\n } else {\n return parseFloat(Math.round(str * 100) / 100).toFixed(2);\n }\n }\n\n if (v.isArray(str)) {\n return str.map(function(s) { return v.prettify(s); }).join(\", \");\n }\n\n if (v.isObject(str)) {\n return str.toString();\n }\n\n // Ensure the string is actually a string\n str = \"\" + str;\n\n return str\n // Splits keys separated by periods\n .replace(/([^\\s])\\.([^\\s])/g, '$1 $2')\n // Removes backslashes\n .replace(/\\\\+/g, '')\n // Replaces - and - with space\n .replace(/[_-]/g, ' ')\n // Splits camel cased words\n .replace(/([a-z])([A-Z])/g, function(m0, m1, m2) {\n return \"\" + m1 + \" \" + m2.toLowerCase();\n })\n .toLowerCase();\n },\n\n stringifyValue: function(value, options) {\n var prettify = options && options.prettify || v.prettify;\n return prettify(value);\n },\n\n isString: function(value) {\n return typeof value === 'string';\n },\n\n isArray: function(value) {\n return {}.toString.call(value) === '[object Array]';\n },\n\n // Checks if the object is a hash, which is equivalent to an object that\n // is neither an array nor a function.\n isHash: function(value) {\n return v.isObject(value) && !v.isArray(value) && !v.isFunction(value);\n },\n\n contains: function(obj, value) {\n if (!v.isDefined(obj)) {\n return false;\n }\n if (v.isArray(obj)) {\n return obj.indexOf(value) !== -1;\n }\n return value in obj;\n },\n\n unique: function(array) {\n if (!v.isArray(array)) {\n return array;\n }\n return array.filter(function(el, index, array) {\n return array.indexOf(el) == index;\n });\n },\n\n forEachKeyInKeypath: function(object, keypath, callback) {\n if (!v.isString(keypath)) {\n return undefined;\n }\n\n var key = \"\"\n , i\n , escape = false;\n\n for (i = 0; i < keypath.length; ++i) {\n switch (keypath[i]) {\n case '.':\n if (escape) {\n escape = false;\n key += '.';\n } else {\n object = callback(object, key, false);\n key = \"\";\n }\n break;\n\n case '\\\\':\n if (escape) {\n escape = false;\n key += '\\\\';\n } else {\n escape = true;\n }\n break;\n\n default:\n escape = false;\n key += keypath[i];\n break;\n }\n }\n\n return callback(object, key, true);\n },\n\n getDeepObjectValue: function(obj, keypath) {\n if (!v.isObject(obj)) {\n return undefined;\n }\n\n return v.forEachKeyInKeypath(obj, keypath, function(obj, key) {\n if (v.isObject(obj)) {\n return obj[key];\n }\n });\n },\n\n // This returns an object with all the values of the form.\n // It uses the input name as key and the value as value\n // So for example this:\n // \n // would return:\n // {email: \"foo@bar.com\"}\n collectFormValues: function(form, options) {\n var values = {}\n , i\n , j\n , input\n , inputs\n , option\n , value;\n\n if (v.isJqueryElement(form)) {\n form = form[0];\n }\n\n if (!form) {\n return values;\n }\n\n options = options || {};\n\n inputs = form.querySelectorAll(\"input[name], textarea[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n name = input.name.replace(/\\./g, \"\\\\\\\\.\");\n value = v.sanitizeFormValue(input.value, options);\n if (input.type === \"number\") {\n value = value ? +value : null;\n } else if (input.type === \"checkbox\") {\n if (input.attributes.value) {\n if (!input.checked) {\n value = values[name] || null;\n }\n } else {\n value = input.checked;\n }\n } else if (input.type === \"radio\") {\n if (!input.checked) {\n value = values[name] || null;\n }\n }\n values[name] = value;\n }\n\n inputs = form.querySelectorAll(\"select[name]\");\n for (i = 0; i < inputs.length; ++i) {\n input = inputs.item(i);\n if (v.isDefined(input.getAttribute(\"data-ignored\"))) {\n continue;\n }\n\n if (input.multiple) {\n value = [];\n for (j in input.options) {\n option = input.options[j];\n if (option && option.selected) {\n value.push(v.sanitizeFormValue(option.value, options));\n }\n }\n } else {\n var _val = typeof input.options[input.selectedIndex] !== 'undefined' ? input.options[input.selectedIndex].value : '';\n value = v.sanitizeFormValue(_val, options);\n }\n values[input.name] = value;\n }\n\n return values;\n },\n\n sanitizeFormValue: function(value, options) {\n if (options.trim && v.isString(value)) {\n value = value.trim();\n }\n\n if (options.nullify !== false && value === \"\") {\n return null;\n }\n return value;\n },\n\n capitalize: function(str) {\n if (!v.isString(str)) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n },\n\n // Remove all errors who's error attribute is empty (null or undefined)\n pruneEmptyErrors: function(errors) {\n return errors.filter(function(error) {\n return !v.isEmpty(error.error);\n });\n },\n\n // In\n // [{error: [\"err1\", \"err2\"], ...}]\n // Out\n // [{error: \"err1\", ...}, {error: \"err2\", ...}]\n //\n // All attributes in an error with multiple messages are duplicated\n // when expanding the errors.\n expandMultipleErrors: function(errors) {\n var ret = [];\n errors.forEach(function(error) {\n // Removes errors without a message\n if (v.isArray(error.error)) {\n error.error.forEach(function(msg) {\n ret.push(v.extend({}, error, {error: msg}));\n });\n } else {\n ret.push(error);\n }\n });\n return ret;\n },\n\n // Converts the error mesages by prepending the attribute name unless the\n // message is prefixed by ^\n convertErrorMessages: function(errors, options) {\n options = options || {};\n\n var ret = []\n , prettify = options.prettify || v.prettify;\n errors.forEach(function(errorInfo) {\n var error = v.result(errorInfo.error,\n errorInfo.value,\n errorInfo.attribute,\n errorInfo.options,\n errorInfo.attributes,\n errorInfo.globalOptions);\n\n if (!v.isString(error)) {\n ret.push(errorInfo);\n return;\n }\n\n if (error[0] === '^') {\n error = error.slice(1);\n } else if (options.fullMessages !== false) {\n error = v.capitalize(prettify(errorInfo.attribute)) + \" \" + error;\n }\n error = error.replace(/\\\\\\^/g, \"^\");\n error = v.format(error, {\n value: v.stringifyValue(errorInfo.value, options)\n });\n ret.push(v.extend({}, errorInfo, {error: error}));\n });\n return ret;\n },\n\n // In:\n // [{attribute: \"\", ...}]\n // Out:\n // {\"\": [{attribute: \"\", ...}]}\n groupErrorsByAttribute: function(errors) {\n var ret = {};\n errors.forEach(function(error) {\n var list = ret[error.attribute];\n if (list) {\n list.push(error);\n } else {\n ret[error.attribute] = [error];\n }\n });\n return ret;\n },\n\n // In:\n // [{error: \"\", ...}, {error: \"\", ...}]\n // Out:\n // [\"\", \"\"]\n flattenErrorsToArray: function(errors) {\n return errors\n .map(function(error) { return error.error; })\n .filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n },\n\n cleanAttributes: function(attributes, whitelist) {\n function whitelistCreator(obj, key, last) {\n if (v.isObject(obj[key])) {\n return obj[key];\n }\n return (obj[key] = last ? true : {});\n }\n\n function buildObjectWhitelist(whitelist) {\n var ow = {}\n , attr;\n for (attr in whitelist) {\n if (!whitelist[attr]) {\n continue;\n }\n v.forEachKeyInKeypath(ow, attr, whitelistCreator);\n }\n return ow;\n }\n\n function cleanRecursive(attributes, whitelist) {\n if (!v.isObject(attributes)) {\n return attributes;\n }\n\n var ret = v.extend({}, attributes)\n , w\n , attribute;\n\n for (attribute in attributes) {\n w = whitelist[attribute];\n\n if (v.isObject(w)) {\n ret[attribute] = cleanRecursive(ret[attribute], w);\n } else if (!w) {\n delete ret[attribute];\n }\n }\n return ret;\n }\n\n if (!v.isObject(whitelist) || !v.isObject(attributes)) {\n return {};\n }\n\n whitelist = buildObjectWhitelist(whitelist);\n return cleanRecursive(attributes, whitelist);\n },\n\n exposeModule: function(validate, root, exports, module, define) {\n if (exports) {\n if (module && module.exports) {\n exports = module.exports = validate;\n }\n exports.validate = validate;\n } else {\n root.validate = validate;\n if (validate.isFunction(define) && define.amd) {\n define([], function () { return validate; });\n }\n }\n },\n\n warn: function(msg) {\n if (typeof console !== \"undefined\" && console.warn) {\n console.warn(\"[validate.js] \" + msg);\n }\n },\n\n error: function(msg) {\n if (typeof console !== \"undefined\" && console.error) {\n console.error(\"[validate.js] \" + msg);\n }\n }\n });\n\n validate.validators = {\n // Presence validates that the value isn't empty\n presence: function(value, options) {\n options = v.extend({}, this.options, options);\n if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) {\n return options.message || this.message || \"can't be blank\";\n }\n },\n length: function(value, options, attribute) {\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var is = options.is\n , maximum = options.maximum\n , minimum = options.minimum\n , tokenizer = options.tokenizer || function(val) { return val; }\n , err\n , errors = [];\n\n value = tokenizer(value);\n var length = value.length;\n if(!v.isNumber(length)) {\n v.error(v.format(\"Attribute %{attr} has a non numeric value for `length`\", {attr: attribute}));\n return options.message || this.notValid || \"has an incorrect length\";\n }\n\n // Is checks\n if (v.isNumber(is) && length !== is) {\n err = options.wrongLength ||\n this.wrongLength ||\n \"is the wrong length (should be %{count} characters)\";\n errors.push(v.format(err, {count: is}));\n }\n\n if (v.isNumber(minimum) && length < minimum) {\n err = options.tooShort ||\n this.tooShort ||\n \"is too short (minimum is %{count} characters)\";\n errors.push(v.format(err, {count: minimum}));\n }\n\n if (v.isNumber(maximum) && length > maximum) {\n err = options.tooLong ||\n this.tooLong ||\n \"is too long (maximum is %{count} characters)\";\n errors.push(v.format(err, {count: maximum}));\n }\n\n if (errors.length > 0) {\n return options.message || errors;\n }\n },\n numericality: function(value, options, attribute, attributes, globalOptions) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var errors = []\n , name\n , count\n , checks = {\n greaterThan: function(v, c) { return v > c; },\n greaterThanOrEqualTo: function(v, c) { return v >= c; },\n equalTo: function(v, c) { return v === c; },\n lessThan: function(v, c) { return v < c; },\n lessThanOrEqualTo: function(v, c) { return v <= c; },\n divisibleBy: function(v, c) { return v % c === 0; }\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n // Strict will check that it is a valid looking number\n if (v.isString(value) && options.strict) {\n var pattern = \"^-?(0|[1-9]\\\\d*)\";\n if (!options.onlyInteger) {\n pattern += \"(\\\\.\\\\d+)?\";\n }\n pattern += \"$\";\n\n if (!(new RegExp(pattern).test(value))) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"must be a valid number\";\n }\n }\n\n // Coerce the value to a number unless we're being strict.\n if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) {\n value = +value;\n }\n\n // If it's not a number we shouldn't continue since it will compare it.\n if (!v.isNumber(value)) {\n return options.message ||\n options.notValid ||\n this.notValid ||\n this.message ||\n \"is not a number\";\n }\n\n // Same logic as above, sort of. Don't bother with comparisons if this\n // doesn't pass.\n if (options.onlyInteger && !v.isInteger(value)) {\n return options.message ||\n options.notInteger ||\n this.notInteger ||\n this.message ||\n \"must be an integer\";\n }\n\n for (name in checks) {\n count = options[name];\n if (v.isNumber(count) && !checks[name](value, count)) {\n // This picks the default message if specified\n // For example the greaterThan check uses the message from\n // this.notGreaterThan so we capitalize the name and prepend \"not\"\n var key = \"not\" + v.capitalize(name);\n var msg = options[key] ||\n this[key] ||\n this.message ||\n \"must be %{type} %{count}\";\n\n errors.push(v.format(msg, {\n count: count,\n type: prettify(name)\n }));\n }\n }\n\n if (options.odd && value % 2 !== 1) {\n errors.push(options.notOdd ||\n this.notOdd ||\n this.message ||\n \"must be odd\");\n }\n if (options.even && value % 2 !== 0) {\n errors.push(options.notEven ||\n this.notEven ||\n this.message ||\n \"must be even\");\n }\n\n if (errors.length) {\n return options.message || errors;\n }\n },\n datetime: v.extend(function(value, options) {\n if (!v.isFunction(this.parse) || !v.isFunction(this.format)) {\n throw new Error(\"Both the parse and format functions needs to be set to use the datetime/date validator\");\n }\n\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var err\n , errors = []\n , earliest = options.earliest ? this.parse(options.earliest, options) : NaN\n , latest = options.latest ? this.parse(options.latest, options) : NaN;\n\n value = this.parse(value, options);\n\n // 86400000 is the number of milliseconds in a day, this is used to remove\n // the time from the date\n if (isNaN(value) || options.dateOnly && value % 86400000 !== 0) {\n err = options.notValid ||\n options.message ||\n this.notValid ||\n \"must be a valid date\";\n return v.format(err, {value: arguments[0]});\n }\n\n if (!isNaN(earliest) && value < earliest) {\n err = options.tooEarly ||\n options.message ||\n this.tooEarly ||\n \"must be no earlier than %{date}\";\n err = v.format(err, {\n value: this.format(value, options),\n date: this.format(earliest, options)\n });\n errors.push(err);\n }\n\n if (!isNaN(latest) && value > latest) {\n err = options.tooLate ||\n options.message ||\n this.tooLate ||\n \"must be no later than %{date}\";\n err = v.format(err, {\n date: this.format(latest, options),\n value: this.format(value, options)\n });\n errors.push(err);\n }\n\n if (errors.length) {\n return v.unique(errors);\n }\n }, {\n parse: null,\n format: null\n }),\n date: function(value, options) {\n options = v.extend({}, options, {dateOnly: true});\n return v.validators.datetime.call(v.validators.datetime, value, options);\n },\n format: function(value, options) {\n if (v.isString(options) || (options instanceof RegExp)) {\n options = {pattern: options};\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is invalid\"\n , pattern = options.pattern\n , match;\n\n // Empty values are allowed\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n\n if (v.isString(pattern)) {\n pattern = new RegExp(options.pattern, options.flags);\n }\n match = pattern.exec(value);\n if (!match || match[0].length != value.length) {\n return message;\n }\n },\n inclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (v.contains(options.within, value)) {\n return;\n }\n var message = options.message ||\n this.message ||\n \"^%{value} is not included in the list\";\n return v.format(message, {value: value});\n },\n exclusion: function(value, options) {\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (v.isArray(options)) {\n options = {within: options};\n }\n options = v.extend({}, this.options, options);\n if (!v.contains(options.within, value)) {\n return;\n }\n var message = options.message || this.message || \"^%{value} is restricted\";\n return v.format(message, {value: value});\n },\n email: v.extend(function(value, options) {\n options = v.extend({}, this.options, options);\n var message = options.message || this.message || \"is not a valid email\";\n // Empty values are fine\n if (!v.isDefined(value)) {\n return;\n }\n if (!v.isString(value)) {\n return message;\n }\n if (!this.PATTERN.exec(value)) {\n return message;\n }\n }, {\n PATTERN: /^[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9\\u007F-\\uffff!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$/i\n }),\n equality: function(value, options, attribute, attributes, globalOptions) {\n if (!v.isDefined(value)) {\n return;\n }\n\n if (v.isString(options)) {\n options = {attribute: options};\n }\n options = v.extend({}, this.options, options);\n var message = options.message ||\n this.message ||\n \"is not equal to %{attribute}\";\n\n if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) {\n throw new Error(\"The attribute must be a non empty string\");\n }\n\n var otherValue = v.getDeepObjectValue(attributes, options.attribute)\n , comparator = options.comparator || function(v1, v2) {\n return v1 === v2;\n }\n , prettify = options.prettify ||\n (globalOptions && globalOptions.prettify) ||\n v.prettify;\n\n if (!comparator(value, otherValue, options, attribute, attributes)) {\n return v.format(message, {attribute: prettify(options.attribute)});\n }\n },\n\n // A URL validator that is used to validate URLs with the ability to\n // restrict schemes and some domains.\n url: function(value, options) {\n if (!v.isDefined(value)) {\n return;\n }\n\n options = v.extend({}, this.options, options);\n\n var message = options.message || this.message || \"is not a valid url\"\n , schemes = options.schemes || this.schemes || ['http', 'https']\n , allowLocal = options.allowLocal || this.allowLocal || false;\n\n if (!v.isString(value)) {\n return message;\n }\n\n // https://gist.github.com/dperini/729294\n var regex =\n \"^\" +\n // protocol identifier\n \"(?:(?:\" + schemes.join(\"|\") + \")://)\" +\n // user:pass authentication\n \"(?:\\\\S+(?::\\\\S*)?@)?\" +\n \"(?:\";\n\n var tld = \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\";\n\n if (allowLocal) {\n tld += \"?\";\n } else {\n regex +=\n // IP address exclusion\n // private & local networks\n \"(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})\" +\n \"(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})\" +\n \"(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})\";\n }\n\n regex +=\n // IP address dotted notation octets\n // excludes loopback network 0.0.0.0\n // excludes reserved space >= 224.0.0.0\n // excludes network & broacast addresses\n // (first & last IP address of each class)\n \"(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])\" +\n \"(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}\" +\n \"(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))\" +\n \"|\" +\n // host name\n \"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\" +\n // domain name\n \"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\" +\n tld +\n \")\" +\n // port number\n \"(?::\\\\d{2,5})?\" +\n // resource path\n \"(?:[/?#]\\\\S*)?\" +\n \"$\";\n\n var PATTERN = new RegExp(regex, 'i');\n if (!PATTERN.exec(value)) {\n return message;\n }\n }\n };\n\n validate.formatters = {\n detailed: function(errors) {return errors;},\n flat: v.flattenErrorsToArray,\n grouped: function(errors) {\n var attr;\n\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = v.flattenErrorsToArray(errors[attr]);\n }\n return errors;\n },\n constraint: function(errors) {\n var attr;\n errors = v.groupErrorsByAttribute(errors);\n for (attr in errors) {\n errors[attr] = errors[attr].map(function(result) {\n return result.validator;\n }).sort();\n }\n return errors;\n }\n };\n\n validate.exposeModule(validate, this, exports, module, define);\n}).call(commonjsGlobal,\n exports,\n module,\n null);\n});\n\nvalidate.validators.equals = function (value, options, key, attributes) {\n if (options && value !== options.value) {\n return key + 'must equal ' + options.value;\n }\n};\n\nvalidate.validators.doesNotEqual = function (value, options, key) {\n if (options && value === options.value) {\n return key + 'cannot equal ' + options.value;\n }\n};\n\nvalidate.validators.contains = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) === -1) {\n return key + 'must contain ' + options.value;\n }\n};\n\nvalidate.validators.doesNotContain = function (value, options, key) {\n if (options && value.indexOf && value.indexOf(options.value) !== -1) {\n return key + 'cannot contain ' + options.value;\n }\n};\n\nvalidate.validators.startsWith = function (value, options, key) {\n if (options && value.startsWith && !value.startsWith(options.value)) {\n return key + 'must start with ' + options.value;\n }\n};\n\nvalidate.validators.endsWith = function (value, options, key) {\n if (options && value.endsWith && !value.endsWith(options.value)) {\n return key + 'must end with ' + options.value;\n }\n};\n\n/**\n * Import Constants\n */\n\nvar StudySummary = metadata.StudySummary,\n InstanceMetadata$1 = metadata.InstanceMetadata;\n/**\n * Match a Metadata instance against rules using Validate.js for validation.\n * @param {StudySummary|InstanceMetadata} metadataInstance Metadata instance object\n * @param {Array} rules Array of MatchingRules instances (StudyMatchingRule|SeriesMatchingRule|ImageMatchingRule) for the match\n * @return {Object} Matching Object with score and details (which rule passed or failed)\n */\n\nvar match = function match(metadataInstance, rules) {\n // Make sure the supplied data is valid.\n if (!(metadataInstance instanceof StudySummary || metadataInstance instanceof InstanceMetadata$1)) {\n throw new OHIFError('HPMatcher::match metadataInstance must be an instance of StudySummary or InstanceMetadata');\n }\n\n var options = {\n format: 'grouped'\n };\n var details = {\n passed: [],\n failed: []\n };\n var requiredFailed = false;\n var score = 0;\n rules.forEach(function (rule) {\n var attribute = rule.attribute;\n var customAttributeExists = metadataInstance.customAttributeExists(attribute); // If the metadataInstance we are testing (e.g. study, series, or instance MetadataInstance) do\n // not contain the attribute specified in the rule, check whether or not they have been\n // defined in the CustomAttributeRetrievalCallbacks Object.\n\n if (!customAttributeExists && HP.CustomAttributeRetrievalCallbacks.hasOwnProperty(attribute)) {\n var customAttribute = HP.CustomAttributeRetrievalCallbacks[attribute];\n metadataInstance.setCustomAttribute(attribute, customAttribute.callback(metadataInstance));\n customAttributeExists = true;\n } // Format the constraint as required by Validate.js\n\n\n var testConstraint = _defineProperty({}, attribute, rule.constraint); // Create a single attribute object to be validated, since metadataInstance is an\n // instance of Metadata (StudyMetadata, SeriesMetadata or InstanceMetadata)\n\n\n var attributeValue = customAttributeExists ? metadataInstance.getCustomAttribute(attribute) : metadataInstance.getTagValue(attribute);\n\n var attributeMap = _defineProperty({}, attribute, attributeValue); // Use Validate.js to evaluate the constraints on the specified metadataInstance\n\n\n var errorMessages;\n\n try {\n errorMessages = validate(attributeMap, testConstraint, [options]);\n } catch (e) {\n errorMessages = ['Something went wrong during validation.', e];\n }\n\n if (!errorMessages) {\n // If no errorMessages were returned, then validation passed.\n // Add the rule's weight to the total score\n score += parseInt(rule.weight, 10); // Log that this rule passed in the matching details object\n\n details.passed.push({\n rule: rule\n });\n } else {\n // If errorMessages were present, then validation failed\n // If the rule that failed validation was Required, then\n // mark that a required Rule has failed\n if (rule.required) {\n requiredFailed = true;\n } // Log that this rule failed in the matching details object\n // and include any error messages\n\n\n details.failed.push({\n rule: rule,\n errorMessages: errorMessages\n });\n }\n }); // If a required Rule has failed Validation, set the matching score to zero\n\n if (requiredFailed) {\n score = 0;\n }\n\n return {\n score: score,\n details: details,\n requiredFailed: requiredFailed\n };\n};\n\nvar HPMatcher = {\n match: match\n};\n\n// Sorts an array by score\nvar sortByScore = function sortByScore(arr) {\n arr.sort(function (a, b) {\n return b.score - a.score;\n });\n};\n\n/**\n * Import Constants\n */\n\nvar StudyMetadata$1 = metadata.StudyMetadata,\n InstanceMetadata$2 = metadata.InstanceMetadata,\n StudySummary$1 = metadata.StudySummary;\n\n\nvar ABSTRACT_PRIOR_VALUE = 'abstractPriorValue';\n/*Meteor.startup(() => {\n HP.addCustomViewportSetting('wlPreset', 'Window/Level Preset', Object.create(null), (element, optionValue) => {\n if (_.findWhere(OHIF.viewer.wlPresets, { id: optionValue })) {\n OHIF.viewerbase.wlPresets.applyWLPreset(optionValue, element);\n }\n });\n});*/\n// TODO:\n// Should have ProtocolStore as an input to constructor\n// Something to update current HP and current stage 'globally'\n//\n//\n// Should allow user to provide:\n// functions for adding /\n\nvar ProtocolEngine =\n/*#__PURE__*/\nfunction () {\n /**\n * Constructor\n * @param {Array} studies Array of study metadata\n * @param {Map} priorStudies Map of prior studies\n * @param {Object} studyMetadataSource Instance of StudyMetadataSource (ohif-viewerbase) Object to get study metadata\n */\n function ProtocolEngine(studies, priorStudies, studyMetadataSource) {\n _classCallCheck(this, ProtocolEngine);\n\n _defineProperty(this, \"matchedProtocols\", new Set());\n\n _defineProperty(this, \"matchedProtocolScores\", new Map());\n\n // -----------\n // Type Validations\n if (!(studyMetadataSource instanceof StudyMetadataSource)) {\n throw new OHIFError('ProtocolEngine::constructor studyMetadataSource is not an instance of StudyMetadataSource');\n }\n\n if (!(studies instanceof Array) && !studies.every(function (study) {\n return study instanceof StudyMetadata$1;\n })) {\n throw new OHIFError(\"ProtocolEngine::constructor studies is not an array or it's items are not instances of StudyMetadata\");\n } // --------------\n // Initialization\n\n\n this.studies = studies;\n this.priorStudies = priorStudies instanceof Map ? priorStudies : new Map();\n this.studyMetadataSource = studyMetadataSource; // Put protocol engine in a known state\n\n this.reset(); // Create an array for new stage ids to be stored\n // while editing a stage\n\n this.newStageIds = [];\n }\n /**\n * Resets the ProtocolEngine to the best match\n */\n\n\n _createClass(ProtocolEngine, [{\n key: \"reset\",\n value: function reset() {\n var protocol = this.getBestProtocolMatch();\n this.setHangingProtocol(protocol);\n }\n /**\n * Retrieves the current Stage from the current Protocol and stage index\n *\n * @returns {*} The Stage model for the currently displayed Stage\n */\n\n }, {\n key: \"getCurrentStageModel\",\n value: function getCurrentStageModel() {\n return this.protocol.stages[this.stage];\n }\n /**\n * Finds the best protocols from Protocol Store, matching each protocol matching rules\n * with the given study. The best protocol are orded by score and returned in an array\n * @param {Object} study StudyMetadata instance object\n * @return {Array} Array of match objects or an empty array if no match was found\n * Each match object has the score of the matching and the matched\n * protocol\n */\n\n }, {\n key: \"findMatchByStudy\",\n value: function findMatchByStudy(study) {\n log$1.trace('ProtocolEngine::findMatchByStudy');\n var matched = [];\n var studyInstance = study.getFirstInstance(); // Set custom attribute for study metadata\n\n var numberOfAvailablePriors = this.getNumberOfAvailablePriors(study.getObjectID());\n HP.ProtocolStore.getProtocol().forEach(function (protocol) {\n // Clone the protocol's protocolMatchingRules array\n // We clone it so that we don't accidentally add the\n // numberOfPriorsReferenced rule to the Protocol itself.\n var rules = protocol.protocolMatchingRules.slice();\n\n if (!rules) {\n return;\n } // Check if the study has the minimun number of priors used by the protocol.\n\n\n var numberOfPriorsReferenced = protocol.getNumberOfPriorsReferenced();\n\n if (numberOfPriorsReferenced > numberOfAvailablePriors) {\n return;\n } // Run the matcher and get matching details\n\n\n var matchedDetails = HPMatcher.match(studyInstance, rules);\n var score = matchedDetails.score; // The protocol matched some rule, add it to the matched list\n\n if (score > 0) {\n matched.push({\n score: score,\n protocol: protocol\n });\n }\n }); // If no matches were found, select the default protocol\n\n if (!matched.length) {\n var defaultProtocol = HP.ProtocolStore.getProtocol('defaultProtocol');\n return [{\n score: 1,\n protocol: defaultProtocol\n }];\n } // Sort the matched list by score\n\n\n sortByScore(matched);\n log$1.trace('ProtocolEngine::findMatchByStudy matched', matched);\n return matched;\n }\n }, {\n key: \"_clearMatchedProtocols\",\n value: function _clearMatchedProtocols() {\n this.matchedProtocols.clear();\n this.matchedProtocolScores.clear();\n }\n /**\n * Populates the MatchedProtocols Collection by running the matching procedure\n */\n\n }, {\n key: \"updateProtocolMatches\",\n value: function updateProtocolMatches() {\n var _this = this;\n\n log$1.trace('ProtocolEngine::updateProtocolMatches'); // Clear all data currently in matchedProtocols\n\n this._clearMatchedProtocols(); // For each study, find the matching protocols\n\n\n this.studies.forEach(function (study) {\n var matched = _this.findMatchByStudy(study); // For each matched protocol, check if it is already in MatchedProtocols\n\n\n matched.forEach(function (matchedDetail) {\n var protocol = matchedDetail.protocol;\n\n if (!protocol) {\n return;\n } // If it is not already in the MatchedProtocols Collection, insert it with its score\n\n\n if (!_this.matchedProtocols.has(protocol)) {\n log$1.trace('ProtocolEngine::updateProtocolMatches inserting protocol match', matchedDetail);\n\n _this.matchedProtocols.add(protocol);\n\n _this.matchedProtocolScores[protocol.id] = matchedDetail.score;\n }\n });\n });\n }\n }, {\n key: \"_getHighestScoringProtocol\",\n value: function _getHighestScoringProtocol() {\n var highestScoringProtocolId = ProtocolEngine._largestKeyByValue(this.matchedProtocolScores);\n\n return this.matchedProtocols[highestScoringProtocolId];\n }\n /**\n * Return the best matched Protocol to the current study or set of studies\n * @returns {*}\n */\n\n }, {\n key: \"getBestProtocolMatch\",\n value: function getBestProtocolMatch() {\n // Run the matching to populate matchedProtocols Set and Map\n this.updateProtocolMatches(); // Retrieve the highest scoring Protocol\n\n var bestMatch = this._getHighestScoringProtocol();\n\n log$1.trace('ProtocolEngine::getBestProtocolMatch bestMatch', bestMatch);\n return bestMatch;\n }\n /**\n * Get the number of prior studies supplied in the priorStudies map property.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {number} The number of available prior studies with the same PatientID\n */\n\n }, {\n key: \"getNumberOfAvailablePriors\",\n value: function getNumberOfAvailablePriors(studyObjectID) {\n return this.getAvailableStudyPriors(studyObjectID).length;\n }\n /**\n * Get the array of prior studies from a specific study.\n *\n * @param {String} studyObjectID The study object ID of the study whose priors are needed\n * @returns {Array} The array of available priors or an empty array\n */\n\n }, {\n key: \"getAvailableStudyPriors\",\n value: function getAvailableStudyPriors(studyObjectID) {\n var priors = this.priorStudies.get(studyObjectID);\n return priors instanceof Array ? priors : [];\n } // Match images given a list of Studies and a Viewport's image matching reqs\n\n }, {\n key: \"matchImages\",\n value: function matchImages(viewport, viewportIndex) {\n var _this2 = this;\n\n log$1.trace('ProtocolEngine::matchImages');\n var studyMatchingRules = viewport.studyMatchingRules,\n seriesMatchingRules = viewport.seriesMatchingRules,\n instanceMatchingRules = viewport.imageMatchingRules;\n var matchingScores = [];\n var currentStudy = this.studies[0]; // @TODO: Should this be: this.studies[this.currentStudy] ???\n\n var firstInstance = currentStudy.getFirstInstance();\n var highestStudyMatchingScore = 0;\n var highestSeriesMatchingScore = 0; // Set custom attribute for study metadata and it's first instance\n\n currentStudy.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, 0);\n } // Only used if study matching rules has abstract prior values defined...\n\n\n var priorStudies;\n studyMatchingRules.forEach(function (rule) {\n if (rule.attribute === ABSTRACT_PRIOR_VALUE) {\n var validatorType = Object.keys(rule.constraint)[0];\n var validator = Object.keys(rule.constraint[validatorType])[0];\n var abstractPriorValue = rule.constraint[validatorType][validator];\n abstractPriorValue = parseInt(abstractPriorValue, 10); // TODO: Restrict or clarify validators for abstractPriorValue?\n // No need to call it more than once...\n\n if (!priorStudies) {\n priorStudies = _this2.getAvailableStudyPriors(currentStudy.getObjectID());\n } // TODO: Revisit this later: What about two studies with the same\n // study date?\n\n\n var priorStudy;\n\n if (abstractPriorValue === -1) {\n priorStudy = priorStudies[priorStudies.length - 1];\n } else {\n var studyIndex = Math.max(abstractPriorValue - 1, 0);\n priorStudy = priorStudies[studyIndex];\n } // Invalid data\n\n\n if (!(priorStudy instanceof StudyMetadata$1) && !(priorStudy instanceof StudySummary$1)) {\n return;\n }\n\n var priorStudyObjectID = priorStudy.getObjectID(); // Check if study metadata is already in studies list\n\n if (_this2.studies.find(function (study) {\n return study.getObjectID() === priorStudyObjectID;\n })) {\n return;\n } // Get study metadata if necessary and load study in the viewer (each viewer should provide it's own load study method)\n\n\n _this2.studyMetadataSource.loadStudy(priorStudy).then(function (studyMetadata) {\n // Set the custom attribute abstractPriorValue for the study metadata\n studyMetadata.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue); // Also add custom attribute\n\n var firstInstance = studyMetadata.getFirstInstance();\n\n if (firstInstance instanceof InstanceMetadata$2) {\n firstInstance.setCustomAttribute(ABSTRACT_PRIOR_VALUE, abstractPriorValue);\n } // Insert the new study metadata\n\n\n _this2.studies.push(studyMetadata); // Update the viewport to refresh layout manager with new study\n\n\n _this2.updateViewports(viewportIndex);\n }, function (error) {\n log$1.warn(error);\n throw new OHIFError(\"ProtocolEngine::matchImages could not get study metadata for the Study with the following ObjectID: \".concat(priorStudyObjectID));\n });\n } // TODO: Add relative Date / time\n\n });\n this.studies.forEach(function (study) {\n var studyMatchDetails = HPMatcher.match(study.getFirstInstance(), studyMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (studyMatchDetails.requiredFailed === true || studyMatchDetails.score < highestStudyMatchingScore) {\n return;\n }\n\n highestStudyMatchingScore = studyMatchDetails.score;\n study.forEachSeries(function (series) {\n var seriesMatchDetails = HPMatcher.match(series.getFirstInstance(), seriesMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (seriesMatchDetails.requiredFailed === true || seriesMatchDetails.score < highestSeriesMatchingScore) {\n return;\n }\n\n highestSeriesMatchingScore = seriesMatchDetails.score;\n series.forEachInstance(function (instance, index) {\n // This tests to make sure there is actually image data in this instance\n // TODO: Change this when we add PDF and MPEG support\n // See https://ohiforg.atlassian.net/browse/LT-227\n // sopClassUid = x00080016\n // rows = x00280010\n if (!isImage(instance.getTagValue('x00080016')) && !instance.getTagValue('x00280010')) {\n return;\n }\n\n var instanceMatchDetails = HPMatcher.match(instance, instanceMatchingRules); // Prevent bestMatch from being updated if the matchDetails' required attribute check has failed\n\n if (instanceMatchDetails.requiredFailed === true) {\n return;\n }\n\n var matchDetails = {\n passed: [],\n failed: []\n };\n matchDetails.passed = matchDetails.passed.concat(instanceMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(seriesMatchDetails.details.passed);\n matchDetails.passed = matchDetails.passed.concat(studyMatchDetails.details.passed);\n matchDetails.failed = matchDetails.failed.concat(instanceMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(seriesMatchDetails.details.failed);\n matchDetails.failed = matchDetails.failed.concat(studyMatchDetails.details.failed);\n var totalMatchScore = instanceMatchDetails.score + seriesMatchDetails.score + studyMatchDetails.score;\n var currentSOPInstanceUID = instance.getSOPInstanceUID();\n var imageDetails = {\n studyInstanceUid: study.getStudyInstanceUID(),\n seriesInstanceUid: series.getSeriesInstanceUID(),\n sopInstanceUid: currentSOPInstanceUID,\n currentImageIdIndex: index,\n matchingScore: totalMatchScore,\n matchDetails: matchDetails,\n sortingInfo: {\n score: totalMatchScore,\n study: instance.getTagValue('x00080020') + instance.getTagValue('x00080030'),\n // StudyDate = x00080020 StudyTime = x00080030\n series: parseInt(instance.getTagValue('x00200011')),\n // TODO: change for seriesDateTime SeriesNumber = x00200011\n instance: parseInt(instance.getTagValue('x00200013')) // TODO: change for acquisitionTime InstanceNumber = x00200013\n\n }\n }; // Find the displaySet\n\n var displaySet = study.findDisplaySet(function (displaySet) {\n return displaySet.images.find(function (image) {\n return image.getSOPInstanceUID() === currentSOPInstanceUID;\n });\n }); // If the instance was found, set the displaySet ID\n\n if (displaySet) {\n imageDetails.displaySetInstanceUid = displaySet.getUID();\n imageDetails.imageId = instance.getImageId();\n }\n\n matchingScores.push(imageDetails);\n });\n });\n }); // Sort the matchingScores\n\n var sortingFunction = sortBy({\n name: 'score',\n reverse: true\n }, {\n name: 'study',\n reverse: true\n }, {\n name: 'instance'\n }, {\n name: 'series'\n });\n matchingScores.sort(function (a, b) {\n return sortingFunction(a.sortingInfo, b.sortingInfo);\n });\n var bestMatch = matchingScores[0];\n log$1.trace('ProtocolEngine::matchImages bestMatch', bestMatch);\n return {\n bestMatch: bestMatch,\n matchingScores: matchingScores\n };\n }\n /**\n * Rerenders viewports that are part of the current ProtocolEngine's LayoutManager\n * using the matching rules internal to each viewport.\n *\n * If this function is provided the index of a viewport, only the specified viewport\n * is rerendered.\n *\n * @param viewportIndex\n */\n\n }, {\n key: \"updateViewports\",\n value: function updateViewports(viewportIndex) {\n var _this3 = this;\n\n log$1.trace(\"ProtocolEngine::updateViewports viewportIndex: \".concat(viewportIndex)); // Make sure we have an active protocol with a non-empty array of display sets\n\n if (!this.getNumProtocolStages()) {\n return;\n } // Retrieve the current stage\n\n\n var stageModel = this.getCurrentStageModel(); // If the current stage does not fulfill the requirements to be displayed,\n // stop here.\n\n if (!stageModel || !stageModel.viewportStructure || !stageModel.viewports || !stageModel.viewports.length) {\n return;\n } // Retrieve the layoutTemplate associated with the current display set's viewport structure\n // If no such template name exists, stop here.\n\n\n var layoutTemplateName = stageModel.viewportStructure.getLayoutTemplateName();\n\n if (!layoutTemplateName) {\n return;\n } // Retrieve the properties associated with the current display set's viewport structure template\n // If no such layout properties exist, stop here.\n\n\n var layoutProps = stageModel.viewportStructure.properties;\n\n if (!layoutProps) {\n return;\n } // Create an empty array to store the output viewportData\n\n\n var viewportData = []; // Empty the matchDetails associated with the ProtocolEngine.\n // This will be used to store the pass/fail details and score\n // for each of the viewport matching procedures\n\n this.matchDetails = []; // Loop through each viewport\n\n stageModel.viewports.forEach(function (viewport, viewportIndex) {\n var details = _this3.matchImages(viewport, viewportIndex);\n\n _this3.matchDetails[viewportIndex] = details; // Convert any YES/NO values into true/false for Cornerstone\n\n var cornerstoneViewportParams = {}; // Cache viewportSettings keys\n\n var viewportSettingsKeys = Object.keys(viewport.viewportSettings);\n viewportSettingsKeys.forEach(function (key) {\n var value = viewport.viewportSettings[key];\n\n if (value === 'YES') {\n value = true;\n } else if (value === 'NO') {\n value = false;\n }\n\n cornerstoneViewportParams[key] = value;\n }); // imageViewerViewports occasionally needs relevant layout data in order to set\n // the element style of the viewport in question\n\n var currentViewportData = _objectSpread({\n viewportIndex: viewportIndex,\n viewport: cornerstoneViewportParams\n }, layoutProps);\n\n var customSettings = [];\n viewportSettingsKeys.forEach(function (id) {\n var setting = HP.CustomViewportSettings[id];\n\n if (!setting) {\n return;\n }\n\n customSettings.push({\n id: id,\n value: viewport.viewportSettings[id]\n });\n });\n\n currentViewportData.renderedCallback = function (element) {\n //console.log('renderedCallback for ' + element.id);\n customSettings.forEach(function (customSetting) {\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback Applying custom setting: \".concat(customSetting.id));\n log$1.trace(\"ProtocolEngine::currentViewportData.renderedCallback with value: \".concat(customSetting.value));\n var setting = HP.CustomViewportSettings[customSetting.id];\n setting.callback(element, customSetting.value);\n });\n };\n\n var currentMatch = details.bestMatch;\n var currentPosition = 1;\n var scoresLength = details.matchingScores.length;\n\n while (currentPosition < scoresLength && viewportData.find(function (a) {\n return a.imageId === currentMatch.imageId;\n })) {\n currentMatch = details.matchingScores[currentPosition];\n currentPosition++;\n }\n\n if (currentMatch && currentMatch.imageId) {\n currentViewportData.studyInstanceUid = currentMatch.studyInstanceUid;\n currentViewportData.seriesInstanceUid = currentMatch.seriesInstanceUid;\n currentViewportData.sopInstanceUid = currentMatch.sopInstanceUid;\n currentViewportData.currentImageIdIndex = currentMatch.currentImageIdIndex;\n currentViewportData.displaySetInstanceUid = currentMatch.displaySetInstanceUid;\n currentViewportData.imageId = currentMatch.imageId;\n } // @TODO Why should we throw an exception when a best match is not found? This was aborting the whole process.\n // if (!currentViewportData.displaySetInstanceUid) {\n // throw new OHIFError('ProtocolEngine::updateViewports No matching display set found?');\n // }\n\n\n viewportData.push(currentViewportData);\n });\n this.LayoutManager.layoutTemplateName = layoutTemplateName;\n this.LayoutManager.layoutProps = layoutProps;\n this.LayoutManager.viewportData = viewportData;\n\n if (viewportIndex !== undefined && viewportData[viewportIndex]) {\n this.LayoutManager.rerenderViewportWithNewDisplaySet(viewportIndex, viewportData[viewportIndex]);\n } else {\n this.LayoutManager.updateViewports();\n }\n }\n /**\n * Sets the current Hanging Protocol to the specified Protocol\n * An optional argument can also be used to prevent the updating of the Viewports\n *\n * @param newProtocol\n * @param updateViewports\n */\n\n }, {\n key: \"setHangingProtocol\",\n value: function setHangingProtocol(newProtocol) {\n var updateViewports = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n log$1.trace('ProtocolEngine::setHangingProtocol newProtocol', newProtocol);\n log$1.trace(\"ProtocolEngine::setHangingProtocol updateViewports = \".concat(updateViewports)); // Reset the array of newStageIds\n\n this.newStageIds = [];\n\n if (HP.Protocol.prototype.isPrototypeOf(newProtocol)) {\n this.protocol = newProtocol;\n } else {\n this.protocol = new HP.Protocol();\n this.protocol.fromObject(newProtocol);\n }\n\n this.stage = 0; // Update viewports by default\n\n if (updateViewports) {\n this.updateViewports();\n } //Session.set('HangingProtocolName', this.protocol.name);\n //Session.set('HangingProtocolStage', this.stage);\n\n }\n /**\n * Check if the next stage is available\n * @return {Boolean} True if next stage is available or false otherwise\n */\n\n }, {\n key: \"isNextStageAvailable\",\n value: function isNextStageAvailable() {\n var numberOfStages = this.getNumProtocolStages();\n return this.stage + 1 < numberOfStages;\n }\n /**\n * Check if the previous stage is available\n * @return {Boolean} True if previous stage is available or false otherwise\n */\n\n }, {\n key: \"isPreviousStageAvailable\",\n value: function isPreviousStageAvailable() {\n return this.stage - 1 >= 0;\n }\n /**\n * Changes the current stage to a new stage index in the display set sequence.\n * It checks if the next stage exists.\n *\n * @param {Integer} stageAction An integer value specifying wheater next (1) or previous (-1) stage\n * @return {Boolean} True if new stage has set or false, otherwise\n */\n\n }, {\n key: \"setCurrentProtocolStage\",\n value: function setCurrentProtocolStage(stageAction) {\n // Check if previous or next stage is available\n if (stageAction === -1 && !this.isPreviousStageAvailable()) {\n return false;\n } else if (stageAction === 1 && !this.isNextStageAvailable()) {\n return false;\n } // Sets the new stage\n\n\n this.stage += stageAction; // Log the new stage\n\n log$1.trace(\"ProtocolEngine::setCurrentProtocolStage stage = \".concat(this.stage)); // Set stage Session variable for reactivity\n //Session.set('HangingProtocolStage', this.stage);\n // Since stage has changed, we need to update the viewports\n // and redo matchings\n\n this.updateViewports(); // Everything went well\n\n return true;\n }\n /**\n * Retrieves the number of Stages in the current Protocol or\n * undefined if no protocol or stages are set\n */\n\n }, {\n key: \"getNumProtocolStages\",\n value: function getNumProtocolStages() {\n if (!this.protocol || !this.protocol.stages || !this.protocol.stages.length) {\n return;\n }\n\n return this.protocol.stages.length;\n }\n /**\n * Switches to the next protocol stage in the display set sequence\n */\n\n }, {\n key: \"nextProtocolStage\",\n value: function nextProtocolStage() {\n log$1.trace('ProtocolEngine::nextProtocolStage');\n\n if (!this.setCurrentProtocolStage(1)) {\n log$1.trace('ProtocolEngine::nextProtocolStage failed');\n }\n }\n /**\n * Switches to the previous protocol stage in the display set sequence\n */\n\n }, {\n key: \"previousProtocolStage\",\n value: function previousProtocolStage() {\n log$1.trace('ProtocolEngine::previousProtocolStage');\n\n if (!this.setCurrentProtocolStage(-1)) {\n log$1.trace('ProtocolEngine::previousProtocolStage failed');\n }\n }\n }]);\n\n return ProtocolEngine;\n}();\n\nvar viewer = {};\nvar OHIF$1 = {\n viewer: viewer,\n utils: utils,\n studies: studies,\n redux: redux,\n classes: classes,\n metadata: metadata,\n hotkeys: hotkeys,\n header: header,\n cornerstone: cornerstone$1,\n string: string,\n ui: ui,\n user: user,\n object: object,\n commands: commands,\n log: log$1,\n external: external,\n DICOMWeb: DICOMWeb,\n plugins: plugins\n};\n\nexport default OHIF$1;\nexport { viewer, utils, studies, redux, classes, metadata, hotkeys, header, cornerstone$1 as cornerstone, string, ui, user, object, commands, log$1 as log, DICOMWeb, plugins, OHIF$1 as OHIF };\n//# sourceMappingURL=index.es.js.map\n","/*! dicom-parser - 1.8.2 - 2018-12-05 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/dicomParser */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"dicom-parser\",[],t):\"object\"==typeof exports?exports[\"dicom-parser\"]=t():e.dicomParser=t()}(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=79)}([function(e,t){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){\"use strict\";(function(e){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nvar n=r(73),i=r(72),a=r(38);function o(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":case void 0:return Z(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return j(e).length;default:if(n)return Z(e).length;t=(\"\"+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if(\"number\"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function _(e,t,r,n,i){var a,o=1,s=e.length,l=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,l/=2,r/=2}function f(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,d=0;di&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;o>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function k(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:f>223?3:f>191?2:1;if(i+h<=r)switch(h){case 1:f<128&&(u=f);break;case 2:128==(192&(a=e[i+1]))&&(l=(31&f)<<6|63&a)>127&&(u=l);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(l=(15&f)<<12|(63&a)<<6|63&o)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(l=(15&f)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|1023&u),n.push(u),i+=h}return function(e){var t=e.length;if(t<=A)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nthis.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return D(this,t,r);case\"utf8\":case\"utf-8\":return k(this,t,r);case\"ascii\":return P(this,t,r);case\"latin1\":case\"binary\":return T(this,t,r);case\"base64\":return S(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return O(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e=\"\",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(e+=\" ... \")),\"\"},l.prototype.compare=function(e,t,r,n,i){if(!l.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,i>>>=0,this===e)return 0;for(var a=i-n,o=r-t,s=Math.min(a,o),f=this.slice(n,i),u=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var a=!1;;)switch(n){case\"hex\":return y(this,e,t,r);case\"utf8\":case\"utf-8\":return b(this,e,t,r);case\"ascii\":return v(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return E(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,e,t,r);default:if(a)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),a=!0}},l.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var A=4096;function P(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i=\"\",a=t;ar)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,r,n,i,a){if(!l.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError(\"Index out of range\")}function L(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function F(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function B(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function U(e,t,r,n,a){return a||B(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,a){return a||B(e,0,r,8),i.write(e,t,r,n,52,8),r+8}l.prototype.slice=function(e,t){var r,n=this.length;if(e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},l.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=this[e],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||I(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},l.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||R(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):F(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+r},l.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);R(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):F(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):F(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,r){return U(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return U(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError(\"sourceStart out of bounds\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(a<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function j(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(N,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function C(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(0))},function(e,t,r){\"use strict\";var n=r(10),i=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=h;var a=r(6);a.inherits=r(5);var o=r(35),s=r(18);a.inherits(h,o);for(var l=i(s.prototype),f=0;f1)for(var r=1;r0){var r=(0,i.readFixedString)(this.byteArray,t.dataOffset,t.length).match(/\\\\/g);return null===r?1:r.length+1}}},{key:\"string\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].trim():n.trim()}}},{key:\"text\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var n=(0,i.readFixedString)(this.byteArray,r.dataOffset,r.length);return t>=0?n.split(\"\\\\\")[t].replace(/ +$/,\"\"):n.replace(/ +$/,\"\")}}},{key:\"floatString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseFloat(n)}}},{key:\"intString\",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var n=this.string(e,t);if(void 0!==n)return parseInt(n)}}},{key:\"attributeTag\",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=a(t,this.byteArrayParser).readUint16,n=this.byteArray,i=t.dataOffset;return\"x\"+(\"00000000\"+(256*r(n,i)*256+r(n,i+2)).toString(16)).substr(-8)}}}]),e}();t.default=o},function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var a=0;a=n.length)throw\"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length\";this.byteArrayParser=r,this.byteArray=n,this.position=i||0,this.warnings=[]}return i(t,[{key:\"seek\",value:function(e){if(this.position+e<0)throw\"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0\";this.position+=e}},{key:\"readByteStream\",value:function(e){if(this.position+e>this.byteArray.length)throw\"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread\";var r=(0,o.default)(this.byteArray,this.position,e);return this.position+=e,new t(this.byteArrayParser,r)}},{key:\"readUint16\",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:\"readUint32\",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:\"readFixedString\",value:function(e){var t=(0,s.readFixedString)(this.byteArray,this.position,e);return this.position+=e,t}}]),t}();t.default=l}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){if(void 0===e)throw\"dicomParser.readSequenceItem: missing required parameter 'byteStream'\";var t={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};if(\"xfffee000\"!==t.tag)throw\"dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset \"+e.position;return t};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readFixedString=function(e,t,r){if(r<0)throw\"dicomParser.readFixedString - length cannot be less than 0\";if(t+r>e.length)throw\"dicomParser.readFixedString: attempt to read past end of buffer\";for(var n,i=\"\",a=0;a3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'\";var a=e.elements;for(;t.positionr)throw\"dicomParser:parseDicomDataSetExplicit: buffer overrun\"},t.parseDicomDataSetImplicit=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw\"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'\";if(rt.byteArray.length)throw\"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'\";var a=e.elements;for(;t.position= 0\";if(r>=t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments\";if(s<1)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0\";if(r+s>t.fragments.length)throw\"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments\";var u=new i.default(e.byteArrayParser,e.byteArray,t.dataOffset),h=(0,a.default)(u);if(\"xfffee000\"!==h.tag)throw\"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000\";u.seek(h.length);var d=u.position;if(1===s)return(0,o.default)(u.byteArray,d+f[r].offset+8,f[r].length);for(var c=l(f,r,s),p=(0,n.default)(u.byteArray,c),g=0,m=r;m-1?n:a.nextTick;y.WritableState=_;var f=r(6);f.inherits=r(5);var u={deprecate:r(61)},h=r(34),d=r(9).Buffer,c=i.Uint8Array||function(){};var p,g=r(33);function m(){}function _(e,t){s=s||r(2),e=e||{};var n=t instanceof s;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,f=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(f||0===f)?f:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(a.nextTick(i,n),a.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(i(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,i);else{var o=E(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||w(e,r),n?l(v,e,r,o,i):v(e,r,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function y(e){if(s=s||r(2),!(p.call(y,this)||this instanceof s))return new y(e);this._writableState=new _(e,this),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),h.call(this)}function b(e,t,r,n,i,a,o){t.writelen=n,t.writecb=o,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function w(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),a=t.corkedRequestsFree;a.entry=r;for(var s=0,l=!0;r;)i[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;i.allBuffers=l,b(e,t,!0,t.length,i,\"\",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,h=r.callback;if(b(e,t,!1,t.objectMode?1:f.length,f,u,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final(function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)})}function S(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}f.inherits(y,h),_.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(_.prototype,\"buffer\",{get:u.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(y,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===y&&(e&&e._writableState instanceof _)}})):p=function(e){return e instanceof this},y.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},y.prototype.write=function(e,t,r){var n,i=this._writableState,o=!1,s=!i.objectMode&&(n=e,d.isBuffer(n)||n instanceof c);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=i.defaultEncoding),\"function\"!=typeof r&&(r=m),i.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),a.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var i=!0,o=!1;return null===r?o=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(o=new TypeError(\"Invalid non-string/buffer chunk\")),o&&(e.emit(\"error\",o),a.nextTick(n,o),i=!1),i}(this,i,e,r))&&(i.pendingcb++,o=function(e,t,r,n,i,a){if(!r){var o=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=d.from(t,r));return t}(t,n,i);n!==o&&(r=!0,i=\"buffer\",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},y.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},y.prototype._writev=null,y.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(y.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),y.prototype.destroy=g.destroy,y.prototype._undestroy=g.undestroy,y.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(3),r(63).setImmediate,r(0))},function(e,t,r){(t=e.exports=r(35)).Stream=t,t.Readable=t,t.Writable=r(18),t.Duplex=r(2),t.Transform=r(31),t.PassThrough=r(60)},function(e,t){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(e){return\"function\"==typeof e}function i(e){return\"object\"==typeof e&&null!==e}function a(e){return void 0===e}e.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||isNaN(e))throw TypeError(\"n must be a positive number\");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,r,o,s,l,f;if(this._events||(this._events={}),\"error\"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified \"error\" event. ('+t+\")\");throw u.context=t,u}if(a(r=this._events[e]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(i(r))for(s=Array.prototype.slice.call(arguments,1),o=(f=r.slice()).length,l=0;l0&&this._events[e].length>o&&(this._events[e].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[e].length),\"function\"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError(\"listener must be a function\");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,a,o,s;if(!n(t))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[e])return this;if(o=(r=this._events[e]).length,a=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit(\"removeListener\",e,t);else if(i(r)){for(s=o;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit(\"removeListener\",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)\"removeListener\"!==t&&this.removeAllListeners(t);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return e[t]+256*e[t+1]},readInt16:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"littleEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,r){if(void 0!==e&&t instanceof e)return e.alloc(r);if(t instanceof Uint8Array)return new Uint8Array(r);throw\"dicomParser.alloc: unknown type for byteArray\"}}).call(this,r(1).Buffer)},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var o={tag:(0,a.default)(e),length:e.readUint32(),dataOffset:e.position};4294967295===o.length&&(o.hadUndefinedLength=!0);if(o.tag===t)return o;if(s(o,e,r))return(0,i.default)(e,o),o;if(o.hadUndefinedLength)return(0,n.default)(e,o),o;return e.seek(o.length),o};var n=o(r(24)),i=o(r(39)),a=o(r(4));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e,t,r){if(void 0!==r)return\"SQ\"===r(e.tag);if(t.position+4<=t.byteArray.length){var n=(0,a.default)(t);return t.seek(-4),\"xfffee000\"===n||\"xfffee0dd\"===n}return t.warnings.push(\"eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR\"),!1}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e)throw\"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'\";var r=e.byteArray.length-8;for(;e.position<=r;){var n=e.readUint16();if(65534===n){var i=e.readUint16();if(57357===i){var a=e.readUint32();return 0!==a&&e.warnings(\"encountered non zero length following item delimiter at position \"+(e.position-4)+\" while reading element of undefined length with tag \"+t.tag),void(t.length=e.position-t.dataOffset)}}}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0};t.isStringVr=function(e){return n[e]},t.isPrivateTag=function(e){return parseInt(e[4],10)%2==1},t.parsePN=function(e){if(void 0!==e){var t=e.split(\"^\");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r,n,i){if(n=n||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'\";if(void 0===t)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'\";if(void 0===r)throw\"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'\";if(void 0===n)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable\";if(\"x7fe00010\"!==t.tag)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)\";if(!0!==t.encapsulatedPixelData)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data\";if(!0!==t.hadUndefinedLength)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length\";if(void 0===t.fragments)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments\";if(0===n.length)throw\"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries\";if(r<0)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0\";if(r>=n.length)throw\"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length\";var l=n[r],f=o(i,l);if(void 0===f)throw\"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry\";var u=s(r,n,i,f);return(0,a.default)(e,t,f,u,i)};var n,i=r(17),a=(n=i)&&n.__esModule?n:{default:n};var o=function(e,t){for(var r=0;r>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var a=n,o=i+r;e^=-1;for(var s=i;s>>8^a[255&(e^t[s])];return-1^e}},function(e,t,r){\"use strict\";e.exports=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!_(e)){for(var t=[],r=0;r=a)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}}),l=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(r)?n.showHidden=r:r&&t._extend(n,r),y(n.showHidden)&&(n.showHidden=!1),y(n.depth)&&(n.depth=2),y(n.colors)&&(n.colors=!1),y(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=l),u(n,e,n.depth)}function l(e,t){var r=s.styles[t];return r?\"\u001b[\"+s.colors[r][0]+\"m\"+e+\"\u001b[\"+s.colors[r][1]+\"m\":e}function f(e,t){return e}function u(e,r,n){if(e.customInspect&&r&&x(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return _(i)||(i=u(e,i,n)),i}var a=function(e,t){if(y(t))return e.stylize(\"undefined\",\"undefined\");if(_(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(g(t))return e.stylize(\"null\",\"null\")}(e,r);if(a)return a;var o=Object.keys(r),s=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),E(r)&&(o.indexOf(\"message\")>=0||o.indexOf(\"description\")>=0))return h(r);if(0===o.length){if(x(r)){var l=r.name?\": \"+r.name:\"\";return e.stylize(\"[Function\"+l+\"]\",\"special\")}if(b(r))return e.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(w(r))return e.stylize(Date.prototype.toString.call(r),\"date\");if(E(r))return h(r)}var f,v=\"\",S=!1,k=[\"{\",\"}\"];(c(r)&&(S=!0,k=[\"[\",\"]\"]),x(r))&&(v=\" [Function\"+(r.name?\": \"+r.name:\"\")+\"]\");return b(r)&&(v=\" \"+RegExp.prototype.toString.call(r)),w(r)&&(v=\" \"+Date.prototype.toUTCString.call(r)),E(r)&&(v=\" \"+h(r)),0!==o.length||S&&0!=r.length?n<0?b(r)?e.stylize(RegExp.prototype.toString.call(r),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(r),f=S?function(e,t,r,n,i){for(var a=[],o=0,s=t.length;o=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(f,v,k)):k[0]+v+k[1]}function h(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function d(e,t,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=l.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):l.set&&(s=e.stylize(\"[Setter]\",\"special\")),P(n,i)||(o=\"[\"+i+\"]\"),s||(e.seen.indexOf(l.value)<0?(s=g(r)?u(e,l.value,null):u(e,l.value,r-1)).indexOf(\"\\n\")>-1&&(s=a?s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map(function(e){return\" \"+e}).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),y(o)){if(a&&i.match(/^\\d+$/))return s;(o=JSON.stringify(\"\"+i)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,\"name\")):(o=o.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),o=e.stylize(o,\"string\"))}return o+\": \"+s}function c(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function g(e){return null===e}function m(e){return\"number\"==typeof e}function _(e){return\"string\"==typeof e}function y(e){return void 0===e}function b(e){return v(e)&&\"[object RegExp]\"===S(e)}function v(e){return\"object\"==typeof e&&null!==e}function w(e){return v(e)&&\"[object Date]\"===S(e)}function E(e){return v(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function k(e){return e<10?\"0\"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(y(a)&&(a=n.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!o[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(a)){var r=n.pid;o[e]=function(){var n=t.format.apply(t,arguments);console.error(\"%s %d: %s\",e,r,n)}}else o[e]=function(){};return o[e]},t.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},t.isArray=c,t.isBoolean=p,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=m,t.isString=_,t.isSymbol=function(e){return\"symbol\"==typeof e},t.isUndefined=y,t.isRegExp=b,t.isObject=v,t.isDate=w,t.isError=E,t.isFunction=x,t.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"==typeof e||void 0===e},t.isBuffer=r(54);var A=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log(\"%s - %s\",(e=new Date,r=[k(e.getHours()),k(e.getMinutes()),k(e.getSeconds())].join(\":\"),[e.getDate(),A[e.getMonth()],r].join(\" \")),t.format.apply(t,arguments))},t.inherits=r(53),t._extend=function(e,t){if(!t||!v(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(0),r(3))},function(e,t,r){\"use strict\";(function(t){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i=0;f--)if(u[f]!==h[f])return!1;for(f=u.length-1;f>=0;f--)if(l=u[f],!y(e[l],t[l],r,n))return!1;return!0}(e,t,r,o))}return r?e===t:e==t}function b(e){return\"[object Arguments]\"==Object.prototype.toString.call(e)}function v(e,t){if(!e||!t)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,r,n){var i;if(\"function\"!=typeof t)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),e&&!i&&m(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,s=!e&&a.isError(i),l=!e&&i&&!r;if((s&&o&&v(i,r)||l)&&m(i,r,\"Got unwanted exception\"+n),e&&i&&r&&!v(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name=\"AssertionError\",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=p(g((t=this).actual),128)+\" \"+t.operator+\" \"+p(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||m;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,a=c(r),o=i.indexOf(\"\\n\"+a);if(o>=0){var s=i.indexOf(\"\\n\",o+1);i=i.substring(s+1)}this.stack=i}}},a.inherits(h.AssertionError,Error),h.fail=m,h.ok=_,h.equal=function(e,t,r){e!=t&&m(e,t,r,\"==\",h.equal)},h.notEqual=function(e,t,r){e==t&&m(e,t,r,\"!=\",h.notEqual)},h.deepEqual=function(e,t,r){y(e,t,!1)||m(e,t,r,\"deepEqual\",h.deepEqual)},h.deepStrictEqual=function(e,t,r){y(e,t,!0)||m(e,t,r,\"deepStrictEqual\",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){y(e,t,!1)&&m(e,t,r,\"notDeepEqual\",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){y(t,r,!0)&&m(t,r,n,\"notDeepStrictEqual\",e)},h.strictEqual=function(e,t,r){e!==t&&m(e,t,r,\"===\",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&m(e,t,r,\"!==\",h.notStrictEqual)},h.throws=function(e,t,r){w(!0,e,t,r)},h.doesNotThrow=function(e,t,r){w(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)o.call(e,r)&&t.push(r);return t}}).call(this,r(0))},function(e,t,r){\"use strict\";e.exports=a;var n=r(2),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit(\"error\",new Error(\"write callback called multiple times\"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>5==6?2:e>>4==14?3:e>>3==30?4:-1}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\".repeat(r);if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\".repeat(r+1);if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\".repeat(r+2)}}(this,e,t);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function l(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function f(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function u(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function c(e){return e&&e.length?this.write(e):\"\"}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){\"use strict\";var n=r(10);function i(e,t){e.emit(\"error\",t)}e.exports={destroy:function(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(i,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?(n.nextTick(i,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,r){e.exports=r(20).EventEmitter},function(e,t,r){\"use strict\";(function(t,n){var i=r(10);e.exports=b;var a,o=r(38);b.ReadableState=y;r(20).EventEmitter;var s=function(e,t){return e.listeners(t).length},l=r(34),f=r(9).Buffer,u=t.Uint8Array||function(){};var h=r(6);h.inherits=r(5);var d=r(66),c=void 0;c=d&&d.debuglog?d.debuglog(\"stream\"):function(){};var p,g=r(65),m=r(33);h.inherits(b,l);var _=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function y(e,t){a=a||r(2),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=r(32).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function b(e){if(a=a||r(2),!(this instanceof b))return new b(e);this._readableState=new y(e,this),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),l.call(this)}function v(e,t,r,n,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,S(e)}(e,o)):(i||(a=function(e,t){var r;n=t,f.isBuffer(n)||n instanceof u||\"string\"==typeof t||void 0===t||e.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\"));var n;return r}(o,t)),a?e.emit(\"error\",a):o.objectMode||t&&t.length>0?(\"string\"==typeof t||o.objectMode||Object.getPrototypeOf(t)===f.prototype||(t=function(e){return f.from(e)}(t)),n?o.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):w(e,o,t,!0):o.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?w(e,o,t,!1):A(e,o)):w(e,o,t,!1))):n||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function S(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(k,e):k(e))}function k(e){c(\"emit readable\"),e.emit(\"readable\"),O(e)}function A(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(P,e,t))}function P(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=f.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var a=n.data,o=e>a.length?a.length:e;if(a.copy(r,r.length-e,0,o),0===(e-=o)){o===a.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function R(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(L,t,e))}function L(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function F(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?R(this):S(this),null;if(0===(e=x(e,t))&&t.ended)return 0===t.length&&R(this),null;var n,i=t.needReadable;return c(\"need readable\",i),(0===t.length||t.length-e0?I(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&R(this)),null!==n&&this.emit(\"data\",n),n},b.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},b.prototype.pipe=function(e,t){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,c(\"pipe count=%d opts=%j\",a.pipesCount,t);var l=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?u:b;function f(t,n){c(\"onunpipe\"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",_),e.removeListener(\"finish\",y),e.removeListener(\"drain\",h),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",f),r.removeListener(\"end\",u),r.removeListener(\"end\",b),r.removeListener(\"data\",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function u(){c(\"onend\"),e.end()}a.endEmitted?i.nextTick(l):r.once(\"end\",l),e.on(\"unpipe\",f);var h=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,O(e))}}(r);e.on(\"drain\",h);var d=!1;var p=!1;function g(t){c(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==F(a.pipes,e))&&!d&&(c(\"false write response, pause\",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function m(t){c(\"onerror\",t),b(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function _(){e.removeListener(\"finish\",y),b()}function y(){c(\"onfinish\"),e.removeListener(\"close\",_),b()}function b(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",g),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",_),e.once(\"finish\",y),e.emit(\"pipe\",r),a.flowing||(c(\"pipe resume\"),r.resume()),e},b.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a\"x0002ffff\"){r.position=n;break}s.parser=a.default,t[s.tag]=s}var l=new i.default(r.byteArrayParser,r.byteArray,t);return l.warnings=r.warnings,l.position=r.position,l}()};var n=s(r(12)),i=s(r(7)),a=s(r(21)),o=s(r(15));function s(e){return e&&e.__esModule?e:{default:e}}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={readUint16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer\";return(e[t]<<8)+e[t+1]},readInt16:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt16: position cannot be less than 0\";if(t+2>e.length)throw\"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer\";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readUint32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer\";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readInt32: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer\";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readFloat: position cannot be less than 0\";if(t+4>e.length)throw\"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer\";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble:function(e,t){if(t<0)throw\"bigEndianByteArrayParser.readDouble: position cannot be less than 0\";if(t+8>e.length)throw\"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer\";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==r.call(e)}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t,r){if(void 0===e)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'\";if(void 0===t)throw\"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'\";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var n=(0,o.default)(e);if(e.seek(-4),\"xfffee0dd\"===n)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=f(e,r);t.items.push(i)}e.warnings.push(\"eof encountered before finding sequence delimiter in sequence of undefined length\"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){var n=t.dataOffset+t.length;for(;e.positione.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-s-8,position:e.position,length:f}),e.seek(f)}r&&r.push(\"pixel data element \"+t.tag+\" missing sequence delimiter tag xfffee0dd\")};var n,i=r(4),a=(n=i)&&n.__esModule?n:{default:n}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(void 0===e||void 0===t)throw\"dicomParser.explicitElementToString: missing required parameters\";if(void 0===t.vr)throw\"dicomParser.explicitElementToString: cannot convert implicit element to string\";var r,i=t.vr,a=t.tag;function o(t,r){for(var n=\"\",i=0;i= 0\";if(0!==t.basicOffsetTable.length)return(0,n.default)(e,t,r);return(0,i.default)(e,t,0,t.fragments.length)};var n=a(r(26)),i=a(r(17));function a(e){return e&&e.__esModule?e:{default:e}}var o=!1},function(e,t,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){\"use strict\";var n=r(8),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,r,l,f,u,h,d){var c,p,g,m,_,y,b,v,w,E=d.bits,x=0,S=0,k=0,A=0,P=0,T=0,D=0,O=0,I=0,R=0,L=null,F=0,B=new n.Buf16(16),U=new n.Buf16(16),M=null,N=0;for(x=0;x<=15;x++)B[x]=0;for(S=0;S=1&&0===B[A];A--);if(P>A&&(P=A),0===A)return f[u++]=20971520,f[u++]=20971520,d.bits=1,0;for(k=1;k0&&(0===e||1!==A))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+B[x];for(S=0;S852||2===e&&I>592)return 1;for(;;){b=x-D,h[S]y?(v=M[N+h[S]],w=L[F+h[S]]):(v=96,w=0),c=1<>D)+(p-=c)]=b<<24|v<<16|w|0}while(0!==p);for(c=1<>=1;if(0!==c?(R&=c-1,R+=c):R=0,S++,0==--B[x]){if(x===A)break;x=t[r+h[S]]}if(x>P&&(R&m)!==g){for(0===D&&(D=P),_+=k,O=1<<(T=x-D);T+D852||2===e&&I>592)return 1;f[g=R&m]=P<<24|T<<16|_-u|0}}return 0!==R&&(f[_+R]=x-D<<24|64<<16|0),d.bits=P,0}},function(e,t,r){\"use strict\";e.exports=function(e,t){var r,n,i,a,o,s,l,f,u,h,d,c,p,g,m,_,y,b,v,w,E,x,S,k,A;r=e.state,n=e.next_in,k=e.input,i=n+(e.avail_in-5),a=e.next_out,A=e.output,o=a-(t-e.avail_out),s=a+(e.avail_out-257),l=r.dmax,f=r.wsize,u=r.whave,h=r.wnext,d=r.window,c=r.hold,p=r.bits,g=r.lencode,m=r.distcode,_=(1<>>=v=b>>>24,p-=v,0===(v=b>>>16&255))A[a++]=65535&b;else{if(!(16&v)){if(0==(64&v)){b=g[(65535&b)+(c&(1<>>=v,p-=v),p<15&&(c+=k[n++]<>>=v=b>>>24,p-=v,!(16&(v=b>>>16&255))){if(0==(64&v)){b=m[(65535&b)+(c&(1<l){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(c>>>=v,p-=v,E>(v=a-o)){if((v=E-v)>u&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=d,0===h){if(x+=f-v,v2;)A[a++]=S[x++],A[a++]=S[x++],A[a++]=S[x++],w-=3;w&&(A[a++]=S[x++],w>1&&(A[a++]=S[x++]))}else{x=a-E;do{A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],w-=3}while(w>2);w&&(A[a++]=A[x++],w>1&&(A[a++]=A[x++]))}break}}break}}while(n>3,c&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=a,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,p):_}function ae(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,ie(e)):_}function oe(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?_:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ae(e))):_}function se(e,t){var r,i;return e?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},e.state=i,i.window=null,(r=oe(e,t))!==p&&(e.state=null),r):_}var le,fe,ue=!0;function he(e){if(ue){var t;for(le=new n.Buf32(512),fe=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(f,e.lens,0,288,le,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(u,e.lens,0,32,fe,0,e.work,{bits:5}),ue=!1}e.lencode=le,e.lenbits=9,e.distcode=fe,e.distbits=5}function de(e,t,r,i){var a,o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(n.arraySet(o.window,t,r-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):((a=o.wsize-o.wnext)>i&&(a=i),n.arraySet(o.window,t,r-i,a,o.wnext),(i-=a)?(n.arraySet(o.window,t,r-i,i,0),o.wnext=i,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave>>8&255,r.check=a(r.check,Pe,2,0),se=0,le=0,r.mode=x;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&se)<<8)+(se>>8))%31){e.msg=\"incorrect header check\",r.mode=X;break}if((15&se)!==w){e.msg=\"unknown compression method\",r.mode=X;break}if(le-=4,Ee=8+(15&(se>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg=\"invalid window size\",r.mode=X;break}r.dmax=1<>8&1),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=S;case S:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,Pe[2]=se>>>16&255,Pe[3]=se>>>24&255,r.check=a(r.check,Pe,4,0)),se=0,le=0,r.mode=k;case k:for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>8),512&r.flags&&(Pe[0]=255&se,Pe[1]=se>>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0,r.mode=A;case A:if(1024&r.flags){for(;le<16;){if(0===ae)break e;ae--,se+=ee[re++]<>>8&255,r.check=a(r.check,Pe,2,0)),se=0,le=0}else r.head&&(r.head.extra=null);r.mode=P;case P:if(1024&r.flags&&((ce=r.length)>ae&&(ce=ae),ce&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,ce,Ee)),512&r.flags&&(r.check=a(r.check,ee,ce,re)),ae-=ce,re+=ce,r.length-=ce),r.length))break e;r.length=0,r.mode=T;case T:if(2048&r.flags){if(0===ae)break e;ce=0;do{Ee=ee[re+ce++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&ce>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=L;break;case I:for(;le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>=7&le,le-=7&le,r.mode=V;break}for(;le<3;){if(0===ae)break e;ae--,se+=ee[re++]<>>=1)){case 0:r.mode=B;break;case 1:if(he(r),r.mode=j,t===c){se>>>=2,le-=2;break e}break;case 2:r.mode=N;break;case 3:e.msg=\"invalid block type\",r.mode=X}se>>>=2,le-=2;break;case B:for(se>>>=7&le,le-=7≤le<32;){if(0===ae)break e;ae--,se+=ee[re++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=X;break}if(r.length=65535&se,se=0,le=0,r.mode=U,t===c)break e;case U:r.mode=M;case M:if(ce=r.length){if(ce>ae&&(ce=ae),ce>oe&&(ce=oe),0===ce)break e;n.arraySet(te,ee,re,ce,ie),ae-=ce,re+=ce,oe-=ce,ie+=ce,r.length-=ce;break}r.mode=L;break;case N:for(;le<14;){if(0===ae)break e;ae--,se+=ee[re++]<>>=5,le-=5,r.ndist=1+(31&se),se>>>=5,le-=5,r.ncode=4+(15&se),se>>>=4,le-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=X;break}r.have=0,r.mode=z;case z:for(;r.have>>=3,le-=3}for(;r.have<19;)r.lens[Te[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Se={bits:r.lenbits},xe=s(l,r.lens,0,19,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid code lengths set\",r.mode=X;break}r.have=0,r.mode=Z;case Z:for(;r.have>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=me,le-=me,r.lens[r.have++]=ye;else{if(16===ye){for(ke=me+2;le>>=me,le-=me,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=X;break}Ee=r.lens[r.have-1],ce=3+(3&se),se>>>=2,le-=2}else if(17===ye){for(ke=me+3;le>>=me)),se>>>=3,le-=3}else{for(ke=me+7;le>>=me)),se>>>=7,le-=7}if(r.have+ce>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=X;break}for(;ce--;)r.lens[r.have++]=Ee}}if(r.mode===X)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=X;break}if(r.lenbits=9,Se={bits:r.lenbits},xe=s(f,r.lens,0,r.nlen,r.lencode,0,r.work,Se),r.lenbits=Se.bits,xe){e.msg=\"invalid literal/lengths set\",r.mode=X;break}if(r.distbits=6,r.distcode=r.distdyn,Se={bits:r.distbits},xe=s(u,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Se),r.distbits=Se.bits,xe){e.msg=\"invalid distances set\",r.mode=X;break}if(r.mode=j,t===c)break e;case j:r.mode=C;case C:if(ae>=6&&oe>=258){e.next_out=ie,e.avail_out=oe,e.next_in=re,e.avail_in=ae,r.hold=se,r.bits=le,o(e,ue),ie=e.next_out,te=e.output,oe=e.avail_out,re=e.next_in,ee=e.input,ae=e.avail_in,se=r.hold,le=r.bits,r.mode===L&&(r.back=-1);break}for(r.back=0;_e=(Ae=r.lencode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,r.length=ye,0===_e){r.mode=G;break}if(32&_e){r.back=-1,r.mode=L;break}if(64&_e){e.msg=\"invalid literal/length code\",r.mode=X;break}r.extra=15&_e,r.mode=q;case q:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=Y;case Y:for(;_e=(Ae=r.distcode[se&(1<>>16&255,ye=65535&Ae,!((me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>be)])>>>16&255,ye=65535&Ae,!(be+(me=Ae>>>24)<=le);){if(0===ae)break e;ae--,se+=ee[re++]<>>=be,le-=be,r.back+=be}if(se>>>=me,le-=me,r.back+=me,64&_e){e.msg=\"invalid distance code\",r.mode=X;break}r.offset=ye,r.extra=15&_e,r.mode=W;case W:if(r.extra){for(ke=r.extra;le>>=r.extra,le-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=X;break}r.mode=H;case H:if(0===oe)break e;if(ce=ue-oe,r.offset>ce){if((ce=r.offset-ce)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=X;break}ce>r.wnext?(ce-=r.wnext,pe=r.wsize-ce):pe=r.wnext-ce,ce>r.length&&(ce=r.length),ge=r.window}else ge=te,pe=ie-r.offset,ce=r.length;ce>oe&&(ce=oe),oe-=ce,r.length-=ce;do{te[ie++]=ge[pe++]}while(--ce);0===r.length&&(r.mode=C);break;case G:if(0===oe)break e;te[ie++]=r.length,oe--,r.mode=C;break;case V:if(r.wrap){for(;le<32;){if(0===ae)break e;ae--,se|=ee[re++]<=0;)e[t]=0}var f=0,u=1,h=2,d=29,c=256,p=c+1+d,g=30,m=19,_=2*p+1,y=15,b=16,v=7,w=256,E=16,x=17,S=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],D=new Array(2*(p+2));l(D);var O=new Array(2*g);l(O);var I=new Array(512);l(I);var R=new Array(256);l(R);var L=new Array(d);l(L);var F,B,U,M=new Array(g);function N(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function z(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function Z(e){return e<256?I[e]:I[256+(e>>>7)]}function j(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,r){e.bi_valid>b-r?(e.bi_buf|=t<>b-e.bi_valid,e.bi_valid+=r-b):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function W(e,t,r){var n,i,a=new Array(y+1),o=0;for(n=1;n<=y;n++)a[n]=o=o+r[n-1]<<1;for(i=0;i<=t;i++){var s=e[2*i+1];0!==s&&(e[2*i]=Y(a[s]++,s))}}function H(e){var t;for(t=0;t8?j(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function V(e,t,r,n){var i=2*t,a=2*r;return e[i]>1;r>=1;r--)J(e,a,r);i=l;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],J(e,a,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,a[2*i]=a[2*r]+a[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,a[2*r+1]=a[2*n+1]=i,e.heap[1]=i++,J(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,a,o,s,l=t.dyn_tree,f=t.max_code,u=t.stat_desc.static_tree,h=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,g=0;for(a=0;a<=y;a++)e.bl_count[a]=0;for(l[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)(a=l[2*l[2*(n=e.heap[r])+1]+1]+1)>p&&(a=p,g++),l[2*n+1]=a,n>f||(e.bl_count[a]++,o=0,n>=c&&(o=d[n-c]),s=l[2*n],e.opt_len+=s*(a+o),h&&(e.static_len+=s*(u[2*n+1]+o)));if(0!==g){do{for(a=p-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[p]--,g-=2}while(g>0);for(a=p;0!==a;a--)for(n=e.bl_count[a];0!==n;)(i=e.heap[--r])>f||(l[2*i+1]!==a&&(e.opt_len+=(a-l[2*i+1])*l[2*i],l[2*i+1]=a),n--)}}(e,t),W(a,f,e.bl_count)}function $(e,t,r){var n,i,a=-1,o=t[1],s=0,l=7,f=4;for(0===o&&(l=138,f=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s>=7;n0?(e.strm.data_type===s&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return a;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return o;for(t=32;t=3&&0===e.bl_tree[2*T[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),l=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=l&&(l=f)):l=f=r+5,r+4<=l&&-1!==t?te(e,t,r,n):e.strategy===i||f===l?(C(e,(u<<1)+(n?1:0),3),K(e,D,O)):(C(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(C(e,t-257,5),C(e,r-1,5),C(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(R[r]+c+1)]++,e.dyn_dtree[2*Z(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){C(e,u<<1,3),q(e,w,D),function(e){16===e.bi_valid?(j(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){\"use strict\";var n,i=r(8),a=r(50),o=r(28),s=r(27),l=r(49),f=0,u=1,h=3,d=4,c=5,p=0,g=1,m=-2,_=-3,y=-5,b=-1,v=1,w=2,E=3,x=4,S=0,k=2,A=8,P=9,T=15,D=8,O=286,I=30,R=19,L=2*O+1,F=15,B=3,U=258,M=U+B+1,N=32,z=42,Z=69,j=73,C=91,q=103,Y=113,W=666,H=1,G=2,V=3,J=4,K=3;function X(e,t){return e.msg=l[t],t}function $(e){return(e<<1)-(e>4?9:0)}function Q(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){a._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,a=e.strstart,o=e.prev_length,s=e.nice_match,l=e.strstart>e.w_size-M?e.strstart-(e.w_size-M):0,f=e.window,u=e.w_mask,h=e.prev,d=e.strstart+U,c=f[a+o-1],p=f[a+o];e.prev_length>=e.good_match&&(i>>=2),s>e.lookahead&&(s=e.lookahead);do{if(f[(r=t)+o]===p&&f[r+o-1]===c&&f[r]===f[a]&&f[++r]===f[a+1]){a+=2,r++;do{}while(f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&f[++a]===f[++r]&&ao){if(e.match_start=t,o=n,n>=s)break;c=f[a+o-1],p=f[a+o]}}}while((t=h[t&u])>l&&0!=--i);return o<=e.lookahead?o:e.lookahead}function ae(e){var t,r,n,a,l,f,u,h,d,c,p=e.w_size;do{if(a=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-M)){i.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);a+=p}if(0===e.strm.avail_in)break;if(f=e.strm,u=e.window,h=e.strstart+e.lookahead,d=a,c=void 0,(c=f.avail_in)>d&&(c=d),r=0===c?0:(f.avail_in-=c,i.arraySet(u,f.input,f.next_in,c,h),1===f.state.wrap?f.adler=o(f.adler,u,c,h):2===f.state.wrap&&(f.adler=s(f.adler,u,c,h)),f.next_in+=c,f.total_in+=c,c),e.lookahead+=r,e.lookahead+e.insert>=B)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<=B)if(n=a._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=B&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-B,n=a._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),a<1||a>P||r!==A||n<8||n>15||t<0||t>9||o<0||o>x)return X(e,m);8===n&&(n=9);var l=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*L),this.dyn_dtree=new i.Buf16(2*(2*I+1)),this.bl_tree=new i.Buf16(2*(2*R+1)),Q(this.dyn_ltree),Q(this.dyn_dtree),Q(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(F+1),this.heap=new i.Buf16(2*O+1),Q(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*O+1),Q(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return e.state=l,l.strm=e,l.wrap=s,l.gzhead=null,l.w_bits=n,l.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ae(e),0===e.lookahead&&t===f)return H;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return H;if(e.strstart-e.block_start>=e.w_size-M&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),H)}),new le(4,4,8,4,oe),new le(4,5,16,8,oe),new le(4,6,32,32,oe),new le(4,4,16,16,se),new le(8,16,32,32,se),new le(8,16,128,128,se),new le(8,32,128,256,se),new le(32,128,258,1024,se),new le(32,258,258,4096,se)],t.deflateInit=function(e,t){return he(e,t,A,T,D,S)},t.deflateInit2=he,t.deflateReset=ue,t.deflateResetKeep=fe,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,p):m},t.deflate=function(e,t){var r,i,o,l;if(!e||!e.state||t>c||t<0)return e?X(e,m):m;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===W&&t!==d)return X(e,0===e.avail_out?y:m);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===z)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=s(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Z):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=w||i.level<2?4:0),re(i,K),i.status=Y);else{var _=A+(i.w_bits-8<<4)<<8;_|=(i.strategy>=w||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(_|=N),_+=31-_%31,i.status=Y,ne(i,_),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===Z)if(i.gzhead.extra){for(o=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.gzindex=0,i.status=C)}else i.status=C;if(i.status===C)if(i.gzhead.comment){o=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>o&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),ee(e),o=i.pending,i.pending===i.pending_buf_size)){l=1;break}l=i.gzindexo&&(e.adler=s(e.adler,i.pending_buf,i.pending-o,o)),0===l&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=Y)):i.status=Y),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,p}else if(0===e.avail_in&&$(t)<=$(r)&&t!==d)return X(e,y);if(i.status===W&&0!==e.avail_in)return X(e,y);if(0!==e.avail_in||0!==i.lookahead||t!==f&&i.status!==W){var b=i.strategy===w?function(e,t){for(var r;;){if(0===e.lookahead&&(ae(e),0===e.lookahead)){if(t===f)return H;break}if(e.match_length=0,r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):i.strategy===E?function(e,t){for(var r,n,i,o,s=e.window;;){if(e.lookahead<=U){if(ae(e),e.lookahead<=U&&t===f)return H;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(n=s[i=e.strstart-1])===s[++i]&&n===s[++i]&&n===s[++i]){o=e.strstart+U;do{}while(n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&n===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(r=a._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=a._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return H}return e.insert=0,t===d?(te(e,!0),0===e.strm.avail_out?V:J):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?H:G}(i,t):n[i.level].func(i,t);if(b!==V&&b!==J||(i.status=W),b===H||b===V)return 0===e.avail_out&&(i.last_flush=-1),p;if(b===G&&(t===u?a._tr_align(i):t!==c&&(a._tr_stored_block(i,0,0,!1),t===h&&(Q(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,p}return t!==d?p:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?p:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==z&&t!==Z&&t!==j&&t!==C&&t!==q&&t!==Y&&t!==W?X(e,m):(e.state=null,t===Y?X(e,_):p):m},t.deflateSetDictionary=function(e,t){var r,n,a,s,l,f,u,h,d=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==z||r.lookahead)return m;for(1===s&&(e.adler=o(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(Q(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),l=e.avail_in,f=e.next_in,u=e.input,e.avail_in=d,e.next_in=0,e.input=t,ae(r);r.lookahead>=B;){n=r.strstart,a=r.lookahead-(B-1);do{r.ins_h=(r.ins_h<t.UNZIP)throw new TypeError(\"Bad argument\");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}u.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,\"close before init\"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?o.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||s.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},u.prototype.write=function(e,t,r,n,i,a,o){return this._write(!0,e,t,r,n,i,a,o)},u.prototype.writeSync=function(e,t,r,n,i,a,o){return this._write(!1,e,t,r,n,i,a,o)},u.prototype._write=function(r,a,o,s,l,f,u,h){if(i.equal(arguments.length,8),i(this.init_done,\"write before init\"),i(this.mode!==t.NONE,\"already finalized\"),i.equal(!1,this.write_in_progress,\"write already in progress\"),i.equal(!1,this.pending_close,\"close is pending\"),this.write_in_progress=!0,i.equal(!1,void 0===a,\"must provide flush value\"),this.write_in_progress=!0,a!==t.Z_NO_FLUSH&&a!==t.Z_PARTIAL_FLUSH&&a!==t.Z_SYNC_FLUSH&&a!==t.Z_FULL_FLUSH&&a!==t.Z_FINISH&&a!==t.Z_BLOCK)throw new Error(\"Invalid flush value\");if(null==o&&(o=e.alloc(0),l=0,s=0),this.strm.avail_in=l,this.strm.input=o,this.strm.next_in=s,this.strm.avail_out=h,this.strm.output=f,this.strm.next_out=u,this.flush=a,!r)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick(function(){d._process(),d._after()}),this},u.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},u.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error(\"invalid number of gzip magic number bytes read\")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=s.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=s.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=s.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=s.inflate(this.strm,this.flush);break;default:throw new Error(\"Unknown mode \"+this.mode)}},u.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error(\"unexpected end of file\"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error(\"Missing dictionary\"):this._error(\"Bad dictionary\"),!1;default:return this._error(\"Zlib error\"),!1}return!0},u.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},u.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},u.prototype.init=function(e,r,n,a,o){i(4===arguments.length||5===arguments.length,\"init(windowBits, level, memLevel, strategy, [dictionary])\"),i(e>=8&&e<=15,\"invalid windowBits\"),i(r>=-1&&r<=9,\"invalid compression level\"),i(n>=1&&n<=9,\"invalid memlevel\"),i(a===t.Z_FILTERED||a===t.Z_HUFFMAN_ONLY||a===t.Z_RLE||a===t.Z_FIXED||a===t.Z_DEFAULT_STRATEGY,\"invalid strategy\"),this._init(r,e,n,a,o),this._setDictionary()},u.prototype.params=function(){throw new Error(\"deflateParams Not supported\")},u.prototype.reset=function(){this._reset(),this._setDictionary()},u.prototype._init=function(e,r,n,i,l){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new a,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=o.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=s.inflateInit2(this.strm,this.windowBits);break;default:throw new Error(\"Unknown mode \"+this.mode)}this.err!==t.Z_OK&&this._error(\"Init error\"),this.dictionary=l,this.write_in_progress=!1,this.init_done=!0},u.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=o.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error(\"Failed to set dictionary\")}},u.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=o.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=s.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error(\"Failed to reset stream\")},t.Zlib=u}).call(this,r(1).Buffer,r(3))},function(e,t,r){e.exports=r(19).PassThrough},function(e,t,r){e.exports=r(19).Transform},function(e,t,r){e.exports=r(2)},function(e,t,r){e.exports=r(18)},function(e,t,r){\"use strict\";e.exports=a;var n=r(31),i=r(6);function a(e){if(!(this instanceof a))return new a(e);n.call(this,e)}i.inherits=r(5),i.inherits(a,n),a.prototype._transform=function(e,t,r){r(null,e)}},function(e,t,r){(function(t){function r(e){try{if(!t.localStorage)return!1}catch(e){return!1}var r=t.localStorage[e];return null!=r&&\"true\"===String(r).toLowerCase()}e.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,r(0))},function(e,t,r){(function(e,t){!function(e,r){\"use strict\";if(!e.setImmediate){var n,i,a,o,s,l=1,f={},u=!1,h=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,\"[object process]\"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){p(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage(\"\",\"*\"),e.onmessage=r,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){p(e.data)},n=function(e){a.port2.postMessage(e)}):h&&\"onreadystatechange\"in h.createElement(\"script\")?(i=h.documentElement,n=function(e){var t=h.createElement(\"script\");t.onreadystatechange=function(){p(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(p,0,e)}:(o=\"setImmediate$\"+Math.random()+\"$\",s=function(t){t.source===e&&\"string\"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},e.addEventListener?e.addEventListener(\"message\",s,!1):e.attachEvent(\"onmessage\",s),n=function(t){e.postMessage(o+t,\"*\")}),d.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(62),t.setImmediate=\"undefined\"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate=\"undefined\"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(e,t){},function(e,t,r){\"use strict\";var n=r(9).Buffer,i=r(64);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,a=n.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=a,i=s,t.copy(r,i),s+=o.data.length,o=o.next;return a},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+\" \"+e})},function(e,t){},function(e,t,r){e.exports=i;var n=r(20).EventEmitter;function i(){n.call(this)}r(5)(i,n),i.Readable=r(19),i.Writable=r(59),i.Duplex=r(58),i.Transform=r(57),i.PassThrough=r(56),i.Stream=i,i.prototype.pipe=function(e,t){var r=this;function i(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on(\"data\",i),e.on(\"drain\",a),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",l));var o=!1;function s(){o||(o=!0,e.end())}function l(){o||(o=!0,\"function\"==typeof e.destroy&&e.destroy())}function f(e){if(u(),0===n.listenerCount(this,\"error\"))throw e}function u(){r.removeListener(\"data\",i),e.removeListener(\"drain\",a),r.removeListener(\"end\",s),r.removeListener(\"close\",l),r.removeListener(\"error\",f),e.removeListener(\"error\",f),r.removeListener(\"end\",u),r.removeListener(\"close\",u),e.removeListener(\"close\",u)}return r.on(\"error\",f),e.on(\"error\",f),r.on(\"end\",u),r.on(\"close\",u),e.on(\"close\",u),e.emit(\"pipe\",r),e}},function(e,t,r){\"use strict\";(function(e){var n=r(1).Buffer,i=r(67).Transform,a=r(55),o=r(29),s=r(30).ok,l=r(1).kMaxLength,f=\"Cannot create final Buffer. It would be larger than 0x\"+l.toString(16)+\" bytes\";a.Z_MIN_WINDOWBITS=8,a.Z_MAX_WINDOWBITS=15,a.Z_DEFAULT_WINDOWBITS=15,a.Z_MIN_CHUNK=64,a.Z_MAX_CHUNK=1/0,a.Z_DEFAULT_CHUNK=16384,a.Z_MIN_MEMLEVEL=1,a.Z_MAX_MEMLEVEL=9,a.Z_DEFAULT_MEMLEVEL=8,a.Z_MIN_LEVEL=-1,a.Z_MAX_LEVEL=9,a.Z_DEFAULT_LEVEL=a.Z_DEFAULT_COMPRESSION;for(var u=Object.keys(a),h=0;h=l?o=new RangeError(f):t=n.concat(i,a),i=[],e.close(),r(o,t)}e.on(\"error\",function(t){e.removeListener(\"end\",s),e.removeListener(\"readable\",o),r(t)}),e.on(\"end\",s),e.end(t),o()}function y(e,t){if(\"string\"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError(\"Not a string or buffer\");var r=e._finishFlushFlag;return e._processChunk(t,r)}function b(e){if(!(this instanceof b))return new b(e);P.call(this,e,a.DEFLATE)}function v(e){if(!(this instanceof v))return new v(e);P.call(this,e,a.INFLATE)}function w(e){if(!(this instanceof w))return new w(e);P.call(this,e,a.GZIP)}function E(e){if(!(this instanceof E))return new E(e);P.call(this,e,a.GUNZIP)}function x(e){if(!(this instanceof x))return new x(e);P.call(this,e,a.DEFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);P.call(this,e,a.INFLATERAW)}function k(e){if(!(this instanceof k))return new k(e);P.call(this,e,a.UNZIP)}function A(e){return e===a.Z_NO_FLUSH||e===a.Z_PARTIAL_FLUSH||e===a.Z_SYNC_FLUSH||e===a.Z_FULL_FLUSH||e===a.Z_FINISH||e===a.Z_BLOCK}function P(e,r){var o=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!A(e.flush))throw new Error(\"Invalid flush flag: \"+e.flush);if(e.finishFlush&&!A(e.finishFlush))throw new Error(\"Invalid flush flag: \"+e.finishFlush);if(this._flushFlag=e.flush||a.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:a.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error(\"Invalid chunk size: \"+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error(\"Invalid windowBits: \"+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error(\"Invalid compression level: \"+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error(\"Invalid memLevel: \"+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error(\"Invalid strategy: \"+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error(\"Invalid dictionary: it should be a Buffer instance\");this._handle=new a.Zlib(r);var s=this;this._hadError=!1,this._handle.onerror=function(e,r){T(s),s._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],s.emit(\"error\",n)};var l=t.Z_DEFAULT_COMPRESSION;\"number\"==typeof e.level&&(l=e.level);var f=t.Z_DEFAULT_STRATEGY;\"number\"==typeof e.strategy&&(f=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,l,e.memLevel||t.Z_DEFAULT_MEMLEVEL,f,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=l,this._strategy=f,this.once(\"end\",this.close),Object.defineProperty(this,\"_closed\",{get:function(){return!o._handle},configurable:!0,enumerable:!0})}function T(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function D(e){e.emit(\"close\")}Object.defineProperty(t,\"codes\",{enumerable:!0,value:Object.freeze(c),writable:!1}),t.Deflate=b,t.Inflate=v,t.Gzip=w,t.Gunzip=E,t.DeflateRaw=x,t.InflateRaw=S,t.Unzip=k,t.createDeflate=function(e){return new b(e)},t.createInflate=function(e){return new v(e)},t.createDeflateRaw=function(e){return new x(e)},t.createInflateRaw=function(e){return new S(e)},t.createGzip=function(e){return new w(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new k(e)},t.deflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new b(t),e,r)},t.deflateSync=function(e,t){return y(new b(t),e)},t.gzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new w(t),e,r)},t.gzipSync=function(e,t){return y(new w(t),e)},t.deflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new x(t),e,r)},t.deflateRawSync=function(e,t){return y(new x(t),e)},t.unzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new k(t),e,r)},t.unzipSync=function(e,t){return y(new k(t),e)},t.inflate=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new v(t),e,r)},t.inflateSync=function(e,t){return y(new v(t),e)},t.gunzip=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new E(t),e,r)},t.gunzipSync=function(e,t){return y(new E(t),e)},t.inflateRaw=function(e,t,r){return\"function\"==typeof t&&(r=t,t={}),_(new S(t),e,r)},t.inflateRawSync=function(e,t){return y(new S(t),e)},o.inherits(P,i),P.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError(\"Invalid compression level: \"+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError(\"Invalid strategy: \"+n);if(this._level!==r||this._strategy!==n){var o=this;this.flush(a.Z_SYNC_FLUSH,function(){s(o._handle,\"zlib binding closed\"),o._handle.params(r,n),o._hadError||(o._level=r,o._strategy=n,i&&i())})}else e.nextTick(i)},P.prototype.reset=function(){return s(this._handle,\"zlib binding closed\"),this._handle.reset()},P.prototype._flush=function(e){this._transform(n.alloc(0),\"\",e)},P.prototype.flush=function(t,r){var i=this,o=this._writableState;(\"function\"==typeof t||void 0===t&&!r)&&(r=t,t=a.Z_FULL_FLUSH),o.ended?r&&e.nextTick(r):o.ending?r&&this.once(\"end\",r):o.needDrain?r&&this.once(\"drain\",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),\"\",r))},P.prototype.close=function(t){T(this,t),e.nextTick(D,this)},P.prototype._transform=function(e,t,r){var i,o=this._writableState,s=(o.ending||o.ended)&&(!e||o.length===e.length);return null===e||n.isBuffer(e)?this._handle?(s?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||a.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error(\"zlib binding closed\")):r(new Error(\"invalid input\"))},P.prototype._processChunk=function(e,t,r){var i=e&&e.length,a=this._chunkSize-this._offset,o=0,u=this,h=\"function\"==typeof r;if(!h){var d,c=[],p=0;this.on(\"error\",function(e){d=e}),s(this._handle,\"zlib binding closed\");do{var g=this._handle.writeSync(t,e,o,i,this._buffer,this._offset,a)}while(!this._hadError&&y(g[0],g[1]));if(this._hadError)throw d;if(p>=l)throw T(this),new RangeError(f);var m=n.concat(c,p);return T(this),m}s(this._handle,\"zlib binding closed\");var _=this._handle.write(t,e,o,i,this._buffer,this._offset,a);function y(l,f){if(this&&(this.buffer=null,this.callback=null),!u._hadError){var d=a-f;if(s(d>=0,\"have should not go down\"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,h?u.push(g):(c.push(g),p+=g.length)}if((0===f||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=n.allocUnsafe(u._chunkSize)),0===f){if(o+=i-l,i=l,!h)return!0;var m=u._handle.write(t,e,o,i,u._buffer,u._offset,u._chunkSize);return m.callback=y,void(m.buffer=e)}if(!h)return!1;r()}}_.buffer=e,_.callback=y},o.inherits(b,P),o.inherits(v,P),o.inherits(w,P),o.inherits(E,P),o.inherits(x,P),o.inherits(S,P),o.inherits(k,P)}).call(this,r(3))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){\"use strict\";(function(e){Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(t,d){if(void 0===t)throw\"dicomParser.parseDicom: missing required parameter 'byteArray'\";function c(l){var c=function(e){if(void 0===e.elements.x00020010)throw\"dicomParser.parseDicom: missing required meta header attribute 0002,0010\";var r=e.elements.x00020010;return u.readFixedString(t,r.dataOffset,r.length)}(l),p=function(e){if(\"1.2.840.10008.1.2\"===e)return!1;return!0}(c),g=function(o,l){if(\"1.2.840.10008.1.2.1.99\"===o){if(d&&d.inflater){var u=d.inflater(t,l);return new a.default(s.default,u,0)}if(void 0!==e&&this.module!==e){var h=r(68),c=(0,f.default)(t,l,t.length-l),p=h.inflateRawSync(c),g=(0,n.default)(t,p.length+l);return t.copy(g,0,0,l),p.copy(g,l),new a.default(s.default,g,0)}if(\"undefined\"!=typeof pako){var m=t.slice(l),_=pako.inflateRaw(m),y=(0,n.default)(t,_.length+l);return y.set(t.slice(0,l),0),y.set(_,l),new a.default(s.default,y,0)}throw\"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax\"}if(\"1.2.840.10008.1.2.2\"===o)return new a.default(i.default,t,l);return new a.default(s.default,t,l)}(c,l.position),m=new o.default(g.byteArrayParser,g.byteArray,{});m.warnings=g.warnings;try{p?h.parseDicomDataSetExplicit(m,g,g.byteArray.length,d):h.parseDicomDataSetImplicit(m,g,g.byteArray.length,d)}catch(e){var _={exception:e,dataSet:m};throw _}return m}return p=(0,l.default)(t,d),g=c(p),function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p,g);var p,g};var n=c(r(22)),i=c(r(37)),a=c(r(12)),o=c(r(7)),s=c(r(21)),l=c(r(36)),f=c(r(11)),u=d(r(14)),h=d(r(16));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function c(e){return e&&e.__esModule?e:{default:e}}}).call(this,r(69)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=\"1.8.2\"},function(e,t){t.read=function(e,t,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,d=r?-1:1,c=e[t+h];for(h+=d,a=c&(1<<-u)-1,c>>=-u,u+=s;u>0;a=256*a+e[t+h],h+=d,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+e[t+h],h+=d,u-=8);if(0===a)a=1-f;else{if(a===l)return o?NaN:1/0*(c?-1:1);o+=Math.pow(2,n),a-=f}return(c?-1:1)*o*Math.pow(2,a-n)},t.write=function(e,t,r,n,i,a){var o,s,l,f=8*a-i-1,u=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=n?0:a-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(t*l-1)*Math.pow(2,i),o+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;e[r+c]=255&s,c+=p,s/=256,i-=8);for(o=o<0;e[r+c]=255&o,c+=p,o/=256,f-=8);e[r+c-p]|=128*g}},function(e,t,r){\"use strict\";t.byteLength=function(e){return 3*e.length/4-f(e)},t.toByteArray=function(e){var t,r,n,o,s,l=e.length;o=f(e),s=new a(3*l/4-o),r=o>0?l-4:l;var u=0;for(t=0;t>16&255,s[u++]=n>>8&255,s[u++]=255&n;2===o?(n=i[e.charCodeAt(t)]<<2|i[e.charCodeAt(t+1)]>>4,s[u++]=255&n):1===o&&(n=i[e.charCodeAt(t)]<<10|i[e.charCodeAt(t+1)]<<4|i[e.charCodeAt(t+2)]>>2,s[u++]=n>>8&255,s[u++]=255&n);return s},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=\"\",o=[],s=0,l=r-i;sl?l:s+16383));1===i?(t=e[r-1],a+=n[t>>2],a+=n[t<<4&63],a+=\"==\"):2===i&&(t=(e[r-2]<<8)+e[r-1],a+=n[t>>10],a+=n[t>>4&63],a+=n[t<<2&63],a+=\"=\");return o.push(a),o.join(\"\")};for(var n=[],i=[],a=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,l=o.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===e[t-2]?2:\"=\"===e[t-1]?1:0}function u(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join(\"\")}i[\"-\".charCodeAt(0)]=62,i[\"_\".charCodeAt(0)]=63},function(e,t,r){\"use strict\";function n(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function i(e,t,r){var i=t.fragments[r];return!(!n(e,i.position+i.length-2)&&!n(e,i.position+i.length-3))}function a(e,t,r){for(var n=r;n0&&t<=12&&e>0&&e<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(t,r)}(i,n,r))throw\"invalid DA '\"+e+\"'\";return{year:r,month:n,day:i}}if(t)throw\"invalid DA '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),n=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,a=e.length>=8?parseInt(e.substring(7,13),10):void 0;if(t&&(isNaN(r)||void 0!==n&&isNaN(n)||void 0!==i&&isNaN(i)||void 0!==a&&isNaN(a)||r<0||r>23||n&&(n<0||n>59)||i&&(i<0||i>59)||a&&(a<0||a>999999)))throw\"invalid TM '\"+e+\"'\";return{hours:r,minutes:n,seconds:i,fractionalSeconds:a}}if(t)throw\"invalid TM '\"+e+\"'\";return}},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(25),i=f(r(77)),a=f(r(76)),o=f(r(43)),s=f(r(75)),l=f(r(74));function f(e){return e&&e.__esModule?e:{default:e}}t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=i.default,t.parseDA=a.default,t.explicitElementToString=o.default,t.explicitDataSetToJS=s.default,t.createJPEGBasicOffsetTable=l.default},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.readTag=t.readSequenceItem=t.readSequenceItemsImplicit=t.readSequenceItemsExplicit=t.readPart10Header=t.readEncapsulatedPixelDataFromFragments=t.readEncapsulatedPixelData=t.readEncapsulatedImageFrame=t.readDicomElementImplicit=t.readDicomElementExplicit=t.parseDicom=t.littleEndianByteArrayParser=t.findItemDelimitationItemAndSetElementLength=t.findEndOfEncapsulatedElement=t.findAndSetUNElementLength=t.DataSet=t.sharedCopy=t.ByteStream=t.bigEndianByteArrayParser=t.version=t.alloc=t.readFixedString=t.parseDicomDataSetImplicit=t.parseDicomDataSetExplicit=t.createJPEGBasicOffsetTable=t.explicitDataSetToJS=t.explicitElementToString=t.parseDA=t.parseTM=t.parsePN=t.isPrivateTag=t.isStringVr=void 0;var n=r(78),i=r(16),a=r(14),o=P(r(22)),s=P(r(71)),l=P(r(37)),f=P(r(12)),u=P(r(11)),h=P(r(7)),d=P(r(41)),c=P(r(42)),p=P(r(24)),g=P(r(21)),m=P(r(70)),_=P(r(15)),y=P(r(23)),b=P(r(26)),v=P(r(44)),w=P(r(17)),E=P(r(36)),x=P(r(40)),S=P(r(39)),k=P(r(13)),A=P(r(4));function P(e){return e&&e.__esModule?e:{default:e}}var T={isStringVr:n.isStringVr,isPrivateTag:n.isPrivateTag,parsePN:n.parsePN,parseTM:n.parseTM,parseDA:n.parseDA,explicitElementToString:n.explicitElementToString,explicitDataSetToJS:n.explicitDataSetToJS,createJPEGBasicOffsetTable:n.createJPEGBasicOffsetTable,parseDicomDataSetExplicit:i.parseDicomDataSetExplicit,parseDicomDataSetImplicit:i.parseDicomDataSetImplicit,readFixedString:a.readFixedString,alloc:o.default,version:s.default,bigEndianByteArrayParser:l.default,ByteStream:f.default,sharedCopy:u.default,DataSet:h.default,findAndSetUNElementLength:d.default,findEndOfEncapsulatedElement:c.default,findItemDelimitationItemAndSetElementLength:p.default,littleEndianByteArrayParser:g.default,parseDicom:m.default,readDicomElementExplicit:_.default,readDicomElementImplicit:y.default,readEncapsulatedImageFrame:b.default,readEncapsulatedPixelData:v.default,readEncapsulatedPixelDataFromFragments:w.default,readPart10Header:E.default,readSequenceItemsExplicit:x.default,readSequenceItemsImplicit:S.default,readSequenceItem:k.default,readTag:A.default};t.isStringVr=n.isStringVr,t.isPrivateTag=n.isPrivateTag,t.parsePN=n.parsePN,t.parseTM=n.parseTM,t.parseDA=n.parseDA,t.explicitElementToString=n.explicitElementToString,t.explicitDataSetToJS=n.explicitDataSetToJS,t.createJPEGBasicOffsetTable=n.createJPEGBasicOffsetTable,t.parseDicomDataSetExplicit=i.parseDicomDataSetExplicit,t.parseDicomDataSetImplicit=i.parseDicomDataSetImplicit,t.readFixedString=a.readFixedString,t.alloc=o.default,t.version=s.default,t.bigEndianByteArrayParser=l.default,t.ByteStream=f.default,t.sharedCopy=u.default,t.DataSet=h.default,t.findAndSetUNElementLength=d.default,t.findEndOfEncapsulatedElement=c.default,t.findItemDelimitationItemAndSetElementLength=p.default,t.littleEndianByteArrayParser=g.default,t.parseDicom=m.default,t.readDicomElementExplicit=_.default,t.readDicomElementImplicit=y.default,t.readEncapsulatedImageFrame=b.default,t.readEncapsulatedPixelData=v.default,t.readEncapsulatedPixelDataFromFragments=w.default,t.readPart10Header=E.default,t.readSequenceItemsExplicit=x.default,t.readSequenceItemsImplicit=S.default,t.readSequenceItem=k.default,t.readTag=A.default,t.default=T}])});\n//# sourceMappingURL=dicomParser.min.js.map","/*! cornerstone-core - 2.2.8 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstone */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstone-core\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstone-core\"] = factory();\n\telse\n\t\troot[\"cornerstone\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \tfunction hotDisposeChunk(chunkId) {\n/******/ \t\tdelete installedChunks[chunkId];\n/******/ \t}\n/******/ \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n/******/ \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n/******/ \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n/******/ \t\thotAddUpdateChunk(chunkId, moreModules);\n/******/ \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n/******/ \t} ;\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadUpdateChunk(chunkId) {\n/******/ \t\tvar head = document.getElementsByTagName(\"head\")[0];\n/******/ \t\tvar script = document.createElement(\"script\");\n/******/ \t\tscript.charset = \"utf-8\";\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n/******/ \t\t;\n/******/ \t\thead.appendChild(script);\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotDownloadManifest(requestTimeout) {\n/******/ \t\trequestTimeout = requestTimeout || 10000;\n/******/ \t\treturn new Promise(function(resolve, reject) {\n/******/ \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n/******/ \t\t\t\treturn reject(new Error(\"No browser support\"));\n/******/ \t\t\t}\n/******/ \t\t\ttry {\n/******/ \t\t\t\tvar request = new XMLHttpRequest();\n/******/ \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n/******/ \t\t\t\trequest.open(\"GET\", requestPath, true);\n/******/ \t\t\t\trequest.timeout = requestTimeout;\n/******/ \t\t\t\trequest.send(null);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\treturn reject(err);\n/******/ \t\t\t}\n/******/ \t\t\trequest.onreadystatechange = function() {\n/******/ \t\t\t\tif (request.readyState !== 4) return;\n/******/ \t\t\t\tif (request.status === 0) {\n/******/ \t\t\t\t\t// timeout\n/******/ \t\t\t\t\treject(\n/******/ \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n/******/ \t\t\t\t\t);\n/******/ \t\t\t\t} else if (request.status === 404) {\n/******/ \t\t\t\t\t// no update available\n/******/ \t\t\t\t\tresolve();\n/******/ \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n/******/ \t\t\t\t\t// other failure\n/******/ \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\t// success\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n/******/ \t\t\t\t\t} catch (e) {\n/******/ \t\t\t\t\t\treject(e);\n/******/ \t\t\t\t\t\treturn;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tresolve(update);\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \tvar hotApplyOnUpdate = true;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentHash = \"72ed982d5a0046aad5fa\";\n/******/ \tvar hotRequestTimeout = 10000;\n/******/ \tvar hotCurrentModuleData = {};\n/******/ \tvar hotCurrentChildModule;\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParents = [];\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tvar hotCurrentParentsTemp = [];\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateRequire(moduleId) {\n/******/ \t\tvar me = installedModules[moduleId];\n/******/ \t\tif (!me) return __webpack_require__;\n/******/ \t\tvar fn = function(request) {\n/******/ \t\t\tif (me.hot.active) {\n/******/ \t\t\t\tif (installedModules[request]) {\n/******/ \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n/******/ \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\t\t\thotCurrentChildModule = request;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (me.children.indexOf(request) === -1) {\n/******/ \t\t\t\t\tme.children.push(request);\n/******/ \t\t\t\t}\n/******/ \t\t\t} else {\n/******/ \t\t\t\tconsole.warn(\n/******/ \t\t\t\t\t\"[HMR] unexpected require(\" +\n/******/ \t\t\t\t\t\trequest +\n/******/ \t\t\t\t\t\t\") from disposed module \" +\n/******/ \t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t);\n/******/ \t\t\t\thotCurrentParents = [];\n/******/ \t\t\t}\n/******/ \t\t\treturn __webpack_require__(request);\n/******/ \t\t};\n/******/ \t\tvar ObjectFactory = function ObjectFactory(name) {\n/******/ \t\t\treturn {\n/******/ \t\t\t\tconfigurable: true,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: function() {\n/******/ \t\t\t\t\treturn __webpack_require__[name];\n/******/ \t\t\t\t},\n/******/ \t\t\t\tset: function(value) {\n/******/ \t\t\t\t\t__webpack_require__[name] = value;\n/******/ \t\t\t\t}\n/******/ \t\t\t};\n/******/ \t\t};\n/******/ \t\tfor (var name in __webpack_require__) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n/******/ \t\t\t\tname !== \"e\" &&\n/******/ \t\t\t\tname !== \"t\"\n/******/ \t\t\t) {\n/******/ \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tfn.e = function(chunkId) {\n/******/ \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n/******/ \t\t\thotChunksLoading++;\n/******/ \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n/******/ \t\t\t\tfinishChunkLoading();\n/******/ \t\t\t\tthrow err;\n/******/ \t\t\t});\n/******/\n/******/ \t\t\tfunction finishChunkLoading() {\n/******/ \t\t\t\thotChunksLoading--;\n/******/ \t\t\t\tif (hotStatus === \"prepare\") {\n/******/ \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n/******/ \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n/******/ \t\t\t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\tfn.t = function(value, mode) {\n/******/ \t\t\tif (mode & 1) value = fn(value);\n/******/ \t\t\treturn __webpack_require__.t(value, mode & ~1);\n/******/ \t\t};\n/******/ \t\treturn fn;\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotCreateModule(moduleId) {\n/******/ \t\tvar hot = {\n/******/ \t\t\t// private stuff\n/******/ \t\t\t_acceptedDependencies: {},\n/******/ \t\t\t_declinedDependencies: {},\n/******/ \t\t\t_selfAccepted: false,\n/******/ \t\t\t_selfDeclined: false,\n/******/ \t\t\t_disposeHandlers: [],\n/******/ \t\t\t_main: hotCurrentChildModule !== moduleId,\n/******/\n/******/ \t\t\t// Module API\n/******/ \t\t\tactive: true,\n/******/ \t\t\taccept: function(dep, callback) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n/******/ \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n/******/ \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n/******/ \t\t\t},\n/******/ \t\t\tdecline: function(dep) {\n/******/ \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n/******/ \t\t\t\telse if (typeof dep === \"object\")\n/******/ \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n/******/ \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n/******/ \t\t\t\telse hot._declinedDependencies[dep] = true;\n/******/ \t\t\t},\n/******/ \t\t\tdispose: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\taddDisposeHandler: function(callback) {\n/******/ \t\t\t\thot._disposeHandlers.push(callback);\n/******/ \t\t\t},\n/******/ \t\t\tremoveDisposeHandler: function(callback) {\n/******/ \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n/******/ \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t// Management API\n/******/ \t\t\tcheck: hotCheck,\n/******/ \t\t\tapply: hotApply,\n/******/ \t\t\tstatus: function(l) {\n/******/ \t\t\t\tif (!l) return hotStatus;\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\taddStatusHandler: function(l) {\n/******/ \t\t\t\thotStatusHandlers.push(l);\n/******/ \t\t\t},\n/******/ \t\t\tremoveStatusHandler: function(l) {\n/******/ \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n/******/ \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n/******/ \t\t\t},\n/******/\n/******/ \t\t\t//inherit from previous dispose call\n/******/ \t\t\tdata: hotCurrentModuleData[moduleId]\n/******/ \t\t};\n/******/ \t\thotCurrentChildModule = undefined;\n/******/ \t\treturn hot;\n/******/ \t}\n/******/\n/******/ \tvar hotStatusHandlers = [];\n/******/ \tvar hotStatus = \"idle\";\n/******/\n/******/ \tfunction hotSetStatus(newStatus) {\n/******/ \t\thotStatus = newStatus;\n/******/ \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n/******/ \t\t\thotStatusHandlers[i].call(null, newStatus);\n/******/ \t}\n/******/\n/******/ \t// while downloading\n/******/ \tvar hotWaitingFiles = 0;\n/******/ \tvar hotChunksLoading = 0;\n/******/ \tvar hotWaitingFilesMap = {};\n/******/ \tvar hotRequestedFilesMap = {};\n/******/ \tvar hotAvailableFilesMap = {};\n/******/ \tvar hotDeferred;\n/******/\n/******/ \t// The update info\n/******/ \tvar hotUpdate, hotUpdateNewHash;\n/******/\n/******/ \tfunction toModuleId(id) {\n/******/ \t\tvar isNumber = +id + \"\" === id;\n/******/ \t\treturn isNumber ? +id : id;\n/******/ \t}\n/******/\n/******/ \tfunction hotCheck(apply) {\n/******/ \t\tif (hotStatus !== \"idle\") {\n/******/ \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n/******/ \t\t}\n/******/ \t\thotApplyOnUpdate = apply;\n/******/ \t\thotSetStatus(\"check\");\n/******/ \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n/******/ \t\t\tif (!update) {\n/******/ \t\t\t\thotSetStatus(\"idle\");\n/******/ \t\t\t\treturn null;\n/******/ \t\t\t}\n/******/ \t\t\thotRequestedFilesMap = {};\n/******/ \t\t\thotWaitingFilesMap = {};\n/******/ \t\t\thotAvailableFilesMap = update.c;\n/******/ \t\t\thotUpdateNewHash = update.h;\n/******/\n/******/ \t\t\thotSetStatus(\"prepare\");\n/******/ \t\t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\t\thotDeferred = {\n/******/ \t\t\t\t\tresolve: resolve,\n/******/ \t\t\t\t\treject: reject\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\thotUpdate = {};\n/******/ \t\t\tvar chunkId = \"cornerstone\";\n/******/ \t\t\t// eslint-disable-next-line no-lone-blocks\n/******/ \t\t\t{\n/******/ \t\t\t\t/*globals chunkId */\n/******/ \t\t\t\thotEnsureUpdateChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t\tif (\n/******/ \t\t\t\thotStatus === \"prepare\" &&\n/******/ \t\t\t\thotChunksLoading === 0 &&\n/******/ \t\t\t\thotWaitingFiles === 0\n/******/ \t\t\t) {\n/******/ \t\t\t\thotUpdateDownloaded();\n/******/ \t\t\t}\n/******/ \t\t\treturn promise;\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// eslint-disable-next-line no-unused-vars\n/******/ \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n/******/ \t\t\treturn;\n/******/ \t\thotRequestedFilesMap[chunkId] = false;\n/******/ \t\tfor (var moduleId in moreModules) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n/******/ \t\t\thotUpdateDownloaded();\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotEnsureUpdateChunk(chunkId) {\n/******/ \t\tif (!hotAvailableFilesMap[chunkId]) {\n/******/ \t\t\thotWaitingFilesMap[chunkId] = true;\n/******/ \t\t} else {\n/******/ \t\t\thotRequestedFilesMap[chunkId] = true;\n/******/ \t\t\thotWaitingFiles++;\n/******/ \t\t\thotDownloadUpdateChunk(chunkId);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotUpdateDownloaded() {\n/******/ \t\thotSetStatus(\"ready\");\n/******/ \t\tvar deferred = hotDeferred;\n/******/ \t\thotDeferred = null;\n/******/ \t\tif (!deferred) return;\n/******/ \t\tif (hotApplyOnUpdate) {\n/******/ \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n/******/ \t\t\t// avoid triggering uncaught exception warning in Chrome.\n/******/ \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n/******/ \t\t\tPromise.resolve()\n/******/ \t\t\t\t.then(function() {\n/******/ \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n/******/ \t\t\t\t})\n/******/ \t\t\t\t.then(\n/******/ \t\t\t\t\tfunction(result) {\n/******/ \t\t\t\t\t\tdeferred.resolve(result);\n/******/ \t\t\t\t\t},\n/******/ \t\t\t\t\tfunction(err) {\n/******/ \t\t\t\t\t\tdeferred.reject(err);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t);\n/******/ \t\t} else {\n/******/ \t\t\tvar outdatedModules = [];\n/******/ \t\t\tfor (var id in hotUpdate) {\n/******/ \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\t\toutdatedModules.push(toModuleId(id));\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tdeferred.resolve(outdatedModules);\n/******/ \t\t}\n/******/ \t}\n/******/\n/******/ \tfunction hotApply(options) {\n/******/ \t\tif (hotStatus !== \"ready\")\n/******/ \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n/******/ \t\toptions = options || {};\n/******/\n/******/ \t\tvar cb;\n/******/ \t\tvar i;\n/******/ \t\tvar j;\n/******/ \t\tvar module;\n/******/ \t\tvar moduleId;\n/******/\n/******/ \t\tfunction getAffectedStuff(updateModuleId) {\n/******/ \t\t\tvar outdatedModules = [updateModuleId];\n/******/ \t\t\tvar outdatedDependencies = {};\n/******/\n/******/ \t\t\tvar queue = outdatedModules.slice().map(function(id) {\n/******/ \t\t\t\treturn {\n/******/ \t\t\t\t\tchain: [id],\n/******/ \t\t\t\t\tid: id\n/******/ \t\t\t\t};\n/******/ \t\t\t});\n/******/ \t\t\twhile (queue.length > 0) {\n/******/ \t\t\t\tvar queueItem = queue.pop();\n/******/ \t\t\t\tvar moduleId = queueItem.id;\n/******/ \t\t\t\tvar chain = queueItem.chain;\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n/******/ \t\t\t\tif (module.hot._selfDeclined) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"self-declined\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (module.hot._main) {\n/******/ \t\t\t\t\treturn {\n/******/ \t\t\t\t\t\ttype: \"unaccepted\",\n/******/ \t\t\t\t\t\tchain: chain,\n/******/ \t\t\t\t\t\tmoduleId: moduleId\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n/******/ \t\t\t\t\tvar parentId = module.parents[i];\n/******/ \t\t\t\t\tvar parent = installedModules[parentId];\n/******/ \t\t\t\t\tif (!parent) continue;\n/******/ \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\treturn {\n/******/ \t\t\t\t\t\t\ttype: \"declined\",\n/******/ \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\tparentId: parentId\n/******/ \t\t\t\t\t\t};\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n/******/ \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n/******/ \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n/******/ \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n/******/ \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n/******/ \t\t\t\t\t\tcontinue;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tdelete outdatedDependencies[parentId];\n/******/ \t\t\t\t\toutdatedModules.push(parentId);\n/******/ \t\t\t\t\tqueue.push({\n/******/ \t\t\t\t\t\tchain: chain.concat([parentId]),\n/******/ \t\t\t\t\t\tid: parentId\n/******/ \t\t\t\t\t});\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/\n/******/ \t\t\treturn {\n/******/ \t\t\t\ttype: \"accepted\",\n/******/ \t\t\t\tmoduleId: updateModuleId,\n/******/ \t\t\t\toutdatedModules: outdatedModules,\n/******/ \t\t\t\toutdatedDependencies: outdatedDependencies\n/******/ \t\t\t};\n/******/ \t\t}\n/******/\n/******/ \t\tfunction addAllToSet(a, b) {\n/******/ \t\t\tfor (var i = 0; i < b.length; i++) {\n/******/ \t\t\t\tvar item = b[i];\n/******/ \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// at begin all updates modules are outdated\n/******/ \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n/******/ \t\tvar outdatedDependencies = {};\n/******/ \t\tvar outdatedModules = [];\n/******/ \t\tvar appliedUpdate = {};\n/******/\n/******/ \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n/******/ \t\t\tconsole.warn(\n/******/ \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n/******/ \t\t\t);\n/******/ \t\t};\n/******/\n/******/ \t\tfor (var id in hotUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n/******/ \t\t\t\tmoduleId = toModuleId(id);\n/******/ \t\t\t\t/** @type {TODO} */\n/******/ \t\t\t\tvar result;\n/******/ \t\t\t\tif (hotUpdate[id]) {\n/******/ \t\t\t\t\tresult = getAffectedStuff(moduleId);\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tresult = {\n/******/ \t\t\t\t\t\ttype: \"disposed\",\n/******/ \t\t\t\t\t\tmoduleId: id\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}\n/******/ \t\t\t\t/** @type {Error|false} */\n/******/ \t\t\t\tvar abortError = false;\n/******/ \t\t\t\tvar doApply = false;\n/******/ \t\t\t\tvar doDispose = false;\n/******/ \t\t\t\tvar chainInfo = \"\";\n/******/ \t\t\t\tif (result.chain) {\n/******/ \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n/******/ \t\t\t\t}\n/******/ \t\t\t\tswitch (result.type) {\n/******/ \t\t\t\t\tcase \"self-declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"declined\":\n/******/ \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreDeclined)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.moduleId +\n/******/ \t\t\t\t\t\t\t\t\t\" in \" +\n/******/ \t\t\t\t\t\t\t\t\tresult.parentId +\n/******/ \t\t\t\t\t\t\t\t\tchainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"unaccepted\":\n/******/ \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n/******/ \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n/******/ \t\t\t\t\t\t\tabortError = new Error(\n/******/ \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n/******/ \t\t\t\t\t\t\t);\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"accepted\":\n/******/ \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n/******/ \t\t\t\t\t\tdoApply = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tcase \"disposed\":\n/******/ \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n/******/ \t\t\t\t\t\tdoDispose = true;\n/******/ \t\t\t\t\t\tbreak;\n/******/ \t\t\t\t\tdefault:\n/******/ \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (abortError) {\n/******/ \t\t\t\t\thotSetStatus(\"abort\");\n/******/ \t\t\t\t\treturn Promise.reject(abortError);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif (doApply) {\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n/******/ \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n/******/ \t\t\t\t\t\tif (\n/******/ \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n/******/ \t\t\t\t\t\t\t\tmoduleId\n/******/ \t\t\t\t\t\t\t)\n/******/ \t\t\t\t\t\t) {\n/******/ \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n/******/ \t\t\t\t\t\t\taddAllToSet(\n/******/ \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n/******/ \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n/******/ \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n/******/ \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Store self accepted outdated modules to require them later by the module system\n/******/ \t\tvar outdatedSelfAcceptedModules = [];\n/******/ \t\tfor (i = 0; i < outdatedModules.length; i++) {\n/******/ \t\t\tmoduleId = outdatedModules[i];\n/******/ \t\t\tif (\n/******/ \t\t\t\tinstalledModules[moduleId] &&\n/******/ \t\t\t\tinstalledModules[moduleId].hot._selfAccepted\n/******/ \t\t\t)\n/******/ \t\t\t\toutdatedSelfAcceptedModules.push({\n/******/ \t\t\t\t\tmodule: moduleId,\n/******/ \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n/******/ \t\t\t\t});\n/******/ \t\t}\n/******/\n/******/ \t\t// Now in \"dispose\" phase\n/******/ \t\thotSetStatus(\"dispose\");\n/******/ \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n/******/ \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n/******/ \t\t\t\thotDisposeChunk(chunkId);\n/******/ \t\t\t}\n/******/ \t\t});\n/******/\n/******/ \t\tvar idx;\n/******/ \t\tvar queue = outdatedModules.slice();\n/******/ \t\twhile (queue.length > 0) {\n/******/ \t\t\tmoduleId = queue.pop();\n/******/ \t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\tif (!module) continue;\n/******/\n/******/ \t\t\tvar data = {};\n/******/\n/******/ \t\t\t// Call dispose handlers\n/******/ \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n/******/ \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n/******/ \t\t\t\tcb = disposeHandlers[j];\n/******/ \t\t\t\tcb(data);\n/******/ \t\t\t}\n/******/ \t\t\thotCurrentModuleData[moduleId] = data;\n/******/\n/******/ \t\t\t// disable module (this disables requires from this module)\n/******/ \t\t\tmodule.hot.active = false;\n/******/\n/******/ \t\t\t// remove module from cache\n/******/ \t\t\tdelete installedModules[moduleId];\n/******/\n/******/ \t\t\t// when disposing there is no need to call dispose handler\n/******/ \t\t\tdelete outdatedDependencies[moduleId];\n/******/\n/******/ \t\t\t// remove \"parents\" references from all children\n/******/ \t\t\tfor (j = 0; j < module.children.length; j++) {\n/******/ \t\t\t\tvar child = installedModules[module.children[j]];\n/******/ \t\t\t\tif (!child) continue;\n/******/ \t\t\t\tidx = child.parents.indexOf(moduleId);\n/******/ \t\t\t\tif (idx >= 0) {\n/******/ \t\t\t\t\tchild.parents.splice(idx, 1);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// remove outdated dependency from module children\n/******/ \t\tvar dependency;\n/******/ \t\tvar moduleOutdatedDependencies;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n/******/ \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n/******/ \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// Not in \"apply\" phase\n/******/ \t\thotSetStatus(\"apply\");\n/******/\n/******/ \t\thotCurrentHash = hotUpdateNewHash;\n/******/\n/******/ \t\t// insert new code\n/******/ \t\tfor (moduleId in appliedUpdate) {\n/******/ \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// call accept handlers\n/******/ \t\tvar error = null;\n/******/ \t\tfor (moduleId in outdatedDependencies) {\n/******/ \t\t\tif (\n/******/ \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n/******/ \t\t\t) {\n/******/ \t\t\t\tmodule = installedModules[moduleId];\n/******/ \t\t\t\tif (module) {\n/******/ \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n/******/ \t\t\t\t\tvar callbacks = [];\n/******/ \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n/******/ \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n/******/ \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n/******/ \t\t\t\t\t\tif (cb) {\n/******/ \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n/******/ \t\t\t\t\t\t\tcallbacks.push(cb);\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n/******/ \t\t\t\t\t\tcb = callbacks[i];\n/******/ \t\t\t\t\t\ttry {\n/******/ \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n/******/ \t\t\t\t\t\t} catch (err) {\n/******/ \t\t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n/******/ \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n/******/ \t\t\t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t\t}\n/******/ \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\t\tif (!error) error = err;\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/******/\n/******/ \t\t// Load self accepted modules\n/******/ \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n/******/ \t\t\tvar item = outdatedSelfAcceptedModules[i];\n/******/ \t\t\tmoduleId = item.module;\n/******/ \t\t\thotCurrentParents = [moduleId];\n/******/ \t\t\ttry {\n/******/ \t\t\t\t__webpack_require__(moduleId);\n/******/ \t\t\t} catch (err) {\n/******/ \t\t\t\tif (typeof item.errorHandler === \"function\") {\n/******/ \t\t\t\t\ttry {\n/******/ \t\t\t\t\t\titem.errorHandler(err);\n/******/ \t\t\t\t\t} catch (err2) {\n/******/ \t\t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n/******/ \t\t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\t\terror: err2,\n/******/ \t\t\t\t\t\t\t\toriginalError: err\n/******/ \t\t\t\t\t\t\t});\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\t\tif (!error) error = err2;\n/******/ \t\t\t\t\t\t}\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t} else {\n/******/ \t\t\t\t\tif (options.onErrored) {\n/******/ \t\t\t\t\t\toptions.onErrored({\n/******/ \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n/******/ \t\t\t\t\t\t\tmoduleId: moduleId,\n/******/ \t\t\t\t\t\t\terror: err\n/******/ \t\t\t\t\t\t});\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t\tif (!options.ignoreErrored) {\n/******/ \t\t\t\t\t\tif (!error) error = err;\n/******/ \t\t\t\t\t}\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t}\n/******/\n/******/ \t\t// handle errors in accept handlers and self accepted module load\n/******/ \t\tif (error) {\n/******/ \t\t\thotSetStatus(\"fail\");\n/******/ \t\t\treturn Promise.reject(error);\n/******/ \t\t}\n/******/\n/******/ \t\thotSetStatus(\"idle\");\n/******/ \t\treturn new Promise(function(resolve) {\n/******/ \t\t\tresolve(outdatedModules);\n/******/ \t\t});\n/******/ \t}\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {},\n/******/ \t\t\thot: hotCreateModule(moduleId),\n/******/ \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n/******/ \t\t\tchildren: []\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// __webpack_hash__\n/******/ \t__webpack_require__.h = function() { return hotCurrentHash; };\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn hotCreateRequire(\"./index.js\")(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./canvasToPixel.js\":\n/*!**************************!*\\\n !*** ./canvasToPixel.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the canvas coordinate system to the pixel coordinate system\n * system. This can be used to reset tools' image coordinates after modifications\n * have been made in canvas space (e.g. moving a tool by a few cm, independent of\n * image resolution).\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {{x: Number, y: Number}} pt The input point in the canvas coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./colors/colormap.js\":\n/*!****************************!*\\\n !*** ./colors/colormap.js ***!\n \\****************************/\n/*! exports provided: getColormapsList, getColormap */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormapsList\", function() { return getColormapsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColormap\", function() { return getColormap; });\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\nvar COLOR_TRANSPARENT = [0, 0, 0, 0]; // Colormaps\n//\n// Hot Iron, PET, Hot Metal Blue and PET 20 Step are color palettes\n// Defined by the DICOM standard\n// http://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html\n//\n// All Linear Segmented Colormaps were copied from matplotlib\n// https://github.com/stefanv/matplotlib/blob/master/lib/matplotlib/_cm.py\n\nvar colormapsData = {\n hotIron: {\n name: 'Hot Iron',\n numOfColors: 256,\n colors: [[0, 0, 0, 255], [2, 0, 0, 255], [4, 0, 0, 255], [6, 0, 0, 255], [8, 0, 0, 255], [10, 0, 0, 255], [12, 0, 0, 255], [14, 0, 0, 255], [16, 0, 0, 255], [18, 0, 0, 255], [20, 0, 0, 255], [22, 0, 0, 255], [24, 0, 0, 255], [26, 0, 0, 255], [28, 0, 0, 255], [30, 0, 0, 255], [32, 0, 0, 255], [34, 0, 0, 255], [36, 0, 0, 255], [38, 0, 0, 255], [40, 0, 0, 255], [42, 0, 0, 255], [44, 0, 0, 255], [46, 0, 0, 255], [48, 0, 0, 255], [50, 0, 0, 255], [52, 0, 0, 255], [54, 0, 0, 255], [56, 0, 0, 255], [58, 0, 0, 255], [60, 0, 0, 255], [62, 0, 0, 255], [64, 0, 0, 255], [66, 0, 0, 255], [68, 0, 0, 255], [70, 0, 0, 255], [72, 0, 0, 255], [74, 0, 0, 255], [76, 0, 0, 255], [78, 0, 0, 255], [80, 0, 0, 255], [82, 0, 0, 255], [84, 0, 0, 255], [86, 0, 0, 255], [88, 0, 0, 255], [90, 0, 0, 255], [92, 0, 0, 255], [94, 0, 0, 255], [96, 0, 0, 255], [98, 0, 0, 255], [100, 0, 0, 255], [102, 0, 0, 255], [104, 0, 0, 255], [106, 0, 0, 255], [108, 0, 0, 255], [110, 0, 0, 255], [112, 0, 0, 255], [114, 0, 0, 255], [116, 0, 0, 255], [118, 0, 0, 255], [120, 0, 0, 255], [122, 0, 0, 255], [124, 0, 0, 255], [126, 0, 0, 255], [128, 0, 0, 255], [130, 0, 0, 255], [132, 0, 0, 255], [134, 0, 0, 255], [136, 0, 0, 255], [138, 0, 0, 255], [140, 0, 0, 255], [142, 0, 0, 255], [144, 0, 0, 255], [146, 0, 0, 255], [148, 0, 0, 255], [150, 0, 0, 255], [152, 0, 0, 255], [154, 0, 0, 255], [156, 0, 0, 255], [158, 0, 0, 255], [160, 0, 0, 255], [162, 0, 0, 255], [164, 0, 0, 255], [166, 0, 0, 255], [168, 0, 0, 255], [170, 0, 0, 255], [172, 0, 0, 255], [174, 0, 0, 255], [176, 0, 0, 255], [178, 0, 0, 255], [180, 0, 0, 255], [182, 0, 0, 255], [184, 0, 0, 255], [186, 0, 0, 255], [188, 0, 0, 255], [190, 0, 0, 255], [192, 0, 0, 255], [194, 0, 0, 255], [196, 0, 0, 255], [198, 0, 0, 255], [200, 0, 0, 255], [202, 0, 0, 255], [204, 0, 0, 255], [206, 0, 0, 255], [208, 0, 0, 255], [210, 0, 0, 255], [212, 0, 0, 255], [214, 0, 0, 255], [216, 0, 0, 255], [218, 0, 0, 255], [220, 0, 0, 255], [222, 0, 0, 255], [224, 0, 0, 255], [226, 0, 0, 255], [228, 0, 0, 255], [230, 0, 0, 255], [232, 0, 0, 255], [234, 0, 0, 255], [236, 0, 0, 255], [238, 0, 0, 255], [240, 0, 0, 255], [242, 0, 0, 255], [244, 0, 0, 255], [246, 0, 0, 255], [248, 0, 0, 255], [250, 0, 0, 255], [252, 0, 0, 255], [254, 0, 0, 255], [255, 0, 0, 255], [255, 2, 0, 255], [255, 4, 0, 255], [255, 6, 0, 255], [255, 8, 0, 255], [255, 10, 0, 255], [255, 12, 0, 255], [255, 14, 0, 255], [255, 16, 0, 255], [255, 18, 0, 255], [255, 20, 0, 255], [255, 22, 0, 255], [255, 24, 0, 255], [255, 26, 0, 255], [255, 28, 0, 255], [255, 30, 0, 255], [255, 32, 0, 255], [255, 34, 0, 255], [255, 36, 0, 255], [255, 38, 0, 255], [255, 40, 0, 255], [255, 42, 0, 255], [255, 44, 0, 255], [255, 46, 0, 255], [255, 48, 0, 255], [255, 50, 0, 255], [255, 52, 0, 255], [255, 54, 0, 255], [255, 56, 0, 255], [255, 58, 0, 255], [255, 60, 0, 255], [255, 62, 0, 255], [255, 64, 0, 255], [255, 66, 0, 255], [255, 68, 0, 255], [255, 70, 0, 255], [255, 72, 0, 255], [255, 74, 0, 255], [255, 76, 0, 255], [255, 78, 0, 255], [255, 80, 0, 255], [255, 82, 0, 255], [255, 84, 0, 255], [255, 86, 0, 255], [255, 88, 0, 255], [255, 90, 0, 255], [255, 92, 0, 255], [255, 94, 0, 255], [255, 96, 0, 255], [255, 98, 0, 255], [255, 100, 0, 255], [255, 102, 0, 255], [255, 104, 0, 255], [255, 106, 0, 255], [255, 108, 0, 255], [255, 110, 0, 255], [255, 112, 0, 255], [255, 114, 0, 255], [255, 116, 0, 255], [255, 118, 0, 255], [255, 120, 0, 255], [255, 122, 0, 255], [255, 124, 0, 255], [255, 126, 0, 255], [255, 128, 4, 255], [255, 130, 8, 255], [255, 132, 12, 255], [255, 134, 16, 255], [255, 136, 20, 255], [255, 138, 24, 255], [255, 140, 28, 255], [255, 142, 32, 255], [255, 144, 36, 255], [255, 146, 40, 255], [255, 148, 44, 255], [255, 150, 48, 255], [255, 152, 52, 255], [255, 154, 56, 255], [255, 156, 60, 255], [255, 158, 64, 255], [255, 160, 68, 255], [255, 162, 72, 255], [255, 164, 76, 255], [255, 166, 80, 255], [255, 168, 84, 255], [255, 170, 88, 255], [255, 172, 92, 255], [255, 174, 96, 255], [255, 176, 100, 255], [255, 178, 104, 255], [255, 180, 108, 255], [255, 182, 112, 255], [255, 184, 116, 255], [255, 186, 120, 255], [255, 188, 124, 255], [255, 190, 128, 255], [255, 192, 132, 255], [255, 194, 136, 255], [255, 196, 140, 255], [255, 198, 144, 255], [255, 200, 148, 255], [255, 202, 152, 255], [255, 204, 156, 255], [255, 206, 160, 255], [255, 208, 164, 255], [255, 210, 168, 255], [255, 212, 172, 255], [255, 214, 176, 255], [255, 216, 180, 255], [255, 218, 184, 255], [255, 220, 188, 255], [255, 222, 192, 255], [255, 224, 196, 255], [255, 226, 200, 255], [255, 228, 204, 255], [255, 230, 208, 255], [255, 232, 212, 255], [255, 234, 216, 255], [255, 236, 220, 255], [255, 238, 224, 255], [255, 240, 228, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 240, 255], [255, 248, 244, 255], [255, 250, 248, 255], [255, 252, 252, 255], [255, 255, 255, 255]]\n },\n pet: {\n name: 'PET',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 2, 1, 255], [0, 4, 3, 255], [0, 6, 5, 255], [0, 8, 7, 255], [0, 10, 9, 255], [0, 12, 11, 255], [0, 14, 13, 255], [0, 16, 15, 255], [0, 18, 17, 255], [0, 20, 19, 255], [0, 22, 21, 255], [0, 24, 23, 255], [0, 26, 25, 255], [0, 28, 27, 255], [0, 30, 29, 255], [0, 32, 31, 255], [0, 34, 33, 255], [0, 36, 35, 255], [0, 38, 37, 255], [0, 40, 39, 255], [0, 42, 41, 255], [0, 44, 43, 255], [0, 46, 45, 255], [0, 48, 47, 255], [0, 50, 49, 255], [0, 52, 51, 255], [0, 54, 53, 255], [0, 56, 55, 255], [0, 58, 57, 255], [0, 60, 59, 255], [0, 62, 61, 255], [0, 65, 63, 255], [0, 67, 65, 255], [0, 69, 67, 255], [0, 71, 69, 255], [0, 73, 71, 255], [0, 75, 73, 255], [0, 77, 75, 255], [0, 79, 77, 255], [0, 81, 79, 255], [0, 83, 81, 255], [0, 85, 83, 255], [0, 87, 85, 255], [0, 89, 87, 255], [0, 91, 89, 255], [0, 93, 91, 255], [0, 95, 93, 255], [0, 97, 95, 255], [0, 99, 97, 255], [0, 101, 99, 255], [0, 103, 101, 255], [0, 105, 103, 255], [0, 107, 105, 255], [0, 109, 107, 255], [0, 111, 109, 255], [0, 113, 111, 255], [0, 115, 113, 255], [0, 117, 115, 255], [0, 119, 117, 255], [0, 121, 119, 255], [0, 123, 121, 255], [0, 125, 123, 255], [0, 128, 125, 255], [1, 126, 127, 255], [3, 124, 129, 255], [5, 122, 131, 255], [7, 120, 133, 255], [9, 118, 135, 255], [11, 116, 137, 255], [13, 114, 139, 255], [15, 112, 141, 255], [17, 110, 143, 255], [19, 108, 145, 255], [21, 106, 147, 255], [23, 104, 149, 255], [25, 102, 151, 255], [27, 100, 153, 255], [29, 98, 155, 255], [31, 96, 157, 255], [33, 94, 159, 255], [35, 92, 161, 255], [37, 90, 163, 255], [39, 88, 165, 255], [41, 86, 167, 255], [43, 84, 169, 255], [45, 82, 171, 255], [47, 80, 173, 255], [49, 78, 175, 255], [51, 76, 177, 255], [53, 74, 179, 255], [55, 72, 181, 255], [57, 70, 183, 255], [59, 68, 185, 255], [61, 66, 187, 255], [63, 64, 189, 255], [65, 63, 191, 255], [67, 61, 193, 255], [69, 59, 195, 255], [71, 57, 197, 255], [73, 55, 199, 255], [75, 53, 201, 255], [77, 51, 203, 255], [79, 49, 205, 255], [81, 47, 207, 255], [83, 45, 209, 255], [85, 43, 211, 255], [86, 41, 213, 255], [88, 39, 215, 255], [90, 37, 217, 255], [92, 35, 219, 255], [94, 33, 221, 255], [96, 31, 223, 255], [98, 29, 225, 255], [100, 27, 227, 255], [102, 25, 229, 255], [104, 23, 231, 255], [106, 21, 233, 255], [108, 19, 235, 255], [110, 17, 237, 255], [112, 15, 239, 255], [114, 13, 241, 255], [116, 11, 243, 255], [118, 9, 245, 255], [120, 7, 247, 255], [122, 5, 249, 255], [124, 3, 251, 255], [126, 1, 253, 255], [128, 0, 255, 255], [130, 2, 252, 255], [132, 4, 248, 255], [134, 6, 244, 255], [136, 8, 240, 255], [138, 10, 236, 255], [140, 12, 232, 255], [142, 14, 228, 255], [144, 16, 224, 255], [146, 18, 220, 255], [148, 20, 216, 255], [150, 22, 212, 255], [152, 24, 208, 255], [154, 26, 204, 255], [156, 28, 200, 255], [158, 30, 196, 255], [160, 32, 192, 255], [162, 34, 188, 255], [164, 36, 184, 255], [166, 38, 180, 255], [168, 40, 176, 255], [170, 42, 172, 255], [171, 44, 168, 255], [173, 46, 164, 255], [175, 48, 160, 255], [177, 50, 156, 255], [179, 52, 152, 255], [181, 54, 148, 255], [183, 56, 144, 255], [185, 58, 140, 255], [187, 60, 136, 255], [189, 62, 132, 255], [191, 64, 128, 255], [193, 66, 124, 255], [195, 68, 120, 255], [197, 70, 116, 255], [199, 72, 112, 255], [201, 74, 108, 255], [203, 76, 104, 255], [205, 78, 100, 255], [207, 80, 96, 255], [209, 82, 92, 255], [211, 84, 88, 255], [213, 86, 84, 255], [215, 88, 80, 255], [217, 90, 76, 255], [219, 92, 72, 255], [221, 94, 68, 255], [223, 96, 64, 255], [225, 98, 60, 255], [227, 100, 56, 255], [229, 102, 52, 255], [231, 104, 48, 255], [233, 106, 44, 255], [235, 108, 40, 255], [237, 110, 36, 255], [239, 112, 32, 255], [241, 114, 28, 255], [243, 116, 24, 255], [245, 118, 20, 255], [247, 120, 16, 255], [249, 122, 12, 255], [251, 124, 8, 255], [253, 126, 4, 255], [255, 128, 0, 255], [255, 130, 4, 255], [255, 132, 8, 255], [255, 134, 12, 255], [255, 136, 16, 255], [255, 138, 20, 255], [255, 140, 24, 255], [255, 142, 28, 255], [255, 144, 32, 255], [255, 146, 36, 255], [255, 148, 40, 255], [255, 150, 44, 255], [255, 152, 48, 255], [255, 154, 52, 255], [255, 156, 56, 255], [255, 158, 60, 255], [255, 160, 64, 255], [255, 162, 68, 255], [255, 164, 72, 255], [255, 166, 76, 255], [255, 168, 80, 255], [255, 170, 85, 255], [255, 172, 89, 255], [255, 174, 93, 255], [255, 176, 97, 255], [255, 178, 101, 255], [255, 180, 105, 255], [255, 182, 109, 255], [255, 184, 113, 255], [255, 186, 117, 255], [255, 188, 121, 255], [255, 190, 125, 255], [255, 192, 129, 255], [255, 194, 133, 255], [255, 196, 137, 255], [255, 198, 141, 255], [255, 200, 145, 255], [255, 202, 149, 255], [255, 204, 153, 255], [255, 206, 157, 255], [255, 208, 161, 255], [255, 210, 165, 255], [255, 212, 170, 255], [255, 214, 174, 255], [255, 216, 178, 255], [255, 218, 182, 255], [255, 220, 186, 255], [255, 222, 190, 255], [255, 224, 194, 255], [255, 226, 198, 255], [255, 228, 202, 255], [255, 230, 206, 255], [255, 232, 210, 255], [255, 234, 214, 255], [255, 236, 218, 255], [255, 238, 222, 255], [255, 240, 226, 255], [255, 242, 230, 255], [255, 244, 234, 255], [255, 246, 238, 255], [255, 248, 242, 255], [255, 250, 246, 255], [255, 252, 250, 255], [255, 255, 255, 255]]\n },\n hotMetalBlue: {\n name: 'Hot Metal Blue',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 2, 255], [0, 0, 4, 255], [0, 0, 6, 255], [0, 0, 8, 255], [0, 0, 10, 255], [0, 0, 12, 255], [0, 0, 14, 255], [0, 0, 16, 255], [0, 0, 17, 255], [0, 0, 19, 255], [0, 0, 21, 255], [0, 0, 23, 255], [0, 0, 25, 255], [0, 0, 27, 255], [0, 0, 29, 255], [0, 0, 31, 255], [0, 0, 33, 255], [0, 0, 35, 255], [0, 0, 37, 255], [0, 0, 39, 255], [0, 0, 41, 255], [0, 0, 43, 255], [0, 0, 45, 255], [0, 0, 47, 255], [0, 0, 49, 255], [0, 0, 51, 255], [0, 0, 53, 255], [0, 0, 55, 255], [0, 0, 57, 255], [0, 0, 59, 255], [0, 0, 61, 255], [0, 0, 63, 255], [0, 0, 65, 255], [0, 0, 67, 255], [0, 0, 69, 255], [0, 0, 71, 255], [0, 0, 73, 255], [0, 0, 75, 255], [0, 0, 77, 255], [0, 0, 79, 255], [0, 0, 81, 255], [0, 0, 83, 255], [0, 0, 84, 255], [0, 0, 86, 255], [0, 0, 88, 255], [0, 0, 90, 255], [0, 0, 92, 255], [0, 0, 94, 255], [0, 0, 96, 255], [0, 0, 98, 255], [0, 0, 100, 255], [0, 0, 102, 255], [0, 0, 104, 255], [0, 0, 106, 255], [0, 0, 108, 255], [0, 0, 110, 255], [0, 0, 112, 255], [0, 0, 114, 255], [0, 0, 116, 255], [0, 0, 117, 255], [0, 0, 119, 255], [0, 0, 121, 255], [0, 0, 123, 255], [0, 0, 125, 255], [0, 0, 127, 255], [0, 0, 129, 255], [0, 0, 131, 255], [0, 0, 133, 255], [0, 0, 135, 255], [0, 0, 137, 255], [0, 0, 139, 255], [0, 0, 141, 255], [0, 0, 143, 255], [0, 0, 145, 255], [0, 0, 147, 255], [0, 0, 149, 255], [0, 0, 151, 255], [0, 0, 153, 255], [0, 0, 155, 255], [0, 0, 157, 255], [0, 0, 159, 255], [0, 0, 161, 255], [0, 0, 163, 255], [0, 0, 165, 255], [0, 0, 167, 255], [3, 0, 169, 255], [6, 0, 171, 255], [9, 0, 173, 255], [12, 0, 175, 255], [15, 0, 177, 255], [18, 0, 179, 255], [21, 0, 181, 255], [24, 0, 183, 255], [26, 0, 184, 255], [29, 0, 186, 255], [32, 0, 188, 255], [35, 0, 190, 255], [38, 0, 192, 255], [41, 0, 194, 255], [44, 0, 196, 255], [47, 0, 198, 255], [50, 0, 200, 255], [52, 0, 197, 255], [55, 0, 194, 255], [57, 0, 191, 255], [59, 0, 188, 255], [62, 0, 185, 255], [64, 0, 182, 255], [66, 0, 179, 255], [69, 0, 176, 255], [71, 0, 174, 255], [74, 0, 171, 255], [76, 0, 168, 255], [78, 0, 165, 255], [81, 0, 162, 255], [83, 0, 159, 255], [85, 0, 156, 255], [88, 0, 153, 255], [90, 0, 150, 255], [93, 2, 144, 255], [96, 4, 138, 255], [99, 6, 132, 255], [102, 8, 126, 255], [105, 9, 121, 255], [108, 11, 115, 255], [111, 13, 109, 255], [114, 15, 103, 255], [116, 17, 97, 255], [119, 19, 91, 255], [122, 21, 85, 255], [125, 23, 79, 255], [128, 24, 74, 255], [131, 26, 68, 255], [134, 28, 62, 255], [137, 30, 56, 255], [140, 32, 50, 255], [143, 34, 47, 255], [146, 36, 44, 255], [149, 38, 41, 255], [152, 40, 38, 255], [155, 41, 35, 255], [158, 43, 32, 255], [161, 45, 29, 255], [164, 47, 26, 255], [166, 49, 24, 255], [169, 51, 21, 255], [172, 53, 18, 255], [175, 55, 15, 255], [178, 56, 12, 255], [181, 58, 9, 255], [184, 60, 6, 255], [187, 62, 3, 255], [190, 64, 0, 255], [194, 66, 0, 255], [198, 68, 0, 255], [201, 70, 0, 255], [205, 72, 0, 255], [209, 73, 0, 255], [213, 75, 0, 255], [217, 77, 0, 255], [221, 79, 0, 255], [224, 81, 0, 255], [228, 83, 0, 255], [232, 85, 0, 255], [236, 87, 0, 255], [240, 88, 0, 255], [244, 90, 0, 255], [247, 92, 0, 255], [251, 94, 0, 255], [255, 96, 0, 255], [255, 98, 3, 255], [255, 100, 6, 255], [255, 102, 9, 255], [255, 104, 12, 255], [255, 105, 15, 255], [255, 107, 18, 255], [255, 109, 21, 255], [255, 111, 24, 255], [255, 113, 26, 255], [255, 115, 29, 255], [255, 117, 32, 255], [255, 119, 35, 255], [255, 120, 38, 255], [255, 122, 41, 255], [255, 124, 44, 255], [255, 126, 47, 255], [255, 128, 50, 255], [255, 130, 53, 255], [255, 132, 56, 255], [255, 134, 59, 255], [255, 136, 62, 255], [255, 137, 65, 255], [255, 139, 68, 255], [255, 141, 71, 255], [255, 143, 74, 255], [255, 145, 76, 255], [255, 147, 79, 255], [255, 149, 82, 255], [255, 151, 85, 255], [255, 152, 88, 255], [255, 154, 91, 255], [255, 156, 94, 255], [255, 158, 97, 255], [255, 160, 100, 255], [255, 162, 103, 255], [255, 164, 106, 255], [255, 166, 109, 255], [255, 168, 112, 255], [255, 169, 115, 255], [255, 171, 118, 255], [255, 173, 121, 255], [255, 175, 124, 255], [255, 177, 126, 255], [255, 179, 129, 255], [255, 181, 132, 255], [255, 183, 135, 255], [255, 184, 138, 255], [255, 186, 141, 255], [255, 188, 144, 255], [255, 190, 147, 255], [255, 192, 150, 255], [255, 194, 153, 255], [255, 196, 156, 255], [255, 198, 159, 255], [255, 200, 162, 255], [255, 201, 165, 255], [255, 203, 168, 255], [255, 205, 171, 255], [255, 207, 174, 255], [255, 209, 176, 255], [255, 211, 179, 255], [255, 213, 182, 255], [255, 215, 185, 255], [255, 216, 188, 255], [255, 218, 191, 255], [255, 220, 194, 255], [255, 222, 197, 255], [255, 224, 200, 255], [255, 226, 203, 255], [255, 228, 206, 255], [255, 229, 210, 255], [255, 231, 213, 255], [255, 233, 216, 255], [255, 235, 219, 255], [255, 237, 223, 255], [255, 239, 226, 255], [255, 240, 229, 255], [255, 242, 232, 255], [255, 244, 236, 255], [255, 246, 239, 255], [255, 248, 242, 255], [255, 250, 245, 255], [255, 251, 249, 255], [255, 253, 252, 255], [255, 255, 255, 255]]\n },\n pet20Step: {\n name: 'PET 20 Step',\n numColors: 256,\n colors: [[0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [0, 0, 0, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [96, 0, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 80, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [48, 48, 112, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [80, 80, 128, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [96, 96, 176, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [112, 112, 192, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [128, 128, 224, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 96, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [48, 144, 48, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [80, 192, 80, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [64, 224, 64, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [224, 224, 80, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 208, 96, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 176, 64, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [208, 144, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [192, 96, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [176, 48, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 0, 0, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255], [255, 255, 255, 255]]\n },\n gray: {\n name: 'Gray',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 1, 1]]\n }\n },\n jet: {\n name: 'Jet',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.35, 0, 0], [0.66, 1, 1], [0.89, 1, 1], [1, 0.5, 0.5]],\n green: [[0, 0, 0], [0.125, 0, 0], [0.375, 1, 1], [0.64, 1, 1], [0.91, 0, 0], [1, 0, 0]],\n blue: [[0, 0.5, 0.5], [0.11, 1, 1], [0.34, 1, 1], [0.65, 0, 0], [1, 0, 0]]\n }\n },\n hsv: {\n name: 'HSV',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [0.158730, 1, 1], [0.174603, 0.968750, 0.968750], [0.333333, 0.031250, 0.031250], [0.349206, 0, 0], [0.666667, 0, 0], [0.682540, 0.031250, 0.031250], [0.841270, 0.968750, 0.968750], [0.857143, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.158730, 0.937500, 0.937500], [0.174603, 1, 1], [0.507937, 1, 1], [0.666667, 0.062500, 0.062500], [0.682540, 0, 0], [1, 0, 0]],\n blue: [[0, 0, 0], [0.333333, 0, 0], [0.349206, 0.062500, 0.062500], [0.507937, 1, 1], [0.841270, 1, 1], [0.857143, 0.937500, 0.937500], [1, 0.09375, 0.09375]]\n }\n },\n hot: {\n name: 'Hot',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.0416, 0.0416], [0.365079, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0, 0], [0.746032, 1, 1], [1, 1, 1]],\n blue: [[0, 0, 0], [0.746032, 0, 0], [1, 1, 1]]\n }\n },\n cool: {\n name: 'Cool',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 1, 1], [1, 0, 0]],\n blue: [[0, 1, 1], [1, 1, 1]]\n }\n },\n spring: {\n name: 'Spring',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0, 0]]\n }\n },\n summer: {\n name: 'Summer',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 1, 1]],\n green: [[0, 0.5, 0.5], [1, 1, 1]],\n blue: [[0, 0.4, 0.4], [1, 0.4, 0.4]]\n }\n },\n autumn: {\n name: 'Autumn',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 0, 0], [1, 0, 0]]\n }\n },\n winter: {\n name: 'Winter',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [1, 0, 0]],\n green: [[0, 0, 0], [1, 1, 1]],\n blue: [[0, 1, 1], [1, 0.5, 0.5]]\n }\n },\n bone: {\n name: 'Bone',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.746032, 0.652778, 0.652778], [1, 1, 1]],\n green: [[0, 0, 0], [0.365079, 0.319444, 0.319444], [0.746032, 0.777778, 0.777778], [1, 1, 1]],\n blue: [[0, 0, 0], [0.365079, 0.444444, 0.444444], [1, 1, 1]]\n }\n },\n copper: {\n name: 'Copper',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.809524, 1, 1], [1, 1, 1]],\n green: [[0, 0, 0], [1, 0.7812, 0.7812]],\n blue: [[0, 0, 0], [1, 0.4975, 0.4975]]\n }\n },\n spectral: {\n name: 'Spectral',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0, 0], [0.05, 0.4667, 0.4667], [0.10, 0.5333, 0.5333], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0, 0], [0.30, 0, 0], [0.35, 0, 0], [0.40, 0, 0], [0.45, 0, 0], [0.50, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0.7333, 0.7333], [0.70, 0.9333, 0.9333], [0.75, 1, 1], [0.80, 1, 1], [0.85, 1, 1], [0.90, 0.8667, 0.8667], [0.95, 0.80, 0.80], [1, 0.80, 0.80]],\n green: [[0, 0, 0], [0.05, 0, 0], [0.10, 0, 0], [0.15, 0, 0], [0.20, 0, 0], [0.25, 0.4667, 0.4667], [0.30, 0.6000, 0.6000], [0.35, 0.6667, 0.6667], [0.40, 0.6667, 0.6667], [0.45, 0.6000, 0.6000], [0.50, 0.7333, 0.7333], [0.55, 0.8667, 0.8667], [0.60, 1, 1], [0.65, 1, 1], [0.70, 0.9333, 0.9333], [0.75, 0.8000, 0.8000], [0.80, 0.6000, 0.6000], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]],\n blue: [[0, 0, 0], [0.05, 0.5333, 0.5333], [0.10, 0.6000, 0.6000], [0.15, 0.6667, 0.6667], [0.20, 0.8667, 0.8667], [0.25, 0.8667, 0.8667], [0.30, 0.8667, 0.8667], [0.35, 0.6667, 0.6667], [0.40, 0.5333, 0.5333], [0.45, 0, 0], [0.5, 0, 0], [0.55, 0, 0], [0.60, 0, 0], [0.65, 0, 0], [0.70, 0, 0], [0.75, 0, 0], [0.80, 0, 0], [0.85, 0, 0], [0.90, 0, 0], [0.95, 0, 0], [1, 0.80, 0.80]]\n }\n },\n coolwarm: {\n name: 'CoolWarm',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.2298057, 0.2298057], [0.03125, 0.26623388, 0.26623388], [0.0625, 0.30386891, 0.30386891], [0.09375, 0.342804478, 0.342804478], [0.125, 0.38301334, 0.38301334], [0.15625, 0.424369608, 0.424369608], [0.1875, 0.46666708, 0.46666708], [0.21875, 0.509635204, 0.509635204], [0.25, 0.552953156, 0.552953156], [0.28125, 0.596262162, 0.596262162], [0.3125, 0.639176211, 0.639176211], [0.34375, 0.681291281, 0.681291281], [0.375, 0.722193294, 0.722193294], [0.40625, 0.761464949, 0.761464949], [0.4375, 0.798691636, 0.798691636], [0.46875, 0.833466556, 0.833466556], [0.5, 0.865395197, 0.865395197], [0.53125, 0.897787179, 0.897787179], [0.5625, 0.924127593, 0.924127593], [0.59375, 0.944468518, 0.944468518], [0.625, 0.958852946, 0.958852946], [0.65625, 0.96732803, 0.96732803], [0.6875, 0.969954137, 0.969954137], [0.71875, 0.966811177, 0.966811177], [0.75, 0.958003065, 0.958003065], [0.78125, 0.943660866, 0.943660866], [0.8125, 0.923944917, 0.923944917], [0.84375, 0.89904617, 0.89904617], [0.875, 0.869186849, 0.869186849], [0.90625, 0.834620542, 0.834620542], [0.9375, 0.795631745, 0.795631745], [0.96875, 0.752534934, 0.752534934], [1, 0.705673158, 0.705673158]],\n green: [[0, 0.298717966, 0.298717966], [0.03125, 0.353094838, 0.353094838], [0.0625, 0.406535296, 0.406535296], [0.09375, 0.458757618, 0.458757618], [0.125, 0.50941904, 0.50941904], [0.15625, 0.558148092, 0.558148092], [0.1875, 0.604562568, 0.604562568], [0.21875, 0.648280772, 0.648280772], [0.25, 0.688929332, 0.688929332], [0.28125, 0.726149107, 0.726149107], [0.3125, 0.759599947, 0.759599947], [0.34375, 0.788964712, 0.788964712], [0.375, 0.813952739, 0.813952739], [0.40625, 0.834302879, 0.834302879], [0.4375, 0.849786142, 0.849786142], [0.46875, 0.860207984, 0.860207984], [0.5, 0.86541021, 0.86541021], [0.53125, 0.848937047, 0.848937047], [0.5625, 0.827384882, 0.827384882], [0.59375, 0.800927443, 0.800927443], [0.625, 0.769767752, 0.769767752], [0.65625, 0.734132809, 0.734132809], [0.6875, 0.694266682, 0.694266682], [0.71875, 0.650421156, 0.650421156], [0.75, 0.602842431, 0.602842431], [0.78125, 0.551750968, 0.551750968], [0.8125, 0.49730856, 0.49730856], [0.84375, 0.439559467, 0.439559467], [0.875, 0.378313092, 0.378313092], [0.90625, 0.312874446, 0.312874446], [0.9375, 0.24128379, 0.24128379], [0.96875, 0.157246067, 0.157246067], [1, 0.01555616, 0.01555616]],\n blue: [[0, 0.753683153, 0.753683153], [0.03125, 0.801466763, 0.801466763], [0.0625, 0.84495867, 0.84495867], [0.09375, 0.883725899, 0.883725899], [0.125, 0.917387822, 0.917387822], [0.15625, 0.945619588, 0.945619588], [0.1875, 0.968154911, 0.968154911], [0.21875, 0.98478814, 0.98478814], [0.25, 0.995375608, 0.995375608], [0.28125, 0.999836203, 0.999836203], [0.3125, 0.998151185, 0.998151185], [0.34375, 0.990363227, 0.990363227], [0.375, 0.976574709, 0.976574709], [0.40625, 0.956945269, 0.956945269], [0.4375, 0.931688648, 0.931688648], [0.46875, 0.901068838, 0.901068838], [0.5, 0.865395561, 0.865395561], [0.53125, 0.820880546, 0.820880546], [0.5625, 0.774508472, 0.774508472], [0.59375, 0.726736146, 0.726736146], [0.625, 0.678007945, 0.678007945], [0.65625, 0.628751763, 0.628751763], [0.6875, 0.579375448, 0.579375448], [0.71875, 0.530263762, 0.530263762], [0.75, 0.481775914, 0.481775914], [0.78125, 0.434243684, 0.434243684], [0.8125, 0.387970225, 0.387970225], [0.84375, 0.343229596, 0.343229596], [0.875, 0.300267182, 0.300267182], [0.90625, 0.259301199, 0.259301199], [0.9375, 0.220525627, 0.220525627], [0.96875, 0.184115123, 0.184115123], [1, 0.150232812, 0.150232812]]\n }\n },\n blues: {\n name: 'Blues',\n numColors: 256,\n gamma: 1,\n segmentedData: {\n red: [[0, 0.9686274528503418, 0.9686274528503418], [0.125, 0.87058824300765991, 0.87058824300765991], [0.25, 0.7764706015586853, 0.7764706015586853], [0.375, 0.61960786581039429, 0.61960786581039429], [0.5, 0.41960784792900085, 0.41960784792900085], [0.625, 0.25882354378700256, 0.25882354378700256], [0.75, 0.12941177189350128, 0.12941177189350128], [0.875, 0.031372550874948502, 0.031372550874948502], [1, 0.031372550874948502, 0.031372550874948502]],\n green: [[0, 0.9843137264251709, 0.9843137264251709], [0.125, 0.92156863212585449, 0.92156863212585449], [0.25, 0.85882353782653809, 0.85882353782653809], [0.375, 0.7921568751335144, 0.7921568751335144], [0.5, 0.68235296010971069, 0.68235296010971069], [0.625, 0.57254904508590698, 0.57254904508590698], [0.75, 0.44313725829124451, 0.44313725829124451], [0.875, 0.31764706969261169, 0.31764706969261169], [1, 0.18823529779911041, 0.18823529779911041]],\n blue: [[0, 1, 1], [0.125, 0.9686274528503418, 0.9686274528503418], [0.25, 0.93725490570068359, 0.93725490570068359], [0.375, 0.88235294818878174, 0.88235294818878174], [0.5, 0.83921569585800171, 0.83921569585800171], [0.625, 0.7764706015586853, 0.7764706015586853], [0.75, 0.70980393886566162, 0.70980393886566162], [0.875, 0.61176472902297974, 0.61176472902297974], [1, 0.41960784792900085, 0.41960784792900085]]\n }\n }\n};\n/**\n * Generate linearly spaced vectors\n* http://cens.ioc.ee/local/man/matlab/techdoc/ref/linspace.html\n * @param {Number} a A number representing the first vector\n * @param {Number} b A number representing the second vector\n * @param {Number} n The number of linear spaced vectors to generate\n * @returns {Array} An array of points representing linear spaced vectors.\n * @memberof Colors\n */\n\nfunction linspace(a, b, n) {\n n = n === null ? 100 : n;\n var increment = (b - a) / (n - 1);\n var vector = [];\n\n while (n-- > 0) {\n vector.push(a);\n a += increment;\n } // Make sure the last item will always be \"b\" because most of the\n // Time we'll get numbers like 1.0000000000000002 instead of 1.\n\n\n vector[vector.length - 1] = b;\n return vector;\n}\n/**\n * Returns the \"rank/index\" of the element in a sorted array if found or the highest index if not. Uses (binary search)\n * @param {Array} array A sorted array to search in\n * @param {any} elem the element in the array to search for\n * @returns {number} The rank/index of the element in the given array\n * @memberof Colors\n */\n\n\nfunction getRank(array, elem) {\n var left = 0;\n var right = array.length - 1;\n\n while (left <= right) {\n var mid = left + Math.floor((right - left) / 2);\n var midElem = array[mid];\n\n if (midElem === elem) {\n return mid;\n } else if (elem < midElem) {\n right = mid - 1;\n } else {\n left = mid + 1;\n }\n }\n\n return left;\n}\n/**\n * Find the indices into a sorted array a such that, if the corresponding elements\n * In v were inserted before the indices, the order of a would be preserved.\n * http://lagrange.univ-lyon1.fr/docs/numpy/1.11.0/reference/generated/numpy.searchsorted.html\n * @param {Array} inputArray The array where the values will be inserted\n * @param {Array} values An array of the values to be inserted into the inputArray\n * @returns {Array} The indices where elements should be inserted to maintain order.\n * @memberof Colors\n */\n\n\nfunction searchSorted(inputArray, values) {\n var i;\n var indexes = [];\n var len = values.length;\n inputArray.sort(function (a, b) {\n return a - b;\n });\n\n for (i = 0; i < len; i++) {\n indexes[i] = getRank(inputArray, values[i]);\n }\n\n return indexes;\n}\n/**\n * Creates an *N* -element 1-d lookup table\n * @param {Number} N The number of elements in the result lookup table\n * @param {Array} data represented by a list of x,y0,y1 mapping correspondences. Each element in this\n * List represents how a value between 0 and 1 (inclusive) represented by x is mapped to\n * A corresponding value between 0 and 1 (inclusive). The two values of y are to allow for\n * Discontinuous mapping functions (say as might be found in a sawtooth) where y0 represents\n * The value of y for values of x <= to that given, and y1 is the value to be used for x >\n * Than that given). The list must start with x=0, end with x=1, and all values of x must be\n * In increasing order. Values between the given mapping points are determined by simple linear\n * Interpolation.\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the map.\n * @returns {any[]} an array \"result\" where result[x*(N-1)] gives the closest value for\n * Values of x between 0 and 1.\n * @memberof Colors\n */\n\n\nfunction makeMappingArray(N, data, gamma) {\n var i;\n var x = [];\n var y0 = [];\n var y1 = [];\n var lut = [];\n gamma = gamma === null ? 1 : gamma;\n\n for (i = 0; i < data.length; i++) {\n var element = data[i];\n x.push((N - 1) * element[0]);\n y0.push(element[1]);\n y1.push(element[1]);\n }\n\n var xLinSpace = linspace(0, 1, N);\n\n for (i = 0; i < N; i++) {\n xLinSpace[i] = (N - 1) * Math.pow(xLinSpace[i], gamma);\n }\n\n var xLinSpaceIndexes = searchSorted(x, xLinSpace);\n\n for (i = 1; i < N - 1; i++) {\n var index = xLinSpaceIndexes[i];\n var colorPercent = (xLinSpace[i] - x[index - 1]) / (x[index] - x[index - 1]);\n var colorDelta = y0[index] - y1[index - 1];\n lut[i] = colorPercent * colorDelta + y1[index - 1];\n }\n\n lut[0] = y1[0];\n lut[N - 1] = y0[data.length - 1];\n return lut;\n}\n/**\n * Creates a Colormap based on lookup tables using linear segments.\n * @param {{red:Array, green:Array, blue:Array}} segmentedData An object with a red, green and blue entries.\n * Each entry should be a list of x, y0, y1 tuples, forming rows in a table.\n * @param {Number} N The number of elements in the result Colormap\n * @param {any} gamma value denotes a \"gamma curve\" value which adjusts the brightness\n * at the bottom and top of the Colormap.\n * @returns {Array} The created Colormap object\n * @description The lookup table is generated using linear interpolation for each\n * Primary color, with the 0-1 domain divided into any number of\n * Segments.\n * https://github.com/stefanv/matplotlib/blob/3f1a23755e86fef97d51e30e106195f34425c9e3/lib/matplotlib/colors.py#L663\n * @memberof Colors\n */\n\n\nfunction createLinearSegmentedColormap(segmentedData, N, gamma) {\n var i;\n var lut = [];\n N = N === null ? 256 : N;\n gamma = gamma === null ? 1 : gamma;\n var redLut = makeMappingArray(N, segmentedData.red, gamma);\n var greenLut = makeMappingArray(N, segmentedData.green, gamma);\n var blueLut = makeMappingArray(N, segmentedData.blue, gamma);\n\n for (i = 0; i < N; i++) {\n var red = Math.round(redLut[i] * 255);\n var green = Math.round(greenLut[i] * 255);\n var blue = Math.round(blueLut[i] * 255);\n var rgba = [red, green, blue, 255];\n lut.push(rgba);\n }\n\n return lut;\n}\n/**\n * Return all available colormaps (id and name)\n * @returns {Array<{id,key}>} An array of colormaps with an object containing the \"id\" and display \"name\"\n * @memberof Colors\n */\n\n\nfunction getColormapsList() {\n var colormaps = [];\n var keys = Object.keys(colormapsData);\n keys.forEach(function (key) {\n if (colormapsData.hasOwnProperty(key)) {\n var colormap = colormapsData[key];\n colormaps.push({\n id: key,\n name: colormap.name\n });\n }\n });\n colormaps.sort(function (a, b) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n\n if (aName === bName) {\n return 0;\n }\n\n return aName < bName ? -1 : 1;\n });\n return colormaps;\n}\n/**\n * Return a colorMap object with the provided id and colormapData\n * if the Id matches existent colorMap objects (check colormapsData) the colormapData is ignored.\n * if the colormapData is not empty, the colorMap will be added to the colormapsData list. Otherwise, an empty colorMap object is returned.\n * @param {string} id The ID of the colormap\n * @param {Object} colormapData - An object that can contain a name, numColors, gama, segmentedData and/or colors\n * @returns {*} The Colormap Object\n * @memberof Colors\n*/\n\nfunction getColormap(id, colormapData) {\n var colormap = colormapsData[id];\n\n if (!colormap) {\n colormap = colormapsData[id] = colormapData || {\n name: '',\n colors: []\n };\n }\n\n if (!colormap.colors && colormap.segmentedData) {\n colormap.colors = createLinearSegmentedColormap(colormap.segmentedData, colormap.numColors, colormap.gamma);\n }\n\n return {\n getId: function getId() {\n return id;\n },\n getColorSchemeName: function getColorSchemeName() {\n return colormap.name;\n },\n setColorSchemeName: function setColorSchemeName(name) {\n colormap.name = name;\n },\n getNumberOfColors: function getNumberOfColors() {\n return colormap.colors.length;\n },\n setNumberOfColors: function setNumberOfColors(numColors) {\n while (colormap.colors.length < numColors) {\n colormap.colors.push(COLOR_TRANSPARENT);\n }\n\n colormap.colors.length = numColors;\n },\n getColor: function getColor(index) {\n if (this.isValidIndex(index)) {\n return colormap.colors[index];\n }\n\n return COLOR_TRANSPARENT;\n },\n getColorRepeating: function getColorRepeating(index) {\n var numColors = colormap.colors.length;\n index = numColors ? index % numColors : 0;\n return this.getColor(index);\n },\n setColor: function setColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors[index] = rgba;\n }\n },\n addColor: function addColor(rgba) {\n colormap.colors.push(rgba);\n },\n insertColor: function insertColor(index, rgba) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1, rgba);\n }\n },\n removeColor: function removeColor(index) {\n if (this.isValidIndex(index)) {\n colormap.colors.splice(index, 1);\n }\n },\n clearColors: function clearColors() {\n colormap.colors = [];\n },\n buildLookupTable: function buildLookupTable(lut) {\n if (!lut) {\n return;\n }\n\n var numColors = colormap.colors.length;\n lut.setNumberOfTableValues(numColors);\n\n for (var i = 0; i < numColors; i++) {\n lut.setTableValue(i, colormap.colors[i]);\n }\n },\n createLookupTable: function createLookupTable() {\n var lut = new _lookupTable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.buildLookupTable(lut);\n return lut;\n },\n isValidIndex: function isValidIndex(index) {\n return index >= 0 && index < colormap.colors.length;\n }\n };\n}\n\n/***/ }),\n\n/***/ \"./colors/index.js\":\n/*!*************************!*\\\n !*** ./colors/index.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colormap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colormap.js */ \"./colors/colormap.js\");\n/* harmony import */ var _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lookupTable.js */ \"./colors/lookupTable.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getColormap: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormap\"],\n getColormapsList: _colormap_js__WEBPACK_IMPORTED_MODULE_0__[\"getColormapsList\"],\n LookupTable: _lookupTable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./colors/lookupTable.js\":\n/*!*******************************!*\\\n !*** ./colors/lookupTable.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// This code was created based on vtkLookupTable\n// http://www.vtk.org/doc/release/5.0/html/a01697.html\n// https://github.com/Kitware/VTK/blob/master/Common/Core/vtkLookupTable.cxx\nvar BELOW_RANGE_COLOR_INDEX = 0;\nvar ABOVE_RANGE_COLOR_INDEX = 1;\nvar NAN_COLOR_INDEX = 2;\n/**\n * Converts an HSV (Hue, Saturation, Value) color to RGB (Red, Green, Blue) color value\n * @param {Number} hue A number representing the hue color value\n * @param {any} sat A number representing the saturation color value\n * @param {any} val A number representing the value color value\n * @returns {Numberp[]} An RGB color array\n */\n\nfunction HSVToRGB(hue, sat, val) {\n if (hue > 1) {\n throw new Error('HSVToRGB expects hue < 1');\n }\n\n var rgb = [];\n\n if (sat === 0) {\n rgb[0] = val;\n rgb[1] = val;\n rgb[2] = val;\n return rgb;\n }\n\n var hueCase = Math.floor(hue * 6);\n var frac = 6 * hue - hueCase;\n var lx = val * (1 - sat);\n var ly = val * (1 - sat * frac);\n var lz = val * (1 - sat * (1 - frac));\n\n switch (hueCase) {\n /* 0 p.Range[1]) {\n dIndex = p.MaxIndex + ABOVE_RANGE_COLOR_INDEX + 1.5;\n } else {\n dIndex = (v + p.Shift) * p.Scale;\n }\n\n return Math.floor(dIndex);\n}\n/**\n * Maps scalar values into colors via a lookup table\n * LookupTable is an object that is used by mapper objects to map scalar values into rgba (red-green-blue-alpha transparency) color specification,\n * or rgba into scalar values. The color table can be created by direct insertion of color values, or by specifying hue, saturation, value, and alpha range and generating a table\n */\n\n\nvar LookupTable =\n/*#__PURE__*/\nfunction () {\n /**\n * Creates a default linear LookupTable object with 256 colors.\n */\n function LookupTable() {\n _classCallCheck(this, LookupTable);\n\n this.NumberOfColors = 256;\n this.Ramp = 'linear';\n this.TableRange = [0, 255];\n this.HueRange = [0, 0.66667];\n this.SaturationRange = [1, 1];\n this.ValueRange = [1, 1];\n this.AlphaRange = [1, 1];\n this.NaNColor = [128, 0, 0, 255];\n this.BelowRangeColor = [0, 0, 0, 255];\n this.UseBelowRangeColor = true;\n this.AboveRangeColor = [255, 255, 255, 255];\n this.UseAboveRangeColor = true;\n this.InputRange = [0, 255];\n this.Table = [];\n }\n /**\n * Specify the number of values (i.e., colors) in the lookup table.\n * @param {Number} number The number of colors in he LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n\n _createClass(LookupTable, [{\n key: \"setNumberOfTableValues\",\n value: function setNumberOfTableValues(number) {\n this.NumberOfColors = number;\n }\n /**\n * Set the shape of the table ramp to either 'linear', 'scurve' or 'sqrt'\n * @param {String} ramp A string value representing the shape of the table. Allowed values are 'linear', 'scurve' or 'sqrt'\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRamp\",\n value: function setRamp(ramp) {\n this.Ramp = ramp;\n }\n /**\n * Sets the minimum/maximum scalar values for scalar mapping.\n * Scalar values less than minimum range value are clamped to minimum range value.\n * Scalar values greater than maximum range value are clamped to maximum range value.\n * @param {Number} start A double representing the minimum scaler value of the LookupTable\n * @param {any} end A double representing the maximum scaler value of the LookupTable\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableRange\",\n value: function setTableRange(start, end) {\n this.TableRange[0] = start;\n this.TableRange[1] = end;\n }\n /**\n * Set the range in hue (using automatic generation). Hue ranges between [0,1].\n * @param {Number} start A double representing the minimum hue value in a range. Min. is 0\n * @param {Number} end A double representing the maximum hue value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setHueRange\",\n value: function setHueRange(start, end) {\n this.HueRange[0] = start;\n this.HueRange[1] = end;\n }\n /**\n * Set the range in saturation (using automatic generation). Saturation ranges between [0,1].\n * @param {Number} start A double representing the minimum Saturation value in a range. Min. is 0\n * @param {Number} end A double representing the maximum Saturation value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setSaturationRange\",\n value: function setSaturationRange(start, end) {\n this.SaturationRange[0] = start;\n this.SaturationRange[1] = end;\n }\n /**\n * Set the range in value (using automatic generation). Value ranges between [0,1].\n * @param {Numeber } start A double representing the minimum value in a range. Min. is 0\n * @param {Numeber} end A double representing the maximum value in a range. Max. is 1\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setValueRange\",\n value: function setValueRange(start, end) {\n // Set the range in value (using automatic generation). Value ranges between [0,1].\n this.ValueRange[0] = start;\n this.ValueRange[1] = end;\n }\n /**\n * (Not Used) Sets the range of scalars which will be mapped.\n * @param {Number} start the minimum scalar value in the range\n * @param {Number} end the maximum scalar value in the range\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setRange\",\n value: function setRange(start, end) {\n this.InputRange[0] = start;\n this.InputRange[1] = end;\n }\n /**\n * Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n * @param {Number} start A double representing the minimum alpha value\n * @param {Number} end A double representing the maximum alpha value\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setAlphaRange\",\n value: function setAlphaRange(start, end) {\n // Set the range in alpha (using automatic generation). Alpha ranges from [0,1].\n this.AlphaRange[0] = start;\n this.AlphaRange[1] = end;\n }\n /**\n * Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Number} scalar A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"getColor\",\n value: function getColor(scalar) {\n return this.mapValue(scalar);\n }\n /**\n * Generate lookup table from hue, saturation, value, alpha min/max values. Table is built from linear ramp of each value.\n * @param {Boolean} force true to force the build of the LookupTable. Otherwie, false. This is useful if a lookup table has been defined manually\n * (using SetTableValue) and then an application decides to rebuild the lookup table using the implicit process.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"build\",\n value: function build(force) {\n if (this.Table.length > 1 && !force) {\n return;\n } // Clear the table\n\n\n this.Table = [];\n var maxIndex = this.NumberOfColors - 1;\n var hinc, sinc, vinc, ainc;\n\n if (maxIndex) {\n hinc = (this.HueRange[1] - this.HueRange[0]) / maxIndex;\n sinc = (this.SaturationRange[1] - this.SaturationRange[0]) / maxIndex;\n vinc = (this.ValueRange[1] - this.ValueRange[0]) / maxIndex;\n ainc = (this.AlphaRange[1] - this.AlphaRange[0]) / maxIndex;\n } else {\n hinc = sinc = vinc = ainc = 0.0;\n }\n\n for (var i = 0; i <= maxIndex; i++) {\n var hue = this.HueRange[0] + i * hinc;\n var sat = this.SaturationRange[0] + i * sinc;\n var val = this.ValueRange[0] + i * vinc;\n var alpha = this.AlphaRange[0] + i * ainc;\n var rgb = HSVToRGB(hue, sat, val);\n var c_rgba = [];\n\n switch (this.Ramp) {\n case 'scurve':\n c_rgba[0] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[0]) * Math.PI)));\n c_rgba[1] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[1]) * Math.PI)));\n c_rgba[2] = Math.floor(127.5 * (1.0 + Math.cos((1.0 - rgb[2]) * Math.PI)));\n c_rgba[3] = Math.floor(alpha * 255);\n break;\n\n case 'linear':\n c_rgba[0] = Math.floor(rgb[0] * 255 + 0.5);\n c_rgba[1] = Math.floor(rgb[1] * 255 + 0.5);\n c_rgba[2] = Math.floor(rgb[2] * 255 + 0.5);\n c_rgba[3] = Math.floor(alpha * 255 + 0.5);\n break;\n\n case 'sqrt':\n c_rgba[0] = Math.floor(Math.sqrt(rgb[0]) * 255 + 0.5);\n c_rgba[1] = Math.floor(Math.sqrt(rgb[1]) * 255 + 0.5);\n c_rgba[2] = Math.floor(Math.sqrt(rgb[2]) * 255 + 0.5);\n c_rgba[3] = Math.floor(Math.sqrt(alpha) * 255 + 0.5);\n break;\n\n default:\n throw new Error(\"Invalid Ramp value (\".concat(this.Ramp, \")\"));\n }\n\n this.Table.push(c_rgba);\n }\n\n this.buildSpecialColors();\n }\n /**\n * Ensures the out-of-range colors (Below range and Above range) are set correctly.\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"buildSpecialColors\",\n value: function buildSpecialColors() {\n var numberOfColors = this.NumberOfColors;\n var belowRangeColorIndex = numberOfColors + BELOW_RANGE_COLOR_INDEX;\n var aboveRangeColorIndex = numberOfColors + ABOVE_RANGE_COLOR_INDEX;\n var nanColorIndex = numberOfColors + NAN_COLOR_INDEX; // Below range color\n\n if (this.UseBelowRangeColor || numberOfColors === 0) {\n this.Table[belowRangeColorIndex] = this.BelowRangeColor;\n } else {\n // Duplicate the first color in the table.\n this.Table[belowRangeColorIndex] = this.Table[0];\n } // Above range color\n\n\n if (this.UseAboveRangeColor || numberOfColors === 0) {\n this.Table[aboveRangeColorIndex] = this.AboveRangeColor;\n } else {\n // Duplicate the last color in the table.\n this.Table[aboveRangeColorIndex] = this.Table[numberOfColors - 1];\n } // Always use NanColor\n\n\n this.Table[nanColorIndex] = this.NaNColor;\n }\n /**\n * Similar to GetColor - Map one value through the lookup table and return the color as an\n * RGBA array of doubles between 0 and 1.\n * @param {Numeber} v A double scalar value which will be mapped to a color in the LookupTable\n * @returns {Number[]} An RGBA array of doubles between 0 and 1\n * @memberof Colors\n */\n\n }, {\n key: \"mapValue\",\n value: function mapValue(v) {\n var index = this.getIndex(v);\n\n if (index < 0) {\n return this.NaNColor;\n } else if (index === 0) {\n if (this.UseBelowRangeColor && v < this.TableRange[0]) {\n return this.BelowRangeColor;\n }\n } else if (index === this.NumberOfColors - 1) {\n if (this.UseAboveRangeColor && v > this.TableRange[1]) {\n return this.AboveRangeColor;\n }\n }\n\n return this.Table[index];\n }\n /**\n * Return the table index associated with a particular value.\n * @param {Number} v A double value which table index will be returned.\n * @returns {Number} The index in the LookupTable\n * @memberof Colors\n */\n\n }, {\n key: \"getIndex\",\n value: function getIndex(v) {\n var p = {};\n p.Range = [];\n p.MaxIndex = this.NumberOfColors - 1; // This was LookupShiftAndScale\n\n p.Shift = -this.TableRange[0];\n\n if (this.TableRange[1] <= this.TableRange[0]) {\n p.Scale = Number.MAX_VALUE;\n } else {\n p.Scale = p.MaxIndex / (this.TableRange[1] - this.TableRange[0]);\n }\n\n p.Range[0] = this.TableRange[0];\n p.Range[1] = this.TableRange[1]; // First, check whether we have a number...\n\n if (isNaN(v)) {\n // For backwards compatibility\n return -1;\n } // Map to an index:\n\n\n var index = linearIndexLookupMain(v, p); // For backwards compatibility, if the index indicates an\n // Out-of-range value, truncate to index range for in-range colors.\n\n if (index === this.NumberOfColors + BELOW_RANGE_COLOR_INDEX) {\n index = 0;\n } else if (index === this.NumberOfColors + ABOVE_RANGE_COLOR_INDEX) {\n index = this.NumberOfColors - 1;\n }\n\n return index;\n }\n /**\n * Directly load color into lookup table. Use [0,1] double values for color component specification.\n * Make sure that you've either used the Build() method or used SetNumberOfTableValues() prior to using this method.\n * @param {Number} index The index in the LookupTable of where to insert the color value\n * @param {Number[]} rgba An array of [0,1] double values for an RGBA color component\n * @returns {void}\n * @memberof Colors\n */\n\n }, {\n key: \"setTableValue\",\n value: function setTableValue(index, rgba) {\n // Check if it index, red, green, blue and alpha were passed as parameter\n if (arguments.length === 5) {\n rgba = Array.prototype.slice.call(arguments, 1);\n } // Check the index to make sure it is valid\n\n\n if (index < 0) {\n throw new Error(\"Can't set the table value for negative index (\".concat(index, \")\"));\n }\n\n if (index >= this.NumberOfColors) {\n new Error(\"Index \".concat(index, \" is greater than the number of colors \").concat(this.NumberOfColors));\n }\n\n this.Table[index] = rgba;\n\n if (index === 0 || index === this.NumberOfColors - 1) {\n // This is needed due to the way the special colors are stored in\n // The internal table. If Above/BelowRangeColors are not used and\n // The min/max colors are changed in the table with this member\n // Function, then the colors used for values outside the range may\n // Be incorrect. Calling this here ensures the out-of-range colors\n // Are set correctly.\n this.buildSpecialColors();\n }\n }\n }]);\n\n return LookupTable;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LookupTable);\n\n/***/ }),\n\n/***/ \"./disable.js\":\n/*!********************!*\\\n !*** ./disable.js ***!\n \\********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Disable an HTML element for further use in Cornerstone\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Enable\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n if (element === undefined) {\n throw new Error('disable: element must not be undefined');\n } // Search for this element in this list of enabled elements\n\n\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n // We found it!\n // Fire an event so dependencies can cleanup\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_2__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ELEMENT_DISABLED, eventData); // Remove the child DOM elements that we created (e.g.canvas)\n\n enabledElements[i].element.removeChild(enabledElements[i].canvas);\n enabledElements[i].canvas = undefined; // Remove this element from the list of enabled elements\n\n enabledElements.splice(i, 1);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./displayImage.js\":\n/*!*************************!*\\\n !*** ./displayImage.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n\n/**\n * Sets a new image object for a given element.\n *\n * Will also apply an optional viewport setting.\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @param {Object} [viewport] A set of Cornerstone viewport parameters\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image, viewport) {\n if (element === undefined) {\n throw new Error('displayImage: parameter element must not be undefined');\n }\n\n if (image === undefined) {\n throw new Error('displayImage: parameter image must not be undefined');\n }\n\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldImage = enabledElement.image;\n enabledElement.image = image;\n\n if (enabledElement.layers && enabledElement.layers.length) {\n Object(_layers_js__WEBPACK_IMPORTED_MODULE_4__[\"setLayerImage\"])(element, image);\n }\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n }\n\n var frameRate;\n\n if (enabledElement.lastImageTimeStamp !== undefined) {\n var timeSinceLastImage = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - enabledElement.lastImageTimeStamp;\n frameRate = (1000 / timeSinceLastImage).toFixed();\n }\n\n enabledElement.lastImageTimeStamp = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var newImageEventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n oldImage: oldImage,\n enabledElement: enabledElement,\n frameRate: frameRate\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].NEW_IMAGE, newImageEventData);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./draw.js\":\n/*!*****************!*\\\n !*** ./draw.js ***!\n \\*****************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Immediately draws the enabled element\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('draw: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./drawInvalidated.js\":\n/*!****************************!*\\\n !*** ./drawInvalidated.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/**\n * This module is responsible for drawing invalidated enabled elements\n */\n\n\n/**\n * Draws all invalidated enabled elements and clears the invalid flag after drawing it\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElements\"])();\n\n for (var i = 0; i < enabledElements.length; i++) {\n var ee = enabledElements[i];\n\n if (ee.invalid === true) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ee, true);\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./enable.js\":\n/*!*******************!*\\\n !*** ./enable.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _generateUUID_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./generateUUID.js */ \"./generateUUID.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/getCanvas.js */ \"./internal/getCanvas.js\");\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Enable\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n */\n\n/**\r\n * Returns whether or not an Enabled Element has either a currently active image or\r\n * a non-empty Array of Enabled Element Layers.\r\n *\r\n * @param {EnabledElement} enabledElement An Enabled Element\r\n * @return {Boolean} Whether or not the Enabled Element has an active image or valid set of layers\r\n * @memberof Enable\r\n */\n\nfunction hasImageOrLayers(enabledElement) {\n return enabledElement.image !== undefined || enabledElement.layers.length > 0;\n}\n/**\r\n * Enable an HTML Element for use in Cornerstone\r\n *\r\n * - If there is a Canvas already present within the HTMLElement, and it has the class\r\n * 'cornerstone-canvas', this function will use this existing Canvas instead of creating\r\n * a new one. This may be helpful when using libraries (e.g. React, Vue) which don't\r\n * want third parties to change the DOM.\r\n *\r\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\r\n * @param {Object} options Options for the enabledElement\r\n *\r\n * @return {void}\r\n * @memberof Enable\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, options) {\n if (element === undefined) {\n throw new Error('enable: parameter element cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var canvas = Object(_internal_getCanvas_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element);\n var enabledElement = {\n element: element,\n canvas: canvas,\n image: undefined,\n // Will be set once image is loaded\n invalid: false,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n uuid: Object(_generateUUID_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])()\n };\n Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"addEnabledElement\"])(enabledElement);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_7__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ELEMENT_ENABLED, enabledElement);\n Object(_resize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, true);\n /**\r\n * Draw the image immediately\r\n *\r\n * @param {DOMHighResTimeStamp} timestamp The current time for when requestAnimationFrame starts to fire callbacks\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n function draw(timestamp) {\n if (enabledElement.canvas === undefined) {\n return;\n }\n\n var eventDetails = {\n enabledElement: enabledElement,\n timestamp: timestamp\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement.element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].PRE_RENDER, eventDetails);\n\n if (enabledElement.needsRedraw && hasImageOrLayers(enabledElement)) {\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, enabledElement.invalid);\n }\n\n Object(_internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(draw);\n }\n\n draw();\n});\n\n/***/ }),\n\n/***/ \"./enabledElementData.js\":\n/*!*******************************!*\\\n !*** ./enabledElementData.js ***!\n \\*******************************/\n/*! exports provided: getElementData, removeElementData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return getElementData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return removeElementData; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n * @returns {*} Whatever data is stored for this enabled element\n */\n\nfunction getElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (ee.data.hasOwnProperty(dataType) === false) {\n ee.data[dataType] = {};\n }\n\n return ee.data[dataType];\n}\n/**\n * Clears any data for a Cornerstone enabledElement for a specific string\n * dataType\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {string} dataType A string name for an arbitrary set of data\n *\n * @returns {void}\n */\n\nfunction removeElementData(element, dataType) {\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n delete ee.data[dataType];\n}\n\n/***/ }),\n\n/***/ \"./enabledElements.js\":\n/*!****************************!*\\\n !*** ./enabledElements.js ***!\n \\****************************/\n/*! exports provided: getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return getEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return addEnabledElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return getEnabledElementsByImageId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return getEnabledElements; });\nvar enabledElements = [];\n/**\n * @module EnabledElements\n */\n\n/**\n * @module Objects\n */\n\n/**\n * A two-dimensional vector\n *\n * @typedef {Object} vec2\n * @memberof Objects\n * @param {Number} x - The x distance\n * @param {Number} y - The y distance\n */\n\n/**\n * VOI\n *\n * @typedef {Object} VOI\n * @memberof Objects\n * @param {Number} windowWidth - Window Width for display\n * @param {Number} windowCenter - Window Center for display\n */\n\n/**\n * Lookup Table Array\n *\n * @typedef {Object} LUT\n * @memberof Objects\n * @property {Number} firstValueMapped\n * @property {Number} numBitsPerEntry\n * @property {Array} lut\n */\n\n/**\n * Image Statistics Object\n *\n * @typedef {Object} ImageStats\n * @memberof Objects\n * @property {Number} [lastGetPixelDataTime] The time in ms taken to retrieve stored pixels required to draw the image\n * @property {Number} [lastStoredPixelDataToCanvasImageDataTime] The time in ms taken to map from stored pixel array to canvas pixel array\n * @property {Number} [lastPutImageDataTime] The time in ms taken for putImageData to put the canvas pixel data into the canvas context\n * @property {Number} [lastRenderTime] The total time in ms taken for the entire rendering function to run\n * @property {Number} [lastLutGenerateTime] The time in ms taken to generate the lookup table for the image\n */\n\n/**\n * An Image Object in Cornerstone\n *\n * @typedef {Object} Image\n * @memberof Objects\n * @property {string} imageId - The imageId associated with this image object\n * @property {Number} minPixelValue - the minimum stored pixel value in the image\n * @property {Number} maxPixelValue - the maximum stored pixel value in the image\n * @property {Number} slope - the rescale slope to convert stored pixel values to modality pixel values or 1 if not specified\n * @property {Number} intercept - the rescale intercept used to convert stored pixel values to modality values or 0 if not specified\n * @property {Number} windowCenter - the default windowCenter to apply to the image\n * @property {Number} windowWidth - the default windowWidth to apply to the image\n * @property {function} getPixelData - a function that returns the underlying pixel data. An array of integers for grayscale and an array of RGBA for color\n * @property {function} getImageData - a function that returns a canvas imageData object for the image. This is only needed for color images\n * @property {function} getCanvas - a function that returns a canvas element with the image loaded into it. This is only needed for color images.\n * @property {function} getImage - a function that returns a JavaScript Image object with the image data. This is optional and typically used for images encoded in standard web JPEG and PNG formats\n * @property {Number} rows - number of rows in the image. This is the same as height but duplicated for convenience\n * @property {Number} columns - number of columns in the image. This is the same as width but duplicated for convenience\n * @property {Number} height - the height of the image. This is the same as rows but duplicated for convenience\n * @property {Number} width - the width of the image. This is the same as columns but duplicated for convenience\n * @property {Boolean} color - true if pixel data is RGB, false if grayscale\n * @property {Object} lut - The Lookup Table\n * @property {Boolean} rgba - Is the color pixel data stored in RGBA?\n * @property {Number} columnPixelSpacing - horizontal distance between the middle of each pixel (or width of each pixel) in mm or undefined if not known\n * @property {Number} rowPixelSpacing - vertical distance between the middle of each pixel (or height of each pixel) in mm or undefined if not known\n * @property {Boolean} invert - true if the the image should initially be displayed be inverted, false if not. This is here mainly to support DICOM images with a photometric interpretation of MONOCHROME1\n * @property {Number} sizeInBytes - the number of bytes used to store the pixels for this image.\n * @property {Boolean} [falseColor=false] - Whether or not the image has undergone false color mapping\n * @property {Array} [origPixelData] - Original pixel data for an image after it has undergone false color mapping\n * @property {ImageStats} [stats] - Statistics for the last redraw of the image\n * @property {Object} cachedLut - Cached Lookup Table for this image.\n * @property {String|Colormap} [colormap] - Depreacted. Use viewport.colormap instead. an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * A Viewport Settings Object Cornerstone\n *\n * @typedef {Object} Viewport\n * @memberof Objects\n * @property {Number} [scale=1.0] - The scale applied to the image. A scale of 1.0 will display no zoom (one image pixel takes up one screen pixel). A scale of 2.0 will be double zoom and a scale of .5 will be zoomed out by 2x\n * @property {vec2} [translation] - An object with properties x and y which describe the translation to apply in the pixel coordinate system. Note that the image is initially displayed centered in the enabled element with a x and y translation of 0 and 0 respectively.\n * @property {VOI} [voi] - an object with properties windowWidth and windowCenter.\n * @property {boolean} [invert=false] - Whether or not the image is inverted.\n * @property {boolean} [pixelReplication=false] - true if the image smooth / interpolation should be used when zoomed in on the image or false if pixel replication should be used.\n * @property {boolean} [hflip=false] - true if the image is flipped horizontally. Default is false\n * @property {boolean} [vflip=false] - true if the image is flipped vertically. Default is false\n * @property {Number} [rotation=0] - the rotation of the image (90 degree increments). Default is 0\n * @property {LUT} [modalityLUT] - the modality LUT to apply or undefined if none\n * @property {LUT} [voiLUT] - the modality LUT to apply or undefined if none\n * @property {String|Colormap} [colormap] - an optional colormap ID or colormap object (from colors/colormap.js). This will be applied during rendering to convert the image to pseudocolor\n * @property {Boolean} [labelmap=false] - whether or not to render this image as a label map (i.e. skip modality and VOI LUT pipelines and use only a color lookup table)\n */\n\n/**\n * An Enabled Element in Cornerstone\n *\n * @typedef {Object} EnabledElement\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n * @property {EnabledElementLayer[]} [layers] - The layers that have been added to the enabledElement\n * @property {Boolean} [syncViewports] - Whether or not to synchronize the viewport parameters\n * for each of the enabled element's layers\n * @property {Boolean} [lastSyncViewportsState] - The previous state for the sync viewport boolean\n */\n\n/**\n * An Enabled Element Layer in Cornerstone\n *\n * @typedef {Object} EnabledElementLayer\n * @memberof Objects\n * @property {HTMLElement} element - The DOM element which has been enabled for use by Cornerstone\n * @property {Image} [image] - The image currently displayed in the enabledElement\n * @property {Viewport} [viewport] - The current viewport settings of the enabledElement\n * @property {HTMLCanvasElement} [canvas] - The current canvas for this enabledElement\n * @property {Object} [options] - Layer drawing options\n * @property {Boolean} invalid - Whether or not the image pixel data underlying the enabledElement has been changed, necessitating a redraw\n * @property {Boolean} needsRedraw - A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\n */\n\n/**\n * An Image Load Object\n *\n * @typedef {Object} ImageLoadObject\n * @memberof Objects\n * @property {Promise} promise - The Promise tracking the loading of this image\n * @property {Function|undefined} cancelFn - A function to cancel the image load request\n */\n\n/**\n * Retrieves a Cornerstone Enabled Element object\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n *\n * @returns {EnabledElement} A Cornerstone Enabled Element\n * @memberof EnabledElements\n */\n\nfunction getEnabledElement(element) {\n if (element === undefined) {\n throw new Error('getEnabledElement: parameter element must not be undefined');\n }\n\n for (var i = 0; i < enabledElements.length; i++) {\n if (enabledElements[i].element === element) {\n return enabledElements[i];\n }\n }\n\n throw new Error('element not enabled');\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {EnabledElement} enabledElement A Cornerstone enabledElement Object\n * @returns {void}\n * @memberof EnabledElements\n */\n\nfunction addEnabledElement(enabledElement) {\n if (enabledElement === undefined) {\n throw new Error('getEnabledElement: enabledElement element must not be undefined');\n }\n\n enabledElements.push(enabledElement);\n}\n/**\n * Adds a Cornerstone Enabled Element object to the central store of enabledElements\n *\n * @param {string} imageId A Cornerstone Image ID\n * @returns {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElementsByImageId(imageId) {\n var ees = [];\n enabledElements.forEach(function (enabledElement) {\n if (enabledElement.image && enabledElement.image.imageId === imageId) {\n ees.push(enabledElement);\n }\n });\n return ees;\n}\n/**\n * Retrieve all of the currently enabled Cornerstone elements\n *\n * @return {EnabledElement[]} An Array of Cornerstone enabledElement Objects\n * @memberof EnabledElements\n */\n\nfunction getEnabledElements() {\n return enabledElements;\n}\n\n/***/ }),\n\n/***/ \"./events.js\":\n/*!*******************!*\\\n !*** ./events.js ***!\n \\*******************/\n/*! exports provided: default, events */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return events; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar EVENTS = {\n NEW_IMAGE: 'cornerstonenewimage',\n INVALIDATED: 'cornerstoneinvalidated',\n PRE_RENDER: 'cornerstoneprerender',\n IMAGE_CACHE_MAXIMUM_SIZE_CHANGED: 'cornerstoneimagecachemaximumsizechanged',\n IMAGE_CACHE_PROMISE_REMOVED: 'cornerstoneimagecachepromiseremoved',\n IMAGE_CACHE_FULL: 'cornerstoneimagecachefull',\n IMAGE_CACHE_CHANGED: 'cornerstoneimagecachechanged',\n WEBGL_TEXTURE_REMOVED: 'cornerstonewebgltextureremoved',\n WEBGL_TEXTURE_CACHE_FULL: 'cornerstonewebgltexturecachefull',\n IMAGE_LOADED: 'cornerstoneimageloaded',\n IMAGE_LOAD_FAILED: 'cornerstoneimageloadfailed',\n ELEMENT_RESIZED: 'cornerstoneelementresized',\n IMAGE_RENDERED: 'cornerstoneimagerendered',\n LAYER_ADDED: 'cornerstonelayeradded',\n LAYER_REMOVED: 'cornerstonelayerremoved',\n ACTIVE_LAYER_CHANGED: 'cornerstoneactivelayerchanged',\n ELEMENT_DISABLED: 'cornerstoneelementdisabled',\n ELEMENT_ENABLED: 'cornerstoneelementenabled'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EVENTS);\n/**\n * EventTarget - Provides the [EventTarget](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) interface\n *\n * @class\n * @memberof Polyfills\n */\n\nvar EventTarget =\n/*#__PURE__*/\nfunction () {\n function EventTarget() {\n _classCallCheck(this, EventTarget);\n\n this.listeners = {};\n this.namespaces = {};\n }\n\n _createClass(EventTarget, [{\n key: \"addEventNamespaceListener\",\n value: function addEventNamespaceListener(type, callback) {\n if (type.indexOf('.') <= 0) {\n return;\n }\n\n this.namespaces[type] = callback;\n this.addEventListener(type.split('.')[0], callback);\n }\n }, {\n key: \"removeEventNamespaceListener\",\n value: function removeEventNamespaceListener(type) {\n if (type.indexOf('.') <= 0 || !this.namespaces[type]) {\n return;\n }\n\n this.removeEventListener(type.split('.')[0], this.namespaces[type]);\n delete this.namespaces[type];\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.addEventNamespaceListener(type, callback);\n return;\n }\n\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(callback);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n // Check if it is an event namespace\n if (type.indexOf('.') > 0) {\n this.removeEventNamespaceListener(type);\n return;\n }\n\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n\n var stack = this.listeners[event.type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return EventTarget;\n}();\n\nvar events = new EventTarget();\n\n/***/ }),\n\n/***/ \"./falseColorMapping.js\":\n/*!******************************!*\\\n !*** ./falseColorMapping.js ***!\n \\******************************/\n/*! exports provided: convertImageToFalseColorImage, convertToFalseColorImage, restoreImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return convertImageToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return convertToFalseColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return restoreImage; });\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony import */ var _colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colors/colormap.js */ \"./colors/colormap.js\");\n\n\n\n/**\n * Retrieves the minimum and maximum pixel values from an Array of pixel data\n *\n * @param {Array} pixelData The input pixel data array\n *\n * @returns {{minPixelValue: Number, maxPixelValue: Number}} The minimum and maximum pixel values in the input Array\n */\n\nfunction getPixelValues(pixelData) {\n var minPixelValue = Number.MAX_VALUE;\n var maxPixelValue = Number.MIN_VALUE;\n var len = pixelData.length;\n var pixel;\n\n for (var i = 0; i < len; i++) {\n pixel = pixelData[i];\n minPixelValue = minPixelValue < pixel ? minPixelValue : pixel;\n maxPixelValue = maxPixelValue > pixel ? maxPixelValue : pixel;\n }\n\n return {\n minPixelValue: minPixelValue,\n maxPixelValue: maxPixelValue\n };\n}\n/**\n * Retrieve a function that will allow an image object to be reset to its original form\n * after a false color mapping transformation\n *\n * @param {Image} image A Cornerstone Image Object\n *\n * @return {Function} A function for resetting an Image Object to its original form\n */\n\n\nfunction getRestoreImageMethod(image) {\n if (image.restore) {\n return image.restore;\n }\n\n var color = image.color;\n var rgba = image.rgba;\n var cachedLut = image.cachedLut;\n var slope = image.slope;\n var windowWidth = image.windowWidth;\n var windowCenter = image.windowCenter;\n var minPixelValue = image.minPixelValue;\n var maxPixelValue = image.maxPixelValue;\n return function () {\n image.color = color;\n image.rgba = rgba;\n image.cachedLut = cachedLut;\n image.slope = slope;\n image.windowWidth = windowWidth;\n image.windowCenter = windowCenter;\n image.minPixelValue = minPixelValue;\n image.maxPixelValue = maxPixelValue;\n\n if (image.origPixelData) {\n var pixelData = image.origPixelData;\n\n image.getPixelData = function () {\n return pixelData;\n };\n } // Remove some attributes added by false color mapping\n\n\n image.origPixelData = undefined;\n image.colormapId = undefined;\n image.falseColor = undefined;\n };\n} //\n// Then we need to make sure it will be converted into a colormap object if it's as string.\n\n/**\n * User can pass a colormap or its id as string to some of these public functions.\n * Then we need to make sure it will be converted into a colormap object if it's a string.\n *\n * @param {*} colormap A colormap ID or Object\n * @return {*} The colormap\n */\n\n\nfunction ensuresColormap(colormap) {\n if (colormap && typeof colormap === 'string') {\n colormap = Object(_colors_colormap_js__WEBPACK_IMPORTED_MODULE_2__[\"getColormap\"])(colormap);\n }\n\n return colormap;\n}\n/**\n * Restores a false color image to its original version\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Boolean} True if the image object had a valid restore function, which was run. Otherwise, false.\n */\n\n\nfunction restoreImage(image) {\n if (image.restore && typeof image.restore === 'function') {\n image.restore();\n return true;\n }\n\n return false;\n}\n/**\n * Convert an image to a false color image\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {String|Object} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {Boolean} - Whether or not the image has been converted to a false color image\n */\n\n\nfunction convertImageToFalseColorImage(image, colormap) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n } // User can pass a colormap id or a colormap object\n\n\n colormap = ensuresColormap(colormap);\n var colormapId = colormap.getId(); // Doesn't do anything if colormapId hasn't changed\n\n if (image.colormapId === colormapId) {\n // It has already being converted into a false color image\n // Using the colormapId passed as parameter\n return false;\n } // Restore the image attributes updated when converting to a false color image\n\n\n restoreImage(image); // Convert the image to a false color image\n\n if (colormapId) {\n var minPixelValue = image.minPixelValue || 0;\n var maxPixelValue = image.maxPixelValue || 255;\n image.restore = getRestoreImageMethod(image);\n var lookupTable = colormap.createLookupTable();\n lookupTable.setTableRange(minPixelValue, maxPixelValue); // Update the pixel data and render the new image\n\n Object(_pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lookupTable); // Update min and max pixel values\n\n var pixelValues = getPixelValues(image.getPixelData());\n image.minPixelValue = pixelValues.minPixelValue;\n image.maxPixelValue = pixelValues.maxPixelValue;\n image.windowWidth = 255;\n image.windowCenter = 128; // Cache the last colormapId used for performance\n // Then it doesn't need to be re-rendered on next\n // Time if the user hasn't updated it\n\n image.colormapId = colormapId;\n } // Return `true` to tell the caller that the image has got updated\n\n\n return true;\n}\n/**\n * Convert the image of a element to a false color image\n *\n * @param {HTMLElement} element The Cornerstone element\n * @param {*} colormap - it can be a colormap object or a colormap id (string)\n *\n * @returns {void}\n */\n\n\nfunction convertToFalseColorImage(element, colormap) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return convertImageToFalseColorImage(enabledElement.image, colormap);\n}\n\n\n\n/***/ }),\n\n/***/ \"./fitToWindow.js\":\n/*!************************!*\\\n !*** ./fitToWindow.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n\n\n/**\n * Adjusts an image's scale and translation so the image is centered and all pixels\n * in the image are viewable.\n *\n * @param {HTMLElement} element The Cornerstone element to update\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var image = enabledElement.image; // The new scale is the minimum of the horizontal and vertical scale values\n\n enabledElement.viewport.scale = Object(_internal_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image, enabledElement.viewport.rotation).scaleFactor;\n enabledElement.viewport.translation.x = 0;\n enabledElement.viewport.translation.y = 0;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./generateUUID.js\":\n/*!*************************!*\\\n !*** ./generateUUID.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n* Generates a UUID for the enabledElement.\n*\n* @return {String} the UUID.\n*/\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n // https://stackoverflow.com/a/8809472/9208320 Public Domain/MIT\n\n /* eslint no-bitwise: [\"error\", { \"allow\": [\"&\",\"|\"] }] */\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // Use high-precision timer if available\n }\n\n return 'x.x.x.x.x.x.xxxx.xxx.x.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n});\n\n/***/ }),\n\n/***/ \"./getDefaultViewportForImage.js\":\n/*!***************************************!*\\\n !*** ./getDefaultViewportForImage.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n\n\n/**\n * Returns a default viewport for display the specified image on the specified\n * enabled element. The default viewport is fit to window\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image Object\n *\n * @returns {Viewport} The default viewport for the image\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, image) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, image);\n});\n\n/***/ }),\n\n/***/ \"./getImage.js\":\n/*!*********************!*\\\n !*** ./getImage.js ***!\n \\*********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Returns the currently displayed image for an element or undefined if no image has\n * been displayed yet\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Image} The Cornerstone Image Object displayed in this element\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n return enabledElement.image;\n});\n\n/***/ }),\n\n/***/ \"./getPixels.js\":\n/*!**********************!*\\\n !*** ./getPixels.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony import */ var _internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n\n\n\n/**\n * Retrieves an array of pixels from a rectangular region with modality LUT transformation applied\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The modality pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n var storedPixels = Object(_getStoredPixels_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, x, y, width, height);\n var ee = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var mlutfn = Object(_internal_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ee.image.slope, ee.image.intercept, ee.viewport.modalityLUT);\n return storedPixels.map(mlutfn);\n});\n\n/***/ }),\n\n/***/ \"./getStoredPixels.js\":\n/*!****************************!*\\\n !*** ./getStoredPixels.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves an array of stored pixel values from a rectangular region of an image\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Number} x The x coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} y The y coordinate of the top left corner of the sampling rectangle in image coordinates\n * @param {Number} width The width of the of the sampling rectangle in image coordinates\n * @param {Number} height The height of the of the sampling rectangle in image coordinates\n * @returns {Array} The stored pixel value of the pixels in the sampling rectangle\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, x, y, width, height) {\n if (element === undefined) {\n throw new Error('getStoredPixels: parameter element must not be undefined');\n }\n\n x = Math.round(x);\n y = Math.round(y);\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var storedPixels = [];\n var index = 0;\n var pixelData = enabledElement.image.getPixelData();\n\n for (var row = 0; row < height; row++) {\n for (var column = 0; column < width; column++) {\n var spIndex = (row + y) * enabledElement.image.columns + (column + x);\n storedPixels[index++] = pixelData[spIndex];\n }\n }\n\n return storedPixels;\n});\n\n/***/ }),\n\n/***/ \"./getViewport.js\":\n/*!************************!*\\\n !*** ./getViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n\n/**\n * Retrieves the viewport for the specified enabled element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @returns {Viewport|undefined} The Cornerstone Viewport settings for this element, if they exist. Otherwise, undefined\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var viewport = enabledElement.viewport;\n\n if (viewport === undefined) {\n return;\n } // Return a copy of the viewport\n\n\n return Object.assign({}, viewport);\n});\n\n/***/ }),\n\n/***/ \"./imageCache.js\":\n/*!***********************!*\\\n !*** ./imageCache.js ***!\n \\***********************/\n/*! exports provided: cachedImages, setMaximumSizeBytes, putImageLoadObject, getImageLoadObject, removeImageLoadObject, getCacheInfo, purgeCache, changeImageIdCacheSize, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cachedImages\", function() { return cachedImages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMaximumSizeBytes\", function() { return setMaximumSizeBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"putImageLoadObject\", function() { return putImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageLoadObject\", function() { return getImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeImageLoadObject\", function() { return removeImageLoadObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCacheInfo\", function() { return getCacheInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeCache\", function() { return purgeCache; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeImageIdCacheSize\", function() { return changeImageIdCacheSize; });\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\n * This module deals with caching images\n * @module ImageCache\n */\n\nvar maximumSizeInBytes = 1024 * 1024 * 1024; // 1 GB\n\nvar cacheSizeInBytes = 0; // Dictionary of imageId to cachedImage objects\n\nvar imageCacheDict = {}; // Array of cachedImage objects\n\nvar cachedImages = [];\n/** Sets the maximum size of cache and purges cache contents if necessary.\n *\n * @param {number} numBytes The maximun size that the cache should occupy.\n * @returns {void}\n */\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_MAXIMUM_SIZE_CHANGED);\n purgeCacheIfNecessary();\n}\n/**\n * Purges the cache if size exceeds maximum\n * @returns {void}\n */\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary)\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n var imageId = lastCachedImage.imageId;\n removeImageLoadObject(imageId);\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_PROMISE_REMOVED, {\n imageId: imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_FULL, cacheInfo);\n}\n/**\n * Puts a new image loader into the cache\n *\n * @param {string} imageId ImageId of the image loader\n * @param {Object} imageLoadObject The object that is loading or loaded the image\n * @returns {void}\n */\n\n\nfunction putImageLoadObject(imageId, imageLoadObject) {\n if (imageId === undefined) {\n throw new Error('putImageLoadObject: imageId must not be undefined');\n }\n\n if (imageLoadObject.promise === undefined) {\n throw new Error('putImageLoadObject: imageLoadObject.promise must not be undefined');\n }\n\n if (imageCacheDict.hasOwnProperty(imageId) === true) {\n throw new Error('putImageLoadObject: imageId already in cache');\n }\n\n if (imageLoadObject.cancelFn && typeof imageLoadObject.cancelFn !== 'function') {\n throw new Error('putImageLoadObject: imageLoadObject.cancelFn must be a function');\n }\n\n var cachedImage = {\n loaded: false,\n imageId: imageId,\n sharedCacheKey: undefined,\n // The sharedCacheKey for this imageId. undefined by default\n imageLoadObject: imageLoadObject,\n timeStamp: Date.now(),\n sizeInBytes: 0\n };\n imageCacheDict[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n imageLoadObject.promise.then(function (image) {\n if (cachedImages.indexOf(cachedImage) === -1) {\n // If the image has been purged before being loaded, we stop here.\n return;\n }\n\n cachedImage.loaded = true;\n cachedImage.image = image;\n\n if (image.sizeInBytes === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes must not be undefined');\n }\n\n if (image.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageLoadObject: image.sizeInBytes is not a number');\n }\n\n cachedImage.sizeInBytes = image.sizeInBytes;\n cacheSizeInBytes += cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'addImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n cachedImage.sharedCacheKey = image.sharedCacheKey;\n purgeCacheIfNecessary();\n }, function () {\n var cachedImage = imageCacheDict[imageId];\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n delete imageCacheDict[imageId];\n });\n}\n/**\n * Retuns the object that is loading a given imageId\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction getImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = Date.now();\n return cachedImage.imageLoadObject;\n}\n/**\n * Removes the image loader associated with a given Id from the cache\n *\n * @param {string} imageId Image ID\n * @returns {void}\n */\n\nfunction removeImageLoadObject(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageLoadObject: imageId must not be undefined');\n }\n\n var cachedImage = imageCacheDict[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageLoadObject: imageId was not present in imageCache');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n var eventDetails = {\n action: 'deleteImage',\n image: cachedImage\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n decache(cachedImage.imageLoadObject);\n delete imageCacheDict[imageId];\n}\n/**\n * @typedef {Object} CacheInformation\n * @property {number} maximumSizeInBytes The maximum size of the cache in bytes\n * @property {number} cacheSizeInBytes Currently occupied space in the cache in bytes\n * @property {number} numberOfImagesCached Number of ImageLoaders in the cache\n * @returns {void}\n */\n\n/**\n * Gets the current state of the cache\n * @returns {void}\n */\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n} // This method should only be called by `removeImageLoadObject` because it's\n// The one that knows how to deal with shared cache keys and cache size.\n\n/**\n * INTERNAL: Removes and ImageLoader from the cache\n *\n * @param {Object} imageLoadObject Image Loader Object to remove\n * @returns {void}\n */\n\nfunction decache(imageLoadObject) {\n imageLoadObject.promise.then(function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n }, function () {\n if (imageLoadObject.decache) {\n imageLoadObject.decache();\n }\n });\n}\n/**\n * Removes all images from cache\n * @returns {void}\n */\n\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages[0];\n removeImageLoadObject(removedCachedImage.imageId);\n }\n}\n/**\n * Updates the space than an image is using in the cache\n *\n * @param {string} imageId Image ID\n * @param {number} newCacheSize New image size\n * @returns {void}\n */\n\nfunction changeImageIdCacheSize(imageId, newCacheSize) {\n var cacheEntry = imageCacheDict[imageId];\n\n if (cacheEntry) {\n cacheEntry.imageLoadObject.promise.then(function (image) {\n var cacheSizeDifference = newCacheSize - image.sizeInBytes;\n image.sizeInBytes = newCacheSize;\n cacheEntry.sizeInBytes = newCacheSize;\n cacheSizeInBytes += cacheSizeDifference;\n var eventDetails = {\n action: 'changeImageSize',\n image: image\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].IMAGE_CACHE_CHANGED, eventDetails);\n });\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n imageCache: imageCacheDict,\n cachedImages: cachedImages,\n setMaximumSizeBytes: setMaximumSizeBytes,\n putImageLoadObject: putImageLoadObject,\n getImageLoadObject: getImageLoadObject,\n removeImageLoadObject: removeImageLoadObject,\n getCacheInfo: getCacheInfo,\n purgeCache: purgeCache,\n changeImageIdCacheSize: changeImageIdCacheSize\n});\n\n/***/ }),\n\n/***/ \"./imageLoader.js\":\n/*!************************!*\\\n !*** ./imageLoader.js ***!\n \\************************/\n/*! exports provided: loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return loadImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return loadAndCacheImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return registerImageLoader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return registerUnknownImageLoader; });\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n\n\n\n/**\r\n * This module deals with ImageLoaders, loading images and caching images\r\n * @module ImageLoader\r\n */\n\nvar imageLoaders = {};\nvar unknownImageLoader;\n/**\r\n * Load an image using a registered Cornerstone Image Loader.\r\n *\r\n * The image loader that is used will be\r\n * determined by the image loader scheme matching against the imageId.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\nfunction loadImageFromImageLoader(imageId, options) {\n var colonIndex = imageId.indexOf(':');\n var scheme = imageId.substring(0, colonIndex);\n var loader = imageLoaders[scheme];\n\n if (loader === undefined || loader === null) {\n if (unknownImageLoader !== undefined) {\n return unknownImageLoader(imageId);\n }\n\n throw new Error('loadImageFromImageLoader: no image loader for imageId');\n }\n\n var imageLoadObject = loader(imageId, options); // Broadcast an image loaded event once the image is loaded\n\n imageLoadObject.promise.then(function (image) {\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOADED, {\n image: image\n });\n }, function (error) {\n var errorObject = {\n imageId: imageId,\n error: error\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_1__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].IMAGE_LOAD_FAILED, errorObject);\n });\n return imageLoadObject;\n}\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The loaded image is not stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} An Object which can be used to act after an image is loaded or loading fails\r\n * @memberof ImageLoader\r\n */\n\n\nfunction loadImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n return loadImageFromImageLoader(imageId, options).promise;\n} //\n\n/**\r\n * Loads an image given an imageId and optional priority and returns a promise which will resolve to\r\n * the loaded image object or fail if an error occurred. The image is stored in the cache.\r\n *\r\n * @param {String} imageId A Cornerstone Image Object's imageId\r\n * @param {Object} [options] Options to be passed to the Image Loader\r\n *\r\n * @returns {ImageLoadObject} Image Loader Object\r\n * @memberof ImageLoader\r\n */\n\nfunction loadAndCacheImage(imageId, options) {\n if (imageId === undefined) {\n throw new Error('loadAndCacheImage: parameter imageId must not be undefined');\n }\n\n var imageLoadObject = Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"getImageLoadObject\"])(imageId);\n\n if (imageLoadObject !== undefined) {\n return imageLoadObject.promise;\n }\n\n imageLoadObject = loadImageFromImageLoader(imageId, options);\n Object(_imageCache_js__WEBPACK_IMPORTED_MODULE_0__[\"putImageLoadObject\"])(imageId, imageLoadObject);\n return imageLoadObject.promise;\n}\n/**\r\n * Registers an imageLoader plugin with cornerstone for the specified scheme\r\n *\r\n * @param {String} scheme The scheme to use for this image loader (e.g. 'dicomweb', 'wadouri', 'http')\r\n * @param {Function} imageLoader A Cornerstone Image Loader function\r\n * @returns {void}\r\n * @memberof ImageLoader\r\n */\n\nfunction registerImageLoader(scheme, imageLoader) {\n imageLoaders[scheme] = imageLoader;\n}\n/**\r\n * Registers a new unknownImageLoader and returns the previous one\r\n *\r\n * @param {Function} imageLoader A Cornerstone Image Loader\r\n *\r\n * @returns {Function|Undefined} The previous Unknown Image Loader\r\n * @memberof ImageLoader\r\n */\n\nfunction registerUnknownImageLoader(imageLoader) {\n var oldImageLoader = unknownImageLoader;\n unknownImageLoader = imageLoader;\n return oldImageLoader;\n}\n\n/***/ }),\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! exports provided: drawImage, generateLut, getDefaultViewport, requestAnimationFrame, storedPixelDataToCanvasImageData, storedColorPixelDataToCanvasImageData, storedPixelDataToCanvasImageDataColorLUT, storedPixelDataToCanvasImageDataPseudocolorLUT, internal, renderLabelMapImage, renderPseudoColorImage, renderColorImage, renderGrayscaleImage, renderWebImage, renderToCanvas, canvasToPixel, disable, displayImage, draw, drawInvalidated, enable, getElementData, removeElementData, getEnabledElement, addEnabledElement, getEnabledElementsByImageId, getEnabledElements, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, getActiveLayer, purgeLayers, setLayerImage, fitToWindow, getDefaultViewportForImage, getImage, getPixels, getStoredPixels, getViewport, loadImage, loadAndCacheImage, registerImageLoader, registerUnknownImageLoader, invalidate, invalidateImageId, pageToPixel, pixelToCanvas, reset, resize, setToPixelCoordinateSystem, setViewport, updateImage, pixelDataToFalseColorData, rendering, imageCache, metaData, webGL, colors, convertImageToFalseColorImage, convertToFalseColorImage, restoreImage, EVENTS, events, triggerEvent, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawImage\", function() { return _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/generateLut.js */ \"./internal/generateLut.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateLut\", function() { return _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewport\", function() { return _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageData\", function() { return _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedColorPixelDataToCanvasImageData\", function() { return _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataColorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"storedPixelDataToCanvasImageDataPseudocolorLUT\", function() { return _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _internal_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/index.js */ \"./internal/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"internal\", function() { return _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"]; });\n\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"]; });\n\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"]; });\n\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"]; });\n\n/* harmony import */ var _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rendering/renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"]; });\n\n/* harmony import */ var _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rendering/renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"renderToCanvas\", function() { return _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./canvasToPixel.js */ \"./canvasToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canvasToPixel\", function() { return _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _disable_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./disable.js */ \"./disable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disable\", function() { return _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _displayImage_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./displayImage.js */ \"./displayImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"displayImage\", function() { return _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _draw_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./draw.js */ \"./draw.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./drawInvalidated.js */ \"./drawInvalidated.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"drawInvalidated\", function() { return _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _enable_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./enable.js */ \"./enable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"enable\", function() { return _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./enabledElementData.js */ \"./enabledElementData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeElementData\", function() { return _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"]; });\n\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEnabledElement\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElementsByImageId\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getEnabledElements\", function() { return _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"]; });\n\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./layers.js */ \"./layers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"]; });\n\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitToWindow\", function() { return _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./getDefaultViewportForImage.js */ \"./getDefaultViewportForImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDefaultViewportForImage\", function() { return _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _getImage_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./getImage.js */ \"./getImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImage\", function() { return _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _getPixels_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./getPixels.js */ \"./getPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getPixels\", function() { return _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./getStoredPixels.js */ \"./getStoredPixels.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStoredPixels\", function() { return _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _getViewport_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./getViewport.js */ \"./getViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewport\", function() { return _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./imageLoader.js */ \"./imageLoader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"loadAndCacheImage\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerUnknownImageLoader\", function() { return _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"]; });\n\n/* harmony import */ var _invalidate_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./invalidate.js */ \"./invalidate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidate\", function() { return _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./invalidateImageId.js */ \"./invalidateImageId.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invalidateImageId\", function() { return _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./pageToPixel.js */ \"./pageToPixel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageToPixel\", function() { return _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./pixelToCanvas.js */ \"./pixelToCanvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelToCanvas\", function() { return _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./reset.js */ \"./reset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _resize_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./resize.js */ \"./resize.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"resize\", function() { return _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setToPixelCoordinateSystem\", function() { return _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _setViewport_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./setViewport.js */ \"./setViewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setViewport\", function() { return _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"updateImage\", function() { return _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./pixelDataToFalseColorData.js */ \"./pixelDataToFalseColorData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelDataToFalseColorData\", function() { return _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./rendering/index.js */ \"./rendering/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rendering\", function() { return _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _imageCache_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./imageCache.js */ \"./imageCache.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"imageCache\", function() { return _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _metaData_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./metaData.js */ \"./metaData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"metaData\", function() { return _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./webgl/index.js */ \"./webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"webGL\", function() { return _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colors\", function() { return _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./falseColorMapping.js */ \"./falseColorMapping.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertImageToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convertToFalseColorImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"restoreImage\", function() { return _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"]; });\n\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"events\", function() { return _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"]; });\n\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"triggerEvent\", function() { return _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n// Internal (some of these are from old internal/legacy expose)\n\n\n\n\n\n\n\n\n // Rendering\n\n\n\n\n\n\n\n/**\n * @module PixelCoordinateSystem\n */\n\n/**\n * @module ViewportSettings\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar cornerstone = {\n drawImage: _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _internal_requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedColorPixelDataToCanvasImageData: _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n internal: _internal_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n renderLabelMapImage: _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_9__[\"renderLabelMapImage\"],\n renderPseudoColorImage: _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_10__[\"renderPseudoColorImage\"],\n renderColorImage: _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_11__[\"renderColorImage\"],\n renderGrayscaleImage: _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_12__[\"renderGrayscaleImage\"],\n renderWebImage: _rendering_renderWebImage_js__WEBPACK_IMPORTED_MODULE_13__[\"renderWebImage\"],\n renderToCanvas: _rendering_renderToCanvas_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n canvasToPixel: _canvasToPixel_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n disable: _disable_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n displayImage: _displayImage_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n draw: _draw_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n drawInvalidated: _drawInvalidated_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n enable: _enable_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n getElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"getElementData\"],\n removeElementData: _enabledElementData_js__WEBPACK_IMPORTED_MODULE_21__[\"removeElementData\"],\n getEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElement\"],\n addEnabledElement: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"addEnabledElement\"],\n getEnabledElementsByImageId: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElementsByImageId\"],\n getEnabledElements: _enabledElements_js__WEBPACK_IMPORTED_MODULE_22__[\"getEnabledElements\"],\n addLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"addLayer\"],\n removeLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"removeLayer\"],\n getLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayer\"],\n getLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getLayers\"],\n getVisibleLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getVisibleLayers\"],\n setActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setActiveLayer\"],\n getActiveLayer: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"getActiveLayer\"],\n purgeLayers: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"purgeLayers\"],\n setLayerImage: _layers_js__WEBPACK_IMPORTED_MODULE_23__[\"setLayerImage\"],\n fitToWindow: _fitToWindow_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n getDefaultViewportForImage: _getDefaultViewportForImage_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n getImage: _getImage_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n getPixels: _getPixels_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n getStoredPixels: _getStoredPixels_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n getViewport: _getViewport_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n loadImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadImage\"],\n loadAndCacheImage: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"loadAndCacheImage\"],\n registerImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerImageLoader\"],\n registerUnknownImageLoader: _imageLoader_js__WEBPACK_IMPORTED_MODULE_30__[\"registerUnknownImageLoader\"],\n invalidate: _invalidate_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n invalidateImageId: _invalidateImageId_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n pageToPixel: _pageToPixel_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"],\n pixelToCanvas: _pixelToCanvas_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"],\n reset: _reset_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"],\n resize: _resize_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"],\n setToPixelCoordinateSystem: _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"],\n setViewport: _setViewport_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"],\n updateImage: _updateImage_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"],\n pixelDataToFalseColorData: _pixelDataToFalseColorData_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"],\n rendering: _rendering_index_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"],\n imageCache: _imageCache_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"],\n metaData: _metaData_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"],\n webGL: _webgl_index_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"],\n colors: _colors_index_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"],\n convertImageToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertImageToFalseColorImage\"],\n convertToFalseColorImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"convertToFalseColorImage\"],\n restoreImage: _falseColorMapping_js__WEBPACK_IMPORTED_MODULE_46__[\"restoreImage\"],\n EVENTS: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"],\n events: _events_js__WEBPACK_IMPORTED_MODULE_47__[\"events\"],\n triggerEvent: _triggerEvent_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (cornerstone);\n\n/***/ }),\n\n/***/ \"./internal/calculateTransform.js\":\n/*!****************************************!*\\\n !*** ./internal/calculateTransform.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n/**\n * Calculate the transform for a Cornerstone enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\n * @param {Number} [scale] The viewport scale\n * @return {Transform} The current transform\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, scale) {\n var transform = new _transform_js__WEBPACK_IMPORTED_MODULE_0__[\"Transform\"](); // Move to center of canvas\n\n transform.translate(enabledElement.canvas.width / 2, enabledElement.canvas.height / 2); // Apply the rotation before scaling for non square pixels\n\n var angle = enabledElement.viewport.rotation;\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n } // Apply the scale\n\n\n var widthScale = enabledElement.viewport.scale;\n var heightScale = enabledElement.viewport.scale;\n var width = enabledElement.viewport.displayedArea.brhc.x - (enabledElement.viewport.displayedArea.tlhc.x - 1);\n var height = enabledElement.viewport.displayedArea.brhc.y - (enabledElement.viewport.displayedArea.tlhc.y - 1);\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'NONE') {\n if (enabledElement.image.rowPixelSpacing < enabledElement.image.columnPixelSpacing) {\n widthScale *= enabledElement.image.columnPixelSpacing / enabledElement.image.rowPixelSpacing;\n } else if (enabledElement.image.columnPixelSpacing < enabledElement.image.rowPixelSpacing) {\n heightScale *= enabledElement.image.rowPixelSpacing / enabledElement.image.columnPixelSpacing;\n }\n } else {\n // These should be good for \"TRUE SIZE\" and \"MAGNIFY\"\n widthScale = enabledElement.viewport.displayedArea.columnPixelSpacing;\n heightScale = enabledElement.viewport.displayedArea.rowPixelSpacing;\n\n if (enabledElement.viewport.displayedArea.presentationSizeMode === 'SCALE TO FIT') {\n // Fit TRUE IMAGE image (width/height) to window\n var verticalScale = enabledElement.canvas.height / (height * heightScale);\n var horizontalScale = enabledElement.canvas.width / (width * widthScale); // Apply new scale\n\n widthScale = heightScale = Math.min(horizontalScale, verticalScale);\n\n if (enabledElement.viewport.displayedArea.rowPixelSpacing < enabledElement.viewport.displayedArea.columnPixelSpacing) {\n widthScale *= enabledElement.viewport.displayedArea.columnPixelSpacing / enabledElement.viewport.displayedArea.rowPixelSpacing;\n } else if (enabledElement.viewport.displayedArea.columnPixelSpacing < enabledElement.viewport.displayedArea.rowPixelSpacing) {\n heightScale *= enabledElement.viewport.displayedArea.rowPixelSpacing / enabledElement.viewport.displayedArea.columnPixelSpacing;\n }\n }\n }\n\n transform.scale(widthScale, heightScale); // Unrotate to so we can translate unrotated\n\n if (angle !== 0) {\n transform.rotate(-angle * Math.PI / 180);\n } // Apply the pan offset\n\n\n transform.translate(enabledElement.viewport.translation.x, enabledElement.viewport.translation.y); // Rotate again so we can apply general scale\n\n if (angle !== 0) {\n transform.rotate(angle * Math.PI / 180);\n }\n\n if (scale !== undefined) {\n // Apply the font scale\n transform.scale(scale, scale);\n } // Apply Flip if required\n\n\n if (enabledElement.viewport.hflip) {\n transform.scale(-1, 1);\n }\n\n if (enabledElement.viewport.vflip) {\n transform.scale(1, -1);\n } // Move back from center of image\n\n\n transform.translate(-width / 2, -height / 2);\n return transform;\n});\n\n/***/ }),\n\n/***/ \"./internal/computeAutoVoi.js\":\n/*!************************************!*\\\n !*** ./internal/computeAutoVoi.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return computeAutoVoi; });\n/**\n * Computes the VOI to display all the pixels if no VOI LUT data (Window Width/Window Center or voiLUT) exists on the viewport object.\n *\n * @param {Viewport} viewport - Object containing the viewport properties\n * @param {Object} image An Image loaded by a Cornerstone Image Loader\n * @returns {void}\n * @memberof Internal\n */\nfunction computeAutoVoi(viewport, image) {\n if (hasVoi(viewport)) {\n return;\n }\n\n var maxVoi = image.maxPixelValue * image.slope + image.intercept;\n var minVoi = image.minPixelValue * image.slope + image.intercept;\n var ww = maxVoi - minVoi;\n var wc = (maxVoi + minVoi) / 2;\n\n if (viewport.voi === undefined) {\n viewport.voi = {\n windowWidth: ww,\n windowCenter: wc\n };\n } else {\n viewport.voi.windowWidth = ww;\n viewport.voi.windowCenter = wc;\n }\n}\n/**\n * Check if viewport has voi LUT data\n * @param {any} viewport The viewport to check for voi LUT data\n * @returns {Boolean} true viewport has LUT data (Window Width/Window Center or voiLUT). Otherwise, false.\n * @memberof Internal\n */\n\nfunction hasVoi(viewport) {\n var hasLut = viewport.voiLUT && viewport.voiLUT.lut && viewport.voiLUT.lut.length > 0;\n return hasLut || viewport.voi.windowWidth !== undefined && viewport.voi.windowCenter !== undefined;\n}\n\n/***/ }),\n\n/***/ \"./internal/drawCompositeImage.js\":\n/*!****************************************!*\\\n !*** ./internal/drawCompositeImage.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _layers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../layers.js */ \"./layers.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n\n\n\n\n\n\n\nfunction getViewportRatio(baseLayer, targetLayer) {\n if (!baseLayer.syncProps) {\n updateLayerSyncProps(baseLayer);\n }\n\n if (!targetLayer.syncProps) {\n updateLayerSyncProps(targetLayer);\n }\n\n return targetLayer.syncProps.originalScale / baseLayer.syncProps.originalScale;\n}\n\nfunction updateLayerSyncProps(layer) {\n var syncProps = layer.syncProps || {}; // This is used to keep each of the layers' viewports in sync with the active layer\n\n syncProps.originalScale = layer.viewport.scale;\n layer.syncProps = syncProps;\n} // Sync all viewports based on active layer's viewport\n\n\nfunction syncViewports(layers, activeLayer) {\n // If we intend to keep the viewport's scale, translation and rotation in sync,\n // loop through the layers\n layers.forEach(function (layer) {\n // Don't do anything to the active layer\n // Don't do anything if this layer has no viewport\n if (layer === activeLayer || !layer.viewport || !activeLayer.viewport) {\n return;\n }\n\n if (!layer.syncProps) {\n updateLayerSyncProps(layer);\n }\n\n var viewportRatio = getViewportRatio(activeLayer, layer); // Update the layer's translation and scale to keep them in sync with the first image\n // based on the ratios between the images\n\n layer.viewport.scale = activeLayer.viewport.scale * viewportRatio;\n layer.viewport.rotation = activeLayer.viewport.rotation;\n layer.viewport.translation = {\n x: activeLayer.viewport.translation.x / viewportRatio,\n y: activeLayer.viewport.translation.y / viewportRatio\n };\n layer.viewport.hflip = activeLayer.viewport.hflip;\n layer.viewport.vflip = activeLayer.viewport.vflip;\n });\n}\n/**\n * Internal function to render all layers for a Cornerstone enabled element\n *\n * @param {CanvasRenderingContext2D} context Canvas context to draw upon\n * @param {EnabledElementLayer[]} layers The array of all layers for this enabled element\n * @param {Boolean} invalidated A boolean whether or not this image has been invalidated and must be redrawn\n * @returns {void}\n * @memberof Internal\n */\n\n\nfunction renderLayers(context, layers, invalidated) {\n // Loop through each layer and draw it to the canvas\n layers.forEach(function (layer, index) {\n if (!layer.image) {\n return;\n }\n\n context.save(); // Set the layer's canvas to the pixel coordinate system\n\n layer.canvas = context.canvas;\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(layer, context); // Render into the layer's canvas\n\n var colormap = layer.viewport.colormap || layer.options.colormap;\n var labelmap = layer.viewport.labelmap;\n var isInvalid = layer.invalid || invalidated;\n\n if (colormap && colormap !== '' && labelmap === true) {\n Object(_rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"addLabelMapLayer\"])(layer, isInvalid);\n } else if (colormap && colormap !== '') {\n Object(_rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"addPseudoColorLayer\"])(layer, isInvalid);\n } else if (layer.image.color === true) {\n Object(_rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"addColorLayer\"])(layer, isInvalid);\n } else {\n // If this is the base layer, use the alpha channel for rendering of the grayscale image\n var useAlphaChannel = index === 0;\n Object(_rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"addGrayscaleLayer\"])(layer, isInvalid, useAlphaChannel);\n } // Apply any global opacity settings that have been defined for this layer\n\n\n if (layer.options && layer.options.opacity) {\n context.globalAlpha = layer.options.opacity;\n } else {\n context.globalAlpha = 1;\n }\n\n if (layer.options && layer.options.fillStyle) {\n context.fillStyle = layer.options.fillStyle;\n } // Set the pixelReplication property before drawing from the layer into the\n // composite canvas\n\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Draw from the current layer's canvas onto the enabled element's canvas\n\n var sx = layer.viewport.displayedArea.tlhc.x - 1;\n var sy = layer.viewport.displayedArea.tlhc.y - 1;\n var width = layer.viewport.displayedArea.brhc.x - sx;\n var height = layer.viewport.displayedArea.brhc.y - sy;\n context.drawImage(layer.canvas, sx, sy, width, height, 0, 0, width, height);\n context.restore();\n layer.invalid = false;\n });\n}\n/**\n * Internal API function to draw a composite image to a given enabled element\n *\n * @param {EnabledElement} enabledElement An enabled element to draw into\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var element = enabledElement.element;\n var allLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getLayers\"])(element);\n var activeLayer = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getActiveLayer\"])(element);\n var visibleLayers = Object(_layers_js__WEBPACK_IMPORTED_MODULE_0__[\"getVisibleLayers\"])(element);\n var resynced = !enabledElement.lastSyncViewportsState && enabledElement.syncViewports; // This state will help us to determine if the user has re-synced the\n // layers allowing us to make a new copy of the viewports\n\n enabledElement.lastSyncViewportsState = enabledElement.syncViewports; // Stores a copy of all viewports if the user has just synced them then we can use the\n // copies to calculate anything later (ratio, translation offset, rotation offset, etc)\n\n if (resynced) {\n allLayers.forEach(function (layer) {\n if (layer.viewport) {\n updateLayerSyncProps(layer);\n }\n });\n } // Sync all viewports in case it's activated\n\n\n if (enabledElement.syncViewports === true) {\n syncViewports(visibleLayers, activeLayer);\n } // Get the enabled element's canvas so we can draw to it\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Render all visible layers\n\n renderLayers(context, visibleLayers, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImage.js\":\n/*!*******************************!*\\\n !*** ./internal/drawImage.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Internal API function to draw an image to a given enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} [invalidated = false] - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof Internal\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n enabledElement.needsRedraw = true;\n\n if (invalidated) {\n enabledElement.invalid = true;\n }\n});\n\n/***/ }),\n\n/***/ \"./internal/drawImageSync.js\":\n/*!***********************************!*\\\n !*** ./internal/drawImageSync.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n/* harmony import */ var _drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drawCompositeImage.js */ \"./internal/drawCompositeImage.js\");\n/* harmony import */ var _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rendering/renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../rendering/renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../rendering/renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../rendering/renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n\n\n\n\n\n\n\n\n/**\r\n * Draw an image to a given enabled element synchronously\r\n *\r\n * @param {EnabledElement} enabledElement An enabled element to draw into\r\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\r\n * @returns {void}\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, invalidated) {\n var image = enabledElement.image;\n var element = enabledElement.element;\n var layers = enabledElement.layers || []; // Check if enabledElement can be redrawn\n\n if (!enabledElement.canvas || !(enabledElement.image || layers.length)) {\n return;\n } // Start measuring the time needed to draw the image/layers\n\n\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n image.stats = {\n lastGetPixelDataTime: -1.0,\n lastStoredPixelDataToCanvasImageDataTime: -1.0,\n lastPutImageDataTime: -1.0,\n lastRenderTime: -1.0,\n lastLutGenerateTime: -1.0\n };\n\n if (layers && layers.length) {\n Object(_drawCompositeImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n } else if (image) {\n var render = image.render;\n\n if (!render) {\n if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '' && enabledElement.image.labelmap === true) {\n render = _rendering_renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_5__[\"renderLabelMapImage\"];\n } else if (enabledElement.viewport.colormap && enabledElement.viewport.colormap !== '') {\n render = _rendering_renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderPseudoColorImage\"];\n } else if (image.color) {\n render = _rendering_renderColorImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderColorImage\"];\n } else {\n render = _rendering_renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderGrayscaleImage\"];\n }\n }\n\n render(enabledElement, invalidated);\n } // Calculate how long it took to draw the image/layers\n\n\n var renderTimeInMs = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var eventData = {\n viewport: enabledElement.viewport,\n element: element,\n image: image,\n enabledElement: enabledElement,\n canvasContext: enabledElement.canvas.getContext('2d'),\n renderTimeInMs: renderTimeInMs\n };\n image.stats.lastRenderTime = renderTimeInMs;\n enabledElement.invalid = false;\n enabledElement.needsRedraw = false;\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].IMAGE_RENDERED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./internal/generateColorLut.js\":\n/*!**************************************!*\\\n !*** ./internal/generateColorLut.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n/**\n * Creates a LUT used while rendering to convert stored pixel values to\n * display pixels\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Number} windowWidth The Window Width\n * @param {Number} windowCenter The Window Center\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\n *\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(storedValue);\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(_storedValue);\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/generateLut.js\":\n/*!*********************************!*\\\n !*** ./internal/generateLut.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getModalityLUT.js */ \"./internal/getModalityLUT.js\");\n/* harmony import */ var _getVOILut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVOILut.js */ \"./internal/getVOILut.js\");\n\n\n/**\r\n * Creates a LUT used while rendering to convert stored pixel values to\r\n * display pixels\r\n *\r\n * @param {Image} image A Cornerstone Image Object\r\n * @param {Number} windowWidth The Window Width\r\n * @param {Number} windowCenter The Window Center\r\n * @param {Boolean} invert A boolean describing whether or not the image has been inverted\r\n * @param {Array} [modalityLUT] A modality Lookup Table\r\n * @param {Array} [voiLUT] A Volume of Interest Lookup Table\r\n *\r\n * @returns {Uint8ClampedArray} A lookup table to apply to the image\r\n * @memberof Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, windowWidth, windowCenter, invert, modalityLUT, voiLUT) {\n var maxPixelValue = image.maxPixelValue;\n var minPixelValue = image.minPixelValue;\n var offset = Math.min(minPixelValue, 0);\n\n if (image.cachedLut === undefined) {\n var length = maxPixelValue - offset + 1;\n image.cachedLut = {};\n image.cachedLut.lutArray = new Uint8ClampedArray(length);\n }\n\n var lut = image.cachedLut.lutArray;\n var mlutfn = Object(_getModalityLUT_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image.slope, image.intercept, modalityLUT);\n var vlutfn = Object(_getVOILut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(windowWidth, windowCenter, voiLUT);\n\n if (invert === true) {\n for (var storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {\n lut[storedValue + -offset] = 255 - vlutfn(mlutfn(storedValue));\n }\n } else {\n for (var _storedValue = minPixelValue; _storedValue <= maxPixelValue; _storedValue++) {\n lut[_storedValue + -offset] = vlutfn(mlutfn(_storedValue));\n }\n }\n\n return lut;\n});\n\n/***/ }),\n\n/***/ \"./internal/getCanvas.js\":\n/*!*******************************!*\\\n !*** ./internal/getCanvas.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getCanvas; });\nvar CANVAS_CSS_CLASS = 'cornerstone-canvas';\n/**\n * Create a canvas and append it to the element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\nfunction createCanvas(element) {\n var canvas = document.createElement('canvas');\n canvas.style.display = 'block';\n canvas.classList.add(CANVAS_CSS_CLASS);\n element.appendChild(canvas);\n return canvas;\n}\n/**\n * Create a canvas or returns the one that already exists for a given element\n *\n * @param {HTMLElement} element An HTML Element\n * @return {HTMLElement} canvas A Canvas DOM element\n */\n\n\nfunction getCanvas(element) {\n var selector = \"canvas.\".concat(CANVAS_CSS_CLASS);\n return element.querySelector(selector) || createCanvas(element);\n}\n\n/***/ }),\n\n/***/ \"./internal/getDefaultViewport.js\":\n/*!****************************************!*\\\n !*** ./internal/getDefaultViewport.js ***!\n \\****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getImageFitScale.js */ \"./internal/getImageFitScale.js\");\n\n/**\n * Creates a new viewport object containing default values\n *\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\nfunction createViewport() {\n var displayedArea = createDefaultDisplayedArea();\n return {\n scale: 1,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: undefined,\n windowCenter: undefined\n },\n invert: false,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: undefined,\n voiLUT: undefined,\n colormap: undefined,\n labelmap: false,\n displayedArea: displayedArea\n };\n}\n/**\n * Creates the default displayed area.\n * C.10.4 Displayed Area Module: This Module describes Attributes required to define a Specified Displayed Area space.\n *\n * @returns {tlhc: {x,y}, brhc: {x, y},rowPixelSpacing: Number, columnPixelSpacing: Number, presentationSizeMode: Number} displayedArea object\n * @memberof Internal\n */\n\n\nfunction createDefaultDisplayedArea() {\n return {\n // Top Left Hand Corner\n tlhc: {\n x: 1,\n y: 1\n },\n // Bottom Right Hand Corner\n brhc: {\n x: 1,\n y: 1\n },\n rowPixelSpacing: 1,\n columnPixelSpacing: 1,\n presentationSizeMode: 'NONE'\n };\n}\n/**\n * Creates a new viewport object containing default values for the image and canvas\n *\n * @param {HTMLElement} canvas A Canvas DOM element\n * @param {Image} image A Cornerstone Image Object\n * @returns {Viewport} viewport object\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n if (canvas === undefined) {\n throw new Error('getDefaultViewport: parameter canvas must not be undefined');\n }\n\n if (image === undefined) {\n return createViewport();\n } // Fit image to window\n\n\n var scale = Object(_getImageFitScale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(canvas, image, 0).scaleFactor;\n return {\n scale: scale,\n translation: {\n x: 0,\n y: 0\n },\n voi: {\n windowWidth: image.windowWidth,\n windowCenter: image.windowCenter\n },\n invert: image.invert,\n pixelReplication: false,\n rotation: 0,\n hflip: false,\n vflip: false,\n modalityLUT: image.modalityLUT,\n voiLUT: image.voiLUT,\n colormap: image.colormap,\n labelmap: Boolean(image.labelmap),\n displayedArea: {\n tlhc: {\n x: 1,\n y: 1\n },\n brhc: {\n x: image.columns,\n y: image.rows\n },\n rowPixelSpacing: image.rowPixelSpacing === undefined ? 1 : image.rowPixelSpacing,\n columnPixelSpacing: image.columnPixelSpacing === undefined ? 1 : image.columnPixelSpacing,\n presentationSizeMode: 'NONE'\n }\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageFitScale.js\":\n/*!**************************************!*\\\n !*** ./internal/getImageFitScale.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n/* harmony import */ var _getImageSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getImageSize.js */ \"./internal/getImageSize.js\");\n\n\n/**\n * Calculates the horizontal, vertical and minimum scale factor for an image\n @param {{width, height}} windowSize The window size where the image is displayed. This can be any HTML element or structure with a width, height fields (e.g. canvas).\n * @param {any} image The cornerstone image object\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{horizontalScale, verticalScale, scaleFactor}} The calculated horizontal, vertical and minimum scale factor\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowSize, image) {\n var rotation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(windowSize, 'getImageScale: parameter windowSize must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageScale: parameter image must not be undefined');\n var imageSize = Object(_getImageSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, rotation);\n var rowPixelSpacing = image.rowPixelSpacing || 1;\n var columnPixelSpacing = image.columnPixelSpacing || 1;\n var verticalRatio = 1;\n var horizontalRatio = 1;\n\n if (rowPixelSpacing < columnPixelSpacing) {\n horizontalRatio = columnPixelSpacing / rowPixelSpacing;\n } else {\n // even if they are equal we want to calculate this ratio (the ration might be 0.5)\n verticalRatio = rowPixelSpacing / columnPixelSpacing;\n }\n\n var verticalScale = windowSize.height / imageSize.height / verticalRatio;\n var horizontalScale = windowSize.width / imageSize.width / horizontalRatio; // Fit image to window\n\n return {\n verticalScale: verticalScale,\n horizontalScale: horizontalScale,\n scaleFactor: Math.min(horizontalScale, verticalScale)\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getImageSize.js\":\n/*!**********************************!*\\\n !*** ./internal/getImageSize.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validator.js */ \"./internal/validator.js\");\n\n/**\n * Check if the angle is rotated\n * @param {Number} rotation the rotation angle\n * @returns {Boolean} true if the angle is rotated; Otherwise, false.\n * @memberof Internal\n */\n\nfunction isRotated(rotation) {\n return !(rotation === null || rotation === undefined || rotation === 0 || rotation === 180);\n}\n/**\n * Retrieves the current image dimensions given an enabled element\n *\n * @param {any} image The Cornerstone image.\n * @param {Number} rotation Optional. The rotation angle of the image.\n * @return {{width:Number, height:Number}} The Image dimensions\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image) {\n var rotation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image, 'getImageSize: parameter image must not be undefined');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.width, 'getImageSize: parameter image must have width');\n Object(_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"validateParameterUndefinedOrNull\"])(image.height, 'getImageSize: parameter image must have height');\n\n if (isRotated(rotation)) {\n return {\n height: image.width,\n width: image.height\n };\n }\n\n return {\n width: image.width,\n height: image.height\n };\n});\n\n/***/ }),\n\n/***/ \"./internal/getModalityLUT.js\":\n/*!************************************!*\\\n !*** ./internal/getModalityLUT.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Generates a linear modality transformation function\n *\n * See DICOM PS3.3 C.11.1 Modality LUT Module\n *\n * http://dicom.nema.org/medical/Dicom/current/output/chtml/part03/sect_C.11.html\n *\n * @param {Number} slope m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} intercept The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n\n Output units = m*SV + b.\n * @return {function(*): *} A linear modality LUT function. Given a stored pixel it returns the modality pixel value\n * @memberof Internal\n */\nfunction generateLinearModalityLUT(slope, intercept) {\n return function (storedPixelValue) {\n return storedPixelValue * slope + intercept;\n };\n}\n\nfunction generateNonLinearModalityLUT(modalityLUT) {\n var minValue = modalityLUT.lut[0];\n var maxValue = modalityLUT.lut[modalityLUT.lut.length - 1];\n var maxValueMapped = modalityLUT.firstValueMapped + modalityLUT.lut.length;\n return function (storedPixelValue) {\n if (storedPixelValue < modalityLUT.firstValueMapped) {\n return minValue;\n } else if (storedPixelValue >= maxValueMapped) {\n return maxValue;\n }\n\n return modalityLUT.lut[storedPixelValue];\n };\n}\n/**\n * Get the appropriate Modality LUT for the current situation.\n *\n * @param {Number} [slope] m in the equation specified by Rescale Intercept (0028,1052).\n * @param {Number} [intercept] The value b in relationship between stored values (SV) and the output units specified in Rescale Type (0028,1054).\n * @param {Function} [modalityLUT] A modality LUT function. Given a stored pixel it returns the modality pixel value.\n *\n * @return {function(*): *} A modality LUT function. Given a stored pixel it returns the modality pixel value.\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (slope, intercept, modalityLUT) {\n if (modalityLUT) {\n return generateNonLinearModalityLUT(modalityLUT);\n }\n\n return generateLinearModalityLUT(slope, intercept);\n});\n\n/***/ }),\n\n/***/ \"./internal/getTransform.js\":\n/*!**********************************!*\\\n !*** ./internal/getTransform.js ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n // For now we will calculate it every time it is requested.\n // In the future, we may want to cache it in the enabled element to speed things up.\n return Object(_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement);\n});\n\n/***/ }),\n\n/***/ \"./internal/getVOILut.js\":\n/*!*******************************!*\\\n !*** ./internal/getVOILut.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint no-bitwise: 0 */\n\n/**\n * Volume of Interest Lookup Table Function\n *\n * @typedef {Function} VOILUTFunction\n *\n * @param {Number} modalityLutValue\n * @returns {Number} transformed value\n * @memberof Objects\n */\n\n/**\n * @module: VOILUT\n */\n\n/**\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\nfunction generateLinearVOILUT(windowWidth, windowCenter) {\n return function (modalityLutValue) {\n return ((modalityLutValue - windowCenter) / windowWidth + 0.5) * 255.0;\n };\n}\n/**\n * Generate a non-linear volume of interest lookup table\n *\n * @param {LUT} voiLUT Volume of Interest Lookup Table Object\n *\n * @returns {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\nfunction generateNonLinearVOILUT(voiLUT) {\n // We don't trust the voiLUT.numBitsPerEntry, mainly thanks to Agfa!\n var bitsPerEntry = Math.max.apply(Math, _toConsumableArray(voiLUT.lut)).toString(2).length;\n var shift = bitsPerEntry - 8;\n var minValue = voiLUT.lut[0] >> shift;\n var maxValue = voiLUT.lut[voiLUT.lut.length - 1] >> shift;\n var maxValueMapped = voiLUT.firstValueMapped + voiLUT.lut.length - 1;\n return function (modalityLutValue) {\n if (modalityLutValue < voiLUT.firstValueMapped) {\n return minValue;\n } else if (modalityLutValue >= maxValueMapped) {\n return maxValue;\n }\n\n return voiLUT.lut[modalityLutValue - voiLUT.firstValueMapped] >> shift;\n };\n}\n/**\n * Retrieve a VOI LUT mapping function given the current windowing settings\n * and the VOI LUT for the image\n *\n * @param {Number} windowWidth Window Width\n * @param {Number} windowCenter Window Center\n * @param {LUT} [voiLUT] Volume of Interest Lookup Table Object\n *\n * @return {VOILUTFunction} VOI LUT mapping function\n * @memberof VOILUT\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (windowWidth, windowCenter, voiLUT) {\n if (voiLUT) {\n return generateNonLinearVOILUT(voiLUT);\n }\n\n return generateLinearVOILUT(windowWidth, windowCenter);\n});\n\n/***/ }),\n\n/***/ \"./internal/guid.js\":\n/*!**************************!*\\\n !*** ./internal/guid.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n/**\n * Generate a unique identifier\n *\n * @return {string} A unique identifier\n * @memberof Internal\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return \"\".concat(s4() + s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4(), \"-\").concat(s4()).concat(s4()).concat(s4());\n});\n\n/***/ }),\n\n/***/ \"./internal/index.js\":\n/*!***************************!*\\\n !*** ./internal/index.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _drawImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drawImage.js */ \"./internal/drawImage.js\");\n/* harmony import */ var _generateLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generateLut.js */ \"./internal/generateLut.js\");\n/* harmony import */ var _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./requestAnimationFrame.js */ \"./internal/requestAnimationFrame.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _getTransform_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getTransform.js */ \"./internal/getTransform.js\");\n/* harmony import */ var _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./calculateTransform.js */ \"./internal/calculateTransform.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transform.js */ \"./internal/transform.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * @module Internal\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawImage: _drawImage_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n generateLut: _generateLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getDefaultViewport: _getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requestAnimationFrame: _requestAnimationFrame_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n storedPixelDataToCanvasImageData: _storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n storedPixelDataToCanvasImageDataRGBA: _storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n storedPixelDataToCanvasImageDataColorLUT: _storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n storedPixelDataToCanvasImageDataPseudocolorLUT: _storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n storedColorPixelDataToCanvasImageData: _storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n getTransform: _getTransform_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n calculateTransform: _calculateTransform_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Transform: _transform_js__WEBPACK_IMPORTED_MODULE_11__[\"Transform\"]\n});\n\n/***/ }),\n\n/***/ \"./internal/now.js\":\n/*!*************************!*\\\n !*** ./internal/now.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * @module Polyfills\n */\n\n/**\n * Use the performance.now() method if possible, and if not, use Date.now()\n *\n * @return {number} Time elapsed since the time origin\n * @memberof Polyfills\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n if (window.performance) {\n return performance.now();\n }\n\n return Date.now();\n});\n\n/***/ }),\n\n/***/ \"./internal/requestAnimationFrame.js\":\n/*!*******************************************!*\\\n !*** ./internal/requestAnimationFrame.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction requestFrame(callback) {\n window.setTimeout(callback, 1000 / 60);\n}\n/**\n * Polyfills requestAnimationFrame for older browsers.\n *\n * @param {Function} callback A parameter specifying a function to call when it's time to update your animation for the next repaint. The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame starts to fire callbacks.\n *\n * @return {Number} A long integer value, the request id, that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value. You can pass this value to window.cancelAnimationFrame() to cancel the refresh callback request.\n * @memberof Polyfills\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (callback) {\n return window.requestAnimationFrame(callback) || window.webkitRequestAnimationFrame(callback) || window.mozRequestAnimationFrame(callback) || window.oRequestAnimationFrame(callback) || window.msRequestAnimationFrame(callback) || requestFrame(callback);\n});\n\n/***/ }),\n\n/***/ \"./internal/storedColorPixelDataToCanvasImageData.js\":\n/*!***********************************************************!*\\\n !*** ./internal/storedColorPixelDataToCanvasImageData.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored color pixel values to display pixel values using a LUT.\n *\n * Note: Skips alpha value for any input image pixel data.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex] + -minPixelValue]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex]]; // Blue\n\n storedPixelDataIndex += 2;\n canvasImageDataIndex += 2;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageData.js\":\n/*!******************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageData.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT. This is the most performance sensitive code in cornerstone and\n * we use a special trick to make this go as fast as possible. Specifically we\n * use the alpha channel only to control the luminance rather than the red, green and\n * blue channels which makes it over 3x faster. The canvasImageDataData buffer needs\n * to be previously filled with white pixels.\n *\n * NOTE: Attribution would be appreciated if you use this technique!\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 3;\n var storedPixelDataIndex = 0; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex] = lut[pixelData[storedPixelDataIndex++]]; // Alpha\n\n canvasImageDataIndex += 4;\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\":\n/*!**************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataColorLUT.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataColorLUT(image, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n rgba = clut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataColorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\":\n/*!********************************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n\n/**\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} grayscaleLut Lookup table array\n * @param {LookupTable|Array} colorLut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\nfunction storedPixelDataToCanvasImageDataPseudocolorLUT(image, grayscaleLut, colorLut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var grayscale;\n var rgba;\n var clut;\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (colorLut instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n clut = colorLut.Table;\n } else {\n clut = colorLut;\n }\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n grayscale = grayscaleLut[pixelData[storedPixelDataIndex++]];\n rgba = clut[grayscale];\n canvasImageDataData[canvasImageDataIndex++] = rgba[0];\n canvasImageDataData[canvasImageDataIndex++] = rgba[1];\n canvasImageDataData[canvasImageDataIndex++] = rgba[2];\n canvasImageDataData[canvasImageDataIndex++] = rgba[3];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (storedPixelDataToCanvasImageDataPseudocolorLUT);\n\n/***/ }),\n\n/***/ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedPixelDataToCanvasImageDataRGBA.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * This function transforms stored pixel values into a canvas image data buffer\n * by using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var numPixels = pixelData.length;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var pixelValue; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n // Added two paths (Int16Array, Uint16Array) to avoid polymorphic deoptimization in chrome.\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (pixelData instanceof Int16Array) {\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n } else if (pixelData instanceof Uint16Array) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++] + -minPixelValue];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n pixelValue = lut[pixelData[storedPixelDataIndex++]];\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = pixelValue;\n canvasImageDataData[canvasImageDataIndex++] = 255; // Alpha\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/storedRGBAPixelDataToCanvasImageData.js\":\n/*!**********************************************************!*\\\n !*** ./internal/storedRGBAPixelDataToCanvasImageData.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./now.js */ \"./internal/now.js\");\n\n/**\n * Converts stored RGBA color pixel values to display pixel values using a LUT.\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Array} lut Lookup table array\n * @param {Uint8ClampedArray} canvasImageDataData canvasImageData.data buffer filled with white pixels\n *\n * @returns {void}\n * @memberof Internal\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, lut, canvasImageDataData) {\n var start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var pixelData = image.getPixelData();\n image.stats.lastGetPixelDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = pixelData.length; // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n start = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++] + -minPixelValue]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Red\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Green\n\n canvasImageDataData[canvasImageDataIndex++] = lut[pixelData[storedPixelDataIndex++]]; // Blue\n\n canvasImageDataData[canvasImageDataIndex++] = pixelData[storedPixelDataIndex++];\n }\n }\n\n image.stats.lastStoredPixelDataToCanvasImageDataTime = Object(_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n});\n\n/***/ }),\n\n/***/ \"./internal/transform.js\":\n/*!*******************************!*\\\n !*** ./internal/transform.js ***!\n \\*******************************/\n/*! exports provided: Transform */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Transform\", function() { return Transform; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// By Simon Sarris\n// Www.simonsarris.com\n// Sarris@acm.org\n//\n// Free to use and distribute at will\n// So long as you are nice to people, etc\n// Simple class for keeping track of the current transformation matrix\n// For instance:\n// Var t = new Transform();\n// T.rotate(5);\n// Var m = t.m;\n// Ctx.setTransform(m[0], m[1], m[2], m[3], m[4], m[5]);\n// Is equivalent to:\n// Ctx.rotate(5);\n// But now you can retrieve it :)\n// Remember that this does not account for any CSS transforms applied to the canvas\nvar Transform =\n/*#__PURE__*/\nfunction () {\n function Transform() {\n _classCallCheck(this, Transform);\n\n this.reset();\n }\n\n _createClass(Transform, [{\n key: \"reset\",\n value: function reset() {\n this.m = [1, 0, 0, 1, 0, 0];\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var transform = new Transform();\n transform.m[0] = this.m[0];\n transform.m[1] = this.m[1];\n transform.m[2] = this.m[2];\n transform.m[3] = this.m[3];\n transform.m[4] = this.m[4];\n transform.m[5] = this.m[5];\n return transform;\n }\n }, {\n key: \"multiply\",\n value: function multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n }\n }, {\n key: \"invert\",\n value: function invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n }\n }, {\n key: \"rotate\",\n value: function rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n }\n }, {\n key: \"translate\",\n value: function translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n }\n }, {\n key: \"scale\",\n value: function scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n }\n }, {\n key: \"transformPoint\",\n value: function transformPoint(px, py) {\n var x = px;\n var y = py;\n px = x * this.m[0] + y * this.m[2] + this.m[4];\n py = x * this.m[1] + y * this.m[3] + this.m[5];\n return {\n x: px,\n y: py\n };\n }\n }]);\n\n return Transform;\n}();\n\n/***/ }),\n\n/***/ \"./internal/tryEnableWebgl.js\":\n/*!************************************!*\\\n !*** ./internal/tryEnableWebgl.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n\n/**\n * Checks if webGL is supported and initializes the rendering engine.\n * @param {any} options Options to check if webgl rendering is requested (e.g. enable webgl by passing {renderer: 'webgl'})\n * @returns {Boolean} true if webgl rendering has been successfully initialized. Otherwise, false.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.isWebGLAvailable()) {\n // If WebGL is available on the device, initialize the renderer\n // And return the renderCanvas from the WebGL rendering path\n _webgl_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].renderer.initRenderer();\n options.renderer = 'webgl';\n return true;\n } // If WebGL is not available on this device, we will fall back\n // To using the Canvas renderer\n\n\n console.error('WebGL not available, falling back to Canvas renderer');\n delete options.renderer;\n return false;\n});\n\n/***/ }),\n\n/***/ \"./internal/validator.js\":\n/*!*******************************!*\\\n !*** ./internal/validator.js ***!\n \\*******************************/\n/*! exports provided: validateParameterUndefined, validateParameterUndefinedOrNull */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefined\", function() { return validateParameterUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateParameterUndefinedOrNull\", function() { return validateParameterUndefinedOrNull; });\n/**\n * Check if the supplied parameter is undefined and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\nfunction validateParameterUndefined(checkParam, errorMsg) {\n if (checkParam === undefined) {\n throw new Error(errorMsg);\n }\n}\n/**\n * Check if the supplied parameter is undefined or null and throws and error\n * @param {any} checkParam the parameter to validate for undefined\n * @param {any} errorMsg the error message to be thrown\n * @returns {void}\n * @memberof internal\n */\n\nfunction validateParameterUndefinedOrNull(checkParam, errorMsg) {\n if (checkParam === undefined || checkParam === null) {\n throw new Error(errorMsg);\n }\n}\n\n/***/ }),\n\n/***/ \"./invalidate.js\":\n/*!***********************!*\\\n !*** ./invalidate.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n/**\r\n * Sets the invalid flag on the enabled element and fire an event\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @returns {void}\r\n * @memberof Drawing\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.invalid = true;\n enabledElement.needsRedraw = true;\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].INVALIDATED, eventData);\n});\n\n/***/ }),\n\n/***/ \"./invalidateImageId.js\":\n/*!******************************!*\\\n !*** ./invalidateImageId.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the all enabled elements\n * displaying the specified imageId\n *\n * @param {string} imageId The imageId of the Cornerstone Image Object to redraw\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (imageId) {\n var enabledElements = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElementsByImageId\"])(imageId);\n enabledElements.forEach(function (enabledElement) {\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, true);\n });\n});\n\n/***/ }),\n\n/***/ \"./layers.js\":\n/*!*******************!*\\\n !*** ./layers.js ***!\n \\*******************/\n/*! exports provided: rescaleImage, addLayer, removeLayer, getLayer, getLayers, getVisibleLayers, setActiveLayer, setLayerImage, getActiveLayer, purgeLayers */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rescaleImage\", function() { return rescaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLayer\", function() { return addLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeLayer\", function() { return removeLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayer\", function() { return getLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLayers\", function() { return getLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVisibleLayers\", function() { return getVisibleLayers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setActiveLayer\", function() { return setActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLayerImage\", function() { return setLayerImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActiveLayer\", function() { return getActiveLayer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purgeLayers\", function() { return purgeLayers; });\n/* harmony import */ var _internal_guid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/guid.js */ \"./internal/guid.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\n * @module EnabledElementLayers\n */\n\n/**\n * Helper function to trigger an event on a Cornerstone element with\n * a specific layerId\n *\n * @param {String} eventName The event name (e.g. CornerstoneLayerAdded)\n * @param {EnabledElement} enabledElement The Cornerstone enabled element\n * @param {String} layerId The layer's unique identifier\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction triggerEventForLayer(eventName, enabledElement, layerId) {\n var element = enabledElement.element;\n var eventData = {\n viewport: enabledElement.viewport,\n element: enabledElement.element,\n image: enabledElement.image,\n enabledElement: enabledElement,\n layerId: layerId\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(element, eventName, eventData);\n}\n/**\n * Rescale the target layer to the base layer based on the\n * relative size of each image and their pixel dimensions.\n *\n * This function will update the Viewport parameters of the\n * target layer to a new scale.\n *\n * @param {EnabledElementLayer} baseLayer The base layer\n * @param {EnabledElementLayer} targetLayer The target layer to rescale\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\n\nfunction rescaleImage(baseLayer, targetLayer) {\n if (baseLayer.layerId === targetLayer.layerId) {\n throw new Error('rescaleImage: both arguments represent the same layer');\n }\n\n var baseImage = baseLayer.image;\n var targetImage = targetLayer.image; // Return if these images don't have an imageId (e.g. for dynamic images)\n\n if (!baseImage.imageId || !targetImage.imageId) {\n return;\n } // Column pixel spacing need to be considered when calculating the\n // ratio between the layer added and base layer images\n\n\n var colRelative = targetLayer.viewport.displayedArea.columnPixelSpacing * targetImage.width / (baseLayer.viewport.displayedArea.columnPixelSpacing * baseImage.width);\n var viewportRatio = targetLayer.viewport.scale / baseLayer.viewport.scale * colRelative;\n targetLayer.viewport.scale = baseLayer.viewport.scale * viewportRatio;\n}\n/**\n * Add a layer to a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image A Cornerstone Image object to add as a new layer\n * @param {Object} options Options for the layer\n *\n * @returns {String} layerId The new layer's unique identifier\n * @memberof EnabledElementLayers\n */\n\nfunction addLayer(element, image, options) {\n var layerId = Object(_internal_guid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var viewport;\n\n if (image) {\n viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (options && options.viewport) {\n viewport = Object.assign(viewport, options.viewport);\n }\n } // Set syncViewports to true by default when a new layer is added\n\n\n if (enabledElement.syncViewports !== false) {\n enabledElement.syncViewports = true;\n }\n\n var newLayer = {\n image: image,\n layerId: layerId,\n viewport: viewport,\n options: options || {},\n renderingTools: {}\n }; // Rescale the new layer based on the base layer to make sure\n // they will have a proportional size (pixel spacing)\n\n if (layers.length && image) {\n rescaleImage(layers[0], newLayer);\n }\n\n layers.push(newLayer);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_ADDED, enabledElement, layerId); // Set the layer as active if it's the first layer added\n\n if (layers.length === 1 && image) {\n setActiveLayer(element, layerId);\n }\n\n return layerId;\n}\n/**\n * Remove a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction removeLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var layers = enabledElement.layers;\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index !== -1) {\n layers.splice(index, 1); // If the current layer is active, and we have other layers,\n // switch to the first layer that remains in the array\n\n if (layerId === enabledElement.activeLayerId && layers.length) {\n setActiveLayer(element, layers[0].layerId);\n }\n\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].LAYER_REMOVED, enabledElement, layerId);\n }\n}\n/**\n * Retrieve a layer from a Cornerstone element given a layer ID\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @return {EnabledElementLayer} The layer\n * @memberof EnabledElementLayers\n */\n\nfunction getLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === layerId;\n });\n}\n/**\n * Retrieve all layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers;\n}\n/**\n * Retrieve all visible layers for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\n * @return {EnabledElementLayer[]} An array of layers\n * @memberof EnabledElementLayers\n */\n\nfunction getVisibleLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.filter(function (layer) {\n return layer.options && layer.options.visible !== false && layer.options.opacity !== 0;\n });\n}\n/**\n * Set the active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {String} layerId The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setActiveLayer(element, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // Stop here if this layer is already active\n\n if (enabledElement.activeLayerId === layerId) {\n return;\n }\n\n var index = enabledElement.layers.findIndex(function (layer) {\n return layer.layerId === layerId;\n });\n\n if (index === -1) {\n throw new Error('setActiveLayer: layer not found in layers array');\n }\n\n var layer = enabledElement.layers[index];\n\n if (!layer.image) {\n throw new Error('setActiveLayer: layer with undefined image cannot be set as active.');\n }\n\n enabledElement.activeLayerId = layerId;\n enabledElement.image = layer.image;\n enabledElement.viewport = layer.viewport;\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n triggerEventForLayer(_events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ACTIVE_LAYER_CHANGED, enabledElement, layerId);\n}\n/**\n * Set a new image for a specific layerId\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @param {Image} image The image to be displayed in this layer\n * @param {String} [layerId] The unique identifier for the layer\n * @returns {void}\n * @memberof EnabledElementLayers\n */\n\nfunction setLayerImage(element, image, layerId) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n var baseLayer = enabledElement.layers[0];\n var layer;\n\n if (layerId) {\n layer = getLayer(element, layerId);\n } else {\n layer = getActiveLayer(element);\n }\n\n if (!layer) {\n throw new Error('setLayerImage: Layer not found');\n }\n\n layer.image = image;\n\n if (!image) {\n layer.viewport = undefined;\n return;\n }\n\n if (!layer.viewport) {\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement.canvas, image); // Override the defaults if any optional viewport settings\n // have been specified\n\n if (layer.options && layer.options.viewport) {\n layer.viewport = Object.assign(defaultViewport, layer.options.viewport);\n }\n\n if (baseLayer.layerId !== layerId) {\n rescaleImage(baseLayer, layer);\n }\n }\n}\n/**\n * Retrieve the currently active layer for a Cornerstone element\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n * @return {EnabledElementLayer} The currently active layer\n * @memberof EnabledElementLayers\n */\n\nfunction getActiveLayer(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n return enabledElement.layers.find(function (layer) {\n return layer.layerId === enabledElement.activeLayerId;\n });\n}\n/**\n * Purge the layers\r\n *\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\n *\r\n * @returns {void}\r\n */\n\nfunction purgeLayers(element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element);\n enabledElement.layers = [];\n delete enabledElement.activeLayerId;\n delete enabledElement.lastSyncViewportsState;\n}\n\n/***/ }),\n\n/***/ \"./metaData.js\":\n/*!*********************!*\\\n !*** ./metaData.js ***!\n \\*********************/\n/*! exports provided: addProvider, removeProvider, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addProvider\", function() { return addProvider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeProvider\", function() { return removeProvider; });\n// This module defines a way to access various metadata about an imageId. This layer of abstraction exists\n// So metadata can be provided in different ways (e.g. by parsing DICOM P10 or by a WADO-RS document)\nvar providers = [];\n/**\n * @module Metadata\n */\n\n/**\n * Adds a metadata provider with the specified priority\n * @param {Function} provider Metadata provider function\n * @param {Number} [priority=0] - 0 is default/normal, > 0 is high, < 0 is low\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction addProvider(provider) {\n var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var i; // Find the right spot to insert this provider based on priority\n\n for (i = 0; i < providers.length; i++) {\n if (providers[i].priority <= priority) {\n break;\n }\n } // Insert the decode task at position i\n\n\n providers.splice(i, 0, {\n priority: priority,\n provider: provider\n });\n}\n/**\n * Removes the specified provider\n *\n * @param {Function} provider Metadata provider function\n *\n * @returns {void}\n * @memberof Metadata\n */\n\nfunction removeProvider(provider) {\n for (var i = 0; i < providers.length; i++) {\n if (providers[i].provider === provider) {\n providers.splice(i, 1);\n break;\n }\n }\n}\n/**\n * Gets metadata from the registered metadata providers. Will call each one from highest priority to lowest\n * until one responds\n *\n * @param {String} type The type of metadata requested from the metadata store\n * @param {String} imageId The Cornerstone Image Object's imageId\n *\n * @returns {*} The metadata retrieved from the metadata store\n * @memberof Metadata\n */\n\nfunction getMetaData(type, imageId) {\n // Invoke each provider in priority order until one returns something\n for (var i = 0; i < providers.length; i++) {\n var result = providers[i].provider(type, imageId);\n\n if (result !== undefined) {\n return result;\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addProvider: addProvider,\n removeProvider: removeProvider,\n get: getMetaData\n});\n\n/***/ }),\n\n/***/ \"./pageToPixel.js\":\n/*!************************!*\\\n !*** ./pageToPixel.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the page coordinate system to the pixel coordinate\n * system\n *\n * @param {HTMLElement} element The Cornerstone element within which the input point lies\n * @param {Number} pageX The x value in the page coordinate system\n * @param {Number} pageY The y value in the page coordinate system\n *\n * @returns {{x: Number, y: Number}} The transformed point in the pixel coordinate system\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pageX, pageY) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined) {\n throw new Error('image has not been loaded yet');\n } // Convert the pageX and pageY to the canvas client coordinates\n\n\n var rect = element.getBoundingClientRect();\n var clientX = pageX - rect.left - window.pageXOffset;\n var clientY = pageY - rect.top - window.pageYOffset;\n var pt = {\n x: clientX,\n y: clientY\n };\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n transform.invert();\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./pixelDataToFalseColorData.js\":\n/*!**************************************!*\\\n !*** ./pixelDataToFalseColorData.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pixelDataToFalseColorData; });\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors/index.js */ \"./colors/index.js\");\n\n/**\n * Converts the image pixel data into a false color data\n *\n * @param {Image} image A Cornerstone Image Object\n * @param {Object} lookupTable A lookup table Object\n *\n * @returns {void}\n * @deprecated This function is superseded by the ability to set the Viewport parameters\n * to include colormaps.\n */\n\nfunction pixelDataToFalseColorData(image, lookupTable) {\n if (image.color && !image.falseColor) {\n throw new Error('Color transforms are not implemented yet');\n }\n\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0;\n var numPixels = image.width * image.height;\n var origPixelData = image.origPixelData || image.getPixelData();\n var storedColorPixelData = new Uint8Array(numPixels * 4);\n var sp;\n var mapped;\n image.color = true;\n image.falseColor = true;\n image.origPixelData = origPixelData;\n\n if (lookupTable instanceof _colors_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].LookupTable) {\n lookupTable.build();\n\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n mapped = lookupTable.mapValue(sp);\n storedColorPixelData[canvasImageDataIndex++] = mapped[0];\n storedColorPixelData[canvasImageDataIndex++] = mapped[1];\n storedColorPixelData[canvasImageDataIndex++] = mapped[2];\n storedColorPixelData[canvasImageDataIndex++] = mapped[3];\n }\n } else if (minPixelValue < 0) {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp + -minPixelValue][3]; // Alpha\n }\n } else {\n while (storedPixelDataIndex < numPixels) {\n sp = origPixelData[storedPixelDataIndex++];\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][0]; // Red\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][1]; // Green\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][2]; // Blue\n\n storedColorPixelData[canvasImageDataIndex++] = lookupTable[sp][3]; // Alpha\n }\n }\n\n image.rgba = true;\n image.cachedLut = undefined;\n image.render = undefined;\n image.slope = 1;\n image.intercept = 0;\n image.minPixelValue = 0;\n image.maxPixelValue = 255;\n image.windowWidth = 255;\n image.windowCenter = 128;\n\n image.getPixelData = function () {\n return storedColorPixelData;\n };\n}\n\n/***/ }),\n\n/***/ \"./pixelToCanvas.js\":\n/*!**************************!*\\\n !*** ./pixelToCanvas.js ***!\n \\**************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getTransform.js */ \"./internal/getTransform.js\");\n\n\n/**\n * Converts a point in the pixel coordinate system to the canvas coordinate system\n * system. This can be used to render using canvas context without having the weird\n * side effects that come from scaling and non square pixels\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {{x: Number, y: Number}} pt The transformed point in the pixel coordinate system\n *\n * @returns {{x: Number, y: Number}} The input point in the canvas coordinate system\n * @memberof PixelCoordinateSystem\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, pt) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var transform = Object(_internal_getTransform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement);\n return transform.transformPoint(pt.x, pt.y);\n});\n\n/***/ }),\n\n/***/ \"./rendering/doesImageNeedToBeRendered.js\":\n/*!************************************************!*\\\n !*** ./rendering/doesImageNeedToBeRendered.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Determine whether or not an Enabled Element needs to be re-rendered.\n *\n * If the imageId has changed, or if any of the last rendered viewport\n * parameters have changed, this function will return true.\n *\n * @param {EnabledElement} enabledElement An Enabled Element\n * @param {Image} image An Image\n * @return {boolean} Whether or not the Enabled Element needs to re-render its image\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var lastRenderedImageId = enabledElement.renderingTools.lastRenderedImageId;\n var lastRenderedViewport = enabledElement.renderingTools.lastRenderedViewport;\n return image.imageId !== lastRenderedImageId || !lastRenderedViewport || lastRenderedViewport.windowCenter !== enabledElement.viewport.voi.windowCenter || lastRenderedViewport.windowWidth !== enabledElement.viewport.voi.windowWidth || lastRenderedViewport.invert !== enabledElement.viewport.invert || lastRenderedViewport.rotation !== enabledElement.viewport.rotation || lastRenderedViewport.hflip !== enabledElement.viewport.hflip || lastRenderedViewport.vflip !== enabledElement.viewport.vflip || lastRenderedViewport.modalityLUT !== enabledElement.viewport.modalityLUT || lastRenderedViewport.voiLUT !== enabledElement.viewport.voiLUT || lastRenderedViewport.colormap !== enabledElement.viewport.colormap;\n});\n\n/***/ }),\n\n/***/ \"./rendering/getLut.js\":\n/*!*****************************!*\\\n !*** ./rendering/getLut.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/computeAutoVoi.js */ \"./internal/computeAutoVoi.js\");\n/* harmony import */ var _lutMatches_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lutMatches.js */ \"./rendering/lutMatches.js\");\n/* harmony import */ var _internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/generateLut.js */ \"./internal/generateLut.js\");\n\n\n\n/**\n * Retrieve or generate a LUT Array for an Image and Viewport\n *\n * @param {Image} image An Image Object\n * @param {Viewport} viewport An Viewport Object\n * @param {Boolean} invalidated Whether or not the LUT data has been invalidated\n * (e.g. by a change to the windowWidth, windowCenter, or invert viewport parameters).\n * @return {Uint8ClampedArray} LUT Array\n * @memberof rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (image, viewport, invalidated) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.modalityLUT, viewport.modalityLUT) && Object(_lutMatches_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image.cachedLut.voiLUT, viewport.voiLUT) && image.cachedLut.invert === viewport.invert && invalidated !== true) {\n return image.cachedLut.lutArray;\n }\n\n Object(_internal_computeAutoVoi_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(viewport, image); // Lut is invalid or not present, regenerate it and cache it\n\n Object(_internal_generateLut_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert, viewport.modalityLUT, viewport.voiLUT);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n image.cachedLut.voiLUT = viewport.voiLUT;\n image.cachedLut.modalityLUT = viewport.modalityLUT;\n return image.cachedLut.lutArray;\n});\n\n/***/ }),\n\n/***/ \"./rendering/index.js\":\n/*!****************************!*\\\n !*** ./rendering/index.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n/* harmony import */ var _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderGrayscaleImage.js */ \"./rendering/renderGrayscaleImage.js\");\n/* harmony import */ var _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWebImage.js */ \"./rendering/renderWebImage.js\");\n/* harmony import */ var _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderPseudoColorImage.js */ \"./rendering/renderPseudoColorImage.js\");\n/* harmony import */ var _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderLabelMapImage.js */ \"./rendering/renderLabelMapImage.js\");\n/* harmony import */ var _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./renderToCanvas.js */ \"./rendering/renderToCanvas.js\");\n\n\n\n\n\n\n/**\n * @module rendering\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n colorImage: _renderColorImage_js__WEBPACK_IMPORTED_MODULE_0__[\"renderColorImage\"],\n grayscaleImage: _renderGrayscaleImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderGrayscaleImage\"],\n webImage: _renderWebImage_js__WEBPACK_IMPORTED_MODULE_2__[\"renderWebImage\"],\n pseudoColorImage: _renderPseudoColorImage_js__WEBPACK_IMPORTED_MODULE_3__[\"renderPseudoColorImage\"],\n labelMapImage: _renderLabelMapImage_js__WEBPACK_IMPORTED_MODULE_4__[\"renderLabelMapImage\"],\n toCanvas: _renderToCanvas_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./rendering/initializeRenderCanvas.js\":\n/*!*********************************************!*\\\n !*** ./rendering/initializeRenderCanvas.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Sets size and clears canvas\n *\n * @param {Object} enabledElement Cornerstone Enabled Element\n * @param {Object} image Image to be rendered\n * @returns {void}\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, image) {\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // Resize the canvas\n\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var canvasContext = renderCanvas.getContext('2d'); // NOTE - we need to fill the render canvas with white pixels since we\n // control the luminance using the alpha channel to improve rendering performance.\n\n canvasContext.fillStyle = 'white';\n canvasContext.fillRect(0, 0, renderCanvas.width, renderCanvas.height);\n var renderCanvasData = canvasContext.getImageData(0, 0, image.width, image.height);\n enabledElement.renderingTools.renderCanvasContext = canvasContext;\n enabledElement.renderingTools.renderCanvasData = renderCanvasData;\n});\n\n/***/ }),\n\n/***/ \"./rendering/lutMatches.js\":\n/*!*********************************!*\\\n !*** ./rendering/lutMatches.js ***!\n \\*********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Check if two lookup tables match\n *\n * @param {LUT} a A lookup table function\n * @param {LUT} b Another lookup table function\n * @return {boolean} Whether or not they match\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (a, b) {\n // If undefined, they are equal\n if (!a && !b) {\n return true;\n } // If one is undefined, not equal\n\n\n if (!a || !b) {\n return false;\n } // Check the unique ids\n\n\n return a.id === b.id;\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderColorImage.js\":\n/*!***************************************!*\\\n !*** ./rendering/renderColorImage.js ***!\n \\***************************************/\n/*! exports provided: renderColorImage, addColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderColorImage\", function() { return renderColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addColorLayer\", function() { return addColorLayer; });\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/generateColorLut.js */ \"./internal/generateColorLut.js\");\n/* harmony import */ var _internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/storedColorPixelDataToCanvasImageData.js */ \"./internal/storedColorPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/storedRGBAPixelDataToCanvasImageData.js */ \"./internal/storedRGBAPixelDataToCanvasImageData.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Generates an appropriate Look Up Table to render the given image with the given window width and level (specified in the viewport)\n * Uses an internal cache for performance\n *\n * @param {Object} image The image to be rendered\n * @param {Object} viewport The viewport values used for rendering\n * @returns {Uint8ClampedArray} Look Up Table array.\n * @memberof rendering\n */\n\nfunction getLut(image, viewport) {\n // If we have a cached lut and it has the right values, return it immediately\n if (image.cachedLut !== undefined && image.cachedLut.windowCenter === viewport.voi.windowCenter && image.cachedLut.windowWidth === viewport.voi.windowWidth && image.cachedLut.invert === viewport.invert) {\n return image.cachedLut.lutArray;\n } // Lut is invalid or not present, regenerate it and cache it\n\n\n Object(_internal_generateColorLut_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, viewport.voi.windowWidth, viewport.voi.windowCenter, viewport.invert);\n image.cachedLut.windowWidth = viewport.voi.windowWidth;\n image.cachedLut.windowCenter = viewport.voi.windowCenter;\n image.cachedLut.invert = viewport.invert;\n return image.cachedLut.lutArray;\n}\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || !canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas; // The ww/wc is identity and not inverted - get a canvas with the image rendered into it for\n // Fast drawing\n\n if (enabledElement.viewport.voi.windowWidth === 255 && enabledElement.viewport.voi.windowCenter === 128 && enabledElement.viewport.invert === false && image.getCanvas && image.getCanvas()) {\n return image.getCanvas();\n } // Apply the lut to the stored pixel data onto the render canvas\n\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n var colorLut = getLut(image, enabledElement.viewport);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // The color image voi/invert has been modified - apply the lut to the underlying\n // Pixel data and put it into the renderCanvas\n\n if (image.rgba) {\n Object(_internal_storedRGBAPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, colorLut, renderCanvasData.data);\n } else {\n Object(_internal_storedColorPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(image, colorLut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to render a color image to an enabled element\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderColorImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderColorImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\nfunction addColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addColorLayer: image must be loaded before it can be drawn');\n } // All multi-layer images should include the alpha value\n\n\n image.rgba = true;\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderGrayscaleImage.js\":\n/*!*******************************************!*\\\n !*** ./rendering/renderGrayscaleImage.js ***!\n \\*******************************************/\n/*! exports provided: renderGrayscaleImage, addGrayscaleLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderGrayscaleImage\", function() { return renderGrayscaleImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addGrayscaleLayer\", function() { return addGrayscaleLayer; });\n/* harmony import */ var _internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageData.js */ \"./internal/storedPixelDataToCanvasImageData.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataRGBA.js */ \"./internal/storedPixelDataToCanvasImageDataRGBA.js\");\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webgl/index.js */ \"./webgl/index.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @param {Boolean} [useAlphaChannel = true] Will an alpha channel be used\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n var useAlphaChannel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canvasWasColor = enabledElement.renderingTools.lastRenderedIsColor === true;\n\n if (!enabledElement.renderingTools.renderCanvas || canvasWasColor) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(enabledElement, image) === false && invalidated !== true) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext; // Gray scale image - apply the lut and put the resulting image onto the render canvas\n\n if (useAlphaChannel) {\n Object(_internal_storedPixelDataToCanvasImageData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(image, lut, renderCanvasData.data);\n } else {\n Object(_internal_storedPixelDataToCanvasImageDataRGBA_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(image, lut, renderCanvasData.data);\n }\n\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a grayscale image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderGrayscaleImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, context);\n var renderCanvas;\n\n if (enabledElement.options && enabledElement.options.renderer && enabledElement.options.renderer.toLowerCase() === 'webgl') {\n // If this enabled element has the option set for WebGL, we should\n // User it as our renderer.\n renderCanvas = _webgl_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].renderer.render(enabledElement);\n } else {\n // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n }\n\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a grayscale image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @param {Boolean} [useAlphaChannel] - Whether or not to render the grayscale image using only the alpha channel.\n This does not work if this layer is not the first layer in the enabledElement.\n * @returns {void}\n */\n\nfunction addGrayscaleLayer(layer, invalidated) {\n var useAlphaChannel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (layer === undefined) {\n throw new Error('addGrayscaleLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addGrayscaleLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated, useAlphaChannel);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderLabelMapImage.js\":\n/*!******************************************!*\\\n !*** ./rendering/renderLabelMapImage.js ***!\n \\******************************************/\n/*! exports provided: renderLabelMapImage, addLabelMapLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderLabelMapImage\", function() { return renderLabelMapImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLabelMapLayer\", function() { return addLabelMapLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataColorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataColorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderLabelMapImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataColorLUT_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(image, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a label map image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderLabelMapImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderLabelMapImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderLabelMapImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for label map pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addLabelMapLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addLabelMapLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addLabelMapLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderPseudoColorImage.js\":\n/*!*********************************************!*\\\n !*** ./rendering/renderPseudoColorImage.js ***!\n \\*********************************************/\n/*! exports provided: renderPseudoColorImage, addPseudoColorLayer */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderPseudoColorImage\", function() { return renderPseudoColorImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addPseudoColorLayer\", function() { return addPseudoColorLayer; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _internal_now_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/now.js */ \"./internal/now.js\");\n/* harmony import */ var _initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initializeRenderCanvas.js */ \"./rendering/initializeRenderCanvas.js\");\n/* harmony import */ var _getLut_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getLut.js */ \"./rendering/getLut.js\");\n/* harmony import */ var _saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveLastRendered.js */ \"./rendering/saveLastRendered.js\");\n/* harmony import */ var _doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./doesImageNeedToBeRendered.js */ \"./rendering/doesImageNeedToBeRendered.js\");\n/* harmony import */ var _internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js */ \"./internal/storedPixelDataToCanvasImageDataPseudocolorLUT.js\");\n/* harmony import */ var _colors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../colors/index.js */ \"./colors/index.js\");\n\n\n\n\n\n\n\n\n/**\n * Returns an appropriate canvas to render the Image. If the canvas available in the cache is appropriate\n * it is returned, otherwise adjustments are made. It also sets the color transfer functions.\n *\n * @param {Object} enabledElement The cornerstone enabled element\n * @param {Object} image The image to be rendered\n * @param {Boolean} invalidated Is pixel data valid\n * @returns {HTMLCanvasElement} An appropriate canvas for rendering the image\n * @memberof rendering\n */\n\nfunction getRenderCanvas(enabledElement, image, invalidated) {\n if (!enabledElement.renderingTools.renderCanvas) {\n enabledElement.renderingTools.renderCanvas = document.createElement('canvas');\n }\n\n var renderCanvas = enabledElement.renderingTools.renderCanvas;\n var colormap = enabledElement.viewport.colormap || enabledElement.options.colormap;\n\n if (enabledElement.options.colormap) {\n console.warn('enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead');\n }\n\n if (colormap && typeof colormap === 'string') {\n colormap = _colors_index_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getColormap(colormap);\n }\n\n if (!colormap) {\n throw new Error('renderPseudoColorImage: colormap not found.');\n }\n\n var colormapId = colormap.getId();\n\n if (Object(_doesImageNeedToBeRendered_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(enabledElement, image) === false && invalidated !== true && enabledElement.renderingTools.colormapId === colormapId) {\n return renderCanvas;\n } // If our render canvas does not match the size of this image reset it\n // NOTE: This might be inefficient if we are updating multiple images of different\n // Sizes frequently.\n\n\n if (renderCanvas.width !== image.width || renderCanvas.height !== image.height) {\n Object(_initializeRenderCanvas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElement, image);\n } // Get the lut to use\n\n\n var start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n if (!enabledElement.renderingTools.colorLut || invalidated || enabledElement.renderingTools.colormapId !== colormapId) {\n colormap.setNumberOfColors(256);\n enabledElement.renderingTools.colorLut = colormap.createLookupTable();\n enabledElement.renderingTools.colormapId = colormapId;\n }\n\n var lut = Object(_getLut_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(image, enabledElement.viewport, invalidated);\n image.stats = image.stats || {};\n image.stats.lastLutGenerateTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n var colorLut = enabledElement.renderingTools.colorLut;\n var renderCanvasData = enabledElement.renderingTools.renderCanvasData;\n var renderCanvasContext = enabledElement.renderingTools.renderCanvasContext;\n Object(_internal_storedPixelDataToCanvasImageDataPseudocolorLUT_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(image, lut, colorLut, renderCanvasData.data);\n start = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n renderCanvasContext.putImageData(renderCanvasData, 0, 0);\n image.stats.lastPutImageDataTime = Object(_internal_now_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])() - start;\n return renderCanvas;\n}\n/**\n * API function to draw a pseudo-color image to a given enabledElement\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\n\nfunction renderPseudoColorImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('drawImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('drawImage: image must be loaded before it can be drawn');\n } // Get the canvas context and reset the transform\n\n\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context); // If no options are set we will retrieve the renderCanvas through the\n // Normal Canvas rendering path\n // TODO: Add WebGL support for pseudocolor pipeline\n\n var renderCanvas = getRenderCanvas(enabledElement, image, invalidated);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(renderCanvas, sx, sy, width, height, 0, 0, width, height);\n enabledElement.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement);\n}\n/**\n * API function to draw a pseudo-color image to a given layer\n *\n * @param {EnabledElementLayer} layer The layer that the image will be added to\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n */\n\nfunction addPseudoColorLayer(layer, invalidated) {\n if (layer === undefined) {\n throw new Error('addPseudoColorLayer: layer parameter must not be undefined');\n }\n\n var image = layer.image;\n\n if (image === undefined) {\n throw new Error('addPseudoColorLayer: image must be loaded before it can be drawn');\n }\n\n layer.canvas = getRenderCanvas(layer, image, invalidated);\n var context = layer.canvas.getContext('2d'); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !layer.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled;\n layer.renderingTools = Object(_saveLastRendered_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(layer);\n}\n\n/***/ }),\n\n/***/ \"./rendering/renderToCanvas.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderToCanvas.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/drawImageSync.js */ \"./internal/drawImageSync.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/tryEnableWebgl.js */ \"./internal/tryEnableWebgl.js\");\n\n\n\n\n\n/**\r\n * @typedef {Object} EnabledElementStub\r\n * @property {HTMLElement} element The enabled element\r\n * @property {HTMLCanvasElement} canvas The current canvas\r\n * @property {Object} image Currently displayed image\r\n * @property {Boolean} invalid Whether or not the image pixel data has been changed\r\n * @property {Boolean} needsRedraw A flag for triggering a redraw of the canvas without re-retrieving the pixel data, since it remains valid\r\n * @property {Object} options Layer drawing options\r\n * @property {Object[]} layers Layers added to the EnabledElement\r\n * @property {Object} data\r\n * @property {Object} renderingTools\r\n * @property {Object} viewport The current viewport\r\n * @memberof rendering\r\n */\n\n/**\r\n * creates a dummy enabled element\r\n *\r\n * @param {HTMLCanvasElement} canvas the canvas that will be assigned to the enabled element.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param { any } options Options for rendering the image (e.g.enable webgl by {renderer: 'webgl' })\r\n * @param { any } viewport A set of Cornerstone viewport parameters\r\n * @returns {EnabledElementStub} a dummy enabled element\r\n * @memberof rendering\r\n */\n\nfunction createEnabledElementStub(canvas, image, options, viewport) {\n return {\n element: canvas,\n canvas: canvas,\n image: image,\n invalid: true,\n // True if image needs to be drawn, false if not\n needsRedraw: true,\n options: options,\n layers: [],\n data: {},\n renderingTools: {},\n viewport: viewport\n };\n}\n/**\r\n * Render the image to the provided canvas immediately.\r\n * @param {any} canvas The HTML canvas where the image will be rendered.\r\n * @param {any} image An Image loaded by a Cornerstone Image Loader\r\n * @param {any} [viewport = null] A set of Cornerstone viewport parameters\r\n * @param {any} [options = null] Options for rendering the image (e.g. enable webgl by {renderer: 'webgl'})\r\n * @returns {void}\r\n * @memberof rendering\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (canvas, image) {\n var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (canvas === undefined) {\n throw new Error('renderToCanvas: parameter canvas cannot be undefined');\n } // If this enabled element has the option set for WebGL, we should\n // Check if this device actually supports it\n\n\n if (options && options.renderer && options.renderer.toLowerCase() === 'webgl') {\n Object(_internal_tryEnableWebgl_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n }\n\n var defaultViewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canvas, image);\n\n if (viewport) {\n Object.assign(defaultViewport, viewport);\n }\n\n var enabledElementStub = createEnabledElementStub(canvas, image, options, defaultViewport);\n var eventDetails = {\n enabledElement: enabledElementStub,\n timestamp: Date.now()\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElementStub.element, _events_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].PRE_RENDER, eventDetails);\n Object(_internal_drawImageSync_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(enabledElementStub, enabledElementStub.invalid);\n});\n\n/***/ }),\n\n/***/ \"./rendering/renderWebImage.js\":\n/*!*************************************!*\\\n !*** ./rendering/renderWebImage.js ***!\n \\*************************************/\n/*! exports provided: renderWebImage */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderWebImage\", function() { return renderWebImage; });\n/* harmony import */ var _setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../setToPixelCoordinateSystem.js */ \"./setToPixelCoordinateSystem.js\");\n/* harmony import */ var _renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderColorImage.js */ \"./rendering/renderColorImage.js\");\n\n\n/**\n * API function to draw a standard web image (PNG, JPG) to an enabledImage\n *\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element to redraw\n * @param {Boolean} invalidated - true if pixel data has been invalidated and cached rendering should not be used\n * @returns {void}\n * @memberof rendering\n */\n\nfunction renderWebImage(enabledElement, invalidated) {\n if (enabledElement === undefined) {\n throw new Error('renderWebImage: enabledElement parameter must not be undefined');\n }\n\n var image = enabledElement.image;\n\n if (image === undefined) {\n throw new Error('renderWebImage: image must be loaded before it can be drawn');\n } // If the viewport ww/wc and invert all match the initial state of the image, we can draw the image\n // Directly. If any of those are changed, we call renderColorImage() to apply the lut\n\n\n if (enabledElement.viewport.voi.windowWidth === enabledElement.image.windowWidth && enabledElement.viewport.voi.windowCenter === enabledElement.image.windowCenter && enabledElement.viewport.invert === false) {\n // Get the canvas context and reset the transform\n var context = enabledElement.canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0); // Clear the canvas\n\n context.fillStyle = 'black';\n context.fillRect(0, 0, enabledElement.canvas.width, enabledElement.canvas.height); // Turn off image smooth/interpolation if pixelReplication is set in the viewport\n\n context.imageSmoothingEnabled = !enabledElement.viewport.pixelReplication;\n context.mozImageSmoothingEnabled = context.imageSmoothingEnabled; // Save the canvas context state and apply the viewport properties\n\n Object(_setToPixelCoordinateSystem_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, context);\n var sx = enabledElement.viewport.displayedArea.tlhc.x - 1;\n var sy = enabledElement.viewport.displayedArea.tlhc.y - 1;\n var width = enabledElement.viewport.displayedArea.brhc.x - sx;\n var height = enabledElement.viewport.displayedArea.brhc.y - sy;\n context.drawImage(image.getImage(), sx, sy, width, height, 0, 0, width, height);\n } else {\n Object(_renderColorImage_js__WEBPACK_IMPORTED_MODULE_1__[\"renderColorImage\"])(enabledElement, invalidated);\n }\n}\n\n/***/ }),\n\n/***/ \"./rendering/saveLastRendered.js\":\n/*!***************************************!*\\\n !*** ./rendering/saveLastRendered.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Saves the parameters of the last render into renderingTools, used later to decide if data can be reused.\n *\n * @param {Object} enabledElement Cornerstone EnabledElement\n * @returns {Object} enabledElement.renderingTools\n * @memberof rendering\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement) {\n var imageId = enabledElement.image.imageId;\n var viewport = enabledElement.viewport;\n var isColor = enabledElement.image.color;\n enabledElement.renderingTools.lastRenderedImageId = imageId;\n enabledElement.renderingTools.lastRenderedIsColor = isColor;\n enabledElement.renderingTools.lastRenderedViewport = {\n windowCenter: viewport.voi.windowCenter,\n windowWidth: viewport.voi.windowWidth,\n invert: viewport.invert,\n rotation: viewport.rotation,\n hflip: viewport.hflip,\n vflip: viewport.vflip,\n modalityLUT: viewport.modalityLUT,\n voiLUT: viewport.voiLUT,\n colormap: viewport.colormap\n };\n return enabledElement.renderingTools;\n});\n\n/***/ }),\n\n/***/ \"./reset.js\":\n/*!******************!*\\\n !*** ./reset.js ***!\n \\******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\n/**\n * Resets the viewport to the default settings\n *\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement.canvas, enabledElement.image);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n});\n\n/***/ }),\n\n/***/ \"./resize.js\":\n/*!*******************!*\\\n !*** ./resize.js ***!\n \\*******************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fitToWindow.js */ \"./fitToWindow.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./triggerEvent.js */ \"./triggerEvent.js\");\n/* harmony import */ var _internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/getImageSize.js */ \"./internal/getImageSize.js\");\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./events.js */ \"./events.js\");\n\n\n\n\n\n\n/**\r\n * This module is responsible for enabling an element to display images with cornerstone\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {HTMLElement} canvas The Canvas DOM element within the DOM element enabled for Cornerstone\r\n * @returns {void}\r\n */\n\nfunction setCanvasSize(element, canvas) {\n // The device pixel ratio is 1.0 for normal displays and > 1.0\n // For high DPI displays like Retina\n\n /*\r\n This functionality is disabled due to buggy behavior on systems with mixed DPI's. If the canvas\r\n is created on a display with high DPI (e.g. 2.0) and then the browser window is dragged to\r\n a different display with a different DPI (e.g. 1.0), the canvas is not recreated so the pageToPixel\r\n produces incorrect results. I couldn't find any way to determine when the DPI changed other than\r\n by polling which is not very clean. If anyone has any ideas here, please let me know, but for now\r\n we will disable this functionality. We may want\r\n to add a mechanism to optionally enable this functionality if we can determine it is safe to do\r\n so (e.g. iPad or iPhone or perhaps enumerate the displays on the system. I am choosing\r\n to be cautious here since I would rather not have bug reports or safety issues related to this\r\n scenario.\r\n var devicePixelRatio = window.devicePixelRatio;\r\n if(devicePixelRatio === undefined) {\r\n devicePixelRatio = 1.0;\r\n }\r\n */\n // Avoid setting the same value because it flashes the canvas with IE and Edge\n if (canvas.width !== element.clientWidth) {\n canvas.width = element.clientWidth;\n canvas.style.width = \"\".concat(element.clientWidth, \"px\");\n } // Avoid setting the same value because it flashes the canvas with IE and Edge\n\n\n if (canvas.height !== element.clientHeight) {\n canvas.height = element.clientHeight;\n canvas.style.height = \"\".concat(element.clientHeight, \"px\");\n }\n}\n/**\r\n * Checks if the image of a given enabled element fitted the window\r\n * before the resize\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {Boolean} true if it fitted the windows, false otherwise\r\n */\n\n\nfunction wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var imageSize = Object(_internal_getImageSize_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(enabledElement.image, enabledElement.viewport.rotation);\n var imageWidth = Math.round(imageSize.width * scale);\n var imageHeight = Math.round(imageSize.height * scale);\n var x = enabledElement.viewport.translation.x;\n var y = enabledElement.viewport.translation.y;\n return imageWidth === oldCanvasWidth && imageHeight <= oldCanvasHeight || imageWidth <= oldCanvasWidth && imageHeight === oldCanvasHeight && x === 0 && y === 0;\n}\n/**\r\n * Rescale the image relative to the changed size of the canvas\r\n *\r\n * @param {EnabledElement} enabledElement The Cornerstone Enabled Element\r\n * @param {number} oldCanvasWidth The width of the canvas before the resize\r\n * @param {number} oldCanvasHeight The height of the canvas before the resize\r\n * @return {void}\r\n */\n\n\nfunction relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight) {\n var scale = enabledElement.viewport.scale;\n var canvasWidth = enabledElement.canvas.width;\n var canvasHeight = enabledElement.canvas.height;\n var relWidthChange = canvasWidth / oldCanvasWidth;\n var relHeightChange = canvasHeight / oldCanvasHeight;\n var relChange = Math.sqrt(relWidthChange * relHeightChange);\n enabledElement.viewport.scale = relChange * scale;\n}\n/**\r\n * Resizes an enabled element and optionally fits the image to window\r\n *\r\n * @param {HTMLElement} element The DOM element enabled for Cornerstone\r\n * @param {Boolean} forceFitToWindow true to to force a refit, false to rescale accordingly\r\n * @returns {void}\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, forceFitToWindow) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n var oldCanvasWidth = enabledElement.canvas.width;\n var oldCanvasHeight = enabledElement.canvas.height;\n setCanvasSize(element, enabledElement.canvas);\n var eventData = {\n element: element\n };\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, _events_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ELEMENT_RESIZED, eventData);\n\n if (enabledElement.image === undefined) {\n return;\n }\n\n if (forceFitToWindow || wasFitToWindow(enabledElement, oldCanvasWidth, oldCanvasHeight)) {\n // Fit the image to the window again if it fitted before the resize\n Object(_fitToWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n } else {\n // Adapt the scale of a zoomed or panned image relative to the size change\n relativeRescale(enabledElement, oldCanvasWidth, oldCanvasHeight);\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./setToPixelCoordinateSystem.js\":\n/*!***************************************!*\\\n !*** ./setToPixelCoordinateSystem.js ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/calculateTransform.js */ \"./internal/calculateTransform.js\");\n\n/**\n * Sets the canvas context transformation matrix to the pixel coordinate system. This allows\n * geometry to be driven using the canvas context using coordinates in the pixel coordinate system\n * @param {EnabledElement} enabledElement The\n * @param {CanvasRenderingContext2D} context The CanvasRenderingContext2D for the enabledElement's Canvas\n * @param {Number} [scale] Optional scale to apply\n * @returns {void}\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (enabledElement, context, scale) {\n if (enabledElement === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter enabledElement must not be undefined');\n }\n\n if (context === undefined) {\n throw new Error('setToPixelCoordinateSystem: parameter context must not be undefined');\n }\n\n var transform = Object(_internal_calculateTransform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement, scale);\n context.setTransform(transform.m[0], transform.m[1], transform.m[2], transform.m[3], transform.m[4], transform.m[5]);\n});\n\n/***/ }),\n\n/***/ \"./setViewport.js\":\n/*!************************!*\\\n !*** ./setViewport.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/getDefaultViewport.js */ \"./internal/getDefaultViewport.js\");\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _updateImage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateImage.js */ \"./updateImage.js\");\n\n\n\nvar MIN_WINDOW_WIDTH = 0.000001;\nvar MIN_VIEWPORT_SCALE = 0.0001;\n/**\n * Sets/updates viewport of a given enabled element\n *\n * @param {HTMLElement} element - DOM element of the enabled element\n * @param {Viewport} [viewport] - Object containing the viewport properties\n * @returns {void}\n * @memberof ViewportSettings\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element, viewport) {\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_1__[\"getEnabledElement\"])(element); // If viewport is not already set, start with default and merge new\n // viewport options later\n\n if (enabledElement.viewport === undefined) {\n enabledElement.viewport = Object(_internal_getDefaultViewport_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(enabledElement.canvas);\n } // Merge viewport\n\n\n if (viewport) {\n for (var attrname in viewport) {\n if (viewport[attrname] !== null) {\n enabledElement.viewport[attrname] = viewport[attrname];\n }\n }\n } // Prevent window width from being too small (note that values close to zero are valid and can occur with\n // PET images in particular)\n\n\n if (enabledElement.viewport.voi.windowWidth) {\n enabledElement.viewport.voi.windowWidth = Math.max(viewport.voi.windowWidth, MIN_WINDOW_WIDTH);\n } // Prevent scale from getting too small\n\n\n if (enabledElement.viewport.scale) {\n enabledElement.viewport.scale = Math.max(viewport.scale, MIN_VIEWPORT_SCALE);\n } // Normalize the rotation value to a positive rotation in degrees\n\n\n enabledElement.viewport.rotation %= 360;\n\n if (enabledElement.viewport.rotation < 0) {\n enabledElement.viewport.rotation += 360;\n }\n\n if (enabledElement.image) {\n // Force the image to be updated since the viewport has been modified\n Object(_updateImage_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element);\n }\n});\n\n/***/ }),\n\n/***/ \"./triggerEvent.js\":\n/*!*************************!*\\\n !*** ./triggerEvent.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return triggerEvent; });\n/**\n * Trigger a CustomEvent\n *\n * @param {EventTarget} el The element or EventTarget to trigger the event upon\n * @param {String} type The event type name\n * @param {Object|null} detail=null The event data to be sent\n * @returns {Boolean} The return value is false if at least one event listener called preventDefault(). Otherwise it returns true.\n */\nfunction triggerEvent(el, type) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var event; // This check is needed to polyfill CustomEvent on IE11-\n\n if (typeof window.CustomEvent === 'function') {\n event = new CustomEvent(type, {\n detail: detail,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, detail);\n }\n\n return el.dispatchEvent(event);\n}\n\n/***/ }),\n\n/***/ \"./updateImage.js\":\n/*!************************!*\\\n !*** ./updateImage.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _enabledElements_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enabledElements.js */ \"./enabledElements.js\");\n/* harmony import */ var _internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/drawImage.js */ \"./internal/drawImage.js\");\n\n\n/**\n * Forces the image to be updated/redrawn for the specified enabled element\n * @param {HTMLElement} element An HTML Element enabled for Cornerstone\n * @param {Boolean} [invalidated=false] Whether or not the image pixel data has been changed, necessitating a redraw\n *\n * @returns {void}\n * @memberof Drawing\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (element) {\n var invalidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var enabledElement = Object(_enabledElements_js__WEBPACK_IMPORTED_MODULE_0__[\"getEnabledElement\"])(element);\n\n if (enabledElement.image === undefined && !enabledElement.layers.length) {\n throw new Error('updateImage: image has not been loaded yet');\n }\n\n Object(_internal_drawImage_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(enabledElement, invalidated);\n});\n\n/***/ }),\n\n/***/ \"./webgl/createProgramFromString.js\":\n/*!******************************************!*\\\n !*** ./webgl/createProgramFromString.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/**\n * Creates and compiles a shader.\n *\n * @param {!WebGLRenderingContext} gl The WebGL Context.\n * @param {string} shaderSource The GLSL source code for the shader.\n * @param {number} shaderType The type of shader, VERTEX_SHADER or FRAGMENT_SHADER.\n *\n * @return {!WebGLShader} The shader.\n * @memberof WebGLRendering\n */\nfunction compileShader(gl, shaderSource, shaderType) {\n // Create the shader object\n var shader = gl.createShader(shaderType); // Set the shader source code.\n\n gl.shaderSource(shader, shaderSource); // Compile the shader\n\n gl.compileShader(shader); // Check if it compiled\n\n var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong during compilation; get the error\n var infoLog = gl.getShaderInfoLog(shader);\n console.error(\"Could not compile shader:\\n\".concat(infoLog));\n }\n\n return shader;\n}\n/**\n * Creates a program from 2 shaders.\n *\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShader A vertex shader.\n * @param {!WebGLShader} fragmentShader A fragment shader.\n * @return {!WebGLProgram} A program.\n * @memberof WebGLRendering\n */\n\n\nfunction createProgram(gl, vertexShader, fragmentShader) {\n // Create a program.\n var program = gl.createProgram(); // Attach the shaders.\n\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader); // Link the program.\n\n gl.linkProgram(program); // Check if it linked.\n\n var success = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!success && !gl.isContextLost()) {\n // Something went wrong with the link\n var infoLog = gl.getProgramInfoLog(program);\n console.error(\"WebGL program filed to link:\\n\".concat(infoLog));\n }\n\n return program;\n}\n/**\n * Creates a program from 2 shaders source (Strings)\n * @param {!WebGLRenderingContext} gl The WebGL context.\n * @param {!WebGLShader} vertexShaderSrc Vertex shader string\n * @param {!WebGLShader} fragShaderSrc Fragment shader string\n * @return {!WebGLProgram} A program\n * @memberof WebGLRendering\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (gl, vertexShaderSrc, fragShaderSrc) {\n var vertexShader = compileShader(gl, vertexShaderSrc, gl.VERTEX_SHADER);\n var fragShader = compileShader(gl, fragShaderSrc, gl.FRAGMENT_SHADER);\n return createProgram(gl, vertexShader, fragShader);\n});\n\n/***/ }),\n\n/***/ \"./webgl/index.js\":\n/*!************************!*\\\n !*** ./webgl/index.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"./webgl/renderer.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n\n\n\n/**\n * @module WebGLRendering\n */\n\nvar mod = {\n createProgramFromString: _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n renderer: {\n render: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n initRenderer: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"initRenderer\"],\n getRenderCanvas: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"getRenderCanvas\"],\n isWebGLAvailable: _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLAvailable\"]\n },\n textureCache: _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\nObject.defineProperty(mod, 'isWebGLInitialized', {\n enumerable: true,\n configurable: false,\n get: function get() {\n return _renderer_js__WEBPACK_IMPORTED_MODULE_0__[\"isWebGLInitialized\"];\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (mod);\n\n/***/ }),\n\n/***/ \"./webgl/renderer.js\":\n/*!***************************!*\\\n !*** ./webgl/renderer.js ***!\n \\***************************/\n/*! exports provided: isWebGLInitialized, getRenderCanvas, initRenderer, render, isWebGLAvailable */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLInitialized\", function() { return isWebGLInitialized; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderCanvas\", function() { return getRenderCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initRenderer\", function() { return initRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWebGLAvailable\", function() { return isWebGLAvailable; });\n/* harmony import */ var _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shaders/index.js */ \"./webgl/shaders/index.js\");\n/* harmony import */ var _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vertexShader.js */ \"./webgl/vertexShader.js\");\n/* harmony import */ var _textureCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./textureCache.js */ \"./webgl/textureCache.js\");\n/* harmony import */ var _createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createProgramFromString.js */ \"./webgl/createProgramFromString.js\");\n/* eslint no-bitwise: 0 */\n\n\n\n\nvar renderCanvas = document.createElement('canvas');\nvar gl;\nvar texCoordBuffer;\nvar positionBuffer;\nvar isWebGLInitialized = false;\n\nfunction getRenderCanvas() {\n return renderCanvas;\n}\n\nfunction initShaders() {\n for (var id in _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"]) {\n // Console.log(\"WEBGL: Loading shader\", id);\n var shader = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][id];\n shader.attributes = {};\n shader.uniforms = {};\n shader.vert = _vertexShader_js__WEBPACK_IMPORTED_MODULE_1__[\"vertexShader\"];\n shader.program = Object(_createProgramFromString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(gl, shader.vert, shader.frag);\n shader.attributes.texCoordLocation = gl.getAttribLocation(shader.program, 'a_texCoord');\n gl.enableVertexAttribArray(shader.attributes.texCoordLocation);\n shader.attributes.positionLocation = gl.getAttribLocation(shader.program, 'a_position');\n gl.enableVertexAttribArray(shader.attributes.positionLocation);\n shader.uniforms.resolutionLocation = gl.getUniformLocation(shader.program, 'u_resolution');\n }\n}\n\nfunction initRenderer() {\n if (isWebGLInitialized === true) {\n // Console.log(\"WEBGL Renderer already initialized\");\n return;\n }\n\n if (initWebGL(renderCanvas)) {\n initBuffers();\n initShaders(); // Console.log(\"WEBGL Renderer initialized!\");\n\n isWebGLInitialized = true;\n }\n}\n\nfunction updateRectangle(gl, width, height) {\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([width, height, 0, height, width, 0, 0, 0]), gl.STATIC_DRAW);\n}\n\nfunction handleLostContext(event) {\n event.preventDefault();\n console.warn('WebGL Context Lost!');\n}\n\nfunction handleRestoredContext(event) {\n event.preventDefault();\n isWebGLInitialized = false;\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].purgeCache();\n initRenderer(); // Console.log('WebGL Context Restored.');\n}\n\nfunction initWebGL(canvas) {\n gl = null;\n\n try {\n // Try to grab the standard context. If it fails, fallback to experimental.\n var options = {\n preserveDrawingBuffer: true // Preserve buffer so we can copy to display canvas element\n\n }; // ---------------- Testing purposes -------------\n // If (debug === true && WebGLDebugUtils) {\n // RenderCanvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderCanvas);\n // }\n // ---------------- Testing purposes -------------\n\n gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); // Set up event listeners for context lost / context restored\n\n canvas.removeEventListener('webglcontextlost', handleLostContext, false);\n canvas.addEventListener('webglcontextlost', handleLostContext, false);\n canvas.removeEventListener('webglcontextrestored', handleRestoredContext, false);\n canvas.addEventListener('webglcontextrestored', handleRestoredContext, false);\n } catch (error) {\n throw new Error('Error creating WebGL context');\n } // If we don't have a GL context, give up now\n\n\n if (!gl) {\n console.error('Unable to initialize WebGL. Your browser may not support it.');\n gl = null;\n }\n\n return gl;\n}\n/**\n * Returns the image data type as a string representation.\n * @param {any} image The cornerstone image object\n * @returns {string} image data type (rgb, iint16, uint16, int8 and uint8)\n * @memberof WebGLRendering\n */\n\n\nfunction getImageDataType(image) {\n if (image.color) {\n return 'rgb';\n }\n\n var pixelData = image.getPixelData();\n\n if (pixelData instanceof Int16Array) {\n return 'int16';\n }\n\n if (pixelData instanceof Uint16Array) {\n return 'uint16';\n }\n\n if (pixelData instanceof Int8Array) {\n return 'int8';\n }\n\n return 'uint8';\n}\n\nfunction getShaderProgram(image) {\n var datatype = getImageDataType(image); // We need a mechanism for\n // Choosing the shader based on the image datatype\n // Console.log(\"Datatype: \" + datatype);\n\n if (_shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].hasOwnProperty(datatype)) {\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"][datatype];\n }\n\n return _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"shaders\"].rgb;\n}\n\nfunction generateTexture(image) {\n var TEXTURE_FORMAT = {\n uint8: gl.LUMINANCE,\n int8: gl.LUMINANCE_ALPHA,\n uint16: gl.LUMINANCE_ALPHA,\n int16: gl.RGB,\n rgb: gl.RGB\n };\n var TEXTURE_BYTES = {\n int8: 1,\n // Luminance\n uint16: 2,\n // Luminance + Alpha\n int16: 3,\n // RGB\n rgb: 3 // RGB\n\n };\n var imageDataType = getImageDataType(image);\n var format = TEXTURE_FORMAT[imageDataType]; // GL texture configuration\n\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n var imageData = _shaders_index_js__WEBPACK_IMPORTED_MODULE_0__[\"dataUtilities\"][imageDataType].storedPixelDataToImageData(image, image.width, image.height);\n gl.texImage2D(gl.TEXTURE_2D, 0, format, image.width, image.height, 0, format, gl.UNSIGNED_BYTE, imageData); // Calculate the size in bytes of this image in memory\n\n var sizeInBytes = image.width * image.height * TEXTURE_BYTES[imageDataType];\n return {\n texture: texture,\n sizeInBytes: sizeInBytes\n };\n}\n\nfunction getImageTexture(image) {\n var imageTexture = _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageTexture(image.imageId);\n\n if (!imageTexture) {\n // Console.log(\"Generating texture for imageid: \", image.imageId);\n imageTexture = generateTexture(image);\n _textureCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].putImageTexture(image, imageTexture);\n }\n\n return imageTexture.texture;\n}\n\nfunction initBuffers() {\n positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]), gl.STATIC_DRAW);\n texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0]), gl.STATIC_DRAW);\n}\n\nfunction renderQuad(shader, parameters, texture, width, height) {\n gl.clearColor(1.0, 0.0, 0.0, 1.0);\n gl.viewport(0, 0, width, height);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n gl.useProgram(shader.program);\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.vertexAttribPointer(shader.attributes.texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n gl.vertexAttribPointer(shader.attributes.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n for (var key in parameters) {\n var uniformLocation = gl.getUniformLocation(shader.program, key);\n\n if (!uniformLocation) {\n continue; // Disabling this error for now since RGB requires minPixelValue\n // but the other shaders do not.\n // throw `Could not access location for uniform: ${key}`;\n }\n\n var uniform = parameters[key];\n var type = uniform.type;\n var value = uniform.value;\n\n if (type === 'i') {\n gl.uniform1i(uniformLocation, value);\n } else if (type === 'f') {\n gl.uniform1f(uniformLocation, value);\n } else if (type === '2f') {\n gl.uniform2f(uniformLocation, value[0], value[1]);\n }\n }\n\n updateRectangle(gl, width, height);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n}\n\nfunction render(enabledElement) {\n // Resize the canvas\n var image = enabledElement.image;\n renderCanvas.width = image.width;\n renderCanvas.height = image.height;\n var viewport = enabledElement.viewport; // Render the current image\n\n var shader = getShaderProgram(image);\n var texture = getImageTexture(image);\n var parameters = {\n u_resolution: {\n type: '2f',\n value: [image.width, image.height]\n },\n wc: {\n type: 'f',\n value: viewport.voi.windowCenter\n },\n ww: {\n type: 'f',\n value: viewport.voi.windowWidth\n },\n slope: {\n type: 'f',\n value: image.slope\n },\n intercept: {\n type: 'f',\n value: image.intercept\n },\n minPixelValue: {\n type: 'f',\n value: image.minPixelValue\n },\n invert: {\n type: 'i',\n value: viewport.invert ? 1 : 0\n }\n };\n renderQuad(shader, parameters, texture, image.width, image.height);\n return renderCanvas;\n}\nfunction isWebGLAvailable() {\n // Adapted from\n // http://stackoverflow.com/questions/9899807/three-js-detect-webgl-support-and-fallback-to-regular-canvas\n var options = {\n failIfMajorPerformanceCaveat: true\n };\n\n try {\n var canvas = document.createElement('canvas');\n return Boolean(window.WebGLRenderingContext) && (canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options));\n } catch (e) {\n return false;\n }\n}\n\n/***/ }),\n\n/***/ \"./webgl/shaders/index.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/index.js ***!\n \\********************************/\n/*! exports provided: shaders, dataUtilities */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shaders\", function() { return shaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataUtilities\", function() { return dataUtilities; });\n/* harmony import */ var _int16_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int16.js */ \"./webgl/shaders/int16.js\");\n/* harmony import */ var _int8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int8.js */ \"./webgl/shaders/int8.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"./webgl/shaders/rgb.js\");\n/* harmony import */ var _uint16_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uint16.js */ \"./webgl/shaders/uint16.js\");\n/* harmony import */ var _uint8_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uint8.js */ \"./webgl/shaders/uint8.js\");\n\n\n\n\n\nvar shaders = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16Shader\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8Shader\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbShader\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16Shader\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8Shader\"]\n};\nvar dataUtilities = {\n int16: _int16_js__WEBPACK_IMPORTED_MODULE_0__[\"int16DataUtilities\"],\n int8: _int8_js__WEBPACK_IMPORTED_MODULE_1__[\"int8DataUtilities\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"rgbDataUtilities\"],\n uint16: _uint16_js__WEBPACK_IMPORTED_MODULE_3__[\"uint16DataUtilities\"],\n uint8: _uint8_js__WEBPACK_IMPORTED_MODULE_4__[\"uint8DataUtilities\"]\n};\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int16.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/int16.js ***!\n \\********************************/\n/*! exports provided: int16DataUtilities, int16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16DataUtilities\", function() { return int16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int16Shader\", function() { return int16Shader; });\n/* eslint no-bitwise: 0 */\nvar int16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack int16 into three uint8 channels (r, g, b)\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack int16 into three uint8 channels (r, g, b)\n var pixelData = image.getPixelData();\n var numberOfChannels = 3;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = Math.abs(pixelData[i]);\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.g*65536.0;' + 'if (color.b == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/int8.js\":\n/*!*******************************!*\\\n !*** ./webgl/shaders/int8.js ***!\n \\*******************************/\n/*! exports provided: int8DataUtilities, int8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8DataUtilities\", function() { return int8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"int8Shader\", function() { return int8Shader; });\nvar int8Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Store data in Uint8Array\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n // Store data in Uint8Array\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n data[offset++] = pixelData[i];\n data[offset++] = pixelData[i] < 0 ? 0 : 1; // 0 For negative, 1 for positive\n }\n\n return data;\n}\n\nvar int8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.;' + 'if (color.a == 0.0)' + 'intensity = -intensity;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/rgb.js\":\n/*!******************************!*\\\n !*** ./webgl/shaders/rgb.js ***!\n \\******************************/\n/*! exports provided: rgbDataUtilities, rgbShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbDataUtilities\", function() { return rgbDataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbShader\", function() { return rgbShader; });\nvar rgbShader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * Pack RGB images into a 3-channel RGB texture\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n var minPixelValue = image.minPixelValue;\n var canvasImageDataIndex = 0;\n var storedPixelDataIndex = 0; // Only 3 channels, since we use WebGL's RGB texture format\n\n var numStoredPixels = image.width * image.height * 4;\n var numOutputPixels = image.width * image.height * 3;\n var storedPixelData = image.getPixelData();\n var data = new Uint8Array(numOutputPixels); // NOTE: As of Nov 2014, most javascript engines have lower performance when indexing negative indexes.\n // We have a special code path for this case that improves performance. Thanks to @jpambrun for this enhancement\n\n if (minPixelValue < 0) {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++] + -minPixelValue; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n } else {\n while (storedPixelDataIndex < numStoredPixels) {\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Red\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Green\n\n data[canvasImageDataIndex++] = storedPixelData[storedPixelDataIndex++]; // Blue\n\n storedPixelDataIndex += 1; // The stored pixel data has 4 channels\n }\n }\n\n return data;\n}\n\nvar rgbDataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nrgbShader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform float minPixelValue;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec3 color = texture2D(u_image, v_texCoord).xyz;' + // Rescale based on slope and intercept\n'color = color * 256.0 * slope + intercept;' + // Apply window settings\n'float center0 = wc - 0.5 - minPixelValue;' + 'float width0 = max(ww, 1.0);' + 'color = (color - center0) / width0 + 0.5;' + // RGBA output\n'gl_FragColor = vec4(color, 1);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1. - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint16.js\":\n/*!*********************************!*\\\n !*** ./webgl/shaders/uint16.js ***!\n \\*********************************/\n/*! exports provided: uint16DataUtilities, uint16Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16DataUtilities\", function() { return uint16DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint16Shader\", function() { return uint16Shader; });\n/* eslint no-bitwise: 0 */\nvar uint16Shader = {};\n/**\n * Convert stored pixel data to image data.\n *\n * For uint16 pack uint16 into two uint8 channels (r and a).\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha and luminance channels of WebGL texture\n // Credit to @jpambrun and @fernandojsg\n // Pack uint16 into two uint8 channels (r and a)\n var pixelData = image.getPixelData();\n var numberOfChannels = 2;\n var data = new Uint8Array(image.width * image.height * numberOfChannels);\n var offset = 0;\n\n for (var i = 0; i < pixelData.length; i++) {\n var val = pixelData[i];\n data[offset++] = val & 0xFF;\n data[offset++] = val >> 8;\n }\n\n return data;\n}\n\nvar uint16DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint16Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0 + color.a*65536.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/shaders/uint8.js\":\n/*!********************************!*\\\n !*** ./webgl/shaders/uint8.js ***!\n \\********************************/\n/*! exports provided: uint8DataUtilities, uint8Shader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8DataUtilities\", function() { return uint8DataUtilities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uint8Shader\", function() { return uint8Shader; });\nvar uint8Shader = {};\n/**\n * Convert stored pixel data to image data. Here we will store\n * all data in the alpha channel.\n *\n * @param {Image} image A Cornerstone Image Object\n * @returns {Uint8Array} The image data for use by the WebGL shader\n * @memberof WebGLRendering\n */\n\nfunction storedPixelDataToImageData(image) {\n // Transfer image data to alpha channel of WebGL texture\n return image.getPixelData();\n}\n\nvar uint8DataUtilities = {\n storedPixelDataToImageData: storedPixelDataToImageData\n};\nuint8Shader.frag = 'precision mediump float;' + 'uniform sampler2D u_image;' + 'uniform float ww;' + 'uniform float wc;' + 'uniform float slope;' + 'uniform float intercept;' + 'uniform int invert;' + 'varying vec2 v_texCoord;' + 'void main() {' + // Get texture\n'vec4 color = texture2D(u_image, v_texCoord);' + // Calculate luminance from packed texture\n'float intensity = color.r*256.0;' + // Rescale based on slope and window settings\n'intensity = intensity * slope + intercept;' + 'float center0 = wc - 0.5;' + 'float width0 = max(ww, 1.0);' + 'intensity = (intensity - center0) / width0 + 0.5;' + // Clamp intensity\n'intensity = clamp(intensity, 0.0, 1.0);' + // RGBA output\n'gl_FragColor = vec4(intensity, intensity, intensity, 1.0);' + // Apply any inversion necessary\n'if (invert == 1)' + 'gl_FragColor.rgb = 1.0 - gl_FragColor.rgb;' + '}';\n\n\n/***/ }),\n\n/***/ \"./webgl/textureCache.js\":\n/*!*******************************!*\\\n !*** ./webgl/textureCache.js ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _events_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events.js */ \"./events.js\");\n/* harmony import */ var _triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../triggerEvent.js */ \"./triggerEvent.js\");\n\n\n/**\r\n * This module deals with caching image textures in VRAM for WebGL\r\n * @module WebGLTextureCache\r\n */\n\nvar imageCache = {};\nvar cachedImages = [];\nvar maximumSizeInBytes = 1024 * 1024 * 256; // 256 MB\n\nvar cacheSizeInBytes = 0;\n\nfunction getCacheInfo() {\n return {\n maximumSizeInBytes: maximumSizeInBytes,\n cacheSizeInBytes: cacheSizeInBytes,\n numberOfImagesCached: cachedImages.length\n };\n}\n\nfunction purgeCacheIfNecessary() {\n // If max cache size has not been exceeded, do nothing\n if (cacheSizeInBytes <= maximumSizeInBytes) {\n return;\n } // Cache size has been exceeded, create list of images sorted by timeStamp\n // So we can purge the least recently used image\n\n\n function compare(a, b) {\n if (a.timeStamp > b.timeStamp) {\n return -1;\n }\n\n if (a.timeStamp < b.timeStamp) {\n return 1;\n }\n\n return 0;\n }\n\n cachedImages.sort(compare); // Remove images as necessary\n\n while (cacheSizeInBytes > maximumSizeInBytes) {\n var lastCachedImage = cachedImages[cachedImages.length - 1];\n cacheSizeInBytes -= lastCachedImage.sizeInBytes;\n delete imageCache[lastCachedImage.imageId];\n cachedImages.pop();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_REMOVED, {\n imageId: lastCachedImage.imageId\n });\n }\n\n var cacheInfo = getCacheInfo();\n Object(_triggerEvent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_events_js__WEBPACK_IMPORTED_MODULE_0__[\"events\"], _events_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].WEBGL_TEXTURE_CACHE_FULL, cacheInfo);\n}\n\nfunction setMaximumSizeBytes(numBytes) {\n if (numBytes === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must not be undefined');\n }\n\n if (numBytes.toFixed === undefined) {\n throw new Error('setMaximumSizeBytes: parameter numBytes must be a number');\n }\n\n maximumSizeInBytes = numBytes;\n purgeCacheIfNecessary();\n}\n\nfunction putImageTexture(image, imageTexture) {\n var imageId = image.imageId;\n\n if (image === undefined) {\n throw new Error('putImageTexture: image must not be undefined');\n }\n\n if (imageId === undefined) {\n throw new Error('putImageTexture: imageId must not be undefined');\n }\n\n if (imageTexture === undefined) {\n throw new Error('putImageTexture: imageTexture must not be undefined');\n }\n\n if (Object.prototype.hasOwnProperty.call(imageCache, imageId) === true) {\n throw new Error('putImageTexture: imageId already in cache');\n }\n\n var cachedImage = {\n imageId: imageId,\n imageTexture: imageTexture,\n timeStamp: new Date(),\n sizeInBytes: imageTexture.sizeInBytes\n };\n imageCache[imageId] = cachedImage;\n cachedImages.push(cachedImage);\n\n if (imageTexture.sizeInBytes === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes must not be undefined');\n }\n\n if (imageTexture.sizeInBytes.toFixed === undefined) {\n throw new Error('putImageTexture: imageTexture.sizeInBytes is not a number');\n }\n\n cacheSizeInBytes += cachedImage.sizeInBytes;\n purgeCacheIfNecessary();\n}\n\nfunction getImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('getImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n return;\n } // Bump time stamp for cached image\n\n\n cachedImage.timeStamp = new Date();\n return cachedImage.imageTexture;\n}\n\nfunction removeImageTexture(imageId) {\n if (imageId === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n var cachedImage = imageCache[imageId];\n\n if (cachedImage === undefined) {\n throw new Error('removeImageTexture: imageId must not be undefined');\n }\n\n cachedImages.splice(cachedImages.indexOf(cachedImage), 1);\n cacheSizeInBytes -= cachedImage.sizeInBytes;\n delete imageCache[imageId];\n return cachedImage.imageTexture;\n}\n\nfunction purgeCache() {\n while (cachedImages.length > 0) {\n var removedCachedImage = cachedImages.pop();\n delete imageCache[removedCachedImage.imageId];\n }\n\n cacheSizeInBytes = 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n purgeCache: purgeCache,\n getImageTexture: getImageTexture,\n putImageTexture: putImageTexture,\n removeImageTexture: removeImageTexture,\n setMaximumSizeBytes: setMaximumSizeBytes\n});\n\n/***/ }),\n\n/***/ \"./webgl/vertexShader.js\":\n/*!*******************************!*\\\n !*** ./webgl/vertexShader.js ***!\n \\*******************************/\n/*! exports provided: vertexShader */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vertexShader\", function() { return vertexShader; });\nvar vertexShader = 'attribute vec2 a_position;' + 'attribute vec2 a_texCoord;' + 'uniform vec2 u_resolution;' + 'varying vec2 v_texCoord;' + 'void main() {' + 'vec2 zeroToOne = a_position / u_resolution;' + 'vec2 zeroToTwo = zeroToOne * 2.0;' + 'vec2 clipSpace = zeroToTwo - 1.0;' + 'gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);' + 'v_texCoord = a_texCoord;' + '}';\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=cornerstone.js.map","/*! cornerstone-wado-image-loader - 2.2.2 - 2018-12-05 | (c) 2016 Chris Hafey | https://github.com/cornerstonejs/cornerstoneWADOImageLoader */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstoneWADOImageLoader\",[],t):\"object\"==typeof exports?exports.cornerstoneWADOImageLoader=t():e.cornerstoneWADOImageLoader=t()}(this,function(){return function(r){var a={};function n(e){if(a[e])return a[e].exports;var t=a[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=r,n.c=a,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=6)}([function(e,t,r){\"use strict\";t.a=function(e){for(var t,r=e[0],a=e[0],n=e.length,o=1;o>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var i;return e};var d=function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){for(var r=t,a=e.rows*e.columns,n=new ArrayBuffer(a*e.samplesPerPixel),o=new DataView(r.buffer,r.byteOffset),i=new Int8Array(r.buffer,r.byteOffset),l=new Int8Array(n),s=0,u=o.getInt32(0,!0),c=0;c>l;var u=(new Date).getTime();return e.decodeTimeInMS=u-o,e}},function(e,t,r){\"use strict\";r.r(t);var a=function(e,t){if(void 0===e)throw new Error(\"decodeRGB: rgbBuffer must not be undefined\");if(e.length%3!=0)throw new Error(\"decodeRGB: rgbBuffer length must be divisible by 3\");for(var r=e.length/3,a=0,n=0,o=0;o>t;return a}var l=function(e,t){for(var r=e.columns*e.rows,a=e.pixelData,n=e.redPaletteColorLookupTableData,o=e.greenPaletteColorLookupTableData,i=e.bluePaletteColorLookupTableData,l=e.redPaletteColorLookupTableData.length,s=0,u=0,c=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,d=x(n,f),p=x(o,f),m=x(i,f),g=0;gt.length)return!1;for(var a=r,n=0;n=E.maxWebWorkers)){var e=new Worker(E.webWorkerPath);R.push({worker:e,status:\"initializing\"}),e.addEventListener(\"message\",F),e.postMessage({taskType:\"initialize\",workerIndex:R.length-1,config:E})}}function G(e){if(e=e||W,E)throw new Error(\"WebWorkerManager already initialized\");if((E=e).maxWebWorkers=E.maxWebWorkers||navigator.hardwareConcurrency||1,!E.startWebWorkersOnDemand)for(var t=0;t=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,u)}if(16===n){if((r=s+t*u*2)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,2*u)}if(1===n){if((r=s+t*u*.125)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return Pe(e.byteArray,r,u)}if(32!==n)throw new Error(\"unsupported pixel format\");if((r=s+t*u*4)>=e.byteArray.length)throw new Error(\"frame exceeds size of pixelData\");return new Uint8Array(e.byteArray.buffer,r,4*u)};var Ie=function(e){var t=de(e),r=parseInt(t.url,10),a=be.get(r);return new Promise(function(r,e){var t=new FileReader;t.onload=function(e){var t=e.target.result;r(t)},t.onerror=e,t.readAsArrayBuffer(a)})};var Te=function(e){var t=1i?i:t},e.degToRad=function(t){return t*(Math.PI/180)},e.radToDeg=function(t){return t*(180/Math.PI)},e.sign=function(t){return\"number\"==typeof t?t?t<0?-1:1:t==t?0:NaN:NaN}},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(3),s=(n=o)&&n.__esModule?n:{default:n},r=i(0);var a,h,u,c,l,f=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};f.prototype={constructor:f,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error(\"index is out of range: \"+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error(\"index is out of range: \"+t)}},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .add() now only accepts one argument. Use .addVectors( a, b ) instead.\"),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},sub:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .sub() now only accepts one argument. Use .subVectors( a, b ) instead.\"),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Vector3's .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.\"),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyAxisAngle:(l=void 0,function(t,e){return void 0===l&&(l=new s.default),this.applyQuaternion(l.setFromAxisAngle(t.normalize(),e)),this}),applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[3]*i+o[6]*n,this.y=o[1]*e+o[4]*i+o[7]*n,this.z=o[2]*e+o[5]*i+o[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n+o[12],this.y=o[1]*e+o[5]*i+o[9]*n+o[13],this.z=o[2]*e+o[6]*i+o[10]*n+o[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements,s=1/(o[3]*e+o[7]*i+o[11]*n+o[15]);return this.x=(o[0]*e+o[4]*i+o[8]*n+o[12])*s,this.y=(o[1]*e+o[5]*i+o[9]*n+o[13])*s,this.z=(o[2]*e+o[6]*i+o[10]*n+o[14])*s,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,o=t.x,s=t.y,r=t.z,a=t.w,h=a*e+s*n-r*i,u=a*i+r*e-o*n,c=a*n+o*i-s*e,l=-o*e-s*i-r*n;return this.x=h*a+l*-o+u*-r-c*-s,this.y=u*a+l*-s+c*-o-h*-r,this.z=c*a+l*-r+h*-s-u*-o,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,o=t.elements;return this.x=o[0]*e+o[4]*i+o[8]*n,this.y=o[1]*e+o[5]*i+o[9]*n,this.z=o[2]*e+o[6]*i+o[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:(u=void 0,c=void 0,function(t,e){return void 0===u&&(u=new f,c=new f),u.set(t,t,t),c.set(e,e,e),this.clamp(u,c)}),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.multiplyScalar(-1)},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},cross:function(t,e){if(void 0!==e)return console.warn(\"DEPRECATED: Vector3's .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.\"),this.crossVectors(t,e);var i=this.x,n=this.y,o=this.z;return this.x=n*t.z-o*t.y,this.y=o*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,o=t.z,s=e.x,r=e.y,a=e.z;return this.x=n*a-o*r,this.y=o*s-i*a,this.z=i*r-n*s,this},projectOnVector:(a=void 0,h=void 0,function(t){return void 0===a&&(a=new f),a.copy(t).normalize(),h=this.dot(a),this.copy(a).multiplyScalar(h)}),projectOnPlane:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t=void 0;return function(e){return void 0===t&&(t=new f),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/(this.length()*t.length());return Math.acos((0,r.clamp)(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t){return this.x=t[0],this.y=t[1],this.z=t[2],this},toArray:function(){return[this.x,this.y,this.z]},clone:function(){return new f(this.x,this.y,this.z)}},e.default=f},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=i(0);function o(t){return t*t}function s(t,e){return o(t.x-e.x)+o(t.y-e.y)}var r={distanceToPoint:function(t,e){return Math.sqrt(function(t,e){var i=s(t.start,t.end);if(0===i)return s(e,t.start);var n=((e.x-t.start.x)*(t.end.x-t.start.x)+(e.y-t.start.y)*(t.end.y-t.start.y))/i;return s(e,n<0?t.start:n>1?t.end:{x:t.start.x+n*(t.end.x-t.start.x),y:t.start.y+n*(t.end.y-t.start.y)})}(t,e))},intersectLine:function(t,e){var i,o,s,r,a,h,u,c,l,f,y,d={},p=t.start.x,x=t.start.y,m=t.end.x,v=t.end.y,g=e.start.x,z=e.start.y,b=e.end.x,M=e.end.y,w=void 0;if(f=(i=v-x)*b+(s=p-m)*M+(a=m*x-p*v),(0===(l=i*g+s*z+a)||0===f||(0,n.sign)(l)!==(0,n.sign)(f))&&(c=(o=M-z)*m+(r=g-b)*v+(h=b*z-g*M),0===(u=o*p+r*x+h)||0===c||(0,n.sign)(u)!==(0,n.sign)(c))){y=i*r-o*s,w=s*h-r*a;var R=parseFloat(w/y);w=o*a-i*h;var P=parseFloat(w/y);return d.x=R,d.y=P,d}}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n=function(t,e,i,n){this.x=t||0,this.y=e||0,this.z=i||0,this.w=void 0!==n?n:1};n.prototype.setFromAxisAngle=function(t,e){var i=e/2,n=Math.sin(i);return this.x=t.x*n,this.y=t.y*n,this.z=t.z*n,this.w=Math.cos(i),this},n.prototype.multiplyQuaternions=function(t,e){var i=t.x,n=t.y,o=t.z,s=t.w,r=e.x,a=e.y,h=e.z,u=e.w;return this.x=i*u+s*r+n*h-o*a,this.y=n*u+s*a+o*r-i*h,this.z=o*u+s*h+i*a-n*r,this.w=s*u-i*r-n*a-o*h,this},n.prototype.setFromRotationMatrix=function(t){var e=t.elements,i=e[0],n=e[4],o=e[8],s=e[1],r=e[5],a=e[9],h=e[2],u=e[6],c=e[10],l=i+r+c,f=void 0;return l>0?(f=.5/Math.sqrt(l+1),this.w=.25/f,this.x=(u-a)*f,this.y=(o-h)*f,this.z=(s-n)*f):i>r&&i>c?(f=2*Math.sqrt(1+i-r-c),this.w=(u-a)/f,this.x=.25*f,this.y=(n+s)/f,this.z=(o+h)/f):r>c?(f=2*Math.sqrt(1+r-i-c),this.w=(o-h)/f,this.x=(n+s)/f,this.y=.25*f,this.z=(a+u)/f):(f=2*Math.sqrt(1+c-i-r),this.w=(s-n)/f,this.x=(o+h)/f,this.y=(a+u)/f,this.z=.25*f),this},e.default=n},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(2),s=(n=o)&&n.__esModule?n:{default:n};function r(t){return{topLeft:{x:t.left,y:t.top},bottomRight:{x:t.left+t.width,y:t.top+t.height}}}var a={distanceToPoint:function(t,e){var i=655535;return function(t){return[{start:{x:t.left,y:t.top},end:{x:t.left+t.width,y:t.top}},{start:{x:t.left+t.width,y:t.top},end:{x:t.left+t.width,y:t.top+t.height}},{start:{x:t.left+t.width,y:t.top+t.height},end:{x:t.left,y:t.top+t.height}},{start:{x:t.left,y:t.top+t.height},end:{x:t.left,y:t.top}}]}(t).forEach(function(t){var n=s.default.distanceToPoint(t,e);n=0?e.width>=0?!(o.bottomRight.x<=s.topLeft.x||s.bottomRight.x<=o.topLeft.x):!(o.bottomRight.x<=s.bottomRight.x||s.topLeft.x<=o.topLeft.x):e.width>=0?!(o.topLeft.x<=s.topLeft.x||s.bottomRight.x<=o.bottomRight.x):!(o.topLeft.x<=s.bottomRight.x||s.topLeft.x<=o.bottomRight.x),n=t.height>=0?e.height>=0?!(o.bottomRight.y<=s.topLeft.y||s.bottomRight.y<=o.topLeft.y):!(o.bottomRight.y<=s.bottomRight.y||s.topLeft.y<=o.topLeft.y):e.height>=0?!(o.topLeft.y<=s.topLeft.y||s.bottomRight.y<=o.bottomRight.y):!(o.topLeft.y<=s.bottomRight.y||s.top<=o.bottomRight.y),i&&n}(t,e)){var n=r(t),o=r(e);return t.width>=0?e.width>=0?(i.topLeft.x=Math.max(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.bottomRight.x)):(i.topLeft.x=Math.max(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.min(n.bottomRight.x,o.topLeft.x)):e.width>=0?(i.topLeft.x=Math.min(n.topLeft.x,o.bottomRight.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.topLeft.x)):(i.topLeft.x=Math.min(n.topLeft.x,o.topLeft.x),i.bottomRight.x=Math.max(n.bottomRight.x,o.bottomRight.x)),t.height>=0?e.height>=0?(i.topLeft.y=Math.max(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.bottomRight.y)):(i.topLeft.y=Math.max(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.min(n.bottomRight.y,o.topLeft.y)):e.height>=0?(i.topLeft.y=Math.min(n.topLeft.y,o.bottomRight.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.topLeft.y)):(i.topLeft.y=Math.min(n.topLeft.y,o.topLeft.y),i.bottomRight.y=Math.max(n.bottomRight.y,o.bottomRight.y)),i}}};e.default=a},function(t,e,i){\"use strict\";function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function o(t,e){return Math.sqrt(s(t,e))}function s(t,e){var i=n(t,e);return i.x*i.x+i.y*i.y}Object.defineProperty(e,\"__esModule\",{value:!0});var r={subtract:n,copy:function(t){return{x:t.x,y:t.y}},pageToPoint:function(t){return{x:t.pageX,y:t.pageY}},distance:o,distanceSquared:s,insideRect:function(t,e){return!(t.xe.left+e.width||t.ye.top+e.height)},findClosestPoint:function(t,e){var i=[],n=void 0;return t.forEach(function(t,s){var r=o(t,e);i.push(r),n=0===s?r:Math.min(r,n)}),t[i.indexOf(n)]}};e.default=r},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r,a,h=function(t,e){this.normal=void 0!==t?t:new s.default(1,0,0),this.constant=void 0!==e?e:0};h.prototype={constructor:h,set:function(t,e){return this.normal.copy(t),this.constant=e,this},setComponents:function(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this},setFromCoplanarPoints:(r=new s.default,a=new s.default,function(t,e,i){var n=r.subVectors(i,e).cross(a.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}),copy:function(t){return this.normal.copy(t.normal),this.constant=t.constant,this},normalize:function(){var t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(t){return this.normal.dot(t)+this.constant},distanceToSphere:function(t){return this.distanceToPoint(t.center)-t.radius},projectPoint:function(t,e){return this.orthoPoint(t,e).sub(t).negate()},orthoPoint:function(t,e){var i=this.distanceToPoint(t);return(e||new s.default).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(t){var e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0},intersectLine:function(){var t=new s.default;return function(e,i){var n=i||new s.default,o=e.delta(t),r=this.normal.dot(o);if(0===r)return 0===this.distanceToPoint(e.start)?n.copy(e.start):void 0;var a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?void 0:n.copy(o).multiplyScalar(a).add(e.start)}}(),intersectPlane:function(t){var e=this.normal.clone().cross(t.normal),i={origin:new s.default,direction:e};if(this.normal.clone().cross(t.normal).length<1e-10)return i.direction=new s.default,i;var n=this.constant,o=t.constant,r=this.normal.clone().dot(t.normal),a=-(n-o*r)/(1-r*r),h=-(o-n*r)/(1-r*r);return i.origin=this.normal.clone().multiplyScalar(a).add(t.normal.clone().multiplyScalar(h)),i},coplanarPoint:function(t){return(t||new s.default).copy(this.normal).multiplyScalar(-this.constant)},translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant},clone:function(){return(new h).copy(this)}},e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var n,o=i(1),s=(n=o)&&n.__esModule?n:{default:n};var r=function(t,e,i,n,o,s,r,a,h,u,c,l,f,y,d,p){this.elements=new Float32Array(16);var x=this.elements;x[0]=void 0!==t?t:1,x[4]=e||0,x[8]=i||0,x[12]=n||0,x[1]=o||0,x[5]=void 0!==s?s:1,x[9]=r||0,x[13]=a||0,x[2]=h||0,x[6]=u||0,x[10]=void 0!==c?c:1,x[14]=l||0,x[3]=f||0,x[7]=y||0,x[11]=d||0,x[15]=void 0!==p?p:1};r.prototype.makeRotationFromQuaternion=function(t){var e=this.elements,i=t.x,n=t.y,o=t.z,s=t.w,r=i+i,a=n+n,h=o+o,u=i*r,c=i*a,l=i*h,f=n*a,y=n*h,d=o*h,p=s*r,x=s*a,m=s*h;return e[0]=1-(f+d),e[4]=c-m,e[8]=l+x,e[1]=c+m,e[5]=1-(u+d),e[9]=y-p,e[2]=l-x,e[6]=y+p,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},r.prototype.multiplyMatrices=function(t,e){var i=t.elements,n=e.elements,o=this.elements,s=i[0],r=i[4],a=i[8],h=i[12],u=i[1],c=i[5],l=i[9],f=i[13],y=i[2],d=i[6],p=i[10],x=i[14],m=i[3],v=i[7],g=i[11],z=i[15],b=n[0],M=n[4],w=n[8],R=n[12],P=n[1],L=n[5],T=n[9],S=n[13],_=n[2],V=n[6],q=n[10],j=n[14],E=n[3],k=n[7],O=n[11],A=n[15];return o[0]=s*b+r*P+a*_+h*E,o[4]=s*M+r*L+a*V+h*k,o[8]=s*w+r*T+a*q+h*O,o[12]=s*R+r*S+a*j+h*A,o[1]=u*b+c*P+l*_+f*E,o[5]=u*M+c*L+l*V+f*k,o[9]=u*w+c*T+l*q+f*O,o[13]=u*R+c*S+l*j+f*A,o[2]=y*b+d*P+p*_+x*E,o[6]=y*M+d*L+p*V+x*k,o[10]=y*w+d*T+p*q+x*O,o[14]=y*R+d*S+p*j+x*A,o[3]=m*b+v*P+g*_+z*E,o[7]=m*M+v*L+g*V+z*k,o[11]=m*w+v*T+g*q+z*O,o[15]=m*R+v*S+g*j+z*A,this},r.prototype.multiply=function(t,e){return void 0!==e?(console.warn(\"DEPRECATED: Matrix4's .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.\"),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},r.prototype.getInverse=function(t,e){var i=this.elements,n=t.elements,o=n[0],s=n[4],r=n[8],a=n[12],h=n[1],u=n[5],c=n[9],l=n[13],f=n[2],y=n[6],d=n[10],p=n[14],x=n[3],m=n[7],v=n[11],g=n[15];i[0]=c*p*m-l*d*m+l*y*v-u*p*v-c*y*g+u*d*g,i[4]=a*d*m-r*p*m-a*y*v+s*p*v+r*y*g-s*d*g,i[8]=r*l*m-a*c*m+a*u*v-s*l*v-r*u*g+s*c*g,i[12]=a*c*y-r*l*y-a*u*d+s*l*d+r*u*p-s*c*p,i[1]=l*d*x-c*p*x-l*f*v+h*p*v+c*f*g-h*d*g,i[5]=r*p*x-a*d*x+a*f*v-o*p*v-r*f*g+o*d*g,i[9]=a*c*x-r*l*x-a*h*v+o*l*v+r*h*g-o*c*g,i[13]=r*l*f-a*c*f+a*h*d-o*l*d-r*h*p+o*c*p,i[2]=u*p*x-l*y*x+l*f*m-h*p*m-u*f*g+h*y*g,i[6]=a*y*x-s*p*x-a*f*m+o*p*m+s*f*g-o*y*g,i[10]=s*l*x-a*u*x+a*h*m-o*l*m-s*h*g+o*u*g,i[14]=a*u*f-s*l*f-a*h*y+o*l*y+s*h*p-o*u*p,i[3]=c*y*x-u*d*x-c*f*m+h*d*m+u*f*v-h*y*v,i[7]=s*d*x-r*y*x+r*f*m-o*d*m-s*f*v+o*y*v,i[11]=r*u*x-s*c*x-r*h*m+o*c*m+s*h*v-o*u*v,i[15]=s*c*f-r*u*f+r*h*y-o*c*y-s*h*d+o*u*d;var z=o*i[0]+h*i[4]+f*i[8]+x*i[12];if(0===z){var b=\"Matrix4.getInverse(): can't invert matrix, determinant is 0\";if(e)throw new Error(b);return console.warn(b),this.identity(),this}return this.multiplyScalar(1/z),this},r.prototype.applyToVector3Array=function(){var t=new s.default;return function(e,i,n){void 0===i&&(i=0),void 0===n&&(n=e.length);for(var o=0,s=i;o1||isNaN(r))){var a=this.start.clone().add(e.clone().multiplyScalar(r));return a.clone().sub(t.start).lengthSq()+a.clone().sub(t.end).lengthSq()<=t.distanceSq()?a:void 0}}}}]),t}();e.default=h},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.Vector3=e.rect=e.quaternion=e.point=e.Plane=e.Matrix4=e.sign=e.radToDeg=e.degToRad=e.clamp=e.lineSegment=e.Line3=void 0;var n=f(i(8)),o=f(i(2)),s=i(0),r=f(i(7)),a=f(i(6)),h=f(i(5)),u=f(i(3)),c=f(i(4)),l=f(i(1));function f(t){return t&&t.__esModule?t:{default:t}}var y={Line3:n.default,lineSegment:o.default,clamp:s.clamp,degToRad:s.degToRad,radToDeg:s.radToDeg,sign:s.sign,Matrix4:r.default,Plane:a.default,point:h.default,quaternion:u.default,rect:c.default,Vector3:l.default};e.Line3=n.default,e.lineSegment=o.default,e.clamp=s.clamp,e.degToRad=s.degToRad,e.radToDeg=s.radToDeg,e.sign=s.sign,e.Matrix4=r.default,e.Plane=a.default,e.point=h.default,e.quaternion=u.default,e.rect=c.default,e.Vector3=l.default,e.default=y}])});\n//# sourceMappingURL=cornerstoneMath.min.js.map","/*! cornerstone-tools - 3.0.0-b.1512 - 2018-12-17 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"cornerstone-tools\",[],t):\"object\"==typeof exports?exports[\"cornerstone-tools\"]=t():e.cornerstoneTools=t()}(window,function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},n.r=function(e){Object.defineProperty(e,\"__esModule\",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=10)}([function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}},function(e,t){function n(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:null;return\"function\"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent(\"CustomEvent\")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}var b={drawColorId:0,radius:10,minRadius:1,maxRadius:50,alpha:.4,renderBrushIfHiddenButActive:!0,hiddenButActiveAlpha:.2,colorMapId:\"BrushColorMap\",visibleSegmentations:{},imageBitmapCache:{},segmentationMetadata:{}},E={radius:function(e){b.radius=Math.min(Math.max(e,b.minRadius),b.maxRadius)},brushColorMap:function(e){var t=f.cornerstone.colors.getColormap(b.colorMapId);t.setNumberOfColors(e.length);for(var n=0;n2&&void 0!==arguments[2])||arguments[2];b.visibleSegmentations[e]||(b.imageBitmapCache[e]=[]),b.visibleSegmentations[e][t]=n},imageBitmapCacheForElement:function(e,t,n){b.imageBitmapCache[e]||(b.imageBitmapCache[e]=[]),b.imageBitmapCache[e][t]=n},clearImageBitmapCacheForElement:function(e){b.imageBitmapCache[e]=[]},metadata:function(e,t,n){b.segmentationMetadata[e]||(b.segmentationMetadata[e]=[]),b.segmentationMetadata[e][t]=n}};var M={state:b,onRegisterCallback:function(){!function(){var e=f.cornerstone.colors.getColormap(b.colorMapId);e.setNumberOfColors(19);for(var t=0;t<19;t++)t0}).forEach(function(t){var n=!1;t.supportedInteractionTypes.forEach(function(e){t.options[\"is\".concat(e,\"Active\")]&&(n=!0)}),n||(console.info(\"Setting tool \".concat(t.name,\"'s to PASSIVE\")),N(e,t.name))})}(e,o,n,a),o.supportedInteractionTypes.forEach(function(e){void 0===a||a.includes(e)?n[\"is\".concat(e,\"Active\")]=!0:n[\"is\".concat(e,\"Active\")]=!1})),F(\"active\",null,e,t,n)},L=function(e,t,n){z(\"active\",e,t,n),_.state.enabledElements.forEach(function(a){D(a,e,t,n)})},A=F.bind(null,\"disabled\",null),H=V.bind(null,\"disabled\",null),R=F.bind(null,\"enabled\",null),U=V.bind(null,\"enabled\",null),N=F.bind(null,\"passive\",x.TOOL_DEACTIVATED),B=V.bind(null,\"passive\",x.TOOL_DEACTIVATED);function F(e,t,n,a,o){var i=O(n,a);i?(o=G(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(i.options.mouseButtonMask)&&(o.mouseButtonMask=o.mouseButtonMask.concat(i.options.mouseButtonMask)),i.mode=e,i.mergeOptions(o),i[\"\".concat(e,\"Callback\")]&&i[\"\".concat(e,\"Callback\")](n,o),t&&T(n,t,{options:o,toolName:a,type:t})):console.warn(\"Unable to find tool '\".concat(a,\"' for enabledElement\"))}function V(e,t,n,a){z(e,n,a),_.state.enabledElements.forEach(function(o){F(e,t,o,n,a)})}function j(e,t,n,a){var o=_.state.tools.find(function(t){return t.element===n&&\"active\"===t.mode&&!0===t.options[\"is\".concat(e,\"Active\")]});o&&(console.info(\"Setting tool \".concat(o.name,\"'s is\").concat(e,\"Active to false\")),o.options[\"is\".concat(e,\"Active\")]=!1)}function z(e,t,n,a){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),_.state.globalToolChangeHistory.push(o);_.state.globalToolChangeHistory.length>50&&_.state.globalToolChangeHistory.shift();var i=_.state.globalTools[t];if(\"active\"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=_.state.globalTools[e];if(o){var i=new o.tool(o.configuration);i.supportedInteractionTypes.forEach(function(e){if(void 0===n||n.includes(e))if(\"Mouse\"===e){var o=G(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach(function(t){return a.push(\"\".concat(e,\"-\").concat(t))}):Array.isArray(o)&&0===o.length&&a.push(\"\".concat(e,\"-DELETE\"))}else\"MultiTouch\"===e?a.push(\"\".concat(e,\"-\").concat(i.configuration.touchPointers)):a.push(e)})}return a}(t,n,a);Object.keys(_.state.globalTools).forEach(function(e){var t=_.state.globalTools[e];t.activeBindings=t.activeBindings.filter(function(e){return!r.includes(e)})}),r.some(function(e){return e.includes(\"Mouse-DELETE\")})&&(i.activeBindings=i.activeBindings.filter(function(e){return!e.includes(\"Mouse\")}),r=r.filter(function(e){return!e.includes(\"Mouse\")})),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[]}}var W={Mouse:function(e,t,n){var a=G(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some(function(e){return a.includes(e)})});o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter(function(e){return!a.includes(e)}),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:j.bind(void 0,\"MouseWheel\"),Touch:function(e,t,n){var a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive}),o=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers});a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isTouchActive to false\")),o.options.isMultiTouchActive=!1)},TouchPinch:j.bind(void 0,\"TouchPinch\"),TouchRotate:j.bind(void 0,\"TouchRotate\"),DoubleTap:j.bind(void 0,\"DoubleTap\"),MultiTouch:function(e,t,n){var a,o=_.state.tools.find(function(n){return n.element===t&&\"active\"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers});1===e.configuration.touchPointers&&(a=_.state.tools.find(function(e){return e.element===t&&\"active\"===e.mode&&!0===e.options.isTouchActive})),o&&(console.info(\"Setting tool \".concat(o.name,\"'s isMultiTouchActive to false\")),o.options.isMultiTouchActive=!1),a&&(console.info(\"Setting tool \".concat(a.name,\"'s isTouchActive to false\")),a.options.isTouchActive=!1)}};function G(e){if(e!==Object(e)||Array.isArray(e))if(\"number\"==typeof e){var t=[];t.push(e),e={mouseButtonMask:0===e?[]:t}}else null===e?e={mouseButtonMask:[]}:(console.info(\"No options provided when changing tool mode\"),e={});else if(0===e.mouseButtonMask||null===e.mouseButtonMask)e.mouseButtonMask=[];else if(\"number\"==typeof e.mouseButtonMask){var n=[];n.push(e.mouseButtonMask),e.mouseButtonMask=n}return e}var q={activeOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},enabledCallback:function(e){D(e,this.name)}},enabledOrDisabledBinaryTool:{passiveCallback:function(e){A(e,this.name)},activeCallback:function(e){R(e,this.name)}}},Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.name,a=t.strategies,i=t.defaultStrategy,r=t.configuration,s=t.supportedInteractionTypes,l=t.mixins;o()(this,e),this.name=n,this.mode=\"disabled\",this.element=void 0,this.supportedInteractionTypes=s||[],this.strategies=a||{},this.defaultStrategy=i||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,this._options={},this._configuration=Object.assign({},r),this.hasCursor=!1,l&&l.length&&this._applyMixins(l)}return r()(e,[{key:\"mergeOptions\",value:function(e){this._options=Object.assign({},this._options,e)}},{key:\"clearOptions\",value:function(){this._options={}}},{key:\"applyActiveStrategy\",value:function(e){return this.strategies[this.activeStrategy](e,this.configuration)}},{key:\"_applyMixins\",value:function(e){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{}),i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=a.detail,i=o.element,r=o.image,s=a.detail.deltaPoints.image,l=s.x,c=s.y;t.active=!0;for(var u=Object.keys(t.handles),d=0;d2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=s.detail,c=s.detail.element;t.active=!1,t.invalidated=!0,S.isToolLocked=!1,ce[a].forEach(function(e){c.removeEventListener(e,i)}),ue[a].forEach(function(e){c.removeEventListener(e,r)}),n.deleteIfHandleOutsideImage&&re(l,t.handles)&&$(c,e,t);\"function\"==typeof n.doneMovingCallback&&n.doneMovingCallback();f.cornerstone.updateImage(c)}(t,n,o,i,{dragHandler:r,upOrEndHandler:e},a)};n.active=!0,S.isToolLocked=!0,ce[i].forEach(function(e){a.addEventListener(e,r)}),ue[i].forEach(function(e){a.addEventListener(e,s)})};var he={value:!1},ve={mouse:[x.MOUSE_DRAG],touch:[x.TOUCH_DRAG]},ge={mouse:[x.MOUSE_UP,x.MOUSE_CLICK],touch:[x.TOUCH_END,x.TOUCH_DRAG_END,x.TOUCH_PINCH,x.TOUCH_PRESS,x.TAP]},me=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element,s=function(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=l.page,d=f.cornerstone.pageToPixel(c,u.x,\"touch\"===o?u.y+-57:u.y);!1===n.hasMoved&&(n.hasMoved=!0);he.value=!1,n.active=!0,n.x=d.x,n.y=d.y,a.preventHandleOutsideImage&&le(n,s);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function r(l){!function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=t.currentPoints.image,d=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,S.isToolLocked=!1,he.value=!1,ve[i].forEach(function(e){d.removeEventListener(e,s)}),ge[i].forEach(function(e){d.removeEventListener(e,l)}),o.deleteIfHandleOutsideImage&&re(t,n.handles)&&$(d,e,n);c.type===x.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=u.x,a.y=u.y);\"function\"==typeof o.doneMovingCallback&&o.doneMovingCallback();f.cornerstone.updateImage(d)}(t,e,n,a,o,i,{dragHandler:s,upOrEndHandler:r},l)};if(a.active=!0,n.active=!0,S.isToolLocked=!0,ve[i].forEach(function(e){r.addEventListener(e,s)}),ge[i].forEach(function(e){r.addEventListener(e,l)}),\"touch\"===i){he.value=!0;var c=f.cornerstone.getEnabledElement(r),u={x:e.currentPoints.page.x,y:e.currentPoints.page.y+-57},d=f.cornerstone.pageToPixel(r,u.x,u.y);!function e(t,n,a,o){if(!n.value)return;var i=Math.abs(t.y-o.y);var r=i/10;if(i<1)return t.y=o.y,void(n.value=!1);t.y>o.y?t.y-=r:t.y5&&void 0!==arguments[5]?arguments[5]:\"mouse\";o=Object.assign({deleteIfHandleOutsideImage:S.deleteIfHandleOutsideImage,preventHandleOutsideImage:S.preventHandleOutsideImage},o);var r=e.element;S.isToolLocked=!0,a.active=!0,n.active=!0;var s=function(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=s.page,d=f.cornerstone.pageToPixel(c,\"touch\"===o?u.x+-57:u.x,\"touch\"===o?u.y+-57:u.y);n.active=!0,n.x=d.x,n.y=d.y,a&&a.preventHandleOutsideImage&&le(n,l);f.cornerstone.updateImage(c);var h=x.MEASUREMENT_MODIFIED;T(c,h,{toolName:e,element:c,measurementData:t})}.bind(this,t,n,a,o,i),l=function e(r){!function(e,t,n,a,o,i,r){var s=i.moveHandler,l=i.moveEndHandler,c=r.detail,u=c.element,d=c.currentPoints.page,h=f.cornerstone.pageToPixel(u,\"touch\"===o?d.x+-57:d.x,\"touch\"===o?d.y+-57:d.y);if(n.active=!1,t.active=!1,S.isToolLocked=!1,n.x=h.x,n.y=h.y,fe[o].forEach(function(e){u.removeEventListener(e,s)}),pe[o].forEach(function(e){u.removeEventListener(e,l)}),u.removeEventListener(x.TOUCH_START,xe),r.type===x.TOUCH_PINCH||r.type===x.TOUCH_PRESS)return n.active=!1,f.cornerstone.updateImage(u),void(\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback());a.preventHandleOutsideImage&&le(n,r.detail.image);a.deleteIfHandleOutsideImage&&re(r.detail,t.handles)&&$(u,e,t);\"function\"==typeof a.doneMovingCallback&&a.doneMovingCallback();f.cornerstone.updateImage(u)}(t,n,a,o,i,{moveHandler:s,moveEndHandler:e},r)};fe[i].forEach(function(e){r.addEventListener(e,s)}),pe[i].forEach(function(e){r.addEventListener(e,l)}),r.addEventListener(x.TOUCH_START,xe)};function xe(e){return e.stopImmediatePropagation(),!1}var Te=function(e,t,n,a,o){n.active=!0,S.isToolLocked=!0,me(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},be=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"mouse\",i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=Object.assign({},{doneMovingCallback:function(){n.active=!1,S.isToolLocked=!1}},t.options);n.active=!0,S.isToolLocked=!0,de(e.detail,t.name,n,null,o,a),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Me=function(e){function t(e){var n=e.name,a=e.strategies,i=e.defaultStrategy,r=e.configuration,s=e.supportedInteractionTypes,c=e.mixins;return o()(this,t),l()(this,u()(t).call(this,{name:n,strategies:a,defaultStrategy:i,configuration:r,supportedInteractionTypes:s,mixins:c}))}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){throw new Error(\"Method createNewMeasurement not implemented for \".concat(this.name,\".\"))}},{key:\"pointNearTool\",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error(\"Method pointNearTool not implemented for \".concat(this.name,\".\"))}},{key:\"distanceFromPoint\",value:function(e,t,n){throw new Error(\"Method distanceFromPoint not implemented for \".concat(this.name,\".\"))}},{key:\"renderToolData\",value:function(e){throw new Error(\"renderToolData not implemented for \".concat(this.name,\".\"))}},{key:\"mouseMoveCallback\",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=Q(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:\"mouse\";Te(e,this,t,n,a)}},{key:\"toolSelectedCallback\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"mouse\";Ee(e,this,t,n)}}]),t}(Y),Ce=1,we=2;var Ie={setToolWidth:function(e){Ce=e},getToolWidth:function(){return Ce},setActiveWidth:function(e){we=e},getActiveWidth:function(){return we}},Se=\"white\",ke=\"greenyellow\",Pe=\"transparent\";var _e={setFillColor:function(e){Pe=e},getFillColor:function(){return Pe},setToolColor:function(e){Se=e},getToolColor:function(){return Se},setActiveColor:function(e){ke=e},getActiveColor:function(){return ke},getColorIfActive:function(e){return e.color?e.color:e.active?ke:Se}},Oe=function(e,t){e.save(),t(e),e.restore()},De=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Ie.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),e.stroke(),r&&e.setLineDash([])};function Le(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)})}var Ae=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\";De(e,o,function(e){\"pixel\"===i&&(n=f.cornerstone.pixelToCanvas(t,n),a=a.map(function(e){return f.cornerstone.pixelToCanvas(t,e)})),e.moveTo(n.x,n.y),a.forEach(function(t){var n=t.x,a=t.y;e.lineTo(n,a)})})},He=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Le(e,void 0,t,n,r,\"canvas\"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Ae(e,void 0,n,s,r,\"canvas\")},Re=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n)),De(e,o,function(e){e.arc(n.x,n.y,a,0,2*Math.PI)})},Ue=function(e,t,n,a,o){\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")&&(n=f.cornerstone.pixelToCanvas(t,n),a=f.cornerstone.pixelToCanvas(t,a));var i=Math.min(n.x,a.x),r=Math.min(n.y,a.y),s=Math.abs(n.x-a.x),l=Math.abs(n.y-a.y),c=s/2*.5522848,u=l/2*.5522848,d=i+s,h=r+l,v=i+s/2,g=r+l/2;De(e,o,function(e){e.moveTo(i,g),e.bezierCurveTo(i,g-u,v-c,r,v,r),e.bezierCurveTo(v+c,r,d,g-u,d,g),e.bezierCurveTo(d,g+u,v+c,h,v,h),e.bezierCurveTo(v-c,h,i,g+u,i,g),e.closePath()})},Ne=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=_e.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return\"continue\";if(!0===a.drawHandlesIfActive&&!s.active)return\"continue\";var l=s.active?Ie.getActiveWidth():Ie.getToolWidth(),c=a.fill;De(e,{lineWidth:l,fillStyle:c},function(e){var t=f.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||S.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)})},l=0;l0?f.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Le(a,void 0,r,f.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},\"canvas\")},Fe=15,Ve=\"\".concat(Fe,\"px Arial\"),je=\"transparent\";var ze={setFont:function(e){Ve=e},getFont:function(){return Ve},setFontSize:function(e){Fe=e},getFontSize:function(){return Fe},setBackgroundColor:function(e){je=e},getBackgroundColor:function(){return je}},We=function(e,t,n,a,o){var i=ze.getFontSize();e.font=ze.getFont(),e.textBaseline=\"top\",e.fillStyle=a,n.forEach(function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))})},Ge=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function qe(e,t,n){var a=ze.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var Ye=function(e,t,n,a,o,i){\"[object Array]\"!==Object.prototype.toString.call(t)&&(t=[t]);var r=ze.getFontSize(),s=ze.getBackgroundColor(),l=0;t.forEach(function(t){var n=qe(e,t,5);l=Math.max(l,n)});var c={width:l,height:5+t.length*(r+5)};return Oe(e,function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?\"#FF0000\":s;Ge(e,c,r),We(e,c,t,o,5)}),c},Xe=function(e,t,n,a,o,i,r,s,l,c){var u=f.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=Ye(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map(function(e){return u.pixelToCanvas(t,e)});Be(v,d,n.boundingBox,e,r,s)}},Ke=function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(r,s,l,c)})},Ze=function(e){var t=e.getContext(\"2d\");return t.setTransform(1,0,0,1,0,0),t},Je=function(e,t){return void 0===e?t:e},Qe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Je(t.shadowColor,\"#000000\"),e.shadowBlur=Je(t.shadowBlur,0),e.shadowOffsetX=Je(t.shadowOffsetX,1),e.shadowOffsetY=Je(t.shadowOffsetY,1))},$e=function(e,t,n){if(n.vflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},et=function(e){e.setTransform(1,0,0,1,0,0)},tt=function(e,t,n,a){var o=f.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return f.cornerstoneMath.lineSegment.distanceToPoint(i,a)},nt=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n};function at(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))}var ot=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Angle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(tt(e,t.handles.start,t.handles.middle,n)<25||tt(e,t.handles.middle,t.handles.end,n)<25)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=Q(e.currentTarget,this.name);if(s)for(var l=Ze(n.canvasContext.canvas),c=Ie.getToolWidth(),u=function(e){var o=s.data[e];if(!1===o.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var s=_e.getColorIfActive(o),l=f.cornerstone.pixelToCanvas(n.element,o.handles.start),u=f.cornerstone.pixelToCanvas(n.element,o.handles.middle);Ae(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var d={color:s,handleRadius:i,drawHandlesIfActive:r};Ne(e,n,o.handles,d);var v=n.image.columnPixelSpacing||1,g=n.image.rowPixelSpacing||1,m={x:(o.handles.middle.x-o.handles.start.x)*v,y:(o.handles.middle.y-o.handles.start.y)*g},p={x:(o.handles.end.x-o.handles.middle.x)*v,y:(o.handles.end.y-o.handles.middle.y)*g},y={x:(o.handles.end.x-o.handles.start.x)*v,y:(o.handles.end.y-o.handles.start.y)*g},x=at(m),T=at(p),b=at(y),E=Math.acos((Math.pow(x,2)+Math.pow(T,2)-Math.pow(b,2))/(2*x*T));if(E*=180/Math.PI,o.rAngle=nt(E,2),o.rAngle){var M,C=function(e,t,n){var a=t&&n?\"\":\" (isotropic)\";return e.rAngle.toString()+String.fromCharCode(parseInt(\"00B0\",16))+a}(o,n.image.rowPixelSpacing,n.image.columnPixelSpacing);if(!o.handles.textBox.hasMoved){M={x:u.x,y:u.y};var w=qe(e,C,5);u.x0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ArrowAnnotate\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{getTextCallback:rt,changeTextCallback:st,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.preventNewMeasurement=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=Q(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Ze(c),d=Ie.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return\"continue\";Oe(u,function(n){Qe(n,t.configuration);var l=_e.getColorIfActive(i),c=f.cornerstone.pixelToCanvas(a,i.handles.start),u=f.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?He(n,u,c,l,d):He(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&Ne(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&\"\"!==v){var m=qe(n,v,5),p=ze.getFontSize()+10,y=Math.max(m,p)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},ht=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,handles:{start:dt(n,a,0),end:dt(n,a,1,{active:!0}),perpendicularStart:dt(n,a,2,{locked:!0}),perpendicularEnd:dt(n,a,3),textBox:dt(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},vt=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=f.cornerstone,i=f.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ne(r.textBox,n))return!0;var c=\"mouse\"===a?S.clickProximity:S.touchProximity;return!!function(e,t,n,a){var o=f.cornerstone,i=f.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)u){var g=u;u=v,v=g}e.longestDiameter=u.toFixed(1),e.shortestDiameter=v.toFixed(1)},ft=function(e,t,n){var a=\" mm\";return t&&n||(a=\" pixels\"),[\" L \".concat(e.longestDiameter).concat(a),\" W \".concat(e.shortestDiameter).concat(a)]},pt=function(e,t){var n=this,a=e.detail,o=a.element,i=a.image,r=this.configuration;if(!yt(i)){var s=this.createNewMeasurement(a),l=function(){s.active=!1,f.cornerstone.updateImage(o)};J(o,this.name,s),f.cornerstone.updateImage(o);var c=(new Date).getTime(),u=s.handles,d=u.end,h=u.perpendicularStart;ye(a,this.name,s,d,{doneMovingCallback:function(){var e=s.handles,t=s.longestDiameter,i=s.shortestDiameter,u=re(a,e),d=parseFloat(t)||0,v=parseFloat(i)||0,g=d<1||v<1,m=(new Date).getTime()-c<150;u||g||m?(s.cancelled=!0,$(o,n.name,s)):r.getMeasurementLocationCallback(s,a,l),h.locked=!1,f.cornerstone.updateImage(o)}},t)}},yt=function(e){var t=f.cornerstone.metaData.get(\"imagePlaneModule\",e.imageId),n=e.rowPixelSpacing,a=e.columnPixelSpacing;return t&&(n=t.rowPixelSpacing||t.rowImagePixelSpacing,a=t.columnPixelSpacing||t.colImagePixelSpacing),!n||!a};var xt={setCoords:function(e){lt=e.currentPoints.canvas},getCoords:function(){return lt}},Tt=function(e){var t=this,n=e.detail,a=n.element;xt.setCoords(n);var o=Q(a,this.name);if(o){for(var i=!1,r=function(e){var r=n.currentPoints.canvas,s=o.data[e],l=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=oe(e,t,n,a),i=!1;return Object.keys(t).forEach(function(e){if(\"textBox\"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}}),i}(a,s.handles,r);Object.keys(s.handles).forEach(function(e){if(\"textBox\"!==e){var t=s.handles[e];t.hover=t.active}}),l&&(i=!0);var c=t.pointNearTool(a,s,r,\"mouse\"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;sn(e,i)?(r.x=y+u*g,r.y=x-u*v,s.x=r.x-d*g,s.y=r.y+d*v):(r.x=m+u*g,r.y=p-u*v,s.x=r.x-d*g,s.y=r.y+d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=f.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=f.cornerstoneMath.lineSegment.intersectLine(l,c),r=f.cornerstoneMath.point.distance(i,n.handles.start),s=f.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||function(e,t){var n=f.cornerstoneMath.point.distance,a=t.handles,o=a.start,i=a.end,r=a.perpendicularStart,s=a.perpendicularEnd,l=r,c=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,l),u=f.cornerstoneMath.lineSegment.distanceToPoint(t.handles,e),d=c+u;if(n(l,e)<=c)return!1;var h=n(o,i),v=(o.x-i.x)/h,g=(o.y-i.y)/h,m=o.x-1*v,p=o.y-1*g,y=i.x+1*v,x=i.y+1*g;r.x=e.x+d*g,r.y=e.y-d*v,s.x=e.x,s.y=e.y,s.locked=!1,r.locked=!1;var T={start:{x:o.x,y:o.y},end:{x:i.x,y:i.y}},b={start:{x:r.x,y:r.y},end:{x:s.x,y:s.y}};return f.cornerstoneMath.lineSegment.intersectLine(T,b)||(n(e,o)>n(e,i)?(s.x=y-u*g,s.y=x+u*v,r.x=s.x+d*g,r.y=s.y-d*v):(s.x=m-u*g,s.y=p+u*v,r.x=s.x+d*g,r.y=s.y-d*v)),!0}(u,n)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Et=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mt=function(e,t){Et(e,t,\"x\"),Et(e,t,\"y\"),Et(e,t,\"moving\"),Et(e,t,\"hover\"),Et(e,t,\"active\"),Et(e,t,\"selected\")};var Ct=function(e){var t,n=this,a=e.detail,o=a.element,i=S.clickProximity,r=function(e){t.invalidated=!0,re(a,t.handles)&&$(o,n.name,t),e&&(e.moving=!1,e.selected=!0),o.style.cursor=\"\",f.cornerstone.updateImage(o),o.addEventListener(x.MOUSE_MOVE,n._moveCallback),o.addEventListener(x.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=Q(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=oe.apply(void 0,u);if(d)return o.removeEventListener(x.MOUSE_MOVE,n._moveCallback),o.removeEventListener(x.TOUCH_START,n._moveCallback),t.active=!0,wt(t.handles),d.moving=!0,d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),m=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+m*m)||0)>v?(Mt(s,l),Mt(s,c),Mt(l,u),Object.values(r).find(function(e){return!0===e.moving})):n}(a,t,d),o.style.cursor=d.hasBoundingBox?\"move\":\"none\",function(e,t,n,a,o,i){var r=e.element,s={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},l=function(e){var o=e.detail;a.active=!0,a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+s.x,a.y=o.currentPoints.image.y+s.y):bt(a,o,n,s),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),f.cornerstone.updateImage(r);var l={toolType:t,element:r,measurementData:n};f.cornerstone.triggerEvent(r,x.MEASUREMENT_MODIFIED,l)};r.addEventListener(x.MOUSE_DRAG,l),r.addEventListener(x.TOUCH_DRAG,l);var c=f.cornerstone.getImage(r),u=function(){f.cornerstone.getImage(r).imageId!==c.imageId&&d()};r.addEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u);var d=function e(){r.removeEventListener(f.cornerstone.EVENTS.IMAGE_RENDERED,u),r.removeEventListener(x.MOUSE_DRAG,l),r.removeEventListener(x.MOUSE_UP,e),r.removeEventListener(x.MOUSE_CLICK,e),r.removeEventListener(x.TOUCH_DRAG,l),r.removeEventListener(x.TOUCH_DRAG_END,e),r.removeEventListener(x.TAP,e),f.cornerstone.updateImage(r),\"function\"==typeof o&&o()};r.addEventListener(x.MOUSE_UP,d),r.addEventListener(x.MOUSE_CLICK,d),r.addEventListener(x.TOUCH_DRAG_END,d),r.addEventListener(x.TAP,d)}(a,n.name,t,d,function(){return r(d)}),St(e),{v:!0}},u=0;u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Bidirectional\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{changeMeasurementLocationCallback:Lt,getMeasurementLocationCallback:Lt,textBox:\"\",shadow:\"\",drawHandlesOnHover:!0,additionalData:[]}},i=Object.assign(a.configuration,n),r=Object.assign(a,{configuration:i});return(e=l()(this,u()(t).call(this,r))).createNewMeasurement=ht.bind(ut()(ut()(e))),e.pointNearTool=vt.bind(ut()(ut()(e))),e.renderToolData=gt.bind(ut()(ut()(e))),e.addNewMeasurement=pt.bind(ut()(ut()(e))),e._moveCallback=Tt.bind(ut()(ut()(e))),e.preMouseDownCallback=Ct.bind(ut()(ut()(e))),e.preTouchStartCallback=Pt.bind(ut()(ut()(e))),e}return h()(t,e),t}(Me),Ht=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"CobbAngle\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.hasIncomplete=!1,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,complete:!1,value:\"\",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:\"pointNearTool\",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(tt(e,t.handles.start,t.handles.end,n)<25||tt(e,t.handles.start2,t.handles.end2,n)<25))}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r)for(var s=Ze(n.canvasContext.canvas),l=Ie.getToolWidth(),c=ze.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(s,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Le(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Xe(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)})},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"EllipticalRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x)+7.5,top:Math.min(o.y,i.y)+7.5,width:Math.abs(o.x-i.x)-15,height:Math.abs(o.y-i.y)-15},s={left:Math.min(o.x,i.x)-7.5,top:Math.min(o.y,i.y)-7.5,width:Math.abs(o.x-i.x)+15,height:Math.abs(o.y-i.y)+15},l=Vt(r,n);return!(!Vt(s,n)||l)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ue(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.round(Math.min(a.handles.start.x,a.handles.end.x)),top:Math.round(Math.min(a.handles.start.y,a.handles.end.y)),width:Math.round(Math.abs(a.handles.start.x-a.handles.end.x)),height:Math.round(Math.abs(a.handles.start.y-a.handles.end.y))};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=jt(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=Math.PI*(y.width*(m||1)/2)*(y.height*(g||1)/2),isNaN(l)||(a.area=l),a.invalidated=!1}a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2);var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;ye.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.x+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>o.value}(e,t,n));var a,o,i}function Xt(e,t,n,a){qt(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var Kt=function e(t,n){o()(this,e),this.toolIndex=t,this.handleIndexArray=n},Zt=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];o()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function Jt(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function tn(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var nn={newHandle:function(e,t){var n=t.length-1;return Jt(t,$t(t[n]),$t(e),[n])},end:function(e){var t=e.length-1;return Jt(e,$t(e[t]),$t(e[0]),[t,0])},modify:function(e,t){var n=$t(e[t]),a=t-1;0===t&&(a=e.length-1);var o=$t(e[a]);return!!Jt(e,n,o,[t,a])||Jt(e,n,o=$t(e[a=t===e.length-1?0:t+1]),[t,a])}},an=function(){function e(t){o()(this,e),this._eventData=t}return r()(e,[{key:\"findLine\",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:\"findTool\",value:function(){return this._toolData=Q(this._eventData.element,\"FreehandMouse\"),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:\"_nearestHandleToPointAllTools\",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:5,activeHandleRadius:3,completeHandleRadius:6,alwaysShowHandles:!1,invalidColor:\"crimson\",currentHandle:0,currentTool:-1}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(ut()(ut()(e))),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(ut()(ut()(e))),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(ut()(ut()(e))),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(ut()(ut()(e))),e._editMouseUpCallback=e._editMouseUpCallback.bind(ut()(ut()(e))),e._editMouseDragCallback=e._editMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:[]};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles;if(!a)throw new Error(\"invalid parameters supplied to tool \".concat(this.name,\"'s pointNearTool\"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:\"distanceFromPoint\",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:\"mouse\",o=e.detail,i=o.element;if(n.hasBoundingBox)Te(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};var s=this._pointNearHandleAllTools(o),l=s.handleNearby,c=s.toolIndex;this._modifying=!0,r.currentHandle=l,r.currentTool=c,this._activateModify(i),S.isToolLocked=!0,vn(e)}}},{key:\"_drawingMouseMoveCallback\",value:function(e){var t=e.detail,n=t.element,a=Q(t.element,this.name),o=this.configuration,i=o.currentTool,r=a.data[i],s=t.currentPoints.canvas;this._getMouseLocation(t),this._checkInvalidHandleLocation(r,t);var l=this._pointNearHandle(n,r,s);void 0!==l&&!l.hasBoundingBox&&l\")}},{key:\"_compareDistanceToSpacingCanvas\",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\">\",o=this.configuration;f.cornerstone.pixelToCanvas(e,t),f.cornerstone.pixelToCanvas(e,n);return\">\"===a?f.cornerstoneMath.point.distance(t,n)>o.spacing:f.cornerstoneMath.point.distance(t,n)0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Length\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;return a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!(!a||!1===t.visible)&&tt(e,t.handles.start,t.handles.end,n)<25}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l,c=Ze(n.canvasContext.canvas),u=n.image,d=n.element,h=Ie.getToolWidth(),v=f.cornerstone.metaData.get(\"imagePlaneModule\",u.imageId);v?(s=v.rowPixelSpacing||v.rowImagePixelSpacing,l=v.columnPixelSpacing||v.colImagePixelSpacing):(s=u.rowPixelSpacing,l=u.columnPixelSpacing);for(var g=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(c,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Le(e,d,a.handles.start,a.handles.end,{color:r});var c={color:r,handleRadius:o,drawHandlesIfActive:i};Ne(e,n,a.handles,c);var u=(a.handles.end.x-a.handles.start.x)*(l||1),v=(a.handles.end.y-a.handles.start.y)*(s||1),g=Math.sqrt(u*u+v*v);if(a.length=g,!a.handles.textBox.hasMoved){var m={x:Math.max(a.handles.start.x,a.handles.end.x)};m.x===a.handles.start.x?m.y=a.handles.start.y:m.y=a.handles.end.y,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}var f=function(e,t,n){var a=\" mm\";t&&n||(a=\" pixels\");return\"\".concat(e.length.toFixed(2)).concat(a)}(a,s,l);Xe(e,d,a.handles.textBox,f,a.handles,p,r,h,10,!0)})},m=0;m0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Probe\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};console.error(\"required eventData not supplieed to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.end);return f.cornerstoneMath.point.distance(o,n)<5}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration.handleRadius,a=Q(e.currentTarget,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=t.image,r=ze.getFontSize(),s=function(e){var s=a.data[e];if(!1===s.visible)return\"continue\";Oe(o,function(e){var a=_e.getColorIfActive(s);Ne(e,t,s.handles,{handleRadius:n,color:a});var o,l,c,u=Math.round(s.handles.end.x),d=Math.round(s.handles.end.y);if(u>=0&&d>=0&&u0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RectangleRoi\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};console.error(\"required eventData not supplied to tool \".concat(this.name,\"'s createNewMeasurement\"))}},{key:\"pointNearTool\",value:function(e,t,n){var a=t&&t.handles&&t.handles.start&&t.handles.end;if(a||console.warn(\"invalid parameters supplieed to tool \".concat(this.name,\"'s pointNearTool\")),!a||!1===t.visible)return!1;var o=f.cornerstone.pixelToCanvas(e,t.handles.start),i=f.cornerstone.pixelToCanvas(e,t.handles.end),r={left:Math.min(o.x,i.x),top:Math.min(o.y,i.y),width:Math.abs(o.x-i.x),height:Math.abs(o.y-i.y)};return f.cornerstoneMath.rect.distanceToPoint(r,n)<5}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=Q(e.currentTarget,this.name);if(r){var s,l=Ze(n.canvasContext.canvas),c=n.image,u=n.element,d=Ie.getToolWidth(),h=f.cornerstone.metaData.get(\"generalSeriesModule\",c.imageId),v=f.cornerstone.metaData.get(\"imagePlaneModule\",c.imageId),g=c.rowPixelSpacing,m=c.columnPixelSpacing;v&&(g=v.rowPixelSpacing||v.rowImagePixelSpacing,m=v.columnPixelSpacing||v.colImagePixelSpacing),h&&(s=h.modality);for(var p=function(e){var a=r.data[e];if(!1===a.visible)return\"continue\";Oe(l,function(e){Qe(e,t.configuration);var r=_e.getColorIfActive(a);Ke(e,u,a.handles.start,a.handles.end,{color:r});var l,h,v,p={color:r,handleRadius:o,drawHandlesIfActive:i};if(Ne(e,n,a.handles,p),!1===a.invalidated)h=a.meanStdDev,v=a.meanStdDevSUV,l=a.area;else{var y={left:Math.min(a.handles.start.x,a.handles.end.x),top:Math.min(a.handles.start.y,a.handles.end.y),width:Math.abs(a.handles.start.x-a.handles.end.x),height:Math.abs(a.handles.start.y-a.handles.end.y)};if(!c.color){var T=f.cornerstone.getPixels(u,y.left,y.top,y.width,y.height);h=yn(T,y),\"PT\"===s&&(v={mean:Rt(c,(h.mean-c.intercept)/c.slope),stdDev:Rt(c,(h.stdDev-c.intercept)/c.slope)}),h&&!isNaN(h.mean)&&(a.meanStdDev=h,a.meanStdDevSUV=v)}l=y.width*(m||1)*(y.height*(g||1)),isNaN(l)||(a.area=l),a.invalidated=!1}var b=function(e){var t=e.meanStdDev,n=e.meanStdDevSUV,a=e.area,o=[];if(t&&void 0!==t.mean){var i=\"\";\"CT\"===s&&(i=\" HU\");var r=\"Mean: \".concat(Nt(t.mean.toFixed(2))).concat(i),l=\"StdDev: \".concat(Nt(t.stdDev.toFixed(2))).concat(i);if(n&&void 0!==n.mean){r+=\" SUV: \"+Nt(n.mean.toFixed(2)),l+=\" SUV: \"+Nt(n.stdDev.toFixed(2))}o.push(r),o.push(l)}if(a){var c=\" mm\".concat(String.fromCharCode(178));g&&m||(c=\" pixels\".concat(String.fromCharCode(178)));var u=\"Area: \".concat(Nt(a.toFixed(2))).concat(c);o.push(u)}return o}(a);a.handles.textBox.hasMoved||(a.handles.textBox.x=Math.max(a.handles.start.x,a.handles.end.x),a.handles.textBox.y=(a.handles.start.y+a.handles.end.y)/2),Xe(e,u,a.handles.textBox,b,a.handles,x,r,d,0,!0)})},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"TextMarker\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{markers:[],current:\"\",ascending:!0,loop:!1,changeTextCallback:Tn}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.touchPressCallback=e._changeText.bind(ut()(ut()(e))),e.doubleClickCallback=e._changeText.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"createNewMeasurement\",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(f.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:\"pointNearTool\",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=f.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ne(t.handles.end,n);return a<10||o}}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=this.configuration,a=Q(t.element,this.name);if(a)for(var o=Ze(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return\"continue\";var r=_e.getColorIfActive(i);Oe(o,function(e){Qe(e,n);var a=f.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=Ye(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})})},r=0;r3&&void 0!==arguments[3]&&arguments[3];e.forEach(function(e){var o,i=(o=e[0],e[1]*n+o);t[i]=a?0:1})},drawBrushOnCanvas:function(e,t,n,a){var o=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),i=f.cornerstone.pixelToCanvas(a,{x:1,y:1}),r=i.x-o.x,s=i.y-o.y;Oe(t,function(t){e.forEach(function(e){var o=f.cornerstone.pixelToCanvas(a,{x:e[0],y:e[1]}),i={left:o.x,top:o.y,width:r,height:s};Ge(t,i,n)})})},getCircle:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.round(a),r=Math.round(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>n||h<0||d*d+c*c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Brush\",supportedInteractionTypes:[\"Mouse\"],strategies:{overlapping:_n,nonOverlapping:On},defaultStrategy:\"overlapping\",configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"renderBrush\",value:function(e){var t,n=e.detail,a=n.viewport;if(this._drawing?t=this._lastImageCoords:this._mouseUpRender?(t=this._lastImageCoords,this._mouseUpRender=!1):t=_.state.mousePositionImage,t){var o=n.image,i=o.rows,r=o.columns,s=t,l=s.x,c=s.y;if(!(l<0||l>r||c<0||c>i)){this._configuration;var u=kn.radius,d=n.canvasContext,h=n.element,v=kn.drawColorId,g=this._getBrushColor(v);d.setTransform(1,0,0,1,0,0);var m=f.cornerstone,p=u*a.scale,y=m.pixelToCanvas(h,t);d.beginPath(),d.strokeStyle=g,d.ellipse(y.x,y.y,p,p,0,0,2*Math.PI),d.stroke()}}}},{key:\"_paint\",value:function(e){this.applyActiveStrategy(e,this.configuration),f.cornerstone.updateImage(e.detail.element)}}]),t}(Cn);function _n(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData),d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u.data[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u.data[h].pixelData=v}var g=u.data[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u.data[h].invalidated=!0}}function On(e,t){var n=e.detail,a=n.element,o=n.image,i=o.rows,r=o.columns,s=n.currentPoints.image,l=s.x,c=s.y,u=Q(a,t.referencedToolData).data,d=!1;Dn(n)&&(console.log(\"ctrlDown\"),d=!0);var h=kn.drawColorId;if(!u[h].pixelData){var v=new Uint8ClampedArray(n.image.width*n.image.height);u[h].pixelData=v}var g=u[h].pixelData,m=kn.radius;if(!(l<0||l>r||c<0||c>i)){var f=Sn(m,i,r,l,c);In(f,g,r,d),u[h].invalidated=!0;for(var p=Cn.getNumberOfColors(),y=0;y0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Crosshairs\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDownCallback=e._chooseLocation.bind(ut()(ut()(e))),e.mouseDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e.touchDragCallback=e._chooseLocation.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_chooseLocation\",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=Q(n,this.name);if(a){var o=n,i=f.cornerstone.getEnabledElement(o).image.imageId,r=f.cornerstone.metaData.get(\"imagePlaneModule\",i);if(r){var s=Bn(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach(function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=Q(e,\"stack\");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach(function(e,a){var o=f.cornerstone.metaData.get(\"imagePlaneModule\",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Un(o.imagePositionPatient),r=Un(o.rowCosines),l=Un(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"DoubleTapFitToWindow\",supportedInteractionTypes:[\"DoubleTap\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"doubleTapCallback\",value:function(e){var t=e.detail;f.cornerstone.fitToWindow(t.element)}}]),t}(Y),qn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"DragProbe\",strategies:{default:Yn,minimal:Xn},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).touchDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.touchEndCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._movingEventCallback.bind(ut()(ut()(e))),e.mouseUpCallback=e._endMovingEventCallback.bind(ut()(ut()(e))),e.initialConfiguration=i,e.dragEventData={},e}return h()(t,e),r()(t,[{key:\"_movingEventCallback\",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,f.cornerstone.updateImage(n)}},{key:\"_endMovingEventCallback\",value:function(e){var t=e.detail.element;this.dragEventData={},f.cornerstone.updateImage(t)}},{key:\"renderToolData\",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(Y),Yn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Ze(s.canvas),c=_e.getActiveColor(),u=ze.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Oe(l,function(e){Qe(e,t);var a,s,l=\"\".concat(d,\", \").concat(h);if(i.color)a=mn(o,d,h,1,1),s=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2],\" A: \").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,m=Rt(i,v);s=\"SP: \".concat(v,\" MO: \").concat(parseFloat(g.toFixed(3))),m&&(s+=\" SUV: \".concat(parseFloat(m.toFixed(3))))}var f={x:r.canvas.x+5,y:r.canvas.y-5};Ye(e,s,f.x,f.y+u+5,c),Ye(e,l,f.x,f.y,c)})},Xn=function(e,t){var n=f.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Ze(s.canvas),u=_e.getActiveColor(),d=r.page.y-ze.getFontSize()/2;l&&(d=r.page.y-4*ze.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Oe(c,function(e){Qe(e,t);var a,r=n.metaData.get(\"generalSeriesModule\",i.imageId),s=r&&r.modality,c=\"\";if(i.color)a=mn(o,h.x,h.y,1,1),c=\"R: \".concat(a[0],\" G: \").concat(a[1],\" B: \").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if(\"CT\"===s)c+=\"HU: \".concat(g);else if(\"PT\"===s){c+=g;var m=Rt(i,d);m&&(c+=\" SUV: \".concat(parseFloat(m.toFixed(2))))}else c+=g}var f=n.pixelToCanvas(o,h),p={x:12,y:-(ze.getFontSize()+10)/2},y=qe(e,c,5);l&&(p={x:-y/2,y:-ze.getFontSize()-10-12}),Re(e,o,f,6,{color:u},\"canvas\"),Ye(e,c,f.x+p.x,f.y+p.y,u)})},Kn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Eraser\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.preMouseDownCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_deleteAllNearbyTools\",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;S.tools.forEach(function(e){var a=Q(n,e.name);a&&a.data.forEach(function(a){\"function\"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&($(n,e.name,a),f.cornerstone.updateImage(n))})});return!0}}]),t}(Y),Zn=rn.FreehandHandleData,Jn=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"FreehandSculpterMouse\",referencedToolName:\"FreehandMouse\",supportedInteractionTypes:[\"Mouse\"],mixins:[\"activeOrDisabledBinaryTool\"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:5,maxSpacing:20,currentTool:null,dragColor:_e.getActiveColor(),hoverColor:_e.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).hasCursor=!0,e.initialConfiguration=i,e.referencedToolName=i.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(ut()(ut()(e))),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;if(this._active){var n=t.canvasContext.canvas.getContext(\"2d\"),a={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};Ne(n,t,this.configuration.mouseLocation.handles,a)}else this.configuration.showCursorOnHover&&this._renderHoverCursor(e)}},{key:\"doubleClickCallback\",value:function(e){var t=e.detail;this._selectFreehandTool(t),f.cornerstone.updateImage(t.element)}},{key:\"preMouseDownCallback\",value:function(e){var t=e.detail;return null===this.configuration.currentTool?this._selectFreehandTool(t):this._initialiseSculpting(t),f.cornerstone.updateImage(t.element),!0}},{key:\"activeMouseDragCallback\",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=Q(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles;this._getMouseLocation(n),this._sculpt(n,o),f.cornerstone.updateImage(n.element)}}}},{key:\"activeMouseUpCallback\",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,S.isToolLocked=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),f.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:\"_renderHoverCursor\",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext(\"2d\"),i=Q(a,this.referencedToolName).data[this.configuration.currentTool];this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=S.mousePositionImage;var r=O(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};Ne(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:\"newImageCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"enabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"passiveCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"disabledCallback\",value:function(e){this._deselectAllTools(e)}},{key:\"_selectFreehandTool\",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a)}},{key:\"_activateFreehandTool\",value:function(e,t){var n=Q(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;ae.maxSpacing&&a.push(o)}return a}},{key:\"_insertHandleRadially\",value:function(e,t){var n=e.dataHandles,a=t-1,o=this.constructor._getNextHandleIndexBeforeInsert(t,n.length),i=this.constructor._getInsertPosition(e,t,a,o),r=new Zn(i);n.splice(t,0,r),n[a].lines.pop(),n[a].lines.push(n[t]),t===n.length-1?n[t].lines.push(n[0]):n[t].lines.push(n[t+1])}},{key:\"_consolidateHandles\",value:function(e){if(e.dataHandles.length>3){var t=this._findCloseHandlePairs(e);this._mergeCloseHandles(e,t)}}},{key:\"_findCloseHandlePairs\",value:function(e){for(var t=e.dataHandles,n=e.element,a=e.minSpacing,o=[],i=t.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=Q(a,this.referencedToolName).data[i.currentTool],s=1;if(n){var l=f.cornerstone.pixelToCanvas(a,{x:0,y:0}),c=f.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height});s=(c.x-l.x)*(c.y-l.y)/(o.width*o.height)}var u=r.area*s,d=Math.pow(u/Math.PI,.5);return Math.min(t,d)}},{key:\"_getClosestFreehandToolOnElement\",value:function(e,t){var n=O(e,this.referencedToolName),a=Q(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Magnify\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{magnifySize:300,magnificationLevel:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.enabledCallback=e._createMagnificationCanvas.bind(ut()(ut()(e))),e.disabledCallback=e._destroyMagnificationCanvas.bind(ut()(ut()(e))),e.postTouchStartCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.touchEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.postMouseDownCallback=e._addMagnifyingGlass.bind(ut()(ut()(e))),e.mouseDragCallback=e._updateMagnifyingGlass.bind(ut()(ut()(e))),e.mouseUpCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.mouseClickCallback=e._removeMagnifyingGlass.bind(ut()(ut()(e))),e.newImageCallback=e._drawMagnificationTool.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_addMagnifyingGlass\",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame(function(){return t._drawMagnificationTool(e)}),e.preventDefault(),e.stopPropagation()}},{key:\"_updateMagnifyingGlass\",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:\"_removeMagnifyingGlass\",value:function(e){e.detail.element.querySelector(\".magnifyTool\").style.display=\"none\",document.body.style.cursor=\"default\",this._removeZoomElement()}},{key:\"_drawMagnificationTool\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector(\"canvas:not(.magnifyTool)\"),o=Ze(n),i=f.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top=\"\".concat(u.top,\"px\"),n.style.left=\"\".concat(u.left,\"px\"),n.style.display=\"block\",document.body.style.cursor=\"none\"}}},{key:\"_drawZoomedElement\",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=f.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement=document.createElement(\"div\"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,f.cornerstone.enable(this.zoomElement,n.options);var r=f.cornerstone.getEnabledElement(this.zoomElement),s=f.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,f.cornerstone.displayImage(this.zoomElement,i),f.cornerstone.setViewport(this.zoomElement,s)}},{key:\"_removeZoomElement\",value:function(){void 0!==this.zoomElement&&(f.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:\"_createMagnificationCanvas\",value:function(e){if(null===e.querySelector(\".magnifyTool\")){var t=document.createElement(\"canvas\");t.classList.add(\"magnifyTool\"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position=\"absolute\",t.style.display=\"none\",e.appendChild(t)}}},{key:\"_destroyMagnificationCanvas\",value:function(e){var t=e.detail.element,n=t.querySelector(\".magnifyTool\");n&&t.removeChild(n)}}]),t}(Y),$n=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"PanMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{touchPointers:2}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"Pan\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),f.cornerstone.setViewport(n,a)}},{key:\"_getTranslation\",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"ReferenceLines\",mixins:[\"enabledOrDisabledBinaryTool\"],configuration:{renderer:ia}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e.renderer=null,e.synchronizationContext=null,e}var n;return h()(t,e),r()(t,[{key:\"enabledCallback\",value:(n=oa()(na.a.mark(function e(t){var n,a,o,i=arguments;return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,sa(t);case 4:if(e.sent&&o&&a){e.next=8;break}return console.warn(\"Unable to enable \".concat(this.name,\". Exiting enable callback. Tool will be enabled, but will not render.\")),e.abrupt(\"return\");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case\"end\":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Ze(n.canvasContext.canvas);f.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach(function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)})}}}]),t}(Y),ua=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},da=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Rotate\",strategies:{default:ha,horizontal:va,vertical:ga},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"]},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"mouseDragCallback\",value:function(e){this.dragCallback(e)}},{key:\"postMouseDownCallback\",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:\"dragCallback\",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y),ha=function(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=ua(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle},va=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},ga=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},ma=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"RotateTouch\",supportedInteractionTypes:[\"TouchRotate\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchRotateCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,f.cornerstone.setViewport(n,a)}}]),t}(Y),fa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ScaleOverlay\",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:[\"enabledOrDisabledBinaryTool\"]},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"enabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"disabledCallback\",value:function(e){this.forceImageUpdate(e)}},{key:\"forceImageUpdate\",value:function(e){f.cornerstone.getEnabledElement(e).image&&f.cornerstone.updateImage(e)}},{key:\"renderToolData\",value:function(e){var t=e.detail,n=Ze(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=f.cornerstone.metaData.get(\"imagePlaneModule\",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=pa(c,.25,.05),v=pa(c,.05,.15);if(c.width&&c.height&&h&&v){var g=_e.getToolColor(),m=Ie.getToolWidth(),p=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:m},this.configuration);Oe(n,function(e){Qe(e,p),Le(e,i,p.verticalLine.start,p.verticalLine.end,{color:g,lineWidth:m},\"canvas\"),ya(e,i,p),Le(e,i,p.horizontalLine.start,p.horizontalLine.end,{color:g,lineWidth:m},\"canvas\"),xa(e,i,p)})}}else console.warn(\"unable to define rowPixelSpacing or colPixelSpacing from data on \".concat(this.name,\"'s renderToolData\"))}}]),t}(Y),pa=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},ya=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},xa=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Le(e,t,r,s,{color:o,lineWidth:i},\"canvas\"),a++}},Ta={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function ba(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i)||[];return/trident/i.test(n[1])?(e=/\\brv[ :]+(\\d+)/g.exec(t)||[],\"IE \".concat(e[1]||\"\")):\"Chrome\"===n[1]&&null!==(e=t.match(/\\b(OPR|Edge)\\/(\\d+)/))?e.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(e=t.match(/version\\/(\\d+)/i))&&n.splice(1,1,e[1]),n.join(\" \"))}function Ea(){return la||Ma()}function Ma(){var e=ba().split(\" \"),t=e[0],n=e[1],a=Ta[t];return a?a[n]?a[n]:a.default:Ta.default}var Ca={interaction:[],thumbnail:[],prefetch:[]},wa={interaction:0,thumbnail:0,prefetch:0},Ia={interaction:6,thumbnail:6,prefetch:5},Sa=!1,ka=20;function Pa(){Sa&&setTimeout(function(){Oa()},ka)}function _a(e){var t=f.cornerstone,n=e.type;wa[n]++,Sa=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()});else{var s=function(e){return\"prefetch\"===e.type?-5:\"interactive\"===e.type?0:\"thumbnail\"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then(function(e){wa[n]--,o(e),Pa()},function(e){wa[n]--,i(e),Pa()})}}function Oa(){var e=Ea();Ia={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(wa.interaction+wa.thumbnail+wa.prefetch),n=0;n1){var i=Q(e,\"stackRenderer\");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=Rn.getStartLoadHandler(),l=Rn.getEndLoadHandler(),c=Rn.getErrorLoadingHandler();if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then(function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}},function(n){var a=r.imageIds[t];c&&c(e,a,n)}),La.startGrabbing(),T(e,x.STACK_SCROLL,u)}}},Ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n)r%=i.imageIds.length;else r=se(r,0,i.imageIds.length-1);if(a)Aa(e,r);else{var s={index:r};i.pending.push(s),function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function e(o){t.imageIds.indexOf(o.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,e),t.pending.length>0&&function e(t,n,a){if(t.pending[0]===n){if(t.currentImageIdIndex===n.index)return t.pending.splice(t.pending.indexOf(n),1),void(t.pending.length>0&&e(t,t.pending[0],a));a.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,function o(i){t.imageIds.indexOf(i.detail.image.imageId)===n.index&&(t.pending.splice(t.pending.indexOf(n),1),a.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,o),t.pending.length>0&&e(t,t.pending[0],a))}),Aa(a,n.index)}}(t,t.pending[0],a))}),Aa(a,n.index)}}(i,s,e)}}};function Ra(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index){e.pending.splice(e.pending.indexOf(t),1);if(e.pending.length>0){Ra(e,e.pending[0],n)}return}var a=function a(o){var i;if(e.imageIds.indexOf(o.detail.image.imageId)===t.index){e.pending.splice(e.pending.indexOf(t),1);n.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);if(e.pending.length>0){Ra(e,e.pending[0],n)}}};n.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,a);Aa(n,t.index)}}var Ua=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{loop:!1,allowSkipping:!0,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;Ha(a,s?-n:n,i,r)}}]),t}(Y),Na=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScrollMultiTouch\",supportedInteractionTypes:[\"MultiTouch\"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.multiTouchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Ba=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"StackScroll\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{loop:!1,allowSkipping:!0}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e.mouseDragCallback=e._dragCallback.bind(ut()(ut()(e))),e.touchDragCallback=e._dragCallback.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"_dragCallback\",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=jn(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);Ha(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;zn(this.name,n,s)}}},{key:\"_getDeltaY\",value:function(e,t){return(jn(this.name,e).deltaY||0)+t}},{key:\"_getPixelPerImage\",value:function(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(Y),Fa=function(e,t,n,a,o){if(!e)throw new Error(\"getLuminance: parameter element must not be undefined\");t=Math.round(t),n=Math.round(n);var i,r,s,l=f.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"WwwcRegion\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{minWindowWidth:10}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.touchDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.touchEndCallback=e._applyStrategy.bind(ut()(ut()(e))),e.postMouseDownCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseClickCallback=e._startOutliningRegion.bind(ut()(ut()(e))),e.mouseDragCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(ut()(ut()(e))),e.mouseUpCallback=e._applyStrategy.bind(ut()(ut()(e))),e}return h()(t,e),r()(t,[{key:\"renderToolData\",value:function(e){var t=this,n=e.detail,a=n.element,o=_e.getColorIfActive({active:!0}),i=Ze(n.canvasContext.canvas);Oe(i,function(e){Ke(e,a,t.handles.start,t.handles.end,{color:o})})}},{key:\"_startOutliningRegion\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return ja(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),f.cornerstone.updateImage(t),!0}},{key:\"_setHandlesAndUpdate\",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,f.cornerstone.updateImage(t)}},{key:\"_applyStrategy\",value:function(e){ja(this.handles.start)||ja(this.handles.end)||(e.detail.handles=this.handles,za(e,this.configuration),this._resetHandles())}},{key:\"_resetHandles\",value:function(){this.handles={start:{},end:{}}}}]),t}(Y),ja=function(e){return 0===Object.keys(e).length&&e.constructor===Object},za=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=se(l,0,a.width),c=se(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Fa(o,l,c,u,d),v=Wa(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,f.cornerstone.setViewport(o,g),f.cornerstone.updateImage(o)},Wa=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Wwwc\",strategies:{basicLevelingStrategy:qa},supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{orientation:0}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"mouseDragCallback\",value:function(e){this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:\"touchDragCallback\",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(Y);function qa(e,t){var n=t.orientation,a=e.detail,o=(a.image.maxPixelValue*a.image.slope+a.image.intercept-(a.image.minPixelValue*a.image.slope+a.image.intercept))/1024,i=a.deltaPoints.page.x*o,r=a.deltaPoints.page.y*o;0===n?(a.viewport.voi.windowWidth+=i,a.viewport.voi.windowCenter+=r):(a.viewport.voi.windowWidth+=r,a.viewport.voi.windowCenter+=i)}var Ya=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomMouseWheel\",supportedInteractionTypes:[\"MouseWheel\"],configuration:{minScale:.25,maxScale:20,invert:!1}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"mouseWheelCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Ya(a,r?o/4:-o/4,{maxScale:s,minScale:l});f.cornerstone.setViewport(n,c)}}]),t}(Y),Za=Xa.correctShift,Ja=Xa.changeViewportScale,Qa=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a={name:\"Zoom\",strategies:{default:eo,translate:to,zoomToCenter:no},defaultStrategy:\"default\",supportedInteractionTypes:[\"Mouse\",\"Touch\"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20}},i=Object.assign(a,n);return(e=l()(this,u()(t).call(this,i))).initialConfiguration=i,e}return h()(t,e),r()(t,[{key:\"touchDragCallback\",value:function(e){$a.call(this,e)}},{key:\"mouseDragCallback\",value:function(e){$a.call(this,e)}}]),t}(Y),$a=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),f.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function eo(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],m=Ja(c,r,{maxScale:a,minScale:o});f.cornerstone.setViewport(l,m);var p=f.cornerstone.pageToPixel(l,d,h),y={x:v-p.x,y:g-p.y};y=Za(y,m),c.translation.x-=y.x,c.translation.y-=y.y}function to(e,t){var n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=Ja(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&le(e.detail.startPoints.image,l);var m={x:l.width/2-d,y:l.height/2-h};m=Za(m,v);var f={x:v.translation.x-m.x,y:v.translation.y-m.y};Math.abs(f.x)<.01?v.translation.x=m.x:g.x=f.x/8,Math.abs(f.y)<.01?v.translation.y=m.y:g.y=f.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function no(e,t){var n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;Ja(s,r,{maxScale:a,minScale:o})}var ao=Xa.correctShift,oo=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o()(this,t);var a=Object.assign({name:\"ZoomTouchPinch\",supportedInteractionTypes:[\"TouchPinch\"],configuration:{minScale:.25,maxScale:20}},n);return(e=l()(this,u()(t).call(this,a))).initialConfiguration=a,e}return h()(t,e),r()(t,[{key:\"touchPinchCallback\",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var so,lo={48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",96:\"0\",97:\"1\",98:\"2\",99:\"3\",100:\"4\",101:\"5\",102:\"6\",103:\"7\",104:\"8\",105:\"9\",65:\"a\",66:\"b\",67:\"c\",68:\"d\",69:\"e\",70:\"f\",71:\"g\",72:\"h\",73:\"i\",74:\"j\",75:\"k\",76:\"l\",77:\"m\",78:\"n\",79:\"o\",80:\"p\",81:\"q\",82:\"r\",83:\"s\",84:\"t\",85:\"u\",86:\"v\",87:\"w\",88:\"x\",89:\"y\",90:\"z\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",13:\"RETURN\",8:\"BACKSPACE\",9:\"TAB\",46:\"DELETE\",12:\"DELETE\",27:\"ESCAPE\",20:\"CAPSLOCK\",173:\"-\",189:\"-\",109:\"-\",61:\"+\",187:\"+\",107:\"+\",219:\"[\",221:\"]\",59:\";\",186:\";\",188:\",\",190:\".\",199:\"/\"},co={\"base/BaseTool\":Y,\"base/BaseAnnotationTool\":Me,\"base/BaseBrushTool\":Cn,\"manipulators/anyHandlesOutsideImage\":re,\"manipulators/getHandleNearImagePoint\":oe,\"manipulators/handleActivator\":ie,\"manipulators/moveAllHandles\":de,\"manipulators/moveHandle\":me,\"manipulators/moveNewHandle\":ye,\"manipulators/moveHandleNearImagePoint\":Te,\"manipulators/findHandleDataNearImagePoint\":be,\"manipulators/moveAnnotation\":Ee,\"mixins/activeOrDisabledBinaryTool\":q.activeOrDisabledBinaryTool,\"mixins/enabledOrDisabledBinaryTool\":q.enabledOrDisabledBinaryTool,\"drawing/getNewContext\":Ze,\"drawing/draw\":Oe,\"drawing/path\":De,\"drawing/setShadow\":Qe,\"drawing/drawLine\":Le,\"drawing/drawLines\":function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"pixel\";De(e,a,function(e){n.forEach(function(n){var a=n.start,i=n.end;if(\"pixel\"===o){var r=f.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)})})},\"drawing/drawJoinedLines\":Ae,\"drawing/drawCircle\":Re,\"drawing/drawEllipse\":Ue,\"drawing/drawRect\":Ke,\"drawing/fillOutsideRect\":function(e,t,n,a,o){if(\"pixel\"===(arguments.length>5&&void 0!==arguments[5]?arguments[5]:\"pixel\")){var i=f.cornerstone;n=i.pixelToCanvas(t,n),a=i.pixelToCanvas(t,a)}var r=Math.min(n.x,a.x),s=Math.min(n.y,a.y),l=Math.abs(n.x-a.x),c=Math.abs(n.y-a.y);De(e,o,function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(r+l,s,-l,c)})},\"drawing/drawTextBox\":Ye,\"drawing/drawArrow\":He,\"drawing/fillBox\":Ge,\"drawing/fillTextLines\":We,\"drawing/drawLink\":Be,\"drawing/drawLinkedTextBox\":Xe,\"drawing/drawHandles\":Ne,\"drawing/textBoxWidth\":qe,\"util/getLuminance\":Fa,\"util/copyPoints\":io,\"util/calculateSUV\":Rt,\"util/setContextToDisplayFontSize\":function(e,t,n){return f.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},\"util/scrollToIndex\":Aa,\"util/scroll\":Ha,\"util/roundToDecimal\":nt,\"util/projectPatientPointToImagePlane\":Nn,\"util/imagePointToPatientPoint\":Bn,\"util/planePlaneIntersection\":Fn,\"util/pointInsideBoundingBox\":ne,\"util/makeUnselectable\":function(e,t){e.style.webkitUserSelect=\"none\",e.style.webkitTouchCallout=\"none\",e.style.mozUserSelect=\"none\",e.style.msUserSelect=\"none\",e.style.oUserSelect=\"none\",e.style.khtmlUserSelect=\"none\",e.style.userSelect=\"none\",e.unselectable=\"on\",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents=\"none\")},\"util/getRGBPixels\":mn,\"util/getDefaultSimultaneousRequests\":Ma,\"util/getMaxSimultaneousRequests\":Ea,\"util/getBrowserInfo\":ba,\"util/isMobileDevice\":function(){return new RegExp(\"Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\").test(navigator.userAgent)},\"util/angleBetweenPoints\":ua,\"util/getKeyFromKeyCode\":function(e){return lo[e]},\"util/numbersWithCommas\":Nt,\"util/lineSegDistance\":tt,\"util/triggerEvent\":T,\"util/convertToVectro3\":Un,\"util/ellipseUtils\":Ft,\"util/freehandUtils\":rn,\"util/brushUtils\":wn,\"util/zoomUtils\":Xa},uo=function(e){return co[e]},ho=!0,vo=200;function go(e){if(\"number\"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function mo(){ho=!1}function fo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_DOUBLE_CLICK,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o);console.log(\"double-click: \".concat(go(e))),T(t,a,{event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function po(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){so=setTimeout(mo,vo),t.removeEventListener(\"mousemove\",yo);var a={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=f.cornerstone.pixelToCanvas(t,a.image);var o=io(a),i={event:e,buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:x.MOUSE_DOWN};T(i.element,x.MOUSE_DOWN,i)&&(i.type=x.MOUSE_DOWN_ACTIVATE,T(i.element,x.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener(\"mousemove\",r),document.addEventListener(\"mouseup\",function e(i){clearTimeout(so);var s=x.MOUSE_UP;ho&&(s=x.MOUSE_CLICK);var l={page:f.cornerstoneMath.point.pageToPoint(i),image:f.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=f.cornerstone.pixelToCanvas(t,l.image);var c={page:f.cornerstoneMath.point.subtract(l.page,o.page),image:f.cornerstoneMath.point.subtract(l.image,o.image),client:f.cornerstoneMath.point.subtract(l.client,o.client),canvas:f.cornerstoneMath.point.subtract(l.canvas,o.canvas)};console.log(\"mouseup: \".concat(go(i)));var u={event:i,buttons:go(i),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};T(u.element,s,u),document.removeEventListener(\"mousemove\",r),document.removeEventListener(\"mouseup\",e),t.addEventListener(\"mousemove\",yo),ho=!0})}function r(e){var i=x.MOUSE_DRAG,r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,o.page),image:f.cornerstoneMath.point.subtract(r.image,o.image),client:f.cornerstoneMath.point.subtract(r.client,o.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,o.canvas)};console.log(\"mousemove \".concat(go(e)));var l={buttons:go(e),viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};T(l.element,i,l),o=io(r)}}function yo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a=x.MOUSE_MOVE,o={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=f.cornerstone.pixelToCanvas(t,o.image);var i=io(o),r={page:f.cornerstoneMath.point.pageToPoint(e),image:f.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=f.cornerstone.pixelToCanvas(t,r.image);var s={page:f.cornerstoneMath.point.subtract(r.page,i.page),image:f.cornerstoneMath.point.subtract(r.image,i.image),client:f.cornerstoneMath.point.subtract(r.client,i.client),canvas:f.cornerstoneMath.point.subtract(r.canvas,i.canvas)};T(t,a,{viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=io(r)}}function xo(e){e.removeEventListener(\"mousedown\",po),e.removeEventListener(\"mousemove\",yo),e.removeEventListener(\"dblclick\",fo)}var To={enable:function(e){xo(e),e.addEventListener(\"mousedown\",po),e.addEventListener(\"mousemove\",yo),e.addEventListener(\"dblclick\",fo)},disable:xo},bo=function(e){var t=0,n=0,a=0,o=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),a=10*t,o=10*n,\"deltaY\"in e&&(o=e.deltaY),\"deltaX\"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function Eo(e){var t=e.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){e.preventDefault();var a=e.pageX,o=e.pageY,i=f.cornerstone.pageToPixel(t,a,o),r=bo(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:f.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};T(t,x.MOUSE_WHEEL,h)}}function Mo(e){e.removeEventListener(\"wheel\",Eo,{passive:!1})}var Co,wo,Io={enable:function(e){Mo(e),e.addEventListener(\"wheel\",Eo,{passive:!1})},disable:Mo},So=2e3,ko={mouse:0,touch:1};function Po(e,t){var n=Date.now();if(e!==Co){if(n-wo<=So)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Co=e}wo=n}var _o=Po.bind(null,ko.mouse),Oo=Po.bind(null,ko.touch);function Do(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.addEventListener(t,a,{passive:!1})})}function Lo(e,t,n){var a=n?_o:Oo;t.forEach(function(t){e.removeEventListener(t,a)})}var Ao=[\"mousedown\",\"mouseup\"],Ho=[\"touchstart\",\"touchend\"];function Ro(e){Lo(e,Ao,ko.mouse),Lo(e,Ho,ko.touch)}var Uo,No,Bo,Fo,Vo,jo,zo,Wo,Go,qo={enable:function(e){Ro(e),Do(e,Ao,ko.mouse),Do(e,Ho,ko.touch)},disable:Ro},Yo=1,Xo=0,Ko=!1,Zo=!1,Jo=700,Qo=5,$o=\"touchInput\";function ei(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=f.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Zo=!1,clearTimeout(zo)),e.type){case\"tap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"doubletap\":Zo=!1,clearTimeout(zo),(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),a=x.DOUBLE_TAP,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo);break;case\"pinchstart\":Zo=!1,clearTimeout(zo),Yo=1;break;case\"pinchmove\":if(Zo=!1,clearTimeout(zo),!0===Ko){Yo=e.scale,Ko=!1;break}o=(e.scale-Yo)/Yo,(Uo={page:e.center,image:f.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PINCH,Vo={event:e,startPoints:Uo,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},T(t,a,Vo),Yo=e.scale;break;case\"touchstart\":Yo=1,clearTimeout(zo),clearTimeout(jo),jo=setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_START,e.touches.length>1&&(a=x.MULTI_TOUCH_START),Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},!0===T(t,a,Vo)&&(a=x.TOUCH_START_ACTIVE,e.touches.length>1&&(a=x.MULTI_TOUCH_START_ACTIVE),Vo.type=a,T(t,a,Vo)),Bo=io(Uo)},50),Zo=!0,Wo=0,zo=setTimeout(function(){Zo&&((No={page:f.cornerstoneMath.point.pageToPoint(e.touches[0]),image:f.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_PRESS,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:No,type:a,isTouchEvent:!0},T(t,a,Vo))},Jo);break;case\"touchend\":Yo=1,Zo=!1,clearTimeout(zo),setTimeout(function(){(Uo={page:f.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:f.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,Uo.image),a=x.TOUCH_END,Vo={event:e,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,currentPoints:Uo,type:a,isTouchEvent:!0},T(t,a,Vo)},50);break;case\"panmove\":i={x:e.deltaX-Go.x,y:e.deltaY-Go.y},Go={x:e.deltaX,y:e.deltaY},(No={page:{x:Bo.page.x+i.x,y:Bo.page.y+i.y},image:f.cornerstone.pageToPixel(t,Bo.page.x+i.x,Bo.page.y+i.y),client:{x:Bo.client.x+i.x,y:Bo.client.y+i.y}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},(Wo+=Math.sqrt(Fo.page.x*Fo.page.x+Fo.page.y*Fo.page.y))>Qo&&(Zo=!1,clearTimeout(zo)),a=x.TOUCH_DRAG,e.pointers.length>1&&(a=x.MULTI_TOUCH_DRAG),Vo={viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,numPointers:e.pointers.length,type:a,isTouchEvent:!0},T(t,a,Vo),Bo=io(No);break;case\"panstart\":Go={x:e.deltaX,y:e.deltaY},(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Bo=io(No);break;case\"panend\":if(Zo=!1,clearTimeout(zo),!Bo)return!1;(No={page:f.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:f.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=f.cornerstone.pixelToCanvas(t,No.image),Fo={page:f.cornerstoneMath.point.subtract(No.page,Bo.page),image:f.cornerstoneMath.point.subtract(No.image,Bo.image),client:f.cornerstoneMath.point.subtract(No.client,Bo.client),canvas:f.cornerstoneMath.point.subtract(No.canvas,Bo.canvas)},a=x.TOUCH_DRAG_END,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uo,lastPoints:Bo,currentPoints:No,deltaPoints:Fo,type:a,isTouchEvent:!0},T(t,a,Vo),2===e.pointers.length-e.changedPointers.length&&(Ko=!0);break;case\"rotatemove\":Zo=!1,clearTimeout(zo),r=e.rotation-Xo,Xo=e.rotation,a=x.TOUCH_ROTATE,Vo={event:e.srcEvent,viewport:f.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},T(t,a,Vo)}return!1}}function ti(e){qo.disable(e);[\"touchstart\",\"touchend\"].forEach(function(t){e.removeEventListener(t,ei)});var t=jn($o,e).hammer;t&&t.off(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei)}var ni={enable:function(e){ti(e);var t=f.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:\"doubletap\",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on(\"tap doubletap panstart panmove panend pinchstart pinchmove rotatemove\",ei),qo.enable(e),[\"touchstart\",\"touchend\"].forEach(function(t){e.addEventListener(t,ei,{passive:!1})});var c=jn($o,e);c.hammer=a,zn($o,e,c)},disable:ti},ai=function(e,t,n){return t.filter(function(t){return t.element===e&&\"active\"===t.mode&&(void 0===n||t.options[\"is\".concat(n,\"Active\")])})};\"createImageBitmap\"in window||(window.createImageBitmap=function(){var e=oa()(na.a.mark(function e(t){return na.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",new Promise(function(e){var n=document.createElement(\"img\");n.addEventListener(\"load\",function(){e(this)});var a=document.createElement(\"canvas\");a.width=t.width,a.height=t.height,a.getContext(\"2d\").putImageData(t,0,0,0,0,a.width,a.height),n.src=a.toDataURL()}));case 1:case\"end\":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}());var oi=_.modules.brush,ii=oi.state,ri=oi.getters,si=oi.setters;function li(e,t,n){var a=e.detail.element,o=n.toolData,i=n.visibleSegmentations;return!!o.data[t].pixelData&&(!!i[t]||ii.drawColorId===t&&ai(a,_.state.tools).filter(function(e){return e instanceof Cn}).length>0)}function ci(e,t,n){var a=n.toolData,o=n.imageBitmapCache,i=n.visibleSegmentations;o&&o[t]&&function(e,t,n){var a=e.detail,o=Ze(a.canvasContext.canvas),i=f.cornerstone.pixelToCanvas(a.element,{x:0,y:0}),r=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:0}),s=f.cornerstone.pixelToCanvas(a.element,{x:a.image.width,y:a.image.height}),l=f.cornerstoneMath.point.distance(i,r),c=f.cornerstoneMath.point.distance(r,s),u=a.canvasContext.canvas,d=a.viewport;o.imageSmoothingEnabled=!1,o.globalAlpha=function(e){if(e)return ii.alpha;return ii.hiddenButActiveAlpha}(n),$e(o,u,d);var h={x:d.translation.x*d.scale,y:d.translation.y*d.scale};o.drawImage(t,u.width/2-l/2+h.x,u.height/2-c/2+h.y,l,c),o.globalAlpha=1,et(o)}(e,o[t],i[t]),a.data[t].invalidated&&function(e,t,n){var a=e.detail,o=a.element,i=f.cornerstone.getEnabledElement(o),r=t.data[n].pixelData,s=ii.colorMapId,l=[[0,0,0,0],f.cornerstone.colors.getColormap(s).getColor(n)],c=new ImageData(a.image.width,a.image.height),u={stats:{},minPixelValue:0,getPixelData:function(){return r}};f.cornerstone.storedPixelDataToCanvasImageDataColorLUT(u,l,c.data),window.createImageBitmap(c).then(function(e){si.imageBitmapCacheForElement(i.uuid,n,e),t.data[n].invalidated=!1,f.cornerstone.updateImage(a.element)})}(e,a,t)}var ui=function(e){var t=e.detail.element,n=S.tools.filter(function(e){return e.element===t&&(\"active\"===e.mode||\"passive\"===e.mode||\"enabled\"===e.mode)});n.filter(function(e){return e instanceof Cn}).length>0&&function(e){var t=e.detail,n=t.element,a=Cn.getNumberOfColors(),o=Q(n,Cn.getReferencedToolDataName());if(!o){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:\"mouse\")?S.clickProximity:S.touchProximity;return t.filter(function(t){for(var o=Q(e,t.name),i=0;i0})},pi=function(e){if(!S.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mi(n,k.mouseTools()),i=o.filter(function(e){return\"active\"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preMouseDownCallback});if(r)if(r.preMouseDownCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"mouse\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"mouse\")}else{var g=o.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"mouse\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"mouse\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postMouseDownCallback});if(p)if(p.postMouseDownCallback(e))return}}}},yi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=ai(n,k.mouseTools());if(0!==(a=a.filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive})).length){var o=a[0];if(\"function\"==typeof o.preMouseDownActivateCallback)if(o.preMouseDownActivateCallback(e))return;o.addNewMeasurement?o.addNewMeasurement(e,\"mouse\"):o instanceof Me&&function(e,t){e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(J(a,t.name,o),f.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?me:ye)(n,t.name,o,o.handles.end,t.options,\"mouse\"))}(e,o)}}},xi=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element;if(0!==(t=(t=(t=ai(a,k.mouseTools())).filter(function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive})).filter(function(e){return\"function\"==typeof e.mouseDragCallback})).length)t[0].mouseDragCallback(e)}},Ti=function(e){if(!S.isToolLocked){var t,n=e.detail,a=n.element,o=n.currentPoints;S.mousePositionImage=o.image;var i=(t=mi(a,k.mouseTools())).filter(function(e){return\"active\"===e.mode&&e.options.isMouseActive}),r=!1;i.length>0&&(r=i.some(function(e){return e.hasCursor})),t=fi(a,t);for(var s=0;s0&&function(e){var t=e.detail,n=t.element,a=Q(n,Cn.getReferencedToolDataName());if(!a){for(var o=Cn.getNumberOfColors(),i=0;i0){var i=o[0],r=Q(n,i.name),s=r.data.find(function(e){return void 0!==oe(n,e.handles,a,28)});r.data.active=!0,s.active=!0,f.cornerstone.updateImage(n);var l=Object.assign({},{doneMovingCallback:function(){Di(r)}},i.options);return me(e.detail,i.name,r.data,s,l,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var c=t.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a)})});if(c.length>0){var u=c[0],d=Q(n,u.name),h=d.data.find(function(e){return u.pointNearTool(n,e,a)});h.active=!0,f.cornerstone.updateImage(n);var v=Object.assign({},{doneMovingCallback:function(){Di(d)}},u.options);return de(e.detail,u.name,h,null,v,\"touch\"),e.stopImmediatePropagation(),void e.preventDefault()}var g=ai(n,k.touchTools());return g.length>0&&g[0].touchStartActiveCallback?g[0].touchStartActiveCallback(e):Oi(e),!1}},Hi=function(e){if(!S.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mi(n,k.touchTools()),i=o.filter(function(e){return\"active\"===e.mode&&e.options.isTouchActive});if(i.length>0){var r=i.find(function(e){return\"function\"==typeof e.preTouchStartCallback});if(r)if(r.preTouchStartCallback(e))return}var s=fi(n,o),l=gi(n,s,a,\"touch\");if(l.length>0){var c=l[0],u=Q(n,c.name),d=be(n,u,c.name,a,\"touch\"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,\"touch\")}else{var g=s.filter(function(e){var t=Q(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some(function(t){return e.pointNearTool(n,t,a,\"touch\")})});if(g.length>0){var m=g[0],f=Q(n,m.name).data.find(function(e){return m.pointNearTool(n,e,a)});m.toolSelectedCallback(e,f,\"touch\")}else if(i.length>0){var p=i.find(function(e){return\"function\"==typeof e.postTouchStartCallback});if(p)if(p.postTouchStartCallback(e))return}}}},Ri=vi.bind(null,\"DoubleTap\",\"doubleTapCallback\"),Ui=vi.bind(null,\"Touch\",\"touchDragCallback\"),Ni=vi.bind(null,\"Touch\",\"touchEndCallback\"),Bi=vi.bind(null,\"TouchPinch\",\"touchPinchCallback\"),Fi=vi.bind(null,\"Touch\",\"touchPressCallback\"),Vi=vi.bind(null,\"TouchRotate\",\"touchRotateCallback\"),ji=function(e){e.addEventListener(x.TAP,Ai),e.addEventListener(x.TOUCH_START,Hi,{passive:!1}),e.addEventListener(x.TOUCH_DRAG,Ui,{passive:!1}),e.addEventListener(x.TOUCH_END,Ni),e.addEventListener(x.TOUCH_START_ACTIVE,Oi),e.addEventListener(x.TOUCH_PRESS,Fi),e.addEventListener(x.DOUBLE_TAP,Ri),e.addEventListener(x.TOUCH_PINCH,Bi),e.addEventListener(x.TOUCH_ROTATE,Vi),e.addEventListener(x.MULTI_TOUCH_DRAG,_i)},zi=function(e){e.removeEventListener(x.TAP,Ai),e.removeEventListener(x.TOUCH_START,Hi),e.removeEventListener(x.TOUCH_DRAG,Ui),e.removeEventListener(x.TOUCH_END,Ni),e.removeEventListener(x.TOUCH_START_ACTIVE,Oi),e.removeEventListener(x.TOUCH_PRESS,Fi),e.removeEventListener(x.DOUBLE_TAP,Ri),e.removeEventListener(x.TOUCH_PINCH,Bi),e.removeEventListener(x.TOUCH_ROTATE,Vi),e.removeEventListener(x.MULTI_TOUCH_DRAG,_i)},Wi=function(e,t,n){var a=new t(n);O(e,a.name)?console.warn(\"\".concat(a.name,\" has already been added to the target element\")):(a.element=e,_.state.tools.push(a))},Gi=function(e,t){qi(e,t),_.state.enabledElements.forEach(function(n){Wi(n,e,t)})},qi=function(e,t){if(_.modules.globalConfiguration.state.globalToolSyncEnabled){var n=new e(t);void 0!==_.state.globalTools[n.name]?console.warn(\"\".concat(n.name,\" has already been added globally\")):_.state.globalTools[n.name]={tool:e,configuration:t,activeBindings:[]}}},Yi=function(e){console.log(\"EVENT:ELEMENT_ENABLED\");var t=e.detail.element;di(t),ki(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.enable(t),Io.enable(t),wi(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.enable(t),ji(t)),Xi(t)},Xi=function(e){_.state.enabledElements.push(e),_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;Object.keys(_.state.globalTools).forEach(function(t){var n=_.state.globalTools[t],a=n.tool,o=n.configuration;Wi(e,a,o)})}(e),function(e){if(!_.modules.globalConfiguration.state.globalToolSyncEnabled)return;var t={active:D,passive:N,enabled:R,disabled:A};_.state.globalToolChangeHistory.forEach(function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)})}(e)};var Ki=function(e){console.info(\"EVENT:ELEMENT_DISABLED\");var t=e.detail.element;hi(t),Pi(t),_.modules.globalConfiguration.state.mouseEnabled&&(To.disable(t),Io.disable(t),Ii(t)),_.modules.globalConfiguration.state.touchEnabled&&(ni.disable(t),zi(t)),Zi(t),Ji(t)},Zi=function(e){_.state.tools=_.state.tools.filter(function(t){return t.element!==e})},Ji=function(e){_.modules&&function(e){var t=_.modules;Object.keys(t).forEach(function(n){\"function\"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)})}(e);var t=_.state.enabledElements.findIndex(function(t){return t===e});t>-1?_.state.enabledElements.splice(t,1):console.warn(\"unable to remove element\")};var Qi,$i=function(){window.removeEventListener(\"resize\",er,!1)};function er(){Qi||(Qi=setTimeout(function(){Qi=null,tr()},66))}var tr=function(){S.enabledElements.forEach(function(e){f.cornerstone.resize(e)})},nr=function(){$i(),window.addEventListener(\"resize\",er,!1)},ar=function(e){var t;!function(){!function(){var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Yi),e.events.removeEventListener(n,Ki)}();var e=f.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Yi),e.events.addEventListener(n,Ki)}(),t=_.modules,Object.keys(t).forEach(function(e){\"function\"==typeof t[e].onRegisterCallback&&t[e].onRegisterCallback()}),nr(),_.modules.globalConfiguration.state=Object.assign({},_.modules.globalConfiguration.state,e)};var or,ir=\"stackPrefetch\",rr=\"prefetch\",sr={maxImagesToPrefetch:1/0},lr=10;var cr=function(e){return Math.max.apply(null,e)},ur=function(e){return Math.min.apply(null,e)};function dr(e){var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0],a=Q(e,ir);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort(function(e,t){return e-t}),o.indicesToRequest.slice().forEach(function(e){var t=n.imageIds[e];t&&(f.cornerstone.imageCache.getImageLoadObject(t)&&b(e))}),o.indicesToRequest.length){La.clearRequestStack(rr);for(var i,r,s,l,c,u,d=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=[],l=[],i.forEach(function(e){er&&l.push(e)}),{low:i.indexOf(cr(s)),high:i.indexOf(ur(l))}),h=Rn.getErrorLoadingHandler(),v=d.low,g=d.high;v>=0||gsr.maxImagesToPrefetch,y=o.indicesToRequest[g]-m>sr.maxImagesToPrefetch,x=!p&&v>=0,T=!y&&g-1&&o.indicesToRequest.splice(t,1)}function E(e){b(n.imageIds.indexOf(e.imageId))}function M(t){console.log(\"prefetch errored: \".concat(t)),h&&h(e,c,t,\"stackPrefetch\")}}function hr(e){return function(t){var n,a=t.detail;try{n=Q(e,\"stack\")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=Q(e,ir);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function vr(e){clearTimeout(or),or=setTimeout(function(){var t=e.target;try{dr(t)}catch(e){return}},lr)}var gr={enable:function(e){Q(e,ir).data=[];var t=Q(e,\"stack\");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:function(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),J(e,ir,a),dr(e),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr),e.addEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var i=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),f.cornerstone.events.addEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else console.warn(\"A stack that should not be cached was given the stackPrefetch\")}},disable:function(e){clearTimeout(or),e.removeEventListener(f.cornerstone.EVENTS.NEW_IMAGE,vr);var t=hr(e);f.cornerstone.events.removeEventListener(f.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=Q(e,ir);n&&n.data.length&&(n.data[0].enabled=!1,La.clearRequestStack(rr))},getConfiguration:function(){return sr},setConfiguration:function(e){var t;sr=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,la=t)}},mr=function(){function e(){o()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return r()(e,[{key:\"render\",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error(\"FusionRenderer: render - Image ID Index is not an integer\");if(!this.findImageFn)throw new Error(\"No findImage function has been defined\");t||(t=Q(e,\"stack\").data);var a=f.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then(function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach(function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then(function(t){a.setLayerImage(e,t,c),a.updateImage(e)}):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))})})}}]),e}(),fr={};fr.FusionRenderer=mr;var pr=fr,yr=\"playClip\";function xr(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Tr(e,t){var n,a;if(void 0===e)throw new Error(\"playClip: element must not be undefined\");var o=Q(e,\"stack\");if(o&&o.data&&o.data.length){var i,r=f.cornerstone;if(o.data.length>1){var s=Q(e,\"stackRenderer\");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=Q(e,yr);c&&c.data&&c.data.length?xr(n=c.data[0]):J(e,yr,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,(\"number\"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return xr(n),void function(e){var t={element:e};T(e,x.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rn.getStartLoadHandler(),a=Rn.getEndLoadHandler(),s=Rn.getErrorLoadingHandler(),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then(function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}},function(t){var n=l.imageIds[c];s&&s(e,n,t)}))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout(function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()},0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function br(e){var t=Q(e,yr);t&&t.data&&t.data.length&&xr(t.data[0])}var Er=function(e,t){var n=_.state.tools.findIndex(function(n){return n.element===e&&n.name===t});n>=0&&_.state.tools.splice(n,1)},Mr=function(e){Cr(e),_.state.enabledElements.forEach(function(t){Er(t,e)})},Cr=function(e){_.modules.globalConfiguration.state.globalToolSyncEnabled&&_.state.globalTools[e]&&delete _.state.globalTools[e]},wr=function(e,t,n){var a=O(e,t);a&&a.mergeOptions(n)},Ir=function(e,t){S.enabledElements.forEach(function(e){wr(e,t)})};function Sr(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var kr=[];function Pr(e,t){var n=Z(e);n||(n=K);var a=[\"stack\",\"stackPrefetch\",\"playClip\",\"volume\",\"slab\",\"referenceLines\",\"crosshairs\",\"stackRenderer\"];t&&(a=a.concat(t));var o=Sr(a,n);kr.push(o),te(e,o)}var _r={newStackSpecificToolStateManager:Sr,addStackStateManager:Pr};function Or(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else{if(!(r.z>1e-4&&r.z>r.x&&r.z>r.y))break;n+=i,r.z=0}return n},invertOrientationString:function(e){var t=e.replace(\"H\",\"f\");return t=(t=(t=(t=(t=(t=t.replace(\"F\",\"h\")).replace(\"R\",\"l\")).replace(\"L\",\"r\")).replace(\"A\",\"p\")).replace(\"P\",\"a\")).toUpperCase()}},Ar=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"image/png\",a=e.querySelector(\"canvas\");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement(\"a\");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent(\"MouseEvents\");r.initMouseEvent(\"click\",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent(\"onclick\")},Hr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return Object.keys(P).some(function(t){return t===e})}(e)){if(console.warn(\"A module with the name \".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting module \".concat(e))}P[e]=t};var Rr=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(function(e){return void 0!==q[e]}(e)){if(console.warn(\"mixins/\".concat(e,\" is already registered\")),!n)return;console.warn(\"Overwriting mixins/\".concat(e))}q[e]=t,co[\"mixins/\".concat(e)]=q[e]};var Ur=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t){return void 0!==co[\"\".concat(e,\"/\").concat(t)]}(e,t)){if(console.warn(\"\".concat(e,\"/\").concat(t,\" is already registered\")),!a)return;console.warn(\"Overwriting \".concat(e,\"/\").concat(t))}co[\"\".concat(e,\"/\").concat(t)]=n};var Nr=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(function(e,t,n){if(!e)return console.warn(\"The type must be given in order to register.\"),!1;if(!t)return console.warn(\"The \".concat(e,\" must have a name in order to register.\")),!1;if(\"object\"!==y()(n)&&\"function\"!=typeof n)return console.warn(\"The \".concat(n,\" is a \").concat(y()(n),\", it should be an Object or a function.\")),!1;return!0}(e,t,n))switch(e){case\"module\":Hr(t,n,a);break;case\"mixin\":Rr(t,n,a);break;default:Ur(e,t,n,a),console.warn(\"unrecognised type \".concat(e,\", not registering \").concat(t))}};var Br=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=0;n=0;--i){var r=this.tryEntries[i],s=r.completion;if(\"root\"===r.tryLoc)return a(\"end\");if(r.tryLoc<=this.prev){var l=o.call(r,\"catchLoc\"),c=o.call(r,\"finallyLoc\");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,\"finallyLoc\")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if(\"throw\"===a.type){var o=a.arg;P(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,a){return this.delegate={iterator:O(e),resultName:t,nextLoc:a},\"next\"===this.method&&(this.arg=n),m}}}function T(e,t,n,a){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),r=new _(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error(\"Generator is already running\");if(a===g){if(\"throw\"===o)throw i;return D()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===m)continue;return s}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);a=v;var l=b(e,t,n);if(\"normal\"===l.type){if(a=n.done?g:h,l.arg===m)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(a=g,n.method=\"throw\",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}function E(){}function M(){}function C(){}function w(e){[\"next\",\"throw\",\"return\"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise(function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if(\"throw\"!==s.type){var l=s.arg,c=l.value;return c&&\"object\"==typeof c&&o.call(c,\"__await\")?Promise.resolve(c.__await).then(function(e){t(\"next\",e,i,r)},function(e){t(\"throw\",e,i,r)}):Promise.resolve(c).then(function(e){l.value=e,i(l)},function(e){return t(\"throw\",e,i,r)})}r(s.arg)}(n,a,t,i)})}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=n,S(e,t),\"throw\"===t.method))return m;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return m}var o=b(a,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,m;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,m):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,m)}function k(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 P(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(k,this),this.reset(!0)}function O(e){if(e){var t=e[r];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(11),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){e.exports=function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}},function(e,t){e.exports=function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}},function(e,t){e.exports=function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t\\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","import dicomParser from 'dicom-parser';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';\nimport cornerstoneMath from 'cornerstone-math';\nimport cornerstoneTools from 'cornerstone-tools';\nimport Hammer from 'hammerjs';\nimport OHIF from 'ohif-core';\n//import sha from './sha.js';\n//import version from './version.js';\nimport { homepage } from '../package.json';\n\nwindow.info = {\n //sha,\n //version,\n homepage\n};\n\n// For debugging\nwindow.cornerstone = cornerstone;\nwindow.cornerstoneTools = cornerstoneTools;\nwindow.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\ncornerstoneTools.external.cornerstone = cornerstone;\ncornerstoneTools.external.Hammer = Hammer;\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\ncornerstoneTools.init();\n\ncornerstoneWADOImageLoader.external.cornerstone = cornerstone;\ncornerstoneWADOImageLoader.external.dicomParser = dicomParser;\n\nOHIF.external.cornerstone = cornerstone;\nOHIF.external.cornerstoneTools = cornerstoneTools;\nOHIF.external.cornerstoneMath = cornerstoneMath;\nOHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader;\n\n// TODO: Is there a better way to guess ROOT_URL?\nlet ROOT_URL = window.location.pathname;\n\nconst config = {\n maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1),\n startWebWorkersOnDemand: true,\n webWorkerPath: ROOT_URL + '/cornerstoneWADOImageLoaderWebWorker.min.js',\n taskConfiguration: {\n decodeTask: {\n loadCodecsOnStartup: true,\n initializeCodecsOnStartup: false,\n codecsPath: ROOT_URL + '/cornerstoneWADOImageLoaderCodecs.min.js',\n usePDFJS: false,\n strict: false\n }\n }\n};\n\ncornerstoneWADOImageLoader.webWorkerManager.initialize(config);\n\n\nOHIF.user.getAccessToken = () => {\n // TODO: Get the Redux store from somewhere else\n const state = window.store.getState();\n if (!state.oidc || !state.oidc.user) {\n return;\n }\n\n return state.oidc.user.access_token;\n}\n\ncornerstoneWADOImageLoader.configure({\n beforeSend: function(xhr) {\n const headers = OHIF.DICOMWeb.getAuthorizationHeader();\n\n if (headers.Authorization) {\n xhr.setRequestHeader(\"Authorization\", headers.Authorization);\n }\n }\n});\n\n// Set the tool font and font size\n// context.font = \"[style] [variant] [weight] [size]/[line height] [font family]\";\nconst fontFamily =\n 'Roboto, OpenSans, HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif';\ncornerstoneTools.textStyle.setFont(`16px ${fontFamily}`);\n\n// Set the tool width\ncornerstoneTools.toolStyle.setToolWidth(2);\n// Set color for inactive tools\ncornerstoneTools.toolColors.setToolColor('rgb(255, 255, 0)');\n\n// Set color for active tools\ncornerstoneTools.toolColors.setActiveColor('rgb(0, 255, 0)');\n\ncornerstoneTools.store.state.touchProximity = 40;\n","const defaultState = {\n leftSidebarOpen: true,\n rightSidebarOpen: false,\n}\n\nconst ui = (state = defaultState, action) => {\n switch (action.type) {\n case 'SET_LEFT_SIDEBAR_OPEN':\n return Object.assign({}, state, { leftSidebarOpen: action.state });\n case 'SET_RIGHT_SIDEBAR_OPEN':\n return Object.assign({}, state, { rightSidebarOpen: action.state });\n default:\n return state;\n }\n};\n\nexport default ui;\n","import React, { PureComponent, Component } from 'react';\nimport reactDom from 'react-dom';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".CineDialog {\\n background: var(--ui-gray-darkest);\\n color: var(--text-secondary-color);\\n filter: drop-shadow(0 0 3px var(--ui-gray-darkest));\\n border: none;\\n border-radius: 8px;\\n width: inherit;\\n}\\n.CineDialog h5 {\\n font-size: 20px;\\n line-height: 35px;\\n margin: 0;\\n}\\n.CineDialog h5,\\n.CineDialog label {\\n font-weight: 400;\\n}\\n.CineDialog .cine-navigation,\\n.CineDialog .cine-controls,\\n.CineDialog .cine-options {\\n cursor: default;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"] {\\n background-color: transparent;\\n border: 0 none;\\n outline: 0 none;\\n}\\n.CineDialog .fps-section input[type=\\\"range\\\"]::-ms-tooltip {\\n display: none;\\n}\\n.CineDialog .double-row-style {\\n box-sizing: border-box;\\n width: 290px;\\n height: 80px;\\n padding: 10px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .double-row-style .cine-navigation {\\n position: absolute;\\n right: 16px;\\n top: 10px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn {\\n padding: 0 4px;\\n}\\n.CineDialog .double-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 32px;\\n}\\n.CineDialog .double-row-style .cine-controls {\\n left: 0px;\\n}\\n.CineDialog .double-row-style .cine-options {\\n padding: 0px 0;\\n}\\n.CineDialog .double-row-style .cine-options .fps-section {\\n width: 175px;\\n float: left;\\n}\\n.CineDialog .double-row-style .cine-options .fps {\\n float: right;\\n margin: 5px 20px 0 0;\\n}\\n.CineDialog .single-row-style {\\n box-sizing: content-box;\\n width: 425px;\\n height: 45px;\\n padding: 4px 8px;\\n top: 2%;\\n left: 35%;\\n}\\n.CineDialog .single-row-style .cine-navigation {\\n float: right;\\n overflow: hidden;\\n padding-right: 12px;\\n position: relative;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn {\\n padding: 0 2px;\\n margin: 0 0 0 2px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn:first-of-type {\\n margin-left: 0;\\n}\\n.CineDialog .single-row-style .cine-navigation .btn i {\\n font-size: 32px;\\n line-height: 45px;\\n}\\n.CineDialog .single-row-style .cine-controls {\\n position: relative;\\n float: left;\\n overflow: hidden;\\n}\\n.CineDialog .single-row-style .cine-controls .btn {\\n font-size: 22px;\\n line-height: 45px;\\n min-width: 28px;\\n padding: 0 0px;\\n margin: 0 4px;\\n border: 0 none;\\n}\\n.CineDialog .single-row-style .cine-options {\\n display: block;\\n position: relative;\\n width: 150px;\\n float: left;\\n overflow: hidden;\\n padding: 0;\\n margin: 0 0 0 10px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section {\\n display: block;\\n float: left;\\n width: 80px;\\n}\\n.CineDialog .single-row-style .cine-options .fps-section input[type=\\\"range\\\"] {\\n line-height: 45px;\\n height: 45px;\\n}\\n.CineDialog .single-row-style .cine-options .fps {\\n display: block;\\n width: 68px;\\n float: left;\\n padding: 0;\\n margin: 0 0 0 2px;\\n text-align: center;\\n line-height: 45px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n}\\n.CineDialog .btn {\\n color: var(--text-secondary-color);\\n background-color: transparent;\\n border: 0;\\n border-radius: 4px;\\n font-size: 15px;\\n font-weight: normal;\\n height: 37px;\\n line-height: 37px;\\n padding: 0 12px;\\n}\\n.CineDialog .btn:hover,\\n.CineDialog .btn:active,\\n.CineDialog .btn.active {\\n color: var(--hover-color);\\n}\\n.CineDialog .btn[disabled]:hover {\\n color: inherit;\\n}\\n.CineDialog .btn[disabled]:active {\\n color: var(--text-secondary-color);\\n}\\n.CineDialog .btn.btn-primary,\\n.CineDialog .btn.btn-secondary,\\n.CineDialog .btn.btn-danger {\\n transition: background-color 0.3s ease;\\n}\\n.CineDialog .btn.btn-primary:hover,\\n.CineDialog .btn.btn-secondary:hover,\\n.CineDialog .btn.btn-danger:hover,\\n.CineDialog .btn.btn-primary:active,\\n.CineDialog .btn.btn-secondary:active,\\n.CineDialog .btn.btn-danger:active,\\n.CineDialog .btn.btn-primary:focus,\\n.CineDialog .btn.btn-secondary:focus,\\n.CineDialog .btn.btn-danger:focus {\\n opacity: 0.8;\\n}\\n.CineDialog .btn.btn-primary {\\n background-color: var(--active-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-secondary {\\n background-color: var(--text-secondary-color);\\n color: var(--primary-background-color);\\n}\\n.CineDialog .btn.btn-danger {\\n background-color: var(--text-destructive-color);\\n color: var(--text-primary-color);\\n}\\n.CineDialog .btn.active {\\n box-shadow: inset 1px 1px 2px var(--ui-gray-darkest);\\n}\\n\";\nstyleInject(css);\n\nvar CineDialog =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CineDialog, _PureComponent);\n\n function CineDialog(props) {\n var _this;\n\n _classCallCheck(this, CineDialog);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CineDialog).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var target = event.target;\n var value = target.value;\n\n if (target.type === 'range') {\n value = parseFloat(target.value);\n }\n\n var name = target.name;\n\n _this.setState(_defineProperty({}, name, value));\n\n if (name === 'cineFrameRate' && _this.props.onFrameRateChanged) {\n _this.props.onFrameRateChanged(parseFloat(value));\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickPlayPause\", function () {\n var value = !_this.state.isPlaying;\n\n _this.setState({\n isPlaying: value\n });\n\n if (_this.props.onPlayPauseChanged) {\n _this.props.onPlayPauseChanged(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickNextButton\", function (event) {\n if (_this.props.onClickNextButton) {\n _this.props.onClickNextButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickBackButton\", function (event) {\n if (_this.props.onClickBackButton) {\n _this.props.onClickBackButton(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToStart\", function (event) {\n if (_this.props.onClickSkipToStart) {\n _this.props.onClickSkipToStart(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickSkipToEnd\", function (event) {\n if (_this.props.onClickSkipToEnd) {\n _this.props.onClickSkipToEnd(event);\n }\n });\n\n _this.state = {\n cineFrameRate: props.cineFrameRate,\n isPlaying: props.isPlaying\n };\n return _this;\n }\n\n _createClass(CineDialog, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // TODO: Not sure if we should just switch this to a stateless\n // fully-controlled component instead\n if (this.props.isPlaying !== prevProps.isPlaying || this.props.isPlaying !== this.state.isPlaying) {\n this.setState({\n isPlaying: this.props.isPlaying\n });\n }\n\n if (this.props.cineFrameRate !== prevProps.cineFrameRate || this.props.cineFrameRate !== this.state.cineFrameRate) {\n this.setState({\n cineFrameRate: this.props.cineFrameRate\n });\n }\n }\n }, {\n key: \"render\",\n // TODO:\n // - Add next / previous display set buttons which just call\n // onClickNextDisplaySet and onClickPreviousDisplaySet which are passed in as props.\n // See https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.html#L38\n // - Add 'isEnabled' prop: https://github.com/OHIF/Viewers/blob/master/Packages/ohif-viewerbase/client/components/viewer/cineDialog/cineDialog.js#L301\n value: function render() {\n return React.createElement(\"div\", {\n className: \"CineDialog\"\n }, React.createElement(\"div\", {\n className: \"noselect double-row-style\"\n }, React.createElement(\"div\", {\n className: \"cine-controls\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"cineFirstButton\",\n title: \"Skip to first image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToStart\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-backward\"\n })), React.createElement(\"button\", {\n id: \"cineBackButton\",\n title: \"Previous image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickBackButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-backward\"\n })), React.createElement(\"button\", {\n id: \"cinePlayButton\",\n title: \"Play / Stop\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickPlayPause\n }, React.createElement(\"i\", {\n className: this.state.isPlaying ? 'fa fa-lg fa-stop' : 'fa fa-lg fa-play'\n })), React.createElement(\"button\", {\n id: \"cineNextButton\",\n title: \"Next image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickNextButton\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-step-forward\"\n })), React.createElement(\"button\", {\n id: \"cineLastButton\",\n title: \"Skip to last image\",\n className: \"btn\",\n \"data-toggle\": \"tooltip\",\n onClick: this.onClickSkipToEnd\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-fast-forward\"\n })))), React.createElement(\"div\", {\n className: \"cine-options\"\n }, React.createElement(\"div\", {\n className: \"fps-section\"\n }, React.createElement(\"input\", {\n type: \"range\",\n name: \"cineFrameRate\",\n id: \"cineSlider\",\n min: this.props.cineMinFrameRate,\n max: this.props.cineMaxFrameRate,\n step: this.props.cineStepFrameRate,\n value: this.state.cineFrameRate,\n onChange: this.handleInputChange\n })), React.createElement(\"span\", {\n className: \"fps\"\n }, this.state.cineFrameRate.toFixed(1), \" fps\"))));\n }\n }]);\n\n return CineDialog;\n}(PureComponent);\n\n_defineProperty(CineDialog, \"propTypes\", {\n cineMinFrameRate: propTypes.number.isRequired,\n cineMaxFrameRate: propTypes.number.isRequired,\n cineStepFrameRate: propTypes.number.isRequired,\n cineFrameRate: propTypes.number.isRequired,\n isPlaying: propTypes.bool.isRequired,\n onPlayPauseChanged: propTypes.func,\n onFrameRateChanged: propTypes.func,\n onClickNextButton: propTypes.func,\n onClickBackButton: propTypes.func,\n onClickSkipToStart: propTypes.func,\n onClickSkipToEnd: propTypes.func\n});\n\n_defineProperty(CineDialog, \"defaultProps\", {\n cineMinFrameRate: 1,\n cineMaxFrameRate: 90,\n cineStepFrameRate: 1,\n cineFrameRate: 24,\n isPlaying: false\n});\n\nvar interfaces = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole = exports.HandlerRole || (exports.HandlerRole = {}));\n});\n\nunwrapExports(interfaces);\nvar interfaces_1 = interfaces.HandlerRole;\n\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n}\n\n/* global window */\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = symbolObservablePonyfill(root);\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[result] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[result] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers);\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(\"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread$1({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nvar redux = /*#__PURE__*/Object.freeze({\n createStore: createStore,\n combineReducers: combineReducers,\n bindActionCreators: bindActionCreators,\n applyMiddleware: applyMiddleware,\n compose: compose,\n __DO_NOT_USE__ActionTypes: ActionTypes\n});\n\nvar types = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INIT_COORDS = 'dnd-core/INIT_COORDS';\nexports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexports.HOVER = 'dnd-core/HOVER';\nexports.DROP = 'dnd-core/DROP';\nexports.END_DRAG = 'dnd-core/END_DRAG';\n});\n\nunwrapExports(types);\nvar types_1 = types.INIT_COORDS;\nvar types_2 = types.BEGIN_DRAG;\nvar types_3 = types.PUBLISH_DRAG_SOURCE;\nvar types_4 = types.HOVER;\nvar types_5 = types.DROP;\nvar types_6 = types.END_DRAG;\n\nvar setClientOffset_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: types.INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null,\n },\n };\n}\nexports.setClientOffset = setClientOffset;\n});\n\nunwrapExports(setClientOffset_1);\nvar setClientOffset_2 = setClientOffset_1.setClientOffset;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nvar invariant_1 = invariant;\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject;\n\nvar beginDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar ResetCoordinatesAction = {\n type: types.INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null,\n },\n};\nfunction createBeginDrag(manager) {\n return function beginDrag(sourceIds, options) {\n if (sourceIds === void 0) { sourceIds = []; }\n if (options === void 0) { options = {\n publishSource: true,\n }; }\n var _a = options.publishSource, publishSource = _a === void 0 ? true : _a, clientOffset = options.clientOffset, getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n // Initialize the coordinates using the client offset\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry);\n // Get the draggable source\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n }\n // Get the source client offset\n var sourceClientOffset = null;\n if (clientOffset) {\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n }\n // Initialize the full coordinates\n manager.dispatch(setClientOffset_1.setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: types.BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource,\n },\n };\n };\n}\nexports.default = createBeginDrag;\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant_1(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n for (var _i = 0, sourceIds_1 = sourceIds; _i < sourceIds_1.length; _i++) {\n var s = sourceIds_1[_i];\n invariant_1(registry.getSource(s), 'Expected sourceIds to be registered.');\n }\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant_1(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant_1(isObject_1(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}\n});\n\nunwrapExports(beginDrag);\n\nvar publishDragSource = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return { type: types.PUBLISH_DRAG_SOURCE };\n }\n };\n}\nexports.default = createPublishDragSource;\n});\n\nunwrapExports(publishDragSource);\n\nvar matchesType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType)\n ? targetType.some(function (t) { return t === draggedItemType; })\n : targetType === draggedItemType;\n}\nexports.default = matchesType;\n});\n\nunwrapExports(matchesType_1);\n\nvar hover = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createHover(manager) {\n return function hover(targetIdsArg, _a) {\n var clientOffset = (_a === void 0 ? {} : _a).clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: types.HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null,\n },\n };\n };\n}\nexports.default = createHover;\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant_1(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant_1(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant_1(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant_1(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType_1.default(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n for (var _i = 0, targetIds_1 = targetIds; _i < targetIds_1.length; _i++) {\n var targetId = targetIds_1[_i];\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n }\n}\n});\n\nunwrapExports(hover);\n\nvar drop = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nfunction createDrop(manager) {\n return function drop(options) {\n if (options === void 0) { options = {}; }\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor);\n // Multiple actions are dispatched here, which is why this doesn't return an action\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: types.DROP,\n payload: {\n dropResult: __assign({}, options, dropResult),\n },\n };\n manager.dispatch(action);\n });\n };\n}\nexports.default = createDrop;\nfunction verifyInvariants(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant_1(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target.drop(monitor, targetId);\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant_1(typeof dropResult === 'undefined' || isObject_1(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor\n .getTargetIds()\n .filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}\n});\n\nunwrapExports(drop);\n\nvar endDrag = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n return { type: types.END_DRAG };\n };\n}\nexports.default = createEndDrag;\nfunction verifyIsDragging(monitor) {\n invariant_1(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}\n});\n\nunwrapExports(endDrag);\n\nvar dragDrop = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n__export(types);\nfunction createDragDropActions(manager) {\n return {\n beginDrag: beginDrag.default(manager),\n publishDragSource: publishDragSource.default(manager),\n hover: hover.default(manager),\n drop: drop.default(manager),\n endDrag: endDrag.default(manager),\n };\n}\nexports.default = createDragDropActions;\n});\n\nunwrapExports(dragDrop);\n\nvar equality = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.strictEquality = function (a, b) { return a === b; };\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nfunction areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n }\n else if (!offsetA || !offsetB) {\n return false;\n }\n else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\nexports.areCoordsEqual = areCoordsEqual;\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nfunction areArraysEqual(a, b, isEqual) {\n if (isEqual === void 0) { isEqual = exports.strictEquality; }\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nexports.areArraysEqual = areArraysEqual;\n});\n\nunwrapExports(equality);\nvar equality_1 = equality.strictEquality;\nvar equality_2 = equality.areCoordsEqual;\nvar equality_3 = equality.areArraysEqual;\n\nvar dragOffset_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null,\n};\nfunction dragOffset(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.INIT_COORDS:\n case dragDrop.BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset,\n };\n case dragDrop.HOVER:\n if (equality.areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return __assign({}, state, { clientOffset: payload.clientOffset });\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n return initialState;\n default:\n return state;\n }\n}\nexports.default = dragOffset;\n});\n\nunwrapExports(dragOffset_1);\n\nvar registry = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexports.ADD_TARGET = 'dnd-core/ADD_TARGET';\nexports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nfunction addSource(sourceId) {\n return {\n type: exports.ADD_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.addSource = addSource;\nfunction addTarget(targetId) {\n return {\n type: exports.ADD_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.addTarget = addTarget;\nfunction removeSource(sourceId) {\n return {\n type: exports.REMOVE_SOURCE,\n payload: {\n sourceId: sourceId,\n },\n };\n}\nexports.removeSource = removeSource;\nfunction removeTarget(targetId) {\n return {\n type: exports.REMOVE_TARGET,\n payload: {\n targetId: targetId,\n },\n };\n}\nexports.removeTarget = removeTarget;\n});\n\nunwrapExports(registry);\nvar registry_1 = registry.ADD_SOURCE;\nvar registry_2 = registry.ADD_TARGET;\nvar registry_3 = registry.REMOVE_SOURCE;\nvar registry_4 = registry.REMOVE_TARGET;\nvar registry_5 = registry.addSource;\nvar registry_6 = registry.addTarget;\nvar registry_7 = registry.removeSource;\nvar registry_8 = registry.removeTarget;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root$1 = _freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$1;\n\n/** Built-in value references. */\nvar Symbol$1 = _root.Symbol;\n\nvar _Symbol = Symbol$1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty$1.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString$1.call(value);\n}\n\nvar _objectToString = objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag$1 && symToStringTag$1 in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag;\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nvar isFunction_1 = isFunction;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root['__core-js_shared__'];\n\nvar _coreJsData = coreJsData;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nvar _isMasked = isMasked;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nvar _toSource = toSource;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n}\n\nvar _baseIsNative = baseIsNative;\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nvar _getValue = getValue;\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n}\n\nvar _getNative = getNative;\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\nvar _nativeCreate = nativeCreate;\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n}\n\nvar _hashClear = hashClear;\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _hashDelete = hashDelete;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto$3 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$3.call(data, key) ? data[key] : undefined;\n}\n\nvar _hashGet = hashGet;\n\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$4.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);\n}\n\nvar _hashHas = hashHas;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED$1 : value;\n return this;\n}\n\nvar _hashSet = hashSet;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear;\nHash.prototype['delete'] = _hashDelete;\nHash.prototype.get = _hashGet;\nHash.prototype.has = _hashHas;\nHash.prototype.set = _hashSet;\n\nvar _Hash = Hash;\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nvar _listCacheClear = listCacheClear;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nvar eq_1 = eq;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nvar _assocIndexOf = assocIndexOf;\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nvar _listCacheDelete = listCacheDelete;\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nvar _listCacheGet = listCacheGet;\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n}\n\nvar _listCacheHas = listCacheHas;\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nvar _listCacheSet = listCacheSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear;\nListCache.prototype['delete'] = _listCacheDelete;\nListCache.prototype.get = _listCacheGet;\nListCache.prototype.has = _listCacheHas;\nListCache.prototype.set = _listCacheSet;\n\nvar _ListCache = ListCache;\n\n/* Built-in method references that are verified to be native. */\nvar Map$1 = _getNative(_root, 'Map');\n\nvar _Map = Map$1;\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n}\n\nvar _mapCacheClear = mapCacheClear;\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nvar _isKeyable = isKeyable;\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nvar _getMapData = getMapData;\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nvar _mapCacheDelete = mapCacheDelete;\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n}\n\nvar _mapCacheGet = mapCacheGet;\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n}\n\nvar _mapCacheHas = mapCacheHas;\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nvar _mapCacheSet = mapCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear;\nMapCache.prototype['delete'] = _mapCacheDelete;\nMapCache.prototype.get = _mapCacheGet;\nMapCache.prototype.has = _mapCacheHas;\nMapCache.prototype.set = _mapCacheSet;\n\nvar _MapCache = MapCache;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED$2);\n return this;\n}\n\nvar _setCacheAdd = setCacheAdd;\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nvar _setCacheHas = setCacheHas;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd;\nSetCache.prototype.has = _setCacheHas;\n\nvar _SetCache = SetCache;\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nvar _baseFindIndex = baseFindIndex;\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nvar _baseIsNaN = baseIsNaN;\n\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nvar _strictIndexOf = strictIndexOf;\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? _strictIndexOf(array, value, fromIndex)\n : _baseFindIndex(array, _baseIsNaN, fromIndex);\n}\n\nvar _baseIndexOf = baseIndexOf;\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && _baseIndexOf(array, value, 0) > -1;\n}\n\nvar _arrayIncludes = arrayIncludes;\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nvar _arrayIncludesWith = arrayIncludesWith;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nvar _arrayMap = arrayMap;\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nvar _baseUnary = baseUnary;\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nvar _cacheHas = cacheHas;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = _arrayMap(values, _baseUnary(iteratee));\n }\n if (comparator) {\n includes = _arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = _cacheHas;\n isCommon = false;\n values = new _SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseDifference = baseDifference;\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar identity_1 = identity;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nvar _apply = apply;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return _apply(func, this, otherArgs);\n };\n}\n\nvar _overRest = overRest;\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nvar constant_1 = constant;\n\nvar defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nvar _defineProperty$2 = defineProperty;\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty$2 ? identity_1 : function(func, string) {\n return _defineProperty$2(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant_1(string),\n 'writable': true\n });\n};\n\nvar _baseSetToString = baseSetToString;\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nvar _shortOut = shortOut;\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = _shortOut(_baseSetToString);\n\nvar _setToString = setToString;\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return _setToString(_overRest(func, start, identity_1), func + '');\n}\n\nvar _baseRest = baseRest;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nvar isLength_1 = isLength;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength_1(value.length) && !isFunction_1(value);\n}\n\nvar isArrayLike_1 = isArrayLike;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike;\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike_1(value) && isArrayLike_1(value);\n}\n\nvar isArrayLikeObject_1 = isArrayLikeObject;\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = _baseRest(function(array, values) {\n return isArrayLikeObject_1(array)\n ? _baseDifference(array, values)\n : [];\n});\n\nvar without_1 = without;\n\nvar dragOperation_1 = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n};\nfunction dragOperation(state, action) {\n if (state === void 0) { state = initialState; }\n var payload = action.payload;\n switch (action.type) {\n case dragDrop.BEGIN_DRAG:\n return __assign({}, state, { itemType: payload.itemType, item: payload.item, sourceId: payload.sourceId, isSourcePublic: payload.isSourcePublic, dropResult: null, didDrop: false });\n case dragDrop.PUBLISH_DRAG_SOURCE:\n return __assign({}, state, { isSourcePublic: true });\n case dragDrop.HOVER:\n return __assign({}, state, { targetIds: payload.targetIds });\n case registry.REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return __assign({}, state, { targetIds: without_1(state.targetIds, payload.targetId) });\n case dragDrop.DROP:\n return __assign({}, state, { dropResult: payload.dropResult, didDrop: true, targetIds: [] });\n case dragDrop.END_DRAG:\n return __assign({}, state, { itemType: null, item: null, sourceId: null, dropResult: null, didDrop: false, isSourcePublic: null, targetIds: [] });\n default:\n return state;\n }\n}\nexports.default = dragOperation;\n});\n\nunwrapExports(dragOperation_1);\n\nvar refCount_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction refCount(state, action) {\n if (state === void 0) { state = 0; }\n switch (action.type) {\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n return state + 1;\n case registry.REMOVE_SOURCE:\n case registry.REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}\nexports.default = refCount;\n});\n\nunwrapExports(refCount_1);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? _arrayIncludesWith : _arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = _arrayMap(array, _baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new _SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? _cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? _cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseIntersection = baseIntersection;\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject_1(value) ? value : [];\n}\n\nvar _castArrayLikeObject = castArrayLikeObject;\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = _baseRest(function(arrays) {\n var mapped = _arrayMap(arrays, _castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? _baseIntersection(mapped)\n : [];\n});\n\nvar intersection_1 = intersection;\n\nvar dirtiness = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.NONE = [];\nexports.ALL = [];\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nfunction areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === exports.NONE) {\n return false;\n }\n if (dirtyIds === exports.ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n return intersection_1(handlerIds, dirtyIds).length > 0;\n}\nexports.areDirty = areDirty;\n});\n\nunwrapExports(dirtiness);\nvar dirtiness_1 = dirtiness.NONE;\nvar dirtiness_2 = dirtiness.ALL;\nvar dirtiness_3 = dirtiness.areDirty;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nvar _arrayFilter = arrayFilter;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nvar _arrayPush = arrayPush;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike_1(value) && _baseGetTag(value) == argsTag;\n}\n\nvar _baseIsArguments = baseIsArguments;\n\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$5.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$5.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {\n return isObjectLike_1(value) && hasOwnProperty$5.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nvar isArguments_1 = isArguments;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nvar isArray_1 = isArray;\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol ? _Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray_1(value) || isArguments_1(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nvar _isFlattenable = isFlattenable;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n _arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nvar _baseFlatten = baseFlatten;\n\n/* Built-in method references that are verified to be native. */\nvar Set = _getNative(_root, 'Set');\n\nvar _Set = Set;\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nvar noop_1 = noop;\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nvar _setToArray = setToArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set && (1 / _setToArray(new _Set([,-0]))[1]) == INFINITY) ? noop_1 : function(values) {\n return new _Set(values);\n};\n\nvar _createSet = createSet;\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE$1 = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE$1) {\n var set = iteratee ? null : _createSet(array);\n if (set) {\n return _setToArray(set);\n }\n isCommon = false;\n includes = _cacheHas;\n seen = new _SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nvar _baseUniq = baseUniq;\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? _baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = _baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return _baseUniq(_baseFlatten(result, 1), iteratee, comparator);\n}\n\nvar _baseXor = baseXor;\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = _baseRest(function(arrays) {\n return _baseXor(_arrayFilter(arrays, isArrayLikeObject_1));\n});\n\nvar xor_1 = xor;\n\nvar dirtyHandlerIds_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction dirtyHandlerIds(state, action) {\n if (state === void 0) { state = dirtiness.NONE; }\n switch (action.type) {\n case dragDrop.HOVER:\n break;\n case registry.ADD_SOURCE:\n case registry.ADD_TARGET:\n case registry.REMOVE_TARGET:\n case registry.REMOVE_SOURCE:\n return dirtiness.NONE;\n case dragDrop.BEGIN_DRAG:\n case dragDrop.PUBLISH_DRAG_SOURCE:\n case dragDrop.END_DRAG:\n case dragDrop.DROP:\n default:\n return dirtiness.ALL;\n }\n var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c;\n var result = xor_1(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !equality.areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return dirtiness.NONE;\n }\n // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}\nexports.default = dirtyHandlerIds;\n});\n\nunwrapExports(dirtyHandlerIds_1);\n\nvar stateId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stateId(state) {\n if (state === void 0) { state = 0; }\n return state + 1;\n}\nexports.default = stateId;\n});\n\nunwrapExports(stateId_1);\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol;\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nvar _isKey = isKey;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache;\n\nvar memoize_1 = memoize;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nvar _memoizeCapped = memoizeCapped;\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nvar _stringToPath = stringToPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n}\n\nvar _baseToString = baseToString;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : _baseToString(value);\n}\n\nvar toString_1 = toString;\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n}\n\nvar _castPath = castPath;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$2 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$2) ? '-0' : result;\n}\n\nvar _toKey = toKey;\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nvar _baseGet = baseGet;\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar get_1 = get;\n\nvar reducers = createCommonjsModule(function (module, exports) {\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction reduce(state, action) {\n if (state === void 0) { state = {}; }\n return {\n dirtyHandlerIds: dirtyHandlerIds_1.default(state.dirtyHandlerIds, {\n type: action.type,\n payload: __assign({}, action.payload, { prevTargetIds: get_1(state, 'dragOperation.targetIds', []) }),\n }),\n dragOffset: dragOffset_1.default(state.dragOffset, action),\n refCount: refCount_1.default(state.refCount, action),\n dragOperation: dragOperation_1.default(state.dragOperation, action),\n stateId: stateId_1.default(state.stateId),\n };\n}\nexports.default = reduce;\n});\n\nunwrapExports(reducers);\n\nvar coords = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y,\n };\n}\nexports.add = add;\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nfunction subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n };\n}\nexports.subtract = subtract;\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nfunction getSourceClientOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset, initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\nexports.getSourceClientOffset = getSourceClientOffset;\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nfunction getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset, initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}\nexports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;\n});\n\nunwrapExports(coords);\nvar coords_1 = coords.add;\nvar coords_2 = coords.subtract;\nvar coords_3 = coords.getSourceClientOffset;\nvar coords_4 = coords.getDifferenceFromInitialOffset;\n\nvar DragDropMonitorImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\nvar DragDropMonitorImpl = /** @class */ (function () {\n function DragDropMonitorImpl(store, registry) {\n this.store = store;\n this.registry = registry;\n }\n DragDropMonitorImpl.prototype.subscribeToStateChange = function (listener, options) {\n var _this = this;\n if (options === void 0) { options = { handlerIds: undefined }; }\n var handlerIds = options.handlerIds;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n invariant_1(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function () {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId ||\n (currentStateId === prevStateId + 1 &&\n !dirtiness.areDirty(state.dirtyHandlerIds, handlerIds));\n if (!canSkipListener) {\n listener();\n }\n }\n finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.subscribeToOffsetChange = function (listener) {\n var _this = this;\n invariant_1(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function () {\n var nextState = _this.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n };\n DragDropMonitorImpl.prototype.canDragSource = function (sourceId) {\n var source = this.registry.getSource(sourceId);\n invariant_1(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n };\n DragDropMonitorImpl.prototype.canDropOnTarget = function (targetId) {\n var target = this.registry.getTarget(targetId);\n invariant_1(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return (matchesType_1.default(targetType, draggedItemType) && target.canDrop(this, targetId));\n };\n DragDropMonitorImpl.prototype.isDragging = function () {\n return Boolean(this.getItemType());\n };\n DragDropMonitorImpl.prototype.isDraggingSource = function (sourceId) {\n var source = this.registry.getSource(sourceId, true);\n invariant_1(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n };\n DragDropMonitorImpl.prototype.isOverTarget = function (targetId, options) {\n if (options === void 0) { options = { shallow: false }; }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType_1.default(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n }\n else {\n return index > -1;\n }\n };\n DragDropMonitorImpl.prototype.getItemType = function () {\n return this.store.getState().dragOperation.itemType;\n };\n DragDropMonitorImpl.prototype.getItem = function () {\n return this.store.getState().dragOperation.item;\n };\n DragDropMonitorImpl.prototype.getSourceId = function () {\n return this.store.getState().dragOperation.sourceId;\n };\n DragDropMonitorImpl.prototype.getTargetIds = function () {\n return this.store.getState().dragOperation.targetIds;\n };\n DragDropMonitorImpl.prototype.getDropResult = function () {\n return this.store.getState().dragOperation.dropResult;\n };\n DragDropMonitorImpl.prototype.didDrop = function () {\n return this.store.getState().dragOperation.didDrop;\n };\n DragDropMonitorImpl.prototype.isSourcePublic = function () {\n return this.store.getState().dragOperation.isSourcePublic;\n };\n DragDropMonitorImpl.prototype.getInitialClientOffset = function () {\n return this.store.getState().dragOffset.initialClientOffset;\n };\n DragDropMonitorImpl.prototype.getInitialSourceClientOffset = function () {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n };\n DragDropMonitorImpl.prototype.getClientOffset = function () {\n return this.store.getState().dragOffset.clientOffset;\n };\n DragDropMonitorImpl.prototype.getSourceClientOffset = function () {\n return coords.getSourceClientOffset(this.store.getState().dragOffset);\n };\n DragDropMonitorImpl.prototype.getDifferenceFromInitialOffset = function () {\n return coords.getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n };\n return DragDropMonitorImpl;\n}());\nexports.default = DragDropMonitorImpl;\n});\n\nunwrapExports(DragDropMonitorImpl_1);\n\nvar getNextUniqueId_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextUniqueId = 0;\nfunction getNextUniqueId() {\n return nextUniqueId++;\n}\nexports.default = getNextUniqueId;\n});\n\nunwrapExports(getNextUniqueId_1);\n\nvar contracts = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction validateSourceContract(source) {\n invariant_1(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant_1(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant_1(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexports.validateSourceContract = validateSourceContract;\nfunction validateTargetContract(target) {\n invariant_1(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant_1(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant_1(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexports.validateTargetContract = validateTargetContract;\nfunction validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) { return validateType(t, false); });\n return;\n }\n invariant_1(typeof type === 'string' || typeof type === 'symbol', allowArray\n ? 'Type can only be a string, a symbol, or an array of either.'\n : 'Type can only be a string or a symbol.');\n}\nexports.validateType = validateType;\n});\n\nunwrapExports(contracts);\nvar contracts_1 = contracts.validateSourceContract;\nvar contracts_2 = contracts.validateTargetContract;\nvar contracts_3 = contracts.validateType;\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/*\n\n\n

License

\n\nUnless stated otherwise all works are:\n\n
\n\nand licensed under:\n\n\n\n

MIT License

\n\n
\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n
\n\n\n*/\ninherits$1(Domain, EventEmitter);\nfunction createEmitError(d) {\n return emitError;\n function emitError(e) {\n d.emit('error', e);\n }\n}\n\nfunction Domain() {\n EventEmitter.call(this);\n this.__emitError = createEmitError(this);\n}\nDomain.prototype.add = function (emitter) {\n emitter.on('error', this.__emitError);\n};\nDomain.prototype.remove = function(emitter) {\n emitter.removeListener('error', this.__emitError);\n};\nDomain.prototype.bind = function(fn) {\n var emitError = this.__emitError;\n return function() {\n var args = Array.prototype.slice.call(arguments);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n};\nDomain.prototype.intercept = function(fn) {\n var emitError = this.__emitError;\n return function(err) {\n if (err) {\n emitError(err);\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n try {\n fn.apply(null, args);\n } catch (err) {\n emitError(err);\n }\n }\n }\n};\nDomain.prototype.run = function(fn) {\n var emitError = this.__emitError;\n try {\n fn();\n } catch (err) {\n emitError(err);\n }\n return this\n};\nDomain.prototype.dispose = function() {\n this.removeAllListeners();\n return this\n};\nDomain.prototype.enter = Domain.prototype.exit = function() {\n return this\n};\nfunction createDomain() {\n return new Domain();\n}\nvar create = createDomain;\n\nvar require$$0 = {\n Domain: Domain,\n createDomain: createDomain,\n create: create\n};\n\nvar domain$1; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nvar raw = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index$2 = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index$2 < queue.length) {\n var currentIndex = index$2;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index$2 = index$2 + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index$2 > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index$2; scan < newLength; scan++) {\n queue[scan] = queue[scan + index$2];\n }\n queue.length -= index$2;\n index$2 = 0;\n }\n }\n queue.length = 0;\n index$2 = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain$1) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain$1 = require$$0;\n }\n domain$1.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain$1.active = process.domain = parentDomain;\n }\n}\n\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nvar asap_1 = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n raw(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n raw.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\nvar HandlerRegistryImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId_1.default().toString();\n switch (role) {\n case interfaces.HandlerRole.SOURCE:\n return \"S\" + id;\n case interfaces.HandlerRole.TARGET:\n return \"T\" + id;\n default:\n throw new Error(\"Unknown Handler Role: \" + role);\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return interfaces.HandlerRole.SOURCE;\n case 'T':\n return interfaces.HandlerRole.TARGET;\n default:\n invariant_1(false, \"Cannot parse handler ID: \" + handlerId);\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _a = entries.next(), done = _a.done, _b = _a.value, value = _b[1];\n if (value === searchValue) {\n return true;\n }\n isDone = done;\n } while (!isDone);\n return false;\n}\nvar HandlerRegistryImpl = /** @class */ (function () {\n function HandlerRegistryImpl(store) {\n this.store = store;\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n HandlerRegistryImpl.prototype.addSource = function (type, source) {\n contracts.validateType(type);\n contracts.validateSourceContract(source);\n var sourceId = this.addHandler(interfaces.HandlerRole.SOURCE, type, source);\n this.store.dispatch(registry.addSource(sourceId));\n return sourceId;\n };\n HandlerRegistryImpl.prototype.addTarget = function (type, target) {\n contracts.validateType(type, true);\n contracts.validateTargetContract(target);\n var targetId = this.addHandler(interfaces.HandlerRole.TARGET, type, target);\n this.store.dispatch(registry.addTarget(targetId));\n return targetId;\n };\n HandlerRegistryImpl.prototype.containsHandler = function (handler) {\n return (mapContainsValue(this.dragSources, handler) ||\n mapContainsValue(this.dropTargets, handler));\n };\n HandlerRegistryImpl.prototype.getSource = function (sourceId, includePinned) {\n if (includePinned === void 0) { includePinned = false; }\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n };\n HandlerRegistryImpl.prototype.getTarget = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n };\n HandlerRegistryImpl.prototype.getSourceType = function (sourceId) {\n invariant_1(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n };\n HandlerRegistryImpl.prototype.getTargetType = function (targetId) {\n invariant_1(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n };\n HandlerRegistryImpl.prototype.isSourceId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.SOURCE;\n };\n HandlerRegistryImpl.prototype.isTargetId = function (handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === interfaces.HandlerRole.TARGET;\n };\n HandlerRegistryImpl.prototype.removeSource = function (sourceId) {\n var _this = this;\n invariant_1(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(registry.removeSource(sourceId));\n asap_1(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n };\n HandlerRegistryImpl.prototype.removeTarget = function (targetId) {\n invariant_1(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(registry.removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n };\n HandlerRegistryImpl.prototype.pinSource = function (sourceId) {\n var source = this.getSource(sourceId);\n invariant_1(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n };\n HandlerRegistryImpl.prototype.unpinSource = function () {\n invariant_1(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n };\n HandlerRegistryImpl.prototype.addHandler = function (role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === interfaces.HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n }\n else if (role === interfaces.HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n };\n return HandlerRegistryImpl;\n}());\nexports.default = HandlerRegistryImpl;\n});\n\nunwrapExports(HandlerRegistryImpl_1);\n\nvar DragDropManagerImpl_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' &&\n window.__REDUX_DEVTOOLS_EXTENSION__;\n return redux.createStore(reducers.default, debugMode &&\n reduxDevTools &&\n reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core',\n }));\n}\nvar DragDropManagerImpl = /** @class */ (function () {\n function DragDropManagerImpl(createBackend, context, debugMode) {\n if (context === void 0) { context = {}; }\n if (debugMode === void 0) { debugMode = false; }\n var _this = this;\n this.context = context;\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n }\n else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl_1.default(store, new HandlerRegistryImpl_1.default(store));\n this.backend = createBackend(this);\n store.subscribe(this.handleRefCountChange);\n }\n DragDropManagerImpl.prototype.getContext = function () {\n return this.context;\n };\n DragDropManagerImpl.prototype.getMonitor = function () {\n return this.monitor;\n };\n DragDropManagerImpl.prototype.getBackend = function () {\n return this.backend;\n };\n DragDropManagerImpl.prototype.getRegistry = function () {\n return this.monitor.registry;\n };\n DragDropManagerImpl.prototype.getActions = function () {\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = dragDrop.default(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n };\n DragDropManagerImpl.prototype.dispatch = function (action) {\n this.store.dispatch(action);\n };\n return DragDropManagerImpl;\n}());\nexports.default = DragDropManagerImpl;\n});\n\nunwrapExports(DragDropManagerImpl_1);\n\nvar factories = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nfunction createDragDropManager(backend, context, debugMode) {\n return new DragDropManagerImpl_1.default(backend, context, debugMode);\n}\nexports.createDragDropManager = createDragDropManager;\n});\n\nunwrapExports(factories);\nvar factories_1 = factories.createDragDropManager;\n\nvar lib = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(interfaces);\n__export(factories);\n});\n\nunwrapExports(lib);\n\nvar checkDecoratorArguments_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction checkDecoratorArguments(functionName, signature) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (process.env.NODE_ENV !== 'production') {\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var arg = args_1[_a];\n if (arg && arg.prototype && arg.prototype.render) {\n // tslint:disable-next-line no-console\n console.error('You seem to be applying the arguments in the wrong order. ' +\n (\"It should be \" + functionName + \"(\" + signature + \")(Component), not the other way around. \") +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');\n return;\n }\n }\n }\n}\nexports.default = checkDecoratorArguments;\n});\n\nunwrapExports(checkDecoratorArguments_1);\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty$1 = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar isClassComponent_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar isClassComponent = function isClassComponent(Component$$1) {\n return Boolean(Component$$1 && Component$$1.prototype && typeof Component$$1.prototype.render === 'function');\n};\n\nvar _default = isClassComponent;\nexports.default = _default;\n});\n\nunwrapExports(isClassComponent_1);\n\nvar DragDropContext_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n/**\n * Create the React Context\n */\nexports.Consumer = (_a = React.createContext({ dragDropManager: undefined }), _a.Consumer), exports.Provider = _a.Provider;\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\nfunction createChildContext(backend, context, debugMode) {\n return {\n dragDropManager: lib.createDragDropManager(backend, context, debugMode),\n };\n}\nexports.createChildContext = createChildContext;\n/**\n * A React component that provides the React-DnD context\n */\nexports.DragDropContextProvider = function (_a) {\n var backend = _a.backend, context = _a.context, debugMode = _a.debugMode, children = _a.children;\n var contextValue = createChildContext(backend, context, debugMode);\n return React.createElement(exports.Provider, { value: contextValue }, children);\n};\n/**\n * Wrap the root component of your application with DragDropContext decorator to set up React DnD.\n * This lets you specify the backend, and sets up the shared DnD state behind the scenes.\n * @param backendFactory The DnD backend factory\n * @param backendContext The backend context\n */\nfunction DragDropContext(backendFactory, backendContext, debugMode) {\n checkDecoratorArguments_1.default('DragDropContext', 'backend', backendFactory);\n var childContext = createChildContext(backendFactory, backendContext, debugMode);\n return function decorateContext(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragDropContextContainer = /** @class */ (function (_super) {\n __extends(DragDropContextContainer, _super);\n function DragDropContextContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ref = React.createRef();\n _this.getManager = function () { return childContext.dragDropManager; };\n return _this;\n }\n DragDropContextContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragDropContextContainer.prototype.render = function () {\n return (React.createElement(exports.Provider, { value: childContext },\n React.createElement(Decorated, __assign({}, this.props, { ref: isClassComponent(Decorated) ? this.ref : undefined }))));\n };\n DragDropContextContainer.DecoratedComponent = DecoratedComponent;\n DragDropContextContainer.displayName = \"DragDropContext(\" + displayName + \")\";\n return DragDropContextContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContextContainer, DecoratedComponent);\n };\n}\nexports.DragDropContext = DragDropContext;\n});\n\nunwrapExports(DragDropContext_1);\nvar DragDropContext_2 = DragDropContext_1.Consumer;\nvar DragDropContext_3 = DragDropContext_1.Provider;\nvar DragDropContext_4 = DragDropContext_1.createChildContext;\nvar DragDropContext_5 = DragDropContext_1.DragDropContextProvider;\nvar DragDropContext_6 = DragDropContext_1.DragDropContext;\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nvar _overArg = overArg;\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\nvar _getPrototype = getPrototype;\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto$2 = Function.prototype,\n objectProto$6 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$2 = funcProto$2.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$6.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString$2.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject$1(value) {\n if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = _getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty$6.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString$2.call(Ctor) == objectCtorString;\n}\n\nvar isPlainObject_1 = isPlainObject$1;\n\n//\n\nvar shallowequal = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n\nvar DragLayer_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\nvar isClassComponent = isClassComponent_1.default;\nfunction DragLayer(collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragLayer', 'collect[, options]', collect, options);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the first argument to DragLayer to be a function that collects props to inject into the component. ', 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the second argument to DragLayer to be a plain object when specified. ' +\n 'Instead, received %s. Read more: http://react-dnd.github.io/react-dnd/docs-drag-layer.html', options);\n return function decorateLayer(DecoratedComponent) {\n var Decorated = DecoratedComponent;\n var _a = options.arePropsEqual, arePropsEqual = _a === void 0 ? shallowequal : _a;\n var displayName = Decorated.displayName || Decorated.name || 'Component';\n var DragLayerContainer = /** @class */ (function (_super) {\n __extends(DragLayerContainer, _super);\n function DragLayerContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isCurrentlyMounted = false;\n _this.ref = React.createRef();\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n return _this;\n }\n DragLayerContainer.prototype.getDecoratedComponentInstance = function () {\n invariant_1(this.ref.current, 'In order to access an instance of the decorated component it can not be a stateless component.');\n return this.ref.current;\n };\n DragLayerContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragLayerContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.handleChange();\n };\n DragLayerContainer.prototype.componentWillUnmount = function () {\n this.isCurrentlyMounted = false;\n if (this.unsubscribeFromOffsetChange) {\n this.unsubscribeFromOffsetChange();\n this.unsubscribeFromOffsetChange = undefined;\n }\n if (this.unsubscribeFromStateChange) {\n this.unsubscribeFromStateChange();\n this.unsubscribeFromStateChange = undefined;\n }\n };\n DragLayerContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: isClassComponent(Decorated) ? _this.ref : undefined })));\n }));\n };\n DragLayerContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n var monitor = this.manager.getMonitor();\n this.unsubscribeFromOffsetChange = monitor.subscribeToOffsetChange(this.handleChange);\n this.unsubscribeFromStateChange = monitor.subscribeToStateChange(this.handleChange);\n };\n DragLayerContainer.prototype.getCurrentState = function () {\n if (!this.manager) {\n return {};\n }\n var monitor = this.manager.getMonitor();\n return collect(monitor, this.props);\n };\n DragLayerContainer.displayName = \"DragLayer(\" + displayName + \")\";\n DragLayerContainer.DecoratedComponent = DecoratedComponent;\n return DragLayerContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragLayerContainer, DecoratedComponent);\n };\n}\nexports.default = DragLayer;\n});\n\nunwrapExports(DragLayer_1);\n\nvar Disposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n/**\n * Provides a set of static methods for creating Disposables.\n * @param {Function} action Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable(action) {\n this.isDisposed = false;\n this.action = isFunction_1(action) ? action : noop_1;\n }\n /**\n * Validates whether the given object is a disposable\n * @param {Object} Object to test whether it has a dispose method\n * @returns {Boolean} true if a disposable object, else false.\n */\n Disposable.isDisposable = function (d) {\n return d && isFunction_1(d.dispose);\n };\n Disposable._fixup = function (result) {\n return Disposable.isDisposable(result) ? result : Disposable.empty;\n };\n /**\n * Creates a disposable object that invokes the specified action when disposed.\n * @param {Function} dispose Action to run during the first call to dispose.\n * The action is guaranteed to be run at most once.\n * @return {Disposable} The disposable object that runs the given action upon disposal.\n */\n Disposable.create = function (action) {\n return new Disposable(action);\n };\n /** Performs the task of cleaning up resources. */\n Disposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.action();\n this.isDisposed = true;\n }\n };\n /**\n * Gets the disposable that does nothing when disposed.\n */\n Disposable.empty = { dispose: noop_1 };\n return Disposable;\n}());\nexports.Disposable = Disposable;\n});\n\nunwrapExports(Disposable_1);\nvar Disposable_2 = Disposable_1.Disposable;\n\nvar SerialDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a disposable resource whose underlying disposable resource can\n * be replaced by another disposable resource, causing automatic disposal of\n * the previous underlying disposable resource.\n */\nvar SerialDisposable = /** @class */ (function () {\n function SerialDisposable() {\n this.isDisposed = false;\n }\n /**\n * Gets the underlying disposable.\n * @returns {Any} the underlying disposable.\n */\n SerialDisposable.prototype.getDisposable = function () {\n return this.current;\n };\n SerialDisposable.prototype.setDisposable = function (value) {\n var shouldDispose = this.isDisposed;\n if (!shouldDispose) {\n var old = this.current;\n this.current = value;\n if (old) {\n old.dispose();\n }\n }\n if (shouldDispose && value) {\n value.dispose();\n }\n };\n /** Performs the task of cleaning up resources. */\n SerialDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var old = this.current;\n this.current = undefined;\n if (old) {\n old.dispose();\n }\n }\n };\n return SerialDisposable;\n}());\nexports.SerialDisposable = SerialDisposable;\n});\n\nunwrapExports(SerialDisposable_1);\nvar SerialDisposable_2 = SerialDisposable_1.SerialDisposable;\n\nvar CompositeDisposable_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a group of disposable resources that are disposed together.\n * @constructor\n */\nvar CompositeDisposable = /** @class */ (function () {\n function CompositeDisposable() {\n var disposables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n disposables[_i] = arguments[_i];\n }\n this.isDisposed = false;\n this.disposables = disposables;\n }\n /**\n * Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n * @param {Any} item Disposable to add.\n */\n CompositeDisposable.prototype.add = function (item) {\n if (this.isDisposed) {\n item.dispose();\n }\n else {\n this.disposables.push(item);\n }\n };\n /**\n * Removes and disposes the first occurrence of a disposable from the CompositeDisposable.\n * @param {Any} item Disposable to remove.\n * @returns {Boolean} true if found; false otherwise.\n */\n CompositeDisposable.prototype.remove = function (item) {\n var shouldDispose = false;\n if (!this.isDisposed) {\n var idx = this.disposables.indexOf(item);\n if (idx !== -1) {\n shouldDispose = true;\n this.disposables.splice(idx, 1);\n item.dispose();\n }\n }\n return shouldDispose;\n };\n /**\n * Disposes all disposables in the group and removes them from the group but\n * does not dispose the CompositeDisposable.\n */\n CompositeDisposable.prototype.clear = function () {\n if (!this.isDisposed) {\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n /**\n * Disposes all disposables in the group and removes them from the group.\n */\n CompositeDisposable.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n var len = this.disposables.length;\n var currentDisposables = new Array(len);\n for (var i = 0; i < len; i++) {\n currentDisposables[i] = this.disposables[i];\n }\n this.disposables = [];\n for (var i = 0; i < len; i++) {\n currentDisposables[i].dispose();\n }\n }\n };\n return CompositeDisposable;\n}());\nexports.CompositeDisposable = CompositeDisposable;\n});\n\nunwrapExports(CompositeDisposable_1);\nvar CompositeDisposable_2 = CompositeDisposable_1.CompositeDisposable;\n\nvar disposables = createCommonjsModule(function (module, exports) {\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(Disposable_1);\n__export(SerialDisposable_1);\n__export(CompositeDisposable_1);\n});\n\nunwrapExports(disposables);\n\nvar decorateHandler_1 = createCommonjsModule(function (module, exports) {\nvar __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar isClassComponent = isClassComponent_1.default;\n\n\n\n\nfunction decorateHandler(_a) {\n var DecoratedComponent = _a.DecoratedComponent, createHandler = _a.createHandler, createMonitor = _a.createMonitor, createConnector = _a.createConnector, registerHandler = _a.registerHandler, containerDisplayName = _a.containerDisplayName, getType = _a.getType, collect = _a.collect, options = _a.options;\n var _b = options.arePropsEqual, arePropsEqual = _b === void 0 ? shallowequal : _b;\n var Decorated = DecoratedComponent;\n var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';\n var DragDropContainer = /** @class */ (function (_super) {\n __extends(DragDropContainer, _super);\n function DragDropContainer(props) {\n var _this = _super.call(this, props) || this;\n _this.isCurrentlyMounted = false;\n _this.handleChange = function () {\n if (!_this.isCurrentlyMounted) {\n return;\n }\n var nextState = _this.getCurrentState();\n if (!shallowequal(nextState, _this.state)) {\n _this.setState(nextState);\n }\n };\n _this.disposable = new disposables.SerialDisposable();\n _this.receiveProps(props);\n _this.dispose();\n return _this;\n }\n DragDropContainer.prototype.getHandlerId = function () {\n return this.handlerId;\n };\n DragDropContainer.prototype.getDecoratedComponentInstance = function () {\n if (!this.handler) {\n return null;\n }\n return this.handler.ref.current;\n };\n DragDropContainer.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n return (!arePropsEqual(nextProps, this.props) ||\n !shallowequal(nextState, this.state));\n };\n DragDropContainer.prototype.componentDidMount = function () {\n this.isCurrentlyMounted = true;\n this.disposable = new disposables.SerialDisposable();\n this.currentType = undefined;\n this.receiveProps(this.props);\n this.handleChange();\n };\n DragDropContainer.prototype.componentDidUpdate = function (prevProps) {\n if (!arePropsEqual(this.props, prevProps)) {\n this.receiveProps(this.props);\n this.handleChange();\n }\n };\n DragDropContainer.prototype.componentWillUnmount = function () {\n this.dispose();\n this.isCurrentlyMounted = false;\n };\n DragDropContainer.prototype.receiveProps = function (props) {\n if (!this.handler) {\n return;\n }\n this.handler.receiveProps(props);\n this.receiveType(getType(props));\n };\n DragDropContainer.prototype.receiveType = function (type) {\n if (!this.handlerMonitor || !this.manager || !this.handlerConnector) {\n return;\n }\n if (type === this.currentType) {\n return;\n }\n this.currentType = type;\n var _a = registerHandler(type, this.handler, this.manager), handlerId = _a.handlerId, unregister = _a.unregister;\n this.handlerId = handlerId;\n this.handlerMonitor.receiveHandlerId(handlerId);\n this.handlerConnector.receiveHandlerId(handlerId);\n var globalMonitor = this.manager.getMonitor();\n var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });\n this.disposable.setDisposable(new disposables.CompositeDisposable(new disposables.Disposable(unsubscribe), new disposables.Disposable(unregister)));\n };\n DragDropContainer.prototype.dispose = function () {\n this.disposable.dispose();\n if (this.handlerConnector) {\n this.handlerConnector.receiveHandlerId(null);\n }\n };\n DragDropContainer.prototype.getCurrentState = function () {\n if (!this.handlerConnector) {\n return {};\n }\n var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(nextState), 'Expected `collect` specified as the second argument to ' +\n '%s for %s to return a plain object of props to inject. ' +\n 'Instead, received %s.', containerDisplayName, displayName, nextState);\n }\n return nextState;\n };\n DragDropContainer.prototype.render = function () {\n var _this = this;\n return (React.createElement(DragDropContext_1.Consumer, null, function (_a) {\n var dragDropManager = _a.dragDropManager;\n if (dragDropManager === undefined) {\n return null;\n }\n _this.receiveDragDropManager(dragDropManager);\n // Let componentDidMount fire to initialize the collected state\n if (!_this.isCurrentlyMounted) {\n return null;\n }\n return (React.createElement(Decorated, __assign({}, _this.props, _this.state, { ref: _this.handler && isClassComponent(Decorated)\n ? _this.handler.ref\n : undefined })));\n }));\n };\n DragDropContainer.prototype.receiveDragDropManager = function (dragDropManager) {\n if (this.manager !== undefined) {\n return;\n }\n this.manager = dragDropManager;\n invariant_1(typeof dragDropManager === 'object', 'Could not find the drag and drop manager in the context of %s. ' +\n 'Make sure to wrap the top-level component of your app with DragDropContext. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);\n this.handlerMonitor = createMonitor(dragDropManager);\n this.handlerConnector = createConnector(dragDropManager.getBackend());\n this.handler = createHandler(this.handlerMonitor);\n };\n DragDropContainer.DecoratedComponent = DecoratedComponent;\n DragDropContainer.displayName = containerDisplayName + \"(\" + displayName + \")\";\n return DragDropContainer;\n }(React.Component));\n return hoistNonReactStatics_cjs(DragDropContainer, DecoratedComponent);\n}\nexports.default = decorateHandler;\n});\n\nunwrapExports(decorateHandler_1);\n\nvar registerSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n function unregisterSource() {\n registry.removeSource(sourceId);\n }\n return {\n handlerId: sourceId,\n unregister: unregisterSource,\n };\n}\nexports.default = registerSource;\n});\n\nunwrapExports(registerSource_1);\n\nvar createSourceFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrag', 'beginDrag', 'isDragging', 'endDrag'];\nvar REQUIRED_SPEC_METHODS = ['beginDrag'];\nfunction createSourceFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drag source specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n REQUIRED_SPEC_METHODS.forEach(function (key) {\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drag source specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', key, key, spec[key]);\n });\n var SourceImpl = /** @class */ (function () {\n function SourceImpl(monitor) {\n var _this = this;\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n this.beginDrag = function () {\n if (!_this.props) {\n return;\n }\n var item = spec.beginDrag(_this.props, _this.monitor, _this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(isPlainObject_1(item), 'beginDrag() must return a plain object that represents the dragged item. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', item);\n }\n return item;\n };\n }\n SourceImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n SourceImpl.prototype.canDrag = function () {\n if (!this.props) {\n return false;\n }\n if (!spec.canDrag) {\n return true;\n }\n return spec.canDrag(this.props, this.monitor);\n };\n SourceImpl.prototype.isDragging = function (globalMonitor, sourceId) {\n if (!this.props) {\n return false;\n }\n if (!spec.isDragging) {\n return sourceId === globalMonitor.getSourceId();\n }\n return spec.isDragging(this.props, this.monitor);\n };\n SourceImpl.prototype.endDrag = function () {\n if (!this.props) {\n return;\n }\n if (!spec.endDrag) {\n return;\n }\n spec.endDrag(this.props, this.monitor, this.ref.current);\n };\n return SourceImpl;\n }());\n return function createSource(monitor) {\n return new SourceImpl(monitor);\n };\n}\nexports.default = createSourceFactory;\n});\n\nunwrapExports(createSourceFactory_1);\n\nvar createSourceMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nvar SourceMonitor = /** @class */ (function () {\n function SourceMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n SourceMonitor.prototype.receiveHandlerId = function (sourceId) {\n this.sourceId = sourceId;\n };\n SourceMonitor.prototype.canDrag = function () {\n invariant_1(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n }\n finally {\n isCallingCanDrag = false;\n }\n };\n SourceMonitor.prototype.isDragging = function () {\n invariant_1(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source-monitor.html');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n }\n finally {\n isCallingIsDragging = false;\n }\n };\n SourceMonitor.prototype.subscribeToStateChange = function (listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n };\n SourceMonitor.prototype.isDraggingSource = function (sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n };\n SourceMonitor.prototype.isOverTarget = function (targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n };\n SourceMonitor.prototype.getTargetIds = function () {\n return this.internalMonitor.getTargetIds();\n };\n SourceMonitor.prototype.isSourcePublic = function () {\n return this.internalMonitor.isSourcePublic();\n };\n SourceMonitor.prototype.getSourceId = function () {\n return this.internalMonitor.getSourceId();\n };\n SourceMonitor.prototype.subscribeToOffsetChange = function (listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n };\n SourceMonitor.prototype.canDragSource = function (sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n };\n SourceMonitor.prototype.canDropOnTarget = function (targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n };\n SourceMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n SourceMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n SourceMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n SourceMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n SourceMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n SourceMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n SourceMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n SourceMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n SourceMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return SourceMonitor;\n}());\nfunction createSourceMonitor(manager) {\n return new SourceMonitor(manager);\n}\nexports.default = createSourceMonitor;\n});\n\nunwrapExports(createSourceMonitor_1);\n\nvar cloneWithRef_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant_1(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' +\n 'Please convert it to use a callback ref instead, or wrap it into a or
. ' +\n 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return React.cloneElement(element, {\n ref: newRef,\n });\n }\n return React.cloneElement(element, {\n ref: function (node) {\n newRef(node);\n if (previousRef) {\n previousRef(node);\n }\n },\n });\n}\nexports.default = cloneWithRef;\n});\n\nunwrapExports(cloneWithRef_1);\n\nvar wrapConnectorHooks_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' +\n (\"You can either wrap \" + displayName + \" into a
, or turn it into a \") +\n 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function (elementOrNode, options) {\n if (elementOrNode === void 0) { elementOrNode = null; }\n if (options === void 0) { options = null; }\n // When passed a node, call the hook straight away.\n if (!React.isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options);\n return undefined;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n var element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n var ref = options ? function (node) { return hook(node, options); } : hook;\n return cloneWithRef_1.default(element, ref);\n };\n}\nfunction wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key];\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () { return wrappedHook; };\n });\n return wrappedHooks;\n}\nexports.default = wrapConnectorHooks;\n});\n\nunwrapExports(wrapConnectorHooks_1);\n\nvar createSourceConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createSourceConnector(backend) {\n var currentHandlerId;\n var currentDragSourceNode;\n var currentDragSourceOptions;\n var disconnectCurrentDragSource;\n var currentDragPreviewNode;\n var currentDragPreviewOptions;\n var disconnectCurrentDragPreview;\n function reconnectDragSource() {\n if (disconnectCurrentDragSource) {\n disconnectCurrentDragSource();\n disconnectCurrentDragSource = undefined;\n }\n if (currentHandlerId && currentDragSourceNode) {\n disconnectCurrentDragSource = backend.connectDragSource(currentHandlerId, currentDragSourceNode, currentDragSourceOptions);\n }\n }\n function reconnectDragPreview() {\n if (disconnectCurrentDragPreview) {\n disconnectCurrentDragPreview();\n disconnectCurrentDragPreview = undefined;\n }\n if (currentHandlerId && currentDragPreviewNode) {\n disconnectCurrentDragPreview = backend.connectDragPreview(currentHandlerId, currentDragPreviewNode, currentDragPreviewOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDragSource();\n reconnectDragPreview();\n }\n var hooks = wrapConnectorHooks_1.default({\n dragSource: function connectDragSource(node, options) {\n if (node === currentDragSourceNode &&\n shallowequal(options, currentDragSourceOptions)) {\n return;\n }\n currentDragSourceNode = node;\n currentDragSourceOptions = options;\n reconnectDragSource();\n },\n dragPreview: function connectDragPreview(node, options) {\n if (node === currentDragPreviewNode &&\n shallowequal(options, currentDragPreviewOptions)) {\n return;\n }\n currentDragPreviewNode = node;\n currentDragPreviewOptions = options;\n reconnectDragPreview();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createSourceConnector;\n});\n\nunwrapExports(createSourceConnector_1);\n\nvar isValidType_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isValidType(type, allowArray) {\n return (typeof type === 'string' ||\n typeof type === 'symbol' ||\n (!!allowArray &&\n Array.isArray(type) &&\n type.every(function (t) { return isValidType(t, false); })));\n}\nexports.default = isValidType;\n});\n\nunwrapExports(isValidType_1);\n\nvar DragSource_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\n/**\n * Decorates a component as a dragsource\n * @param type The dragsource type\n * @param spec The drag source specification\n * @param collect The props collector function\n * @param options DnD options\n */\nfunction DragSource(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DragSource', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type), 'Expected \"type\" provided as the first argument to DragSource to be ' +\n 'a string, or a function that returns a string given the current props. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DragSource to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', spec);\n var createSource = createSourceFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DragSource to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DragSource to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-source.html', collect);\n return function decorateSource(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DragSource',\n createHandler: createSource,\n registerHandler: registerSource_1.default,\n createMonitor: createSourceMonitor_1.default,\n createConnector: createSourceConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DragSource;\n});\n\nunwrapExports(DragSource_1);\n\nvar registerTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n function unregisterTarget() {\n registry.removeTarget(targetId);\n }\n return {\n handlerId: targetId,\n unregister: unregisterTarget,\n };\n}\nexports.default = registerTarget;\n});\n\nunwrapExports(registerTarget_1);\n\nvar createTargetFactory_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\nvar ALLOWED_SPEC_METHODS = ['canDrop', 'hover', 'drop'];\nfunction createTargetFactory(spec) {\n Object.keys(spec).forEach(function (key) {\n invariant_1(ALLOWED_SPEC_METHODS.indexOf(key) > -1, 'Expected the drop target specification to only have ' +\n 'some of the following keys: %s. ' +\n 'Instead received a specification with an unexpected \"%s\" key. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', ALLOWED_SPEC_METHODS.join(', '), key);\n invariant_1(typeof spec[key] === 'function', 'Expected %s in the drop target specification to be a function. ' +\n 'Instead received a specification with %s: %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', key, key, spec[key]);\n });\n var TargetImpl = /** @class */ (function () {\n function TargetImpl(monitor) {\n this.monitor = monitor;\n this.props = null;\n this.ref = React.createRef();\n }\n TargetImpl.prototype.receiveProps = function (props) {\n this.props = props;\n };\n TargetImpl.prototype.receiveMonitor = function (monitor) {\n this.monitor = monitor;\n };\n TargetImpl.prototype.canDrop = function () {\n if (!spec.canDrop) {\n return true;\n }\n return spec.canDrop(this.props, this.monitor);\n };\n TargetImpl.prototype.hover = function () {\n if (!spec.hover) {\n return;\n }\n spec.hover(this.props, this.monitor, this.ref.current);\n };\n TargetImpl.prototype.drop = function () {\n if (!spec.drop) {\n return undefined;\n }\n var dropResult = spec.drop(this.props, this.monitor, this.ref.current);\n if (process.env.NODE_ENV !== 'production') {\n invariant_1(typeof dropResult === 'undefined' || isPlainObject_1(dropResult), 'drop() must either return undefined, or an object that represents the drop result. ' +\n 'Instead received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', dropResult);\n }\n return dropResult;\n };\n return TargetImpl;\n }());\n return function createTarget(monitor) {\n return new TargetImpl(monitor);\n };\n}\nexports.default = createTargetFactory;\n});\n\nunwrapExports(createTargetFactory_1);\n\nvar createTargetMonitor_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nvar isCallingCanDrop = false;\nvar TargetMonitor = /** @class */ (function () {\n function TargetMonitor(manager) {\n this.internalMonitor = manager.getMonitor();\n }\n TargetMonitor.prototype.receiveHandlerId = function (targetId) {\n this.targetId = targetId;\n };\n TargetMonitor.prototype.canDrop = function () {\n invariant_1(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target-monitor.html');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n }\n finally {\n isCallingCanDrop = false;\n }\n };\n TargetMonitor.prototype.isOver = function (options) {\n return this.internalMonitor.isOverTarget(this.targetId, options);\n };\n TargetMonitor.prototype.getItemType = function () {\n return this.internalMonitor.getItemType();\n };\n TargetMonitor.prototype.getItem = function () {\n return this.internalMonitor.getItem();\n };\n TargetMonitor.prototype.getDropResult = function () {\n return this.internalMonitor.getDropResult();\n };\n TargetMonitor.prototype.didDrop = function () {\n return this.internalMonitor.didDrop();\n };\n TargetMonitor.prototype.getInitialClientOffset = function () {\n return this.internalMonitor.getInitialClientOffset();\n };\n TargetMonitor.prototype.getInitialSourceClientOffset = function () {\n return this.internalMonitor.getInitialSourceClientOffset();\n };\n TargetMonitor.prototype.getSourceClientOffset = function () {\n return this.internalMonitor.getSourceClientOffset();\n };\n TargetMonitor.prototype.getClientOffset = function () {\n return this.internalMonitor.getClientOffset();\n };\n TargetMonitor.prototype.getDifferenceFromInitialOffset = function () {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n };\n return TargetMonitor;\n}());\nexports.TargetMonitor = TargetMonitor;\nfunction createTargetMonitor(manager) {\n return new TargetMonitor(manager);\n}\nexports.default = createTargetMonitor;\n});\n\nunwrapExports(createTargetMonitor_1);\nvar createTargetMonitor_2 = createTargetMonitor_1.TargetMonitor;\n\nvar createTargetConnector_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nfunction createTargetConnector(backend) {\n var currentHandlerId;\n var currentDropTargetNode;\n var currentDropTargetOptions;\n var disconnectCurrentDropTarget;\n function reconnectDropTarget() {\n if (disconnectCurrentDropTarget) {\n disconnectCurrentDropTarget();\n disconnectCurrentDropTarget = undefined;\n }\n if (currentHandlerId && currentDropTargetNode) {\n disconnectCurrentDropTarget = backend.connectDropTarget(currentHandlerId, currentDropTargetNode, currentDropTargetOptions);\n }\n }\n function receiveHandlerId(handlerId) {\n if (handlerId === currentHandlerId) {\n return;\n }\n currentHandlerId = handlerId;\n reconnectDropTarget();\n }\n var hooks = wrapConnectorHooks_1.default({\n dropTarget: function connectDropTarget(node, options) {\n if (node === currentDropTargetNode &&\n shallowequal(options, currentDropTargetOptions)) {\n return;\n }\n currentDropTargetNode = node;\n currentDropTargetOptions = options;\n reconnectDropTarget();\n },\n });\n return {\n receiveHandlerId: receiveHandlerId,\n hooks: hooks,\n };\n}\nexports.default = createTargetConnector;\n});\n\nunwrapExports(createTargetConnector_1);\n\nvar DropTarget_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\n\n\n\nfunction DropTarget(type, spec, collect, options) {\n if (options === void 0) { options = {}; }\n checkDecoratorArguments_1.default('DropTarget', 'type, spec, collect[, options]', type, spec, collect, options);\n var getType = type;\n if (typeof type !== 'function') {\n invariant_1(isValidType_1.default(type, true), 'Expected \"type\" provided as the first argument to DropTarget to be ' +\n 'a string, an array of strings, or a function that returns either given ' +\n 'the current props. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', type);\n getType = function () { return type; };\n }\n invariant_1(isPlainObject_1(spec), 'Expected \"spec\" provided as the second argument to DropTarget to be ' +\n 'a plain object. Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', spec);\n var createTarget = createTargetFactory_1.default(spec);\n invariant_1(typeof collect === 'function', 'Expected \"collect\" provided as the third argument to DropTarget to be ' +\n 'a function that returns a plain object of props to inject. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n invariant_1(isPlainObject_1(options), 'Expected \"options\" provided as the fourth argument to DropTarget to be ' +\n 'a plain object when specified. ' +\n 'Instead, received %s. ' +\n 'Read more: http://react-dnd.github.io/react-dnd/docs-drop-target.html', collect);\n return function decorateTarget(DecoratedComponent) {\n return decorateHandler_1.default({\n containerDisplayName: 'DropTarget',\n createHandler: createTarget,\n registerHandler: registerTarget_1.default,\n createMonitor: createTargetMonitor_1.default,\n createConnector: createTargetConnector_1.default,\n DecoratedComponent: DecoratedComponent,\n getType: getType,\n collect: collect,\n options: options,\n });\n };\n}\nexports.default = DropTarget;\n});\n\nunwrapExports(DropTarget_1);\n\nvar lib$1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.DragDropContext = DragDropContext_1.DragDropContext;\nexports.DragDropContextProvider = DragDropContext_1.DragDropContextProvider;\n\nexports.DragLayer = DragLayer_1.default;\n\nexports.DragSource = DragSource_1.default;\n\nexports.DropTarget = DropTarget_1.default;\n});\n\nunwrapExports(lib$1);\nvar lib_1 = lib$1.DragDropContext;\nvar lib_2 = lib$1.DragDropContextProvider;\nvar lib_3 = lib$1.DragLayer;\nvar lib_4 = lib$1.DragSource;\nvar lib_5 = lib$1.DropTarget;\n\nvar css$1 = \".ExampleDropTarget {\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\\n width: 100%;\\n min-height: 100px;\\n\\n border: 2px dashed black;\\n padding: 20px;\\n transition: 0.2s all ease;\\n}\\n\\n.ExampleDropTarget h4,\\n.ExampleDropTarger p {\\n text-align: center;\\n word-break: break-word;\\n}\\n\\n.ExampleDropTarget.can-drop {\\n border: 2px dashed #20a5d6;\\n background-color: #fafafa;\\n color: black;\\n}\\n\\n.ExampleDropTarget.hovered {\\n border: 2px dashed #20a5d6;\\n background-color: black;\\n color: #91b9cd;\\n}\\n\";\nstyleInject(css$1);\n\n// if they have the same string type.\n\nvar Types = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget = {\n drop: function drop(props, monitor, component) {\n // Note: For this example we use setState, but in\n // OHIF we will update the redux store instead\n var item = monitor.getItem();\n component.setState({\n item: {\n id: item.id,\n seriesDescription: item.seriesDescription\n }\n });\n return {\n id: 'ExampleDropTarget'\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar ExampleDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ExampleDropTarget, _Component);\n\n function ExampleDropTarget() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ExampleDropTarget);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ExampleDropTarget)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n item: null\n });\n\n return _this;\n }\n\n _createClass(ExampleDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = ExampleDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, React.createElement(\"h4\", null, isActive ? 'Release to drop' : 'Drag / Drop something from the Study Browser here'), React.createElement(\"p\", {\n className: \"study-drop-results\"\n }, this.state.item && JSON.stringify(this.state.item))));\n }\n }]);\n\n return ExampleDropTarget;\n}(Component);\n\n_defineProperty(ExampleDropTarget, \"className\", 'ExampleDropTarget');\n\n_defineProperty(ExampleDropTarget, \"defaultProps\", {\n isOver: false\n});\n\n_defineProperty(ExampleDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired\n});\n\nvar collect = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n};\n\nvar ExampleDropTarget$1 = lib_5(Types.THUMBNAIL, divTarget, collect)(ExampleDropTarget);\n\nvar css$2 = \".layoutChooser {\\n border: 1px solid rgba(77,99,110,0.81);\\n border-radius: 8px;\\n padding: 5px 0;\\n position: absolute;\\n z-index: 5000;\\n}\\n.layoutChooser .selectedBefore {\\n background-color: #5cc3eb;\\n}\\n.layoutChooser table {\\n margin: 0 auto;\\n}\\n.layoutChooser table td {\\n cursor: pointer;\\n}\\n.layoutChooser table td:hover,\\n.layoutChooser table td.hover {\\n background-color: #209ac9;\\n}\\n\";\nstyleInject(css$2);\n\n/**\n * Adds the 'hover' class to cells above and to the left of the current cell\n * This is used to \"fill in\" the grid that the user will change the layout to,\n * if they click on a specific table cell.\n **/\n\nvar LayoutChooser =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutChooser, _PureComponent);\n\n function LayoutChooser(props) {\n var _this;\n\n _classCallCheck(this, LayoutChooser);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayoutChooser).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isRange\", function (cell, parentCell) {\n return cell.row <= parentCell.row && cell.col <= parentCell.col;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"highlightCells\", function (currentCell) {\n var table = [];\n\n for (var row = 0; row < _this.props.rows; row++) {\n var newRow = [];\n\n for (var col = 0; col < _this.props.columns; col++) {\n var cell = {\n row: row,\n col: col\n };\n\n if (_this.isRange(cell, currentCell)) {\n cell.className = 'hover';\n } else if (_this.isRange(currentCell, _this.emptyCell) && _this.isRange(cell, _this.state.selectedCell)) {\n cell.className = 'selectedBefore';\n }\n\n newRow.push(cell);\n }\n\n table.push(newRow);\n }\n\n _this.setState({\n table: table\n });\n });\n\n _this.emptyCell = {\n row: -1,\n column: -1\n };\n _this.state = {\n table: [[]],\n selectedCell: _this.props.selectedCell\n };\n return _this;\n }\n\n _createClass(LayoutChooser, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.highlightCells(this.emptyCell);\n }\n }, {\n key: \"onClick\",\n value: function onClick(currentCell) {\n this.setState({\n selectedCell: currentCell\n });\n this.highlightCells(currentCell);\n\n if (this.props.onClick) {\n this.props.onClick(currentCell);\n }\n\n if (this.props.onChange) {\n this.props.onChange(currentCell);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var columns = this.props.columns;\n var style = {\n display: this.props.visible ? 'block' : 'none',\n minWidth: columns * this.props.boxSize + (columns + 5) * this.props.cellBorder\n };\n return React.createElement(\"div\", {\n className: \"layoutChooser pull-left dropdown-menu\",\n role: \"menu\",\n style: style\n }, React.createElement(\"table\", null, React.createElement(\"tbody\", null, this.state.table.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (cell, j) {\n return React.createElement(\"td\", {\n className: cell.className,\n style: {\n width: _this2.props.boxSize,\n height: _this2.props.boxSize,\n border: 'solid 1px black'\n },\n key: j,\n onMouseEnter: function onMouseEnter() {\n return _this2.highlightCells(cell);\n },\n onMouseLeave: function onMouseLeave() {\n return _this2.highlightCells(_this2.emptyCell);\n },\n onClick: function onClick() {\n return _this2.onClick(cell);\n }\n });\n }));\n }))));\n }\n }]);\n\n return LayoutChooser;\n}(PureComponent);\n\n_defineProperty(LayoutChooser, \"propTypes\", {\n rows: propTypes.number.isRequired,\n columns: propTypes.number.isRequired,\n visible: propTypes.bool.isRequired,\n selectedCell: propTypes.object,\n boxSize: propTypes.number.isRequired,\n cellBorder: propTypes.number.isRequired,\n onClick: propTypes.func,\n onChange: propTypes.func\n});\n\n_defineProperty(LayoutChooser, \"defaultProps\", {\n rows: 3,\n columns: 3,\n visible: true,\n boxSize: 20,\n cellBorder: 1,\n selectedCell: {\n row: -1,\n col: -1\n }\n});\n\nvar LayoutButton =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LayoutButton, _PureComponent);\n\n function LayoutButton() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutButton);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutButton)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n dropdownVisible: _this.props.dropdownVisible\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (selectedCell) {\n if (_this.props.onChange) {\n _this.props.onChange(selectedCell);\n }\n });\n\n return _this;\n }\n\n _createClass(LayoutButton, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.dropdownVisible !== prevProps.dropdownVisible) {\n this.setState({\n dropdownVisible: this.props.dropdownVisible\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"layout\",\n type: \"button\",\n className: \"btn btn-sm btn-default dropdown-toggle\",\n \"data-container\": \"body\",\n \"data-toggle\": \"dropdown\",\n \"aria-expanded\": \"false\",\n \"data-placement\": \"right\",\n title: \"Layout\",\n rel: \"tooltip\",\n onClick: this.onClick\n }, React.createElement(\"span\", {\n className: \"fa fa-th-large\"\n })), React.createElement(LayoutChooser, {\n visible: this.state.dropdownVisible,\n onChange: this.onChange,\n onClick: this.onClick,\n selectedCell: this.props.selectedCell\n }));\n }\n }]);\n\n return LayoutButton;\n}(PureComponent);\nLayoutButton.defaultProps = {\n dropdownVisible: false\n};\nLayoutButton.propTypes = {\n dropdownVisible: propTypes.bool.isRequired,\n onChange: propTypes.func,\n selectedCell: propTypes.object\n};\n\nvar css$3 = \".viewport-container {\\n float: left;\\n\\n border: var(--viewport-border-thickness) solid var(--ui-border-color);\\n}\\n\\n.viewport-container.active {\\n border: var(--viewport-border-thickness) solid var(--active-color);\\n}\\n\\n.EmptyViewport {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 100%;\\n color: var(--text-secondary-color);\\n}\\n\";\nstyleInject(css$3);\n\nvar css$4 = \".LayoutPanelDropTarget {\\n width: 100%;\\n height: 100%;\\n\\n opacity: 1;\\n transition: 0.3s all ease;\\n}\\n\\n.LayoutPanelDropTarget.hovered {\\n opacity: 0.5;\\n}\\n\";\nstyleInject(css$4);\n\n// if they have the same string type.\n\nvar Types$1 = {\n THUMBNAIL: 'thumbnail'\n};\nvar divTarget$1 = {\n drop: function drop(props, monitor, component) {\n var item = monitor.getItem();\n\n if (props.onDrop) {\n props.onDrop({\n viewportIndex: props.viewportIndex,\n item: item\n });\n }\n\n return {\n id: \"LayoutPanelDropTarget-\".concat(props.viewportIndex),\n viewportIndex: props.viewportIndex,\n item: item\n };\n }\n}; // TODO: Find out why we can't move this into the Example app instead.\n// It looks like the context isn't properly shared.\n\nvar LayoutPanelDropTarget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutPanelDropTarget, _Component);\n\n function LayoutPanelDropTarget() {\n _classCallCheck(this, LayoutPanelDropTarget);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LayoutPanelDropTarget).apply(this, arguments));\n }\n\n _createClass(LayoutPanelDropTarget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n canDrop = _this$props.canDrop,\n isOver = _this$props.isOver,\n connectDropTarget = _this$props.connectDropTarget;\n var isActive = canDrop && isOver;\n var className = LayoutPanelDropTarget.className;\n\n if (isActive) {\n className += ' hovered';\n } else if (canDrop) {\n className += ' can-drop';\n }\n\n return connectDropTarget(React.createElement(\"div\", {\n className: className\n }, this.props.children));\n }\n }]);\n\n return LayoutPanelDropTarget;\n}(Component);\n\n_defineProperty(LayoutPanelDropTarget, \"className\", 'LayoutPanelDropTarget');\n\n_defineProperty(LayoutPanelDropTarget, \"defaultProps\", {\n isOver: false,\n canDrop: false\n});\n\n_defineProperty(LayoutPanelDropTarget, \"propTypes\", {\n connectDropTarget: propTypes.func.isRequired,\n canDrop: propTypes.bool.isRequired,\n isOver: propTypes.bool.isRequired,\n viewportComponent: propTypes.object\n});\n\nvar collect$1 = function collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n canDrop: monitor.canDrop(),\n isOver: monitor.isOver()\n };\n};\n\nvar LayoutPanelDropTarget$1 = lib_5(Types$1.THUMBNAIL, divTarget$1, collect$1)(LayoutPanelDropTarget);\n\nfunction defaultViewportPlugin(props) {\n return React.createElement(\"div\", null, JSON.stringify(props));\n}\n\nfunction EmptyViewport() {\n return React.createElement(\"div\", {\n className: \"EmptyViewport\"\n }, React.createElement(\"p\", null, \"Please drag a stack here to view images.\"));\n}\n\nvar LayoutManager =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(LayoutManager, _Component);\n\n function LayoutManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, LayoutManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(LayoutManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDrop\", function (_ref) {\n var viewportIndex = _ref.viewportIndex,\n item = _ref.item;\n\n if (_this.props.setViewportData) {\n _this.props.setViewportData({\n viewportIndex: viewportIndex,\n item: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPluginComponent\", function (plugin) {\n var pluginComponent = _this.props.availablePlugins[plugin || _this.props.defaultPlugin];\n\n if (!pluginComponent) {\n throw new Error(\"No Viewport Plugin available for plugin \".concat(plugin, \". Available plugins: \").concat(JSON.stringify(_this.props.availablePlugins)));\n }\n\n return pluginComponent;\n });\n\n return _this;\n }\n\n _createClass(LayoutManager, [{\n key: \"getChildComponent\",\n value: function getChildComponent(plugin, data, viewportIndex) {\n if (data.displaySet) {\n var PluginComponent = this.getPluginComponent(plugin);\n return React.createElement(PluginComponent, {\n viewportData: data,\n viewportIndex: viewportIndex\n });\n }\n\n return React.createElement(EmptyViewport, null);\n }\n }, {\n key: \"getContent\",\n value: function getContent(childComponent, supportsDragAndDrop, viewportIndex) {\n if (supportsDragAndDrop) {\n return React.createElement(LayoutPanelDropTarget$1, {\n onDrop: this.onDrop,\n viewportIndex: viewportIndex\n }, childComponent);\n }\n\n return React.createElement(\"div\", {\n className: \"LayoutPanel\"\n }, childComponent);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n if (!this.props.viewportData.length) {\n return '';\n }\n\n var _this$props = this.props,\n supportsDragAndDrop = _this$props.supportsDragAndDrop,\n studies = _this$props.studies,\n viewportData = _this$props.viewportData;\n var viewports = this.props.layout.viewports;\n var viewportElements = viewports.map(function (layout, viewportIndex) {\n var displaySet = viewportData[viewportIndex];\n var data = {\n displaySet: displaySet,\n studies: studies\n };\n\n var childComponent = _this2.getChildComponent(layout.plugin, data, viewportIndex);\n\n var content = _this2.getContent(childComponent, supportsDragAndDrop, viewportIndex);\n\n var className = 'viewport-container';\n\n if (_this2.props.activeViewportIndex === viewportIndex) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n key: viewportIndex,\n className: className,\n style: _objectSpread({}, layout)\n }, content);\n });\n return React.createElement(\"div\", {\n className: LayoutManager.className\n }, viewportElements);\n }\n }]);\n\n return LayoutManager;\n}(Component);\n\n_defineProperty(LayoutManager, \"className\", 'LayoutManager');\n\n_defineProperty(LayoutManager, \"defaultProps\", {\n viewportData: [],\n layout: {\n viewports: [{\n top: 0,\n left: 0,\n height: '100%',\n width: '100%'\n }]\n },\n activeViewportIndex: 0,\n supportsDragAndDrop: true,\n availablePlugins: {\n defaultViewportPlugin: defaultViewportPlugin\n },\n defaultPlugin: 'defaultViewportPlugin'\n});\n\n_defineProperty(LayoutManager, \"propTypes\", {\n viewportData: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n activeViewportIndex: propTypes.number.isRequired,\n layout: propTypes.object.isRequired,\n availablePlugins: propTypes.object.isRequired,\n setViewportData: propTypes.func,\n studies: propTypes.array\n});\n\nvar css$5 = \".tableList {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n}\\n.tableList .tableListHeader {\\n background-color: var(--ui-gray-darker);\\n color: var(--text-secondary-color);\\n fill: var(--text-secondary-color);\\n display: flex;\\n height: 63px;\\n line-height: 63px;\\n margin-top: 2px;\\n overflow: hidden;\\n width: 100%;\\n}\\n.tableList .tableListHeader .tableListHeaderTitle {\\n color: var(--text-secondary-color);\\n font-size: 22px;\\n font-weight: 300;\\n line-height: 63px;\\n padding: 0 10px;\\n text-align: left;\\n flex: 1;\\n}\\n.tableList .tableListHeader .numberOfItems {\\n color: var(--ui-sky-blue);\\n float: right;\\n font-weight: 300;\\n font-size: 40px;\\n max-width: 54px;\\n height: 63px;\\n line-height: 66px;\\n flex: 1;\\n}\\n\";\nstyleInject(css$5);\n\nvar TableList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableList, _Component);\n\n function TableList() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableList);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableList)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getHeader\", function () {\n if (_this.props.customHeader) {\n return _this.props.customHeader;\n } else {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, _this.props.headerTitle), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, _this.props.children.length));\n }\n });\n\n return _this;\n }\n\n _createClass(TableList, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableList\"\n }, React.createElement(\"div\", {\n className: \"tableListHeader\",\n onClick: this.onHeaderClick\n }, this.getHeader()), React.createElement(\"div\", {\n className: \"tableListContent\"\n }, this.props.children));\n }\n }]);\n\n return TableList;\n}(Component);\n\n_defineProperty(TableList, \"propTypes\", {\n customHeader: propTypes.node,\n defaultItems: propTypes.object,\n children: propTypes.node.isRequired,\n headerTitle: propTypes.string\n});\n\nvar css$6 = \".tableListItem {\\n display: flex;\\n margin-left: -6px;\\n margin-top: 2px;\\n padding-left: 6px;\\n opacity: 0.7;\\n width: calc(100% + 6px);\\n}\\n.tableListItem:hover {\\n opacity: 1;\\n}\\n.tableListItem.selected {\\n opacity: 1;\\n}\\n.tableListItem.selected .itemIndex {\\n color: $activeColor;\\n}\\n.tableListItem .itemIndex {\\n background-color: var(--ui-gray);\\n color: var(--text-secondary-color);\\n cursor: pointer;\\n flex: 1;\\n max-width: 40px;\\n font-size: 14px;\\n font-weight: 400;\\n margin-right: 5px;\\n padding: 10px;\\n text-align: center;\\n}\\n.tableListItem .itemContent {\\n flex: 1;\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n margin-left: -2px;\\n}\\n\";\nstyleInject(css$6);\n\nvar TableListItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(TableListItem, _Component);\n\n function TableListItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TableListItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TableListItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event) {\n if (_this.props.onItemClick) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onItemClick(event, _this.props);\n }\n });\n\n return _this;\n }\n\n _createClass(TableListItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"tableListItem \".concat(this.props.itemClass),\n onClick: this.onItemClick\n }, React.createElement(\"div\", {\n className: \"itemIndex\"\n }, this.props.itemIndex + 1), React.createElement(\"div\", {\n className: \"itemContent\"\n }, this.props.children));\n }\n }]);\n\n return TableListItem;\n}(Component);\n\n_defineProperty(TableListItem, \"propTypes\", {\n children: propTypes.node,\n itemClass: propTypes.string,\n itemIndex: propTypes.number,\n onItemClick: propTypes.func.isRequired\n});\n\nvar css$7 = \".measurementItem .rowActions {\\n background-color: var(--ui-gray-darker);\\n height: 0;\\n overflow: hidden;\\n transition: all 0.3s ease;\\n visibility: hidden;\\n padding-left: 14px;\\n}\\n.measurementItem .rowActions .btnAction {\\n background-color: transparent;\\n border: none;\\n color: var(--default-color);\\n cursor: pointer;\\n line-height: 35px;\\n transition: all 0.3s ease;\\n}\\n.measurementItem .rowActions .btnAction:hover,\\n.measurementItem .rowActions .btnAction:active {\\n color: var(--text-primary-color);\\n}\\n.measurementItem .rowActions .btnAction i {\\n margin-right: 4px;\\n}\\n.measurementItem.selected .rowActions {\\n height: 35px;\\n visibility: visible;\\n}\\n.measurementItem .measurementLocation {\\n margin-left: 9px;\\n margin-top: 9px;\\n}\\n.measurementItem .measurementDisplayText {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n\";\nstyleInject(css$7);\n\nvar MeasurementTableItem =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTableItem, _Component);\n\n function MeasurementTableItem() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MeasurementTableItem);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MeasurementTableItem)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getDataDisplayText\", function () {\n return _this.props.measurementData.data.map(function (data, index) {\n return React.createElement(\"div\", {\n key: \"displayText_\".concat(index),\n className: \"measurementDisplayText\"\n }, data.displayText ? data.displayText : '...');\n });\n });\n\n return _this;\n }\n\n _createClass(MeasurementTableItem, [{\n key: \"render\",\n value: function render() {\n return React.createElement(TableListItem, {\n itemKey: this.props.itemKey,\n itemClass: \"measurementItem \".concat(this.props.itemClass),\n itemIndex: this.props.itemIndex,\n onItemClick: this.props.onItemClick\n }, React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"measurementLocation\"\n }, this.props.measurementData.label), React.createElement(\"div\", null, this.getDataDisplayText()), React.createElement(\"div\", {\n className: \"rowActions\"\n }, React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onRelabel\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Relabel\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onEditDescription\n }, React.createElement(\"i\", {\n className: \"fa fa-edit\"\n }), \"Description\"), React.createElement(\"button\", {\n className: \"btnAction\",\n onClick: this.props.onDelete\n }, React.createElement(\"i\", {\n className: \"fa fa-trash-o\"\n }), \"Delete\"))));\n }\n }]);\n\n return MeasurementTableItem;\n}(Component);\n\n_defineProperty(MeasurementTableItem, \"propTypes\", {\n measurementData: propTypes.object.isRequired,\n onItemClick: propTypes.func.isRequired,\n onRelabel: propTypes.func.isRequired,\n onDelete: propTypes.func.isRequired,\n onEditDescription: propTypes.func.isRequired,\n itemKey: propTypes.string.isRequired,\n itemClass: propTypes.string,\n itemIndex: propTypes.number\n});\n\nfunction throttled(delay, fn) {\n var lastCall = 0;\n return function () {\n var now = new Date().getTime();\n\n if (now - lastCall < delay) {\n return;\n }\n\n lastCall = now;\n return fn.apply(void 0, arguments);\n };\n}\n\n/**\n * Get the vertical and horizontal scrollbar sizes\n * Got from https://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\n *\n * @returns {Array} Array containing the scrollbar horizontal and vertical sizes\n */\nfunction getScrollbarSize() {\n var inner = document.createElement('p');\n inner.style.width = '100%';\n inner.style.height = '100%';\n var outer = document.createElement('div');\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.left = '0px';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.height = '100px';\n outer.style.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var w1 = inner.offsetWidth;\n var h1 = inner.offsetHeight;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n var h2 = inner.offsetHeight;\n\n if (w1 === w2) {\n w2 = outer.clientWidth;\n }\n\n if (h1 === h2) {\n h2 = outer.clientHeight;\n }\n\n document.body.removeChild(outer);\n return [w1 - w2, h1 - h2];\n}\n\nvar css$8 = \".scrollArea {\\n overflow: hidden;\\n position: relative;\\n}\\n.scrollArea .scrollable {\\n max-height: inherit;\\n overflow: hidden;\\n zoom: 1;\\n}\\n.scrollArea .scrollable.scrollX {\\n overflow-x: scroll;\\n}\\n.scrollArea .scrollable.scrollY {\\n overflow-y: scroll;\\n}\\n.scrollArea.fit {\\n height: 100%;\\n width: 100%;\\n}\\n.scrollArea.fit .scrollable {\\n bottom: 0;\\n left: 0;\\n max-height: none;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scrollArea .scrollNav {\\n background-color: rgba(0,0,0,0.75);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.75);\\n cursor: pointer;\\n height: 24px;\\n left: 10px;\\n opacity: 0;\\n position: absolute;\\n right: 10px;\\n transition: all 0.3s ease;\\n}\\n.scrollArea .scrollNav:after {\\n color: var(--active-color);\\n display: block;\\n font-family: FontAwesome;\\n font-size: 20px;\\n text-align: center;\\n transition: color 0.3s ease;\\n}\\n.scrollArea .scrollNav:hover {\\n background-color: rgba(0,0,0,0.9);\\n box-shadow: 0 0 10px 10px rgba(0,0,0,0.9);\\n}\\n.scrollArea .scrollNav:hover:after {\\n color: var(--hover-color);\\n}\\n.scrollArea .scrollNavUp {\\n border-bottom-left-radius: 24px/2;\\n border-bottom-right-radius: 24px/2;\\n top: 0;\\n transform: ranslateY(-24px);\\n}\\n.scrollArea .scrollNavUp:after {\\n content: '\\\\f102';\\n}\\n.scrollArea .scrollNavDown {\\n border-top-left-radius: 24px/2;\\n border-top-right-radius: 24px/2;\\n bottom: 0;\\n transform: translateY(24px);\\n}\\n.scrollArea .scrollNavDown:after {\\n content: '\\\\f103';\\n}\\n.scrollArea.canScrollUp .scrollNavUp,\\n.scrollArea.canScrollDown .scrollNavDown {\\n opacity: 1;\\n transform: translateY(0);\\n}\\n\";\nstyleInject(css$8);\n\nvar ScrollableArea =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollableArea, _Component);\n\n function ScrollableArea(props) {\n var _this;\n\n _classCallCheck(this, ScrollableArea);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollableArea).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavDown\", function (event) {\n var _this$scrollableEleme = _this.scrollableElement,\n currentTop = _this$scrollableEleme.scrollTop,\n height = _this$scrollableEleme.offsetHeight,\n scrollHeight = _this$scrollableEleme.scrollHeight;\n var limit = scrollHeight - height;\n var scrollTop = currentTop + _this.props.scrollStep;\n scrollTop = scrollTop > limit ? limit : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollNavUp\", function (event) {\n var currentTop = _this.scrollableElement.scrollTop;\n var scrollTop = currentTop - _this.props.scrollStep;\n scrollTop = scrollTop < 0 ? 0 : scrollTop;\n _this.scrollableElement.scrollTop = scrollTop;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"adjustMargins\", function () {\n if (_this.props.hideScrollbar) {\n var x = _this.props.scrollX ? 1 : 0;\n var y = _this.props.scrollY ? 1 : 0;\n var scrollbarSize = getScrollbarSize();\n _this.scrollableElement.style.marginRight = \"\".concat(0 - scrollbarSize[0] * y, \"px\");\n _this.scrollableElement.style.marginBottom = \"\".concat(0 - scrollbarSize[1] * x, \"px\");\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollHandler\", function () {\n var _this$scrollableEleme2 = _this.scrollableElement,\n height = _this$scrollableEleme2.offsetHeight,\n scrollTop = _this$scrollableEleme2.scrollTop,\n scrollHeight = _this$scrollableEleme2.scrollHeight;\n var scrollAreaClasses = ''; // Stop here if unable to scroll\n\n if (scrollHeight <= height) return; // Check if can scroll up\n\n if (scrollTop) {\n scrollAreaClasses += 'canScrollUp';\n } // Check if can scroll down\n\n\n if (scrollTop + height < scrollHeight) {\n scrollAreaClasses += ' canScrollDown';\n }\n\n if (_this.state.scrollAreaClasses !== scrollAreaClasses) {\n _this.setState({\n scrollAreaClasses: scrollAreaClasses\n });\n }\n });\n\n _this.state = {\n scrollAreaClasses: ''\n };\n _this.scrollHandlerThrottled = throttled(150, _this.scrollHandler);\n return _this;\n }\n\n _createClass(ScrollableArea, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var scrollableClass = 'scrollable';\n\n if (this.props.scrollableClass) {\n scrollableClass += \" \".concat(this.props.scrollableClass);\n }\n\n if (this.props.scrollX) {\n scrollableClass += \" scrollX\";\n }\n\n if (this.props.scrollY) {\n scrollableClass += \" scrollY\";\n }\n\n return React.createElement(\"div\", {\n className: \"scrollArea \".concat(this.props.class, \" \").concat(this.state.scrollAreaClasses)\n }, React.createElement(\"div\", {\n className: scrollableClass,\n ref: function ref(element) {\n _this2.scrollableElement = element;\n },\n onScroll: this.scrollHandlerThrottled,\n onMouseEnter: this.scrollHandlerThrottled,\n onTransitionEnd: this.scrollHandlerThrottled\n }, this.props.children), React.createElement(\"div\", {\n className: \"scrollNav scrollNavUp\",\n onClick: this.scrollNavUp\n }), React.createElement(\"div\", {\n className: \"scrollNav scrollNavDown\",\n onClick: this.scrollNavDown\n }));\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.adjustMargins();\n this.scrollHandler();\n window.addEventListener('resize', this.adjustMargins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.adjustMargins);\n }\n }]);\n\n return ScrollableArea;\n}(Component);\n\n_defineProperty(ScrollableArea, \"propTypes\", {\n children: propTypes.node.isRequired,\n class: propTypes.string,\n scrollableClass: propTypes.string,\n scrollX: propTypes.bool,\n scrollY: propTypes.bool,\n hideScrollbar: propTypes.bool,\n scrollStep: propTypes.number\n});\n\n_defineProperty(ScrollableArea, \"defaultProps\", {\n hideScrollbar: true,\n class: 'flex-grow fit',\n scrollY: true,\n scrollX: false,\n scrollStep: 100\n});\n\nvar css$9 = \".measurementTable {\\n background-color: var(--primary-background-color);\\n height: 100%;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n}\\n.measurementTable .maxMeasurements {\\n border-radius: 3px;\\n color: var(--primary-background-color);\\n font-size: 12px;\\n font-weight: 500;\\n height: 19px;\\n line-height: 17px;\\n margin-top: 22px;\\n margin-right: 15px;\\n padding: 2px 6px 0;\\n text-transform: uppercase;\\n transition: all 0.3s ease;\\n background-color: var(--default-color);\\n}\\n.measurementTable .measurementTableHeader {\\n padding-left: 45px;\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem {\\n display: inline-block;\\n margin-top: 9px;\\n margin-left: 9px;\\n padding-left: 9px;\\n width: 90px;\\n border-left: 1px solid var(--text-secondary-color);\\n color: var(--text-primary-color);\\n}\\n.measurementTable .measurementTableHeader .measurementTableHeaderItem .timepointLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n}\\n\";\nstyleInject(css$9);\n\nvar MeasurementTable =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MeasurementTable, _Component);\n\n function MeasurementTable(props) {\n var _this;\n\n _classCallCheck(this, MeasurementTable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MeasurementTable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurementsGroups\", function () {\n return _this.props.measurementCollection.map(function (measureGroup, index) {\n return React.createElement(TableList, {\n key: index,\n customHeader: _this.getCustomHeader(measureGroup)\n }, _this.getMeasurements(measureGroup));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMeasurements\", function (measureGroup) {\n return measureGroup.measurements.map(function (measurement, index) {\n var key = \"\".concat(measureGroup.groupName, \"_\").concat(index);\n return React.createElement(MeasurementTableItem, {\n key: key,\n itemIndex: index,\n itemKey: key,\n itemClass: _this.state.selectedKey === key ? 'selected' : '',\n measurementData: measurement,\n onItemClick: _this.onItemClick,\n onRelabel: function onRelabel() {\n alert('relabel');\n },\n onDelete: function onDelete() {\n alert('delete');\n },\n onEditDescription: function onEditDescription() {\n alert('editDescription');\n }\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getCustomHeader\", function (measureGroup) {\n return React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"tableListHeaderTitle\"\n }, measureGroup.groupName), measureGroup.maxMeasurements && React.createElement(\"div\", {\n className: \"maxMeasurements\"\n }, \"MAX \", measureGroup.maxMeasurements), React.createElement(\"div\", {\n className: \"numberOfItems\"\n }, measureGroup.measurements.length));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getTimepointsHeader\", function () {\n return _this.props.timepoints.map(function (timepoint, index) {\n return React.createElement(\"div\", {\n key: index,\n className: \"measurementTableHeaderItem\"\n }, React.createElement(\"div\", {\n className: \"timepointLabel\"\n }, timepoint.label), React.createElement(\"div\", {\n className: \"timepointDate\"\n }, timepoint.date));\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onItemClick\", function (event, itemProps) {\n _this.setState({\n selectedKey: itemProps.itemKey\n });\n });\n\n _this.state = {\n selectedKey: null\n };\n return _this;\n }\n\n _createClass(MeasurementTable, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"measurementTable\"\n }, React.createElement(\"div\", {\n className: \"measurementTableHeader\"\n }, this.getTimepointsHeader()), React.createElement(ScrollableArea, null, React.createElement(\"div\", null, this.getMeasurementsGroups())));\n }\n }]);\n\n return MeasurementTable;\n}(Component);\n\n_defineProperty(MeasurementTable, \"propTypes\", {\n measurementCollection: propTypes.array.isRequired,\n timepoints: propTypes.array.isRequired\n});\n\nvar PlayClipButton =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PlayClipButton, _Component);\n\n function PlayClipButton() {\n _classCallCheck(this, PlayClipButton);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(PlayClipButton).apply(this, arguments));\n }\n\n _createClass(PlayClipButton, [{\n key: \"render\",\n value: function render() {\n var playClass = 'fa-stop';\n\n if (this.props.isPlaying) {\n playClass = 'fa-play';\n }\n\n return React.createElement(\"div\", {\n className: \"btn-group\"\n }, React.createElement(\"button\", {\n id: \"playClip\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Play/Stop Clip\"\n }, React.createElement(\"span\", {\n className: \"fa \".concat(playClass)\n })), React.createElement(\"button\", {\n id: \"toggleCineDialog\",\n type: \"button\",\n className: \"imageViewerCommand btn btn-sm btn-default\",\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: \"Toggle CINE Dialog\"\n }, React.createElement(\"span\", {\n className: \"fa fa-youtube-play\"\n })));\n }\n }]);\n\n return PlayClipButton;\n}(Component);\nPlayClipButton.propTypes = {\n isPlaying: propTypes.bool.isRequired\n};\nPlayClipButton.defaultProps = {\n isPlaying: false\n};\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar css$a = \".RoundedButtonGroup {\\n --height: 25px;\\n\\n position: relative;\\n z-index: 0;\\n}\\n\\n.roundedButtonWrapper {\\n cursor: pointer;\\n display: inline-block;\\n float: left;\\n margin-left: -2px;\\n text-decoration: none;\\n text-align: center;\\n}\\n\\n.roundedButtonWrapper.disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper .roundedButton {\\n align-items: center;\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--ui-border-color-dark);\\n color: var(--text-secondary-color);\\n display: flex;\\n font-size: 11px;\\n font-weight: 500;\\n justify-content: center;\\n height: var(--height);\\n line-height: var(--height);\\n padding: 0 22px;\\n position: relative;\\n text-transform: uppercase;\\n transition: var(--sidebar-transition);\\n z-index: 1;\\n}\\n\\n.roundedButtonWrapper .roundedButton svg {\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n\\n.roundedButtonWrapper\\n .roundedButton\\n svg\\n .roundedButtonWrapper\\n .roundedButton\\n span {\\n margin: 0 2px;\\n}\\n\\n.roundedButtonWrapper .roundedButton i {\\n line-height: 15px;\\n font-size: 15px;\\n}\\n\\n.bottomLabel {\\n color: var(--text-secondary-color);\\n font-size: 12px;\\n font-weight: 500;\\n line-height: 12px;\\n margin-top: 8px;\\n}\\n\\n.roundedButtonWrapper:first-child {\\n margin-left: 0;\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:first-child .roundedButton {\\n border-bottom-left-radius: var(--height);\\n border-top-left-radius: var(--height);\\n}\\n\\n.RoundedButtonGroup .roundedButtonWrapper:last-child .roundedButton {\\n border-bottom-right-radius: var(--height);\\n border-top-right-radius: var(--height);\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton {\\n background-color: var(--box-background-color);\\n color: var(--ui-gray-dark);\\n}\\n\\n.roundedButtonWrapper.active .roundedButton {\\n background-color: var(--active-color);\\n border-color: var(--ui-border-color-active);\\n color: var(--ui-gray-dark);\\n z-index: 2;\\n}\\n\\n.roundedButtonWrapper:hover .roundedButton svg,\\n.roundedButtonWrapper.active .roundedButton svg {\\n fill: var(--ui-gray-dark);\\n stroke: var(--ui-gray-dark);\\n}\\n\";\nstyleInject(css$a);\n\nvar RoundedButtonGroup =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(RoundedButtonGroup, _Component);\n\n function RoundedButtonGroup() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, RoundedButtonGroup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RoundedButtonGroup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClickOption\", function (value) {\n var newValue = value;\n\n if (_this.props.value === value) {\n newValue = null;\n }\n\n if (_this.props.onValueChanged) {\n _this.props.onValueChanged(newValue);\n }\n });\n\n return _this;\n }\n\n _createClass(RoundedButtonGroup, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var className = classnames(RoundedButtonGroup.className, 'clearfix center-table');\n var buttons = this.props.options.map(function (option, index) {\n var className = classnames({\n roundedButtonWrapper: true,\n noselect: true,\n active: _this2.props.value === option.value\n });\n var optionSVG;\n\n if (option.svgLink) {\n var svgStyle = {\n width: \"\".concat(option.svgWidth, \"px\"),\n height: \"\".concat(option.svgHeight, \"px\")\n };\n optionSVG = React.createElement(\"svg\", {\n style: svgStyle\n }, React.createElement(\"use\", {\n xlinkHref: option.svgLink\n }));\n }\n\n var optionText = option.text && React.createElement(\"span\", null, option.text);\n var optionIcon = option.iconClasses && React.createElement(\"i\", {\n className: option.iconClasses\n });\n var bottomLabel = option.bottomLabel && React.createElement(\"div\", {\n className: \"bottomLabel\"\n }, option.bottomLabel);\n return React.createElement(\"div\", {\n key: index,\n className: className,\n onClick: function onClick() {\n return _this2.onClickOption(option.value);\n }\n }, React.createElement(\"div\", {\n className: \"roundedButton\"\n }, optionSVG, optionText, optionIcon), bottomLabel);\n });\n return React.createElement(\"div\", {\n className: className\n }, buttons);\n }\n }]);\n\n return RoundedButtonGroup;\n}(Component);\n\n_defineProperty(RoundedButtonGroup, \"className\", 'RoundedButtonGroup');\n\n_defineProperty(RoundedButtonGroup, \"propTypes\", {\n options: propTypes.array,\n value: propTypes.string,\n onValueChanged: propTypes.func\n});\n\n_defineProperty(RoundedButtonGroup, \"defaultProps\", {\n options: [],\n value: null\n});\n\nvar css$b = \".dd-menu {\\n float: left;\\n margin-right: 10px;\\n cursor: pointer;\\n position: relative;\\n z-index: 999;\\n}\\n\\n.dd-title {\\n font-size: 13px;\\n}\\n\\n.dd-menu-toggle {\\n display: inline-block;\\n}\\n\\n.dd-caret-down {\\n display: inline-block;\\n width: 0;\\n height: 0;\\n margin-top: 0.5rem;\\n margin-left: 0.5rem;\\n border-top: 5px solid;\\n border-right: 5px solid transparent;\\n border-left: 5px solid transparent;\\n}\\n\\n.dd-menu-list {\\n position: absolute;\\n top: 100%;\\n margin-top: 10px;\\n background: white;\\n border-radius: 5px;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n -ms-border-radius: 5px;\\n -o-border-radius: 5px;\\n overflow: hidden;\\n transition: all 300ms ease;\\n -webkit-transition: all 300ms ease;\\n -moz-transition: all 300ms ease;\\n -ms-transition: all 300ms ease;\\n -o-transition: all 300ms ease;\\n}\\n\\n.dd-menu-list.open {\\n display: inline-block;\\n}\\n\\n.dd-menu-list.left {\\n left: 0;\\n}\\n\\n.dd-menu-list.right {\\n right: 0;\\n}\\n\\n.dd-menu-list.center {\\n left: 50%;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n -moz-transform: translateX(-50%);\\n -ms-transform: translateX(-50%);\\n -o-transform: translateX(-50%);\\n}\\n\\n.dd-item {\\n display: flex;\\n color: var(--text-color-active);\\n padding: 10px 15px;\\n border-bottom: 1px solid #ccc;\\n}\\n\\n.dd-item:hover {\\n text-decoration: none;\\n background: #eee;\\n}\\n\\n.dd-item:last-child {\\n border-bottom: none;\\n}\\n\\n.dd-item-icon {\\n width: 10px;\\n text-align: center;\\n margin-right: 10px;\\n}\\n\\n.dd-item-icon:before {\\n vertical-align: middle;\\n}\\n\";\nstyleInject(css$b);\n\nvar Dropdown =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Dropdown, _Component);\n\n function Dropdown() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Dropdown);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Dropdown)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n open: false\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderList\", function () {\n var _this$props = _this.props,\n list = _this$props.list,\n align = _this$props.align;\n\n if (!_this.state.open) {\n return null;\n }\n\n return React.createElement(\"div\", {\n className: \"dd-menu-list \".concat(align || 'left')\n }, list.map(function (_ref, key) {\n var icon = _ref.icon,\n title = _ref.title,\n link = _ref.link,\n _onClick = _ref.onClick;\n return React.createElement(\"a\", {\n href: link || '#',\n key: key,\n className: \"dd-item\",\n onClick: function onClick() {\n return _this.handleOnClick(_onClick);\n }\n }, icon && React.createElement(\"span\", {\n className: \"dd-item-icon \".concat(icon)\n }), React.createElement(\"span\", null, title));\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleOnClick\", function (onClick) {\n _this.toggleList();\n\n if (onClick) {\n onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMouseClick\", function (e) {\n if (_this.node.contains(e.target)) {\n return;\n }\n\n _this.toggleList();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderTitleElement\", function () {\n var _this$props2 = _this.props,\n titleElement = _this$props2.titleElement,\n title = _this$props2.title;\n\n if (titleElement) {\n return titleElement;\n }\n\n return React.createElement(React.Fragment, null, React.createElement(\"span\", {\n className: \"dd-title\"\n }, title), React.createElement(\"span\", {\n className: \"dd-caret-down\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"toggleList\", function () {\n var open = _this.state.open;\n var state = true;\n document.addEventListener('mousedown', _this.handleMouseClick, false);\n\n if (open) {\n document.removeEventListener('mousedown', _this.handleMouseClick, false);\n state = false;\n }\n\n _this.setState({\n open: state\n });\n });\n\n return _this;\n }\n\n _createClass(Dropdown, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", {\n className: \"dd-menu\",\n ref: function ref(node) {\n return _this2.node = node;\n }\n }, React.createElement(\"div\", {\n className: \"dd-menu-toggle\",\n onClick: this.toggleList\n }, this.renderTitleElement()), this.renderList());\n }\n }]);\n\n return Dropdown;\n}(Component);\n\n_defineProperty(Dropdown, \"propTypes\", {\n titleElement: propTypes.node,\n title: propTypes.string,\n align: propTypes.oneOf(['left', 'center', 'right']),\n list: propTypes.arrayOf(propTypes.shape({\n title: propTypes.string.isRequired,\n icon: propTypes.string,\n onClick: propTypes.func,\n link: propTypes.string\n }))\n});\n\nvar InputRadio =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InputRadio, _Component);\n\n function InputRadio() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, InputRadio);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(InputRadio)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (evt) {\n _this.props.onSelected(evt, _this.props.itemData);\n });\n\n return _this;\n }\n\n _createClass(InputRadio, [{\n key: \"render\",\n value: function render() {\n var labelClass = this.props.labelClass ? this.props.labelClass : '';\n return React.createElement(\"label\", {\n className: 'wrapperLabel radioLabel ' + labelClass,\n htmlFor: this.props.id\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: this.props.id,\n className: \"radioInput\",\n value: this.props.value,\n onChange: this.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, this.props.label));\n }\n }]);\n\n return InputRadio;\n}(Component);\n\nInputRadio.propTypes = {\n value: propTypes.string,\n label: propTypes.string.isRequired,\n itemData: propTypes.object.isRequired,\n labelClass: propTypes.string,\n id: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar SelectTreeBreadcrumb =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTreeBreadcrumb, _Component);\n\n function SelectTreeBreadcrumb() {\n _classCallCheck(this, SelectTreeBreadcrumb);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SelectTreeBreadcrumb).apply(this, arguments));\n }\n\n _createClass(SelectTreeBreadcrumb, [{\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"selectTreeBreadcrumb\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel radioLabel\",\n htmlFor: \"selectTreeBreadcrumb\"\n }, React.createElement(\"input\", {\n type: \"radio\",\n id: \"selectTreeBreadcrumb\",\n className: \"treeNode radioInput\",\n value: this.props.value,\n onChange: this.props.onSelected\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }, React.createElement(\"span\", {\n className: \"backIcon\"\n }, React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: \"/icons.svg#fast-backward\"\n }))), this.props.label)));\n }\n }]);\n\n return SelectTreeBreadcrumb;\n}(Component);\n\nSelectTreeBreadcrumb.propTypes = {\n label: propTypes.string.isRequired,\n value: propTypes.string.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar css$c = \".selectTreeRoot {\\n text-align: initial;\\n width: 320px;\\n max-height: inherit;\\n font-size: 14px;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeContent {\\n max-height: inherit;\\n overflow: hidden;\\n border: 1px solid #c4c4c4;\\n border-radius: 5px;\\n background-color: #fff;\\n display: flex;\\n flex-direction: column;\\n}\\n.selectTreeRoot .treeHeader {\\n background-color: #c0c0c0;\\n border-bottom: 1px solid #c4c4c4;\\n color: #303030;\\n padding: 5px;\\n text-align: center;\\n}\\n.selectTreeRoot .treeHeader .wrapperText {\\n font-weight: bold;\\n padding-bottom: 2px;\\n}\\n.selectTreeRoot .treeHeader .wrapperSearch {\\n width: 100%;\\n}\\n.selectTreeRoot .treeHeader .searchIcon {\\n position: absolute;\\n width: 18px;\\n height: 15px;\\n margin: 10px;\\n color: #a3a3a3;\\n}\\n.selectTreeRoot .treeHeader .searchInput {\\n width: 100%;\\n height: 34px;\\n padding: 6px 12px 6px 35px;\\n background-color: #fff;\\n background-image: none;\\n border: 1px solid #9b9b9b;\\n border-radius: 4px;\\n font-size: 14px;\\n line-height: 1.42857143;\\n color: #555;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.selectTreeRoot .treeHeader .searchInput:focus {\\n outline: 0;\\n box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(102,175,233,0.6);\\n}\\n.selectTreeRoot .wrapperText {\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .wrapperLabel {\\n cursor: pointer;\\n padding: 0 12px;\\n height: 41px;\\n width: 100%;\\n line-height: 41px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon {\\n padding-right: 10px;\\n}\\n.selectTreeRoot .selectTreeBreadcrumb .backIcon svg {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n top: 2px;\\n color: #457fb0;\\n}\\n.selectTreeRoot .treeOptions {\\n overflow: auto;\\n height: 100%;\\n}\\n.selectTreeRoot .treeOptions .selectTreeBreadcrumb + .treeInputsWrapper .treeInputs .treeLeaf {\\n border: none;\\n height: initial;\\n line-height: 26px;\\n}\\n.selectTreeRoot .treeOptions > .treeInputsWrapper > .treeInputs .treeLeaf {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .treeNode,\\n.selectTreeRoot .treeLeaf {\\n cursor: pointer;\\n display: block;\\n overflow: hidden;\\n font-weight: normal;\\n box-shadow: 0 0 0 200px transparent;\\n padding: 0 12px;\\n}\\n.selectTreeRoot .treeNode {\\n border-bottom: 1px solid #ccc;\\n height: 41px;\\n line-height: 41px;\\n}\\n.selectTreeRoot .radioLabel .radioInput {\\n display: none;\\n}\\n\";\nstyleInject(css$c);\n\nvar SelectTree =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SelectTree, _Component);\n\n function SelectTree(props) {\n var _this;\n\n _classCallCheck(this, SelectTree);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SelectTree).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"componentDidUpdate\", function () {\n _this.props.onComponentChange();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isLeafSelected\", function (item) {\n return item && !Array.isArray(item.items);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getLabelClass\", function (item) {\n var labelClass = 'treeLeaf';\n\n if (_this.state.searchTerm || Array.isArray(item.items)) {\n labelClass = 'treeNode';\n }\n\n return labelClass;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"headerItem\", function () {\n var title = _this.props.selectTreeFirstTitle;\n\n if (_this.state.currentNode && _this.props.selectTreeSecondTitle) {\n title = _this.props.selectTreeSecondTitle;\n }\n\n return React.createElement(\"div\", {\n className: \"wrapperLabel treeHeader\"\n }, React.createElement(\"div\", {\n className: \"wrapperText\"\n }, title), _this.props.searchEnabled && React.createElement(\"div\", {\n className: \"wrapperSearch\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lg fa-search searchIcon\"\n }), React.createElement(\"input\", {\n type: \"text\",\n className: \"searchInput\",\n placeholder: \"Search labels\",\n autoFocus: true,\n onChange: _this.searchLocations,\n value: _this.state.searchTerm ? _this.state.searchTerm : ''\n })));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"searchLocations\", function (evt) {\n _this.setState({\n currentNode: null,\n searchTerm: evt.currentTarget.value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onSelected\", function (event, item) {\n if (_this.isLeafSelected(item)) {\n _this.setState({\n searchTerm: null,\n currentNode: null,\n value: null\n });\n\n return _this.props.onSelected(event, item);\n } else {\n _this.setState({\n currentNode: item\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onBreadcrumbSelected\", function () {\n _this.setState({\n currentNode: null\n });\n });\n\n _this.state = {\n searchTerm: null,\n currentNode: null,\n value: null\n };\n return _this;\n }\n\n _createClass(SelectTree, [{\n key: \"render\",\n value: function render() {\n var treeItems = this.getTreeItems();\n return React.createElement(\"div\", {\n className: \"selectTree selectTreeRoot\"\n }, React.createElement(\"div\", {\n className: \"treeContent\"\n }, this.headerItem(), React.createElement(\"div\", {\n className: \"treeOptions\"\n }, this.state.currentNode && React.createElement(SelectTreeBreadcrumb, {\n onSelected: this.onBreadcrumbSelected,\n label: this.state.currentNode.label,\n value: this.state.currentNode.value\n }), React.createElement(\"div\", {\n className: \"treeInputsWrapper\"\n }, React.createElement(\"div\", {\n className: \"treeInputs\"\n }, treeItems)))));\n }\n }, {\n key: \"getTreeItems\",\n value: function getTreeItems() {\n var _this2 = this;\n\n var storageKey = 'SelectTree';\n var treeItems;\n\n if (this.state.searchTerm) {\n var filteredItems = [];\n var rawItems = lodash_clonedeep(this.props.items);\n rawItems.forEach(function (item) {\n if (Array.isArray(item.items)) {\n item.items.forEach(function (item) {\n var label = item.label.toLowerCase();\n\n var searchTerm = _this2.state.searchTerm.toLowerCase();\n\n if (label.indexOf(searchTerm) !== -1) {\n filteredItems.push(item);\n }\n });\n }\n });\n treeItems = filteredItems;\n } else if (this.state.currentNode) {\n treeItems = lodash_clonedeep(this.state.currentNode.items);\n } else {\n treeItems = lodash_clonedeep(this.props.items);\n }\n\n return treeItems.map(function (item, index) {\n var itemKey = index;\n\n if (_this2.state.currentNode) {\n itemKey += \"_\".concat(_this2.state.currentNode.value);\n }\n\n return React.createElement(InputRadio, {\n key: itemKey,\n id: \"\".concat(storageKey, \"_\").concat(item.value),\n name: index,\n itemData: item,\n value: item.value,\n label: item.label,\n labelClass: _this2.getLabelClass(item),\n onSelected: _this2.onSelected\n });\n });\n }\n }]);\n\n return SelectTree;\n}(Component);\n\n_defineProperty(SelectTree, \"defaultProps\", {\n searchEnabled: true,\n selectTreeFirstTitle: 'First Level itens',\n items: []\n});\n\nSelectTree.propTypes = {\n searchEnabled: propTypes.bool,\n selectTreeFirstTitle: propTypes.string,\n selectTreeSecondTitle: propTypes.string,\n onComponentChange: propTypes.func,\n items: propTypes.array.isRequired,\n onSelected: propTypes.func.isRequired\n};\n\nvar css$d = \".simpleDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n z-index: 1000;\\n border: 0;\\n border-radius: 6px;\\n background-color: var(--ui-gray-darker);\\n}\\n.simpleDialog .header {\\n border-bottom: 3px solid var(--primary-background-color);\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.simpleDialog .header .title {\\n font-size: 20px;\\n font-weight: 600;\\n line-height: 24px;\\n padding-right: 40px;\\n color: var(--text-secondary-color);\\n margin: 0;\\n}\\n.simpleDialog .header .closeBtn {\\n -webkit-transform: translateY(-50%);\\n color: var(--text-secondary-color);\\n height: 20px;\\n opacity: 1;\\n overflow: hidden;\\n padding: 2px;\\n position: absolute;\\n right: 21px;\\n text-align: center;\\n text-shadow: none;\\n top: 50%;\\n transform: translateY(-50%);\\n transition: color 0.3s ease;\\n width: 20px;\\n}\\n.simpleDialog .header .closeIcon {\\n color: transparent;\\n display: block;\\n font-size: 0;\\n height: 100%;\\n line-height: 0;\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n}\\n.simpleDialog .header .closeIcon:after,\\n.simpleDialog .header .closeIcon:before {\\n content: ' ';\\n display: block;\\n height: 2px;\\n transition: background-color 0.3s ease;\\n width: 19px;\\n background-color: var(--text-secondary-color);\\n}\\n.simpleDialog .header .closeIcon:before {\\n left: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(45deg);\\n transform: rotate(45deg);\\n -webkit-transform-origin: 1px 50%;\\n transform-origin: 1px 50%;\\n}\\n.simpleDialog .header .closeIcon:after {\\n right: 1px;\\n position: absolute;\\n top: 1px;\\n -webkit-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-transform-origin: calc(100% - 1px) 50%;\\n transform-origin: calc(100% - 1px) 50%;\\n}\\n.simpleDialog .content {\\n padding: 16px 22px 25px;\\n position: relative;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .content .simpleDialogSelect,\\n.simpleDialog .content .simpleDialogInput {\\n background-color: var(--input-background-color);\\n color: var(--text-primary-color);\\n border: 0;\\n border-radius: 2px;\\n font-size: 14px;\\n height: 30px;\\n width: 100%;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n margin-top: 10px;\\n display: block;\\n}\\n.simpleDialog .content .simpleDialogLabelFor {\\n font-size: 14px;\\n font-weight: 700;\\n line-height: 16px;\\n margin: 10px 0 0 0;\\n color: var(--text-primary-color);\\n}\\n.simpleDialog .footer {\\n padding: 15px;\\n text-align: right;\\n}\\n.simpleDialog .footer .btn {\\n margin-left: 5px;\\n}\\n\";\nstyleInject(css$d);\n\nvar SimpleDialog =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SimpleDialog, _Component);\n\n function SimpleDialog() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SimpleDialog);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SimpleDialog)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClose\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onClose();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onConfirm\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.props.onConfirm();\n });\n\n return _this;\n }\n\n _createClass(SimpleDialog, [{\n key: \"render\",\n value: function render() {\n return React.createElement(React.Fragment, null, this.props.isOpen && React.createElement(\"div\", {\n className: \"simpleDialog \".concat(this.props.rootClass, \" \"),\n ref: this.props.componentRef,\n style: this.props.componentStyle\n }, React.createElement(\"form\", null, React.createElement(\"div\", {\n className: \"header\"\n }, React.createElement(\"span\", {\n className: \"closeBtn\",\n onClick: this.onClose\n }, React.createElement(\"span\", {\n className: \"closeIcon\"\n }, \"x\")), React.createElement(\"h4\", {\n className: \"title\"\n }, this.props.headerTitle)), React.createElement(\"div\", {\n className: \"content\"\n }, this.props.children), React.createElement(\"div\", {\n className: \"footer\"\n }, React.createElement(\"button\", {\n className: \"btn btn-default\",\n onClick: this.onClose\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.onConfirm\n }, \"Confirm\")))));\n }\n }]);\n\n return SimpleDialog;\n}(Component);\n\n_defineProperty(SimpleDialog, \"defaultProps\", {\n isOpen: true,\n componentStyle: {},\n rootClass: ''\n});\n\nSimpleDialog.propTypes = {\n headerTitle: propTypes.string.isRequired,\n onClose: propTypes.func.isRequired,\n onConfirm: propTypes.func.isRequired\n};\n\nfunction ViewportLoadingIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, \"Loading \", props.percentComplete);\n}\nViewportLoadingIndicator.propTypes = {\n percentComplete: propTypes.number\n};\n\nfunction ViewportErrorIndicator(props) {\n return React.createElement(\"div\", {\n className: \"loadingIndicator\",\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n margin: 'auto',\n textAlign: 'center',\n pointerEvents: 'none'\n }\n }, React.createElement(\"p\", null, \"Error\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, props.details));\n}\nViewportErrorIndicator.propTypes = {\n details: propTypes.string\n};\n\nvar css$e = \":root {\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n --primary-background-color: #000;\\n --ui-border-color-dark: #3c5d80;\\n --sidebar-transition: all 0.3s ease;\\n}\\n.ThumbnailEntry.active .ImageThumbnail {\\n border-color: var(--active-color);\\n box-shadow: none;\\n transition: var(--sidebar-transition);\\n}\\n.ImageThumbnail {\\n background-color: var(--primary-background-color);\\n box-shadow: inset 0 0 0 1px var(--ui-border-color-dark);\\n border: 5px solid transparent;\\n border-radius: 12px;\\n height: 135px;\\n margin: 0 auto;\\n padding: 5px;\\n position: relative;\\n transition: var(--sidebar-transition);\\n width: 217px;\\n -moz-background-clip: padding;\\n -webkit-background-clip: padding;\\n background-clip: padding-box;\\n}\\n.image-thumbnail-canvas {\\n height: 100%;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n}\\n.image-thumbnail-canvas img {\\n -webkit-user-drag: none;\\n}\\n.thumbnailLoadingIndicator {\\n display: none;\\n pointer-events: none;\\n color: var(--text-secondary-color);\\n height: 20px;\\n width: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n margin: auto;\\n position: absolute;\\n}\\n.thumbnailLoadingIndicator.d-block {\\n display: block;\\n}\\n.thumbnailLoadingIndicator p {\\n text-align: center;\\n font-size: 10pt;\\n}\\n.image-thumbnail-progress-bar {\\n position: relative;\\n width: 100%;\\n height: 3px;\\n top: -5px;\\n}\\n.image-thumbnail-progress-bar .image-thumbnail-progress-bar-inner {\\n height: 100%;\\n width: 0;\\n border-radius: 5px;\\n background-color: var(--active-color);\\n}\\n\";\nstyleInject(css$e);\n\n// - Passed in as a prop?\n// - Set as external dependency?\n// - Pass in the entire load and render function as a prop?\n//import cornerstone from 'cornerstone-core';\n\n/**\n * Asynchronous wrapper around Cornerstone's renderToCanvas method.\n *\n * @param {HTMLElement} canvasElement An HTML element\n * @param {Image} image A Cornerstone Image\n *\n * @return {Promise} A promise tracking the progress of the rendering. Resolves empty.\n */\n\nfunction renderAsync(canvasElement, image) {\n return new Promise(function (resolve, reject) {\n try {\n cornerstone.renderToCanvas(canvasElement, image);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n}\n\nvar ImageThumbnail =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageThumbnail, _PureComponent);\n\n function ImageThumbnail(props) {\n var _this;\n\n _classCallCheck(this, ImageThumbnail);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ImageThumbnail).call(this, props));\n _this.canvas = React.createRef();\n var renderIntoCanvas = _this.props.imageId && !_this.props.imageSrc;\n _this.state = {\n loading: renderIntoCanvas\n };\n return _this;\n }\n\n _createClass(ImageThumbnail, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n\n if (renderIntoCanvas) {\n var imageId = this.props.imageId;\n var canvas = this.canvas.current;\n cornerstone.loadAndCacheImage(imageId).then(function (image) {\n renderAsync(canvas, image).then(function () {\n _this2.setState({\n loading: false\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }, function (error) {\n // TODO: Set state?\n throw new Error(error);\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var loadingOrError;\n\n if (this.props.error) {\n loadingOrError = React.createElement(ViewportErrorIndicator, null);\n } else if (this.state.loading) {\n loadingOrError = React.createElement(ViewportLoadingIndicator, null);\n }\n\n var showStackLoadingProgressBar = this.props.stackPercentComplete !== undefined;\n var renderIntoCanvas = this.props.imageId && !this.props.imageSrc;\n return React.createElement(\"div\", {\n className: \"ImageThumbnail\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-canvas\"\n }, renderIntoCanvas ? React.createElement(\"canvas\", {\n ref: this.canvas,\n width: this.props.width,\n height: this.props.height\n }) : React.createElement(\"img\", {\n className: \"static-image\",\n src: this.props.imageSrc //width={this.props.width}\n ,\n height: this.props.height,\n alt: ''\n })), loadingOrError, showStackLoadingProgressBar && React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar\"\n }, React.createElement(\"div\", {\n className: \"image-thumbnail-progress-bar-inner\",\n style: {\n width: \"\".concat(this.props.stackPercentComplete, \"%\")\n }\n })));\n }\n }]);\n\n return ImageThumbnail;\n}(PureComponent);\n\n_defineProperty(ImageThumbnail, \"propTypes\", {\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n width: propTypes.number.isRequired,\n height: propTypes.number.isRequired,\n stackPercentComplete: propTypes.number.isRequired\n});\n\n_defineProperty(ImageThumbnail, \"defaultProps\", {\n error: false,\n stackPercentComplete: 0,\n width: 217,\n height: 123\n});\n\nvar css$f = \":root {\\n --series-count-background-color: #678696;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --active-color: #20a5d6;\\n}\\n.ThumbnailEntry {\\n cursor: pointer;\\n display: table;\\n}\\n.ThumbnailEntry .p-x-1 {\\n padding: 0 1rem;\\n}\\n.ThumbnailEntry .series-details {\\n display: flex;\\n flex-direction: row;\\n color: var(--text-primary-color);\\n font-size: 14px;\\n line-height: 1.3em;\\n margin-top: 5px;\\n margin-left: 1rem;\\n margin-right: 1rem;\\n max-width: 217px;\\n min-height: 36px;\\n position: relative;\\n word-wrap: break-word;\\n}\\n.ThumbnailEntry .series-details .series-description {\\n flex-grow: 1;\\n}\\n.ThumbnailEntry .series-details.info-only .series-description {\\n display: none;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information {\\n display: flex;\\n flex-grow: 1;\\n float: none;\\n max-width: none;\\n padding-right: 0;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item {\\n flex: 1;\\n text-align: center;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .icon,\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n display: inline;\\n float: none;\\n line-height: 25px;\\n}\\n.ThumbnailEntry .series-details.info-only .series-information .item .value {\\n margin-left: 0;\\n width: auto;\\n}\\n.ThumbnailEntry .series-information {\\n padding-right: 4px;\\n max-width: 50px;\\n}\\n.ThumbnailEntry .series-information .item-frames .icon {\\n height: 18px;\\n}\\n.ThumbnailEntry .series-information .value {\\n color: var(--text-secondary-color);\\n display: inline-block;\\n float: right;\\n font-size: 12px;\\n margin-left: 4px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: calc(100% - 15px);\\n}\\n.ThumbnailEntry .series-information .icon {\\n color: var(--active-color);\\n display: inline-block;\\n float: left;\\n font-size: 10px;\\n font-weight: 900;\\n text-align: right;\\n width: 11px;\\n}\\n.ThumbnailEntry .series-information .icon div {\\n background-color: var(--series-count-background-color);\\n margin-top: 6px;\\n position: relative;\\n}\\n.ThumbnailEntry .series-information .icon div:after {\\n background-color: var(--active-color);\\n box-shadow: 1px 1px rgba(0,0,0,0.115);\\n left: -5px;\\n position: absolute;\\n top: -5px;\\n}\\n.ThumbnailEntry .series-information .icon div,\\n.ThumbnailEntry .series-information .icon div:after {\\n border: 1px solid var(--series-count-background-color);\\n content: '';\\n display: inline-block;\\n height: 11px;\\n width: 11px;\\n}\\n.image-thumbnail-clone {\\n z-index: 100000;\\n pointer-events: none;\\n}\\n.image-thumbnail-clone:hover {\\n border-color: var(--hover-color);\\n box-shadow: none;\\n}\\n\";\nstyleInject(css$f);\n\nvar ThumbnailEntry =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntry, _Component);\n\n function ThumbnailEntry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThumbnailEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThumbnailEntry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClick\", function () {\n if (_this.props.onClick) {\n _this.props.onClick();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDoubleClick\", function () {\n if (_this.props.onDoubleClick) {\n _this.props.onDoubleClick();\n }\n });\n\n return _this;\n }\n\n _createClass(ThumbnailEntry, [{\n key: \"render\",\n value: function render() {\n var hasInstanceNumber = this.props.instanceNumber !== undefined;\n var className = classnames('ThumbnailEntry noselect', {\n active: this.props.active\n });\n return React.createElement(\"div\", {\n className: className,\n onClick: this.onClick,\n onDoubleClick: this.onDoubleClick,\n onMouseDown: this.onMouseDown\n }, React.createElement(\"div\", {\n className: \"p-x-1\"\n }, React.createElement(ImageThumbnail, {\n imageSrc: this.props.imageSrc,\n imageId: this.props.imageId,\n error: this.props.error,\n stackPercentComplete: this.props.stackPercentComplete\n })), React.createElement(\"div\", {\n className: 'series-details'\n }, React.createElement(\"div\", {\n className: \"series-description\"\n }, this.props.seriesDescription), React.createElement(\"div\", {\n className: \"series-information\"\n }, React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"S:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.seriesNumber)), hasInstanceNumber && React.createElement(\"div\", {\n className: \"item item-series clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, \"I:\"), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.instanceNumber)), React.createElement(\"div\", {\n className: \"item item-frames clearfix\"\n }, React.createElement(\"div\", {\n className: \"icon\"\n }, React.createElement(\"div\", null)), React.createElement(\"div\", {\n className: \"value\"\n }, this.props.numImageFrames)))));\n }\n }]);\n\n return ThumbnailEntry;\n}(Component);\n\n_defineProperty(ThumbnailEntry, \"defaultProps\", {\n active: false,\n error: false,\n stackPercentComplete: 0\n});\n\n_defineProperty(ThumbnailEntry, \"propTypes\", {\n id: propTypes.string.isRequired,\n imageSrc: propTypes.string,\n imageId: propTypes.string,\n error: propTypes.bool.isRequired,\n active: propTypes.bool.isRequired,\n stackPercentComplete: propTypes.number,\n seriesDescription: propTypes.string,\n seriesNumber: propTypes.string,\n instanceNumber: propTypes.string,\n numImageFrames: propTypes.number,\n onDoubleClick: propTypes.func,\n onClick: propTypes.func\n});\n\n// if they have the same string type.\n\nvar Types$2 = {\n THUMBNAIL: 'thumbnail'\n};\nvar thumbnailSource = {\n /*canDrag(props) {\n return props.error === false;\n },*/\n beginDrag: function beginDrag(props) {\n return props;\n },\n endDrag: function endDrag(props, monitor) {\n //const item = monitor.getItem();\n var dropResult = monitor.getDropResult();\n }\n};\n\nvar ThumbnailEntryDragSource =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ThumbnailEntryDragSource, _Component);\n\n function ThumbnailEntryDragSource() {\n _classCallCheck(this, ThumbnailEntryDragSource);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThumbnailEntryDragSource).apply(this, arguments));\n }\n\n _createClass(ThumbnailEntryDragSource, [{\n key: \"render\",\n value: function render() {\n var connectDragSource = this.props.connectDragSource;\n var dropEffect = 'copy';\n return connectDragSource(React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, this.props)), {\n dropEffect: dropEffect\n });\n }\n }]);\n\n return ThumbnailEntryDragSource;\n}(Component);\n\n_defineProperty(ThumbnailEntryDragSource, \"propTypes\", {\n connectDragSource: propTypes.func.isRequired,\n isDragging: propTypes.bool.isRequired\n});\n\n_defineProperty(ThumbnailEntryDragSource, \"defaultProps\", {\n isDragging: false\n});\n\nvar collect$2 = function collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging()\n };\n};\n\nvar ThumbnailEntryDragSource$1 = lib_4(Types$2.THUMBNAIL, thumbnailSource, collect$2)(ThumbnailEntryDragSource);\n\nvar css$g = \".StudyBrowser {\\n float: left;\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n background-color: #000;\\n padding-bottom: 20px;\\n}\\n.StudyBrowser .scrollable-study-thumbnails {\\n height: 100%;\\n overflow-y: auto;\\n overflow-x: hidden;\\n padding-bottom: 50px;\\n padding-right: 16px;\\n padding-left: 4px;\\n margin-right: -16px;\\n display: flex;\\n flex-direction: column;\\n}\\n.StudyBrowser .scrollable-study-thumbnails::-webkit-scrollbar {\\n display: none;\\n}\\n.StudyBrowser .scrollable-study-thumbnails .ThumbnailEntryContainer {\\n margin: 0 auto;\\n padding-top: 1rem;\\n padding-bottom: 1.5rem;\\n}\\n.draggable {\\n cursor: copy;\\n cursor: -webkit-grab;\\n cursor: -moz-grab;\\n}\\n\";\nstyleInject(css$g);\n\nvar StudyBrowser =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyBrowser, _Component);\n\n function StudyBrowser() {\n _classCallCheck(this, StudyBrowser);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudyBrowser).apply(this, arguments));\n }\n\n _createClass(StudyBrowser, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var studies = this.props.studies;\n var thumbnails = studies.map(function (study, studyIndex) {\n return study.thumbnails.map(function (thumb, thumbIndex) {\n if (_this.props.supportsDragAndDrop) {\n return React.createElement(ThumbnailEntryDragSource$1, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"ThumbnailEntryContainer\"\n }, React.createElement(ThumbnailEntry, _extends({\n key: \"\".concat(studyIndex, \"_\").concat(thumbIndex)\n }, study, thumb, {\n id: \"\".concat(studyIndex, \"_\").concat(thumbIndex),\n onClick: _this.props.onThumbnailClick,\n onDoubleClick: _this.props.onThumbnailDoubleClick\n })));\n }\n });\n });\n var components = thumbnails.flat();\n return React.createElement(\"div\", {\n className: \"StudyBrowser\"\n }, React.createElement(\"div\", {\n className: \"scrollable-study-thumbnails\"\n }, components));\n }\n }]);\n\n return StudyBrowser;\n}(Component);\n\n_defineProperty(StudyBrowser, \"defaultProps\", {\n studies: [],\n supportsDragAndDrop: true\n});\n\n_defineProperty(StudyBrowser, \"propTypes\", {\n studies: propTypes.array.isRequired,\n supportsDragAndDrop: propTypes.bool.isRequired,\n onThumbnailClick: propTypes.func,\n onThumbnailDoubleClick: propTypes.func\n});\n\nvar runtime = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = module.exports;\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n});\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nvar runtimeModule = runtime;\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\nvar regenerator = runtimeModule;\n\nvar css$h = \".studyListToolbar {\\n background-color: var(--ui-gray-darker);\\n height: 75px;\\n margin-bottom: 2px;\\n padding: 0 8%;\\n}\\n.studyListToolbar>div {\\n display: inline-block;\\n}\\n.studyListToolbar .header {\\n font-size: 22px;\\n font-weight: 300;\\n color: var(--table-text-secondary-color);\\n line-height: 75px;\\n}\\n.studyListToolbar .studylistToolbar {\\n height: 75px;\\n line-height: 75px;\\n}\\n.studyListToolbar .studyCount {\\n color: var(--large-numbers-color);\\n font-size: 40px;\\n font-weight: 100;\\n line-height: 75px;\\n}\\n.theadBackground {\\n height: 121px;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before,\\n.theadBackground:after {\\n content: '';\\n display: block;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.theadBackground:before {\\n background-color: var(--ui-gray-darker);\\n height: 100%;\\n top: 0;\\n z-index: 1;\\n}\\n.theadBackground:after {\\n background-color: var(--large-numbers-color);\\n bottom: -1px;\\n height: 1px;\\n z-index: 3;\\n}\\n#studyListContainer {\\n width: 100%;\\n padding: 0 8%;\\n position: absolute;\\n z-index: 2;\\n}\\n#studyListContainer .loadingTextDiv {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n}\\n#studyListContainer .notFound {\\n color: var(--table-text-secondary-color);\\n font-size: 30px;\\n font-weight: 200;\\n text-align: center;\\n}\\n#studyListContainer table#tblStudyList tr {\\n height: 20px;\\n}\\n#studyListContainer table#tblStudyList thead {\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList thead tr th {\\n padding: 0;\\n border-bottom: solid 1px var(--ui-border-color-active);\\n width: 100%;\\n}\\n#studyListContainer table#tblStudyList thead tr th.studyDate {\\n min-width: 230px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell {\\n display: inline-block;\\n cursor: pointer;\\n width: 100%;\\n min-width: 95px;\\n margin: 0 auto;\\n color: var(--table-text-primary-color);\\n font-weight: 400;\\n padding: 20px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell span {\\n font-size: 15px;\\n float: left;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell i {\\n margin: 0 5px;\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:hover {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell.active,\\n#studyListContainer table#tblStudyList thead tr th div.sortingCell:active {\\n color: var(--active-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search {\\n height: 40px;\\n margin: 0 5px 20px 5px;\\n padding: 0 20px;\\n cursor: pointer;\\n border: none;\\n background-color: var(--input-background-color);\\n color: var(--input-placeholder-color);\\n font-size: 10pt;\\n font-weight: normal;\\n width: calc(100% - 10px);\\n border-radius: 4px;\\n box-sizing: border-box;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-webkit-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search::-moz-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:-ms-input-placeholder {\\n color: var(--input-placeholder-color);\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search.invisible {\\n visibility: hidden;\\n}\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:active,\\n#studyListContainer table#tblStudyList thead tr th input.studylist-search:hover {\\n background-color: var(--input-background-color);\\n}\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-year-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-month-field:not([aria-valuenow]),\\n#studyListContainer table#tblStudyList thead ::-webkit-datetime-edit-day-field:not([aria-valuenow]) {\\n color: transparent;\\n}\\n#studyListContainer table#tblStudyList tbody tr {\\n padding: 5px;\\n background-color: #000;\\n}\\n#studyListContainer table#tblStudyList tbody tr:nth-child(even) {\\n background-color: var(--ui-gray-darker);\\n}\\n#studyListContainer table#tblStudyList tbody tr td {\\n height: 40px;\\n line-height: 40px;\\n color: var(--table-text-primary-color);\\n font-weight: 300;\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n white-space: nowrap;\\n}\\n#studyListContainer table#tblStudyList tbody tr td.emptyValue {\\n color: var(--ui-gray-light);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover,\\n#studyListContainer table#tblStudyList tbody tr:active,\\n#studyListContainer table#tblStudyList tbody tr.active {\\n background-color: var(--table-hover-color);\\n color: var(--text-primary-color);\\n}\\n#studyListContainer table#tblStudyList tbody tr:hover td,\\n#studyListContainer table#tblStudyList tbody tr:active td,\\n#studyListContainer table#tblStudyList tbody tr.active td {\\n border-top: 1px solid var(--ui-border-color-active);\\n border-bottom: 1px solid var(--ui-border-color-active);\\n background-color: var(--table-hover-color);\\n}\\n@media only screen and (max-width: 1362px) {\\n #studyListContainer {\\n padding: 0 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 5%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 5%;\\n }\\n}\\n@media only screen and (max-width: 1161px) {\\n #studyListContainer {\\n padding: 0 $tablePaddingBigWidth;\\n }\\n #studyListContainer table#tblStudyList thead tr th:first-child,\\n #studyListContainer table#tblStudyList tbody tr th:first-child,\\n #studyListContainer table#tblStudyList thead tr td:first-child,\\n #studyListContainer table#tblStudyList tbody tr td:first-child {\\n padding-left: 3%;\\n }\\n #studyListContainer table#tblStudyList thead tr th:last-child,\\n #studyListContainer table#tblStudyList tbody tr th:last-child,\\n #studyListContainer table#tblStudyList thead tr td:last-child,\\n #studyListContainer table#tblStudyList tbody tr td:last-child {\\n padding-right: 3%;\\n }\\n}\\n@media only screen and (max-width: 1069px) {\\n .theadBackground {\\n height: 101px;\\n }\\n .studylist-pagination > .row {\\n margin-right: 0;\\n }\\n .studyListToolbar {\\n padding: 0 5px;\\n }\\n #studyListContainer {\\n padding: 0;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th input.worklist-search {\\n padding: 10px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell {\\n padding: 10px 5px;\\n }\\n #studyListContainer table#tblStudyList thead > tr > th div.sortingCell i {\\n width: auto;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:first-child {\\n padding-left: 5px;\\n }\\n #studyListContainer table#tblStudyList tbody > tr > td:last-child {\\n padding-right: 5px;\\n }\\n #studyListContainer .worklistPagination .row {\\n margin-left: 0;\\n margin-right: 0;\\n }\\n}\\n\";\nstyleInject(css$h);\n\nvar css$i = \".studyListToolbar .addNewStudy {\\n margin: 0 10px;\\n}\\n.studyListToolbar .addNewStudy label {\\n color: var(--text-secondary-color);\\n font-weight: 400;\\n cursor: pointer;\\n}\\n.studyListToolbar .addNewStudy:hover {\\n color: var(--hover-color);\\n}\\n.studyListToolbar .addNewStudy:active {\\n color: var(--active-color);\\n}\\n.studyListToolbar .addNewStudy input {\\n width: 0.1px;\\n height: 0.1px;\\n opacity: 0;\\n overflow: hidden;\\n position: absolute;\\n z-index: -1;\\n}\\n\";\nstyleInject(css$i);\n\nvar StudylistToolbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(StudylistToolbar, _PureComponent);\n\n function StudylistToolbar() {\n _classCallCheck(this, StudylistToolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(StudylistToolbar).apply(this, arguments));\n }\n\n _createClass(StudylistToolbar, [{\n key: \"clear\",\n value: function clear(e) {\n e.target.value = null;\n }\n }, {\n key: \"getImportTool\",\n value: function getImportTool() {\n if (this.props.onImport && this.props.studyListFunctionsEnabled) {\n return React.createElement(\"div\", {\n className: \"addNewStudy btn-file\"\n }, React.createElement(\"label\", {\n htmlFor: \"btnImport\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }), \"Import study\"), React.createElement(\"input\", {\n id: \"btnImport\",\n onChange: this.props.onImport,\n onClick: this.clear,\n className: \"js-import-files\",\n type: \"file\",\n webkitdirectory: \"true\",\n directory: \"true\",\n multiple: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n className: \"studylistToolbar\"\n }, this.getImportTool());\n }\n }]);\n\n return StudylistToolbar;\n}(PureComponent);\n\n_defineProperty(StudylistToolbar, \"propTypes\", {\n studyListFunctionsEnabled: propTypes.bool.isRequired,\n onImport: propTypes.func\n});\n\n_defineProperty(StudylistToolbar, \"defaultProps\", {\n studyListFunctionsEnabled: true\n});\n\nfunction LoadingText() {\n return React.createElement(\"div\", {\n className: \"loadingTextDiv\"\n }, React.createElement(\"h5\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spinner fa-pulse\"\n })));\n}\n\nvar css$j = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --primary-background-color: #000;\\n}\\n.pagination-area {\\n color: var(--text-secondary-color);\\n font-size: 13px;\\n font-weight: normal !important;\\n}\\n.pagination-area label {\\n font-weight: normal;\\n}\\n.pagination-area select {\\n margin: 5px;\\n background-color: var(--primary-background-color);\\n color: #fff;\\n}\\n.rows-per-page label.wrapperLabel {\\n display: inline-table !important;\\n margin: 0 4px;\\n}\\n.rows-per-page label.wrapperLabel select {\\n margin: 0px 4px 0px 4px;\\n width: 42px;\\n}\\n.page-buttons {\\n margin: 0;\\n text-align: right;\\n}\\n.page-buttons label {\\n font-weight: normal;\\n}\\n.page-buttons label ul.pagination-control {\\n margin: 0;\\n}\\n.page-buttons label ul.pagination-control li {\\n display: table-cell;\\n padding: 5px 2px;\\n}\\n.page-buttons label ul.pagination-control li button {\\n padding: 4px 8px;\\n background-color: var(--primary-background-color);\\n border-color: var(--ui-gray);\\n color: var(--ui-gray-darkest);\\n color: #fff;\\n text-decoration: none;\\n}\\n.page-buttons label ul.pagination-control li button:hover:enabled {\\n color: var(--active-color);\\n}\\n.page-buttons label ul.pagination-control li .active button {\\n background-color: var(--ui-gray);\\n border-color: #ddd;\\n color: #fff;\\n}\\n\";\nstyleInject(css$j);\n\nvar PaginationArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PaginationArea, _PureComponent);\n\n function PaginationArea() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PaginationArea);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PaginationArea)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nextPage\", function () {\n _this.props.nextPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"prevPage\", function () {\n _this.props.prevPageFunc(_this.props.currentPage);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onRowsPerPageChange\", function (event) {\n _this.props.onRowsPerPageChange(parseInt(event.target.value));\n });\n\n return _this;\n }\n\n _createClass(PaginationArea, [{\n key: \"renderPaginationButtons\",\n value: function renderPaginationButtons() {\n return React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-buttons noselect\"\n }, React.createElement(\"label\", null, React.createElement(\"ul\", {\n className: \"pagination-control no-margins\"\n }, React.createElement(\"li\", {\n className: \"page-item prev\"\n }, React.createElement(\"button\", {\n onClick: this.prevPage,\n disabled: this.props.currentPage === 0,\n className: \"btn page-link\"\n }, \"Previous\")), React.createElement(\"li\", {\n className: \"page-item next\"\n }, React.createElement(\"button\", {\n onClick: this.nextPage,\n disabled: this.props.currentPage === this.props.numberOfPages - 1,\n className: \"btn page-link\"\n }, \"Next\"))))));\n }\n }, {\n key: \"renderRowsPerPageDropdown\",\n value: function renderRowsPerPageDropdown() {\n return React.createElement(\"div\", {\n className: \"form-inline form-group rows-per-page\"\n }, React.createElement(\"span\", null, \"Show\"), React.createElement(\"select\", {\n onChange: this.onRowsPerPageChange,\n defaultValue: this.props.rowsPerPage\n }, this.props.pageOptions.map(function (pageNumber) {\n return React.createElement(\"option\", {\n key: pageNumber,\n value: pageNumber\n }, pageNumber);\n })), React.createElement(\"span\", null, \"rows per page\"));\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", {\n name: \"paginationArea\"\n }, React.createElement(\"div\", {\n className: \"pagination-area\"\n }, React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"div\", {\n className: \"col-xs-4 col-sm-3 col-md-3\"\n }, this.renderRowsPerPageDropdown()), React.createElement(\"div\", {\n className: \"col-xs-8 col-sm-9 col-md-9\"\n }, React.createElement(\"div\", {\n className: \"form-inline form-group page-number pull-right\"\n }, this.renderPaginationButtons())))));\n }\n }]);\n\n return PaginationArea;\n}(PureComponent);\n\n_defineProperty(PaginationArea, \"defaultProps\", {\n pageOptions: [5, 10, 25, 50, 100],\n rowsPerPage: 25,\n currentPage: 0,\n numberOfPages: 1\n});\n\n_defineProperty(PaginationArea, \"propTypes\", {\n pageOptions: propTypes.array.isRequired,\n rowsPerPage: propTypes.number.isRequired,\n currentPage: propTypes.number.isRequired,\n numberOfPages: propTypes.number.isRequired,\n nextPageFunc: propTypes.func,\n prevPageFunc: propTypes.func,\n onRowsPerPageChange: propTypes.func\n});\n\nvar StudyList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(StudyList, _Component);\n\n function StudyList(props) {\n var _this;\n\n _classCallCheck(this, StudyList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(StudyList).call(this, props));\n var sortData = {};\n var sortClasses = {\n patientName: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n patientId: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n accessionNumber: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDate: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n modality: StudyList.DEFAULT_SORTABLE_ICON_CLS,\n studyDescription: StudyList.DEFAULT_SORTABLE_ICON_CLS\n };\n\n if (props.defaultSort) {\n sortData.field = props.defaultSort.field;\n sortData.order = props.defaultSort.order;\n sortClasses[props.defaultSort.field] = props.defaultSort.order === 'desc' ? StudyList.DESC_SORT_ICON_CLS : StudyList.ASC_SORT_ICON_CLS;\n }\n\n _this.state = {\n loading: false,\n error: false,\n sortClasses: sortClasses,\n searchData: {\n sortData: sortData,\n currentPage: _this.props.currentPage,\n rowsPerPage: _this.props.rowsPerPage\n },\n highlightedItem: ''\n };\n _this.getChangeHandler = _this.getChangeHandler.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onInputKeydown = _this.onInputKeydown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.nextPage = _this.nextPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.prevPage = _this.prevPage.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.onRowsPerPageChange = _this.onRowsPerPageChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(StudyList, [{\n key: \"getChangeHandler\",\n value: function getChangeHandler(key) {\n var _this2 = this;\n\n return function (event) {\n _this2.setSearchData(key, event.target.value);\n };\n }\n }, {\n key: \"setSearchData\",\n value: function setSearchData(key, value, callback) {\n var searchData = this.state.searchData;\n searchData[key] = value;\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"setSearchDataBatch\",\n value: function setSearchDataBatch(keyValues, callback) {\n var searchData = this.state.searchData;\n Object.keys(keyValues).forEach(function (key) {\n searchData[key] = keyValues[key];\n });\n this.setState({\n searchData: searchData\n }, callback);\n }\n }, {\n key: \"onInputKeydown\",\n value: function () {\n var _onInputKeydown = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee(event) {\n return regenerator.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation(); // reset the page because user is doing a new search\n\n this.setSearchData('currentPage', 0, this.search);\n }\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onInputKeydown(_x) {\n return _onInputKeydown.apply(this, arguments);\n }\n\n return onInputKeydown;\n }()\n }, {\n key: \"search\",\n value: function () {\n var _search = _asyncToGenerator(\n /*#__PURE__*/\n regenerator.mark(function _callee2() {\n return regenerator.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n this.setState({\n loading: true,\n error: false\n });\n _context2.next = 4;\n return this.props.onSearch(this.state.searchData);\n\n case 4:\n _context2.next = 10;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2[\"catch\"](0);\n this.setState({\n error: true\n });\n throw new Error(_context2.t0);\n\n case 10:\n _context2.prev = 10;\n this.setState({\n loading: false\n });\n return _context2.finish(10);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6, 10, 13]]);\n }));\n\n function search() {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n }, {\n key: \"renderNoMachingResults\",\n value: function renderNoMachingResults() {\n if (!this.props.studies.length && !this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"No matching results\");\n }\n }\n }, {\n key: \"renderHasError\",\n value: function renderHasError() {\n if (this.state.error) {\n return React.createElement(\"div\", {\n className: \"notFound\"\n }, \"There was an error fetching studies\");\n }\n }\n }, {\n key: \"renderIsLoading\",\n value: function renderIsLoading() {\n if (this.state.loading) {\n return React.createElement(\"div\", {\n className: \"loading\"\n }, React.createElement(LoadingText, null));\n }\n }\n }, {\n key: \"nextPage\",\n value: function nextPage(currentPage) {\n currentPage = currentPage + 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"prevPage\",\n value: function prevPage(currentPage) {\n currentPage = currentPage - 1;\n this.setSearchData('currentPage', currentPage, this.search);\n }\n }, {\n key: \"onRowsPerPageChange\",\n value: function onRowsPerPageChange(rowsPerPage) {\n this.setSearchDataBatch({\n rowsPerPage: rowsPerPage,\n currentPage: 0\n }, this.search);\n }\n }, {\n key: \"onSortClick\",\n value: function onSortClick(key) {\n var _this3 = this;\n\n return function () {\n var sortClasses = _this3.state.sortClasses;\n var order;\n\n if (sortClasses[key] === StudyList.ASC_SORT_ICON_CLS) {\n sortClasses[key] = StudyList.DESC_SORT_ICON_CLS;\n order = 'desc';\n } else {\n sortClasses[key] = StudyList.ASC_SORT_ICON_CLS;\n order = 'asc';\n }\n\n Object.keys(sortClasses).forEach(function (sortClassKey) {\n if (sortClassKey !== key) {\n sortClasses[sortClassKey] = StudyList.DEFAULT_SORTABLE_ICON_CLS;\n }\n });\n\n _this3.setState({\n sortClasses: sortClasses\n }, function () {\n _this3.setSearchData('sortData', {\n field: key,\n order: order\n }, _this3.search);\n });\n };\n }\n }, {\n key: \"onHighlightItem\",\n value: function onHighlightItem(studyItemUid) {\n this.setState({\n highlightedItem: studyItemUid\n });\n }\n }, {\n key: \"renderTableRow\",\n value: function renderTableRow(study) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: study.studyInstanceUID,\n className: this.state.highlightedItem === study.studyInstanceUID ? 'studylistStudy noselect active' : 'studylistStudy noselect',\n onClick: function onClick() {\n _this4.onHighlightItem(study.studyInstanceUID);\n },\n onMouseDown: function onMouseDown(event) {\n // middle/wheel click\n if (event.button === 1) {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n },\n onDoubleClick: function onDoubleClick() {\n _this4.props.onSelectItem(study.studyInstanceUID);\n }\n }, React.createElement(\"td\", {\n className: \"patientName\"\n }, study.patientName), React.createElement(\"td\", {\n className: \"patientId\"\n }, study.patientId), React.createElement(\"td\", {\n className: \"accessionNumber\"\n }, study.accessionNumber), React.createElement(\"td\", {\n className: \"studyDate\"\n }, study.studyDate), React.createElement(\"td\", {\n className: \"modalities\"\n }, study.modalities), React.createElement(\"td\", {\n className: \"studyDescription\"\n }, study.studyDescription));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n className: \"StudyList\"\n }, React.createElement(\"div\", {\n className: \"studyListToolbar clearfix\"\n }, React.createElement(\"div\", {\n className: \"header pull-left\"\n }, \"Study List\"), React.createElement(\"div\", {\n className: \"studyCount pull-right\"\n }, this.props.studyCount), React.createElement(\"div\", {\n className: \"pull-right\"\n }, React.createElement(StudylistToolbar, {\n studyListFunctionsEnabled: this.props.studyListFunctionsEnabled,\n onImport: this.props.onImport\n }))), React.createElement(\"div\", {\n className: \"theadBackground\"\n }), React.createElement(\"div\", {\n id: \"studyListContainer\"\n }, React.createElement(\"table\", {\n id: \"tblStudyList\",\n className: \"studylistResult table noselect\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"patientName\"\n }, React.createElement(\"div\", {\n id: \"_patientName\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientName')\n }, React.createElement(\"span\", null, \"Patient Name\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientName\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientName\",\n value: this.state.patientName,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientName')\n })), React.createElement(\"th\", {\n className: \"patientId\"\n }, React.createElement(\"div\", {\n id: \"_patientId\",\n className: \"sortingCell\",\n onClick: this.onSortClick('patientId')\n }, React.createElement(\"span\", null, \"MRN\"), React.createElement(\"i\", {\n className: this.state.sortClasses.patientId\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"patientId\",\n value: this.state.patientId,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('patientId')\n })), React.createElement(\"th\", {\n className: \"accessionNumber\"\n }, React.createElement(\"div\", {\n id: \"_accessionNumber\",\n className: \"sortingCell\",\n onClick: this.onSortClick('accessionNumber')\n }, React.createElement(\"span\", null, \"Accession #\"), React.createElement(\"i\", {\n className: this.state.sortClasses.accessionNumber\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"accessionNumber\",\n value: this.state.accessionNumber,\n onKeyDown: this.onInputKeydown,\n onChange: this.getChangeHandler('accessionNumber')\n })), React.createElement(\"th\", {\n className: \"studyDate\"\n }, React.createElement(\"div\", {\n id: \"_studyDate\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDate')\n }, React.createElement(\"span\", null, \"Study Date\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDate\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n name: \"daterange\",\n id: \"studyDate\",\n value: this.state.studyDateRange,\n onChange: this.getChangeHandler('studyDateRange')\n })), React.createElement(\"th\", {\n className: \"modality\"\n }, React.createElement(\"div\", {\n id: \"_modality\",\n className: \"sortingCell\",\n onClick: this.onSortClick('modality')\n }, React.createElement(\"span\", null, \"Modality\"), React.createElement(\"i\", {\n className: this.state.sortClasses.modality\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"modality\",\n onKeyDown: this.onInputKeydown,\n value: this.state.modality,\n onChange: this.getChangeHandler('modality')\n })), React.createElement(\"th\", {\n className: \"studyDescription\"\n }, React.createElement(\"div\", {\n id: \"_studyDescription\",\n className: \"sortingCell\",\n onClick: this.onSortClick('studyDescription')\n }, React.createElement(\"span\", null, \"Study Description\"), React.createElement(\"i\", {\n className: this.state.sortClasses.studyDescription\n }, \"\\xA0\")), React.createElement(\"input\", {\n type: \"text\",\n className: \"form-control studylist-search\",\n id: \"studyDescription\",\n onKeyDown: this.onInputKeydown,\n value: this.state.studyDescription,\n onChange: this.getChangeHandler('studyDescription')\n })))), React.createElement(\"tbody\", {\n id: \"studyListData\"\n }, this.props.studies.map(function (study) {\n return _this5.renderTableRow(study);\n }))), this.renderIsLoading(), this.renderHasError(), this.renderNoMachingResults(), React.createElement(PaginationArea, {\n currentPage: this.state.searchData.currentPage,\n nextPageFunc: this.nextPage,\n prevPageFunc: this.prevPage,\n onRowsPerPageChange: this.onRowsPerPageChange,\n rowsPerPage: this.state.searchData.rowsPerPage,\n numberOfPages: Math.ceil(this.props.studyCount / this.state.searchData.rowsPerPage)\n })));\n }\n }]);\n\n return StudyList;\n}(Component);\n\n_defineProperty(StudyList, \"propTypes\", {\n studies: propTypes.array.isRequired,\n onSelectItem: propTypes.func.isRequired,\n onSearch: propTypes.func.isRequired,\n studyCount: propTypes.number.isRequired,\n currentPage: propTypes.number,\n rowsPerPage: propTypes.number,\n studyListFunctionsEnabled: propTypes.bool,\n defaultSort: propTypes.shape({\n field: propTypes.string.isRequired,\n order: propTypes.oneOf(['desc', 'asc']).isRequired\n }),\n onImport: propTypes.func\n});\n\n_defineProperty(StudyList, \"defaultProps\", {\n currentPage: 0,\n rowsPerPage: 25\n});\n\n_defineProperty(StudyList, \"DEFAULT_SORTABLE_ICON_CLS\", 'fa fa-fw fa-sort');\n\n_defineProperty(StudyList, \"DESC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-desc');\n\n_defineProperty(StudyList, \"ASC_SORT_ICON_CLS\", 'fa fa-fw fa-sort-asc');\n\nfunction SimpleToolbarButton(props) {\n var className = classnames(props.className, 'btn btn-sm btn-default');\n return React.createElement(\"button\", {\n id: props.id,\n type: \"button\",\n className: className,\n \"data-container\": \"body\",\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n title: props.title\n }, React.createElement(\"span\", {\n className: props.iconClassName\n }));\n}\nSimpleToolbarButton.propTypes = {\n iconClassName: propTypes.string,\n title: propTypes.string,\n className: propTypes.string,\n id: propTypes.string,\n onClick: propTypes.func\n};\n\nfunction getDefaultButtonData() {\n var buttonData = [];\n buttonData.push({\n id: 'wwwc',\n title: 'WW/WC',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-sun-o'\n });\n buttonData.push({\n id: 'wwwcRegion',\n title: 'Window by Region',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square'\n });\n buttonData.push({\n id: 'magnify',\n title: 'Magnify',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle'\n });\n buttonData.push({\n id: 'annotate',\n title: 'Annotation',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-h'\n });\n buttonData.push({\n id: 'invert',\n title: 'Invert',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-adjust'\n });\n buttonData.push({\n id: 'zoom',\n title: 'Zoom',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-search'\n });\n buttonData.push({\n id: 'pan',\n title: 'Pan',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows'\n });\n buttonData.push({\n id: 'stackScroll',\n title: 'Stack Scroll',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-bars'\n });\n buttonData.push({\n id: 'length',\n title: 'Length Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-arrows-v'\n });\n buttonData.push({\n id: 'angle',\n title: 'Angle Measurement',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-angle-left'\n });\n buttonData.push({\n id: 'dragProbe',\n title: 'Pixel Probe',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-dot-circle-o'\n });\n buttonData.push({\n id: 'ellipticalRoi',\n title: 'Elliptical ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-circle-o'\n });\n buttonData.push({\n id: 'rectangleRoi',\n title: 'Rectangle ROI',\n className: 'imageViewerTool',\n iconClassName: 'fa fa-square-o'\n });\n buttonData.push({\n id: 'resetViewport',\n title: 'Reset Viewport',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-undo'\n });\n buttonData.push({\n id: 'clearTools',\n title: 'Clear tools',\n className: 'imageViewerCommand',\n iconClassName: 'fa fa-trash'\n });\n return buttonData;\n}\n\nvar Toolbar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Toolbar, _Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Toolbar).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: \"render\",\n value: function render() {\n var maybePlayClipButton;\n\n if (this.props.includePlayClipButton) {\n maybePlayClipButton = React.createElement(PlayClipButton, null);\n }\n\n var maybeLayoutButton;\n\n if (this.props.includeLayoutButton) {\n maybeLayoutButton = React.createElement(LayoutButton, null);\n }\n\n return React.createElement(\"div\", {\n id: \"toolbar\"\n }, React.createElement(\"div\", {\n className: \"btn-group\"\n }, this.props.buttons.map(function (button, i) {\n return React.createElement(SimpleToolbarButton, _extends({}, button, {\n key: i\n }));\n }), maybePlayClipButton, maybeLayoutButton));\n }\n }]);\n\n return Toolbar;\n}(Component);\nToolbar.propTypes = {\n buttons: propTypes.array.isRequired,\n includeLayoutButton: propTypes.bool.isRequired,\n includePlayClipButton: propTypes.bool.isRequired\n};\nToolbar.defaultProps = {\n buttons: getDefaultButtonData(),\n includeLayoutButton: true,\n includePlayClipButton: true\n};\n\nvar css$k = \".ToolbarButton {\\n height: 48px;\\n color: var(--default-color);\\n float: left;\\n text-align: center;\\n padding: 0 1rem;\\n cursor: pointer;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none; /* Non-prefixed version, currently\\n supported by Chrome and Opera */\\n}\\n.ToolbarButton svg {\\n height: 21px;\\n width: 21px;\\n margin: 2px;\\n fill: var(--default-color);\\n stroke: var(--default-color);\\n}\\n.ToolbarButton i {\\n font-size: 18px;\\n line-height: 30px;\\n}\\n.ToolbarButton:hover {\\n color: var(--hover-color);\\n}\\n.ToolbarButton:hover svg {\\n fill: var(--hover-color);\\n stroke: var(--hover-color);\\n}\\n.ToolbarButton:hover i {\\n color: var(--hover-color);\\n}\\n.ToolbarButton.active,\\n.ToolbarButton:active {\\n color: var(--active-color);\\n}\\n.ToolbarButton.active svg,\\n.ToolbarButton:active svg {\\n fill: var(--active-color);\\n stroke: var(--active-color);\\n}\\n.ToolbarButton.active i,\\n.ToolbarButton:active i {\\n color: var(--active-color);\\n}\\n.ToolbarButton span.toolbar-button-label {\\n font-size: 12px;\\n font-weight: 500;\\n display: block;\\n}\\n\";\nstyleInject(css$k);\n\nfunction ToolbarButton(props) {\n var onClick = function onClick(event) {\n if (props.onClick) {\n props.onClick(event, props);\n }\n\n if (props.setToolActive) {\n props.setToolActive(props);\n }\n };\n\n var className = classnames(props.className, {\n active: props.active\n });\n var active = props.active,\n svgUrlActive = props.svgUrlActive,\n iconClassesActive = props.iconClassesActive,\n textActive = props.textActive;\n var svgUrl = props.svgUrl;\n\n if (active && svgUrlActive) {\n svgUrl = svgUrlActive;\n }\n\n var iconClasses = props.iconClasses;\n\n if (active && iconClassesActive) {\n iconClasses = iconClassesActive;\n }\n\n var label = props.text;\n\n if (active && textActive) {\n label = textActive;\n }\n\n return React.createElement(\"div\", {\n className: className,\n onClick: onClick\n }, svgUrl && React.createElement(\"svg\", null, React.createElement(\"use\", {\n xlinkHref: svgUrl\n })), iconClasses && React.createElement(\"i\", {\n className: iconClasses\n }), React.createElement(\"span\", {\n className: \"toolbar-button-label\"\n }, label));\n}\nToolbarButton.defaultProps = {\n command: 'ToolbarButton',\n onClick: function onClick() {//console.log(`ToolbarButton does not have an onClick event`);\n },\n className: 'ToolbarButton'\n};\nToolbarButton.propTypes = {\n active: propTypes.bool.isRequired,\n className: propTypes.string.isRequired,\n text: propTypes.string.isRequired,\n textActive: propTypes.string,\n iconClasses: propTypes.string,\n iconClassesActive: propTypes.string,\n svgUrl: propTypes.string,\n svgUrlActive: propTypes.string,\n onClick: propTypes.func,\n setToolActive: propTypes.func\n};\n\nvar css$l = \".ToolbarSection {\\n float: left;\\n background-color: var(--primary-background-color);\\n border-radius: 8px;\\n}\\n\";\nstyleInject(css$l);\n\nvar ToolbarSection =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ToolbarSection, _PureComponent);\n\n function ToolbarSection() {\n _classCallCheck(this, ToolbarSection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ToolbarSection).apply(this, arguments));\n }\n\n _createClass(ToolbarSection, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var items = this.props.buttons.map(function (item, index) {\n return React.createElement(ToolbarButton, _extends({\n key: index\n }, item, {\n active: item.command === _this.props.activeCommand,\n setToolActive: _this.props.setToolActive\n }));\n });\n return React.createElement(\"div\", {\n className: 'ToolbarSection'\n }, items);\n }\n }]);\n\n return ToolbarSection;\n}(PureComponent);\n\nToolbarSection.propTypes = {\n buttons: propTypes.array.isRequired,\n activeCommand: propTypes.string,\n setToolActive: propTypes.func\n};\n\nvar range = function range(start, end) {\n return new Array(end - start).fill().map(function (d, i) {\n return i + start;\n });\n};\nvar allowedKeys = [8, 13, 27, 32, 46].concat([12, 106, 107, 109, 110, 111], _toConsumableArray(range(218, 220)), _toConsumableArray(range(185, 190)), _toConsumableArray(range(111, 131)), _toConsumableArray(range(32, 41)), _toConsumableArray(range(47, 58)), _toConsumableArray(range(64, 91)));\nvar specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 191: '/',\n 224: 'meta'\n};\n\nvar HotKeysPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(HotKeysPreferences, _Component);\n\n function HotKeysPreferences(props) {\n var _this;\n\n _classCallCheck(this, HotKeysPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(HotKeysPreferences).call(this, props));\n _this.columns = {};\n Object.keys(_this.props.hotKeysData).forEach(function (key) {\n var hotKey = _this.props.hotKeysData[key];\n\n if (_this.columns.hasOwnProperty(hotKey.column)) {\n _this.columns[hotKey.column].push(key);\n } else {\n _this.columns[hotKey.column] = [key];\n }\n });\n _this.columnClass = \"col-md-\".concat(12 / Object.keys(_this.columns).length || 1);\n _this.state = {\n hotKeys: _this.props.hotKeysData,\n errorMessages: {}\n };\n _this.onInputKeyDown = _this.onInputKeyDown.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(HotKeysPreferences, [{\n key: \"getKeysPressedArray\",\n value: function getKeysPressedArray(event) {\n var keysPressedArray = [];\n\n if (event.ctrlKey && !event.altKey) {\n keysPressedArray.push('CTRL');\n }\n\n if (event.shiftKey && !event.altKey) {\n keysPressedArray.push('SHIFT');\n }\n\n if (event.altKey && !event.ctrlKey) {\n keysPressedArray.push('ALT');\n }\n\n return keysPressedArray;\n }\n }, {\n key: \"getConflictingCommand\",\n value: function getConflictingCommand(currentToolKey, hotKeyCommand) {\n var _this2 = this;\n\n return Object.keys(this.state.hotKeys).find(function (tool) {\n var value = _this2.state.hotKeys[tool].command;\n return value && value === hotKeyCommand && tool !== currentToolKey;\n });\n }\n }, {\n key: \"updateInputText\",\n value: function updateInputText(toolKey, event) {\n var displayPressedKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var pressedKeys = this.getKeysPressedArray(event);\n\n if (displayPressedKey) {\n var specialKeyName = specialKeys[event.which];\n var keyName = specialKeyName || event.key || String.fromCharCode(event.keyCode);\n pressedKeys.push(keyName.toUpperCase());\n }\n\n this.updateHotKeysState(toolKey, pressedKeys.join('+'));\n }\n }, {\n key: \"updateHotKeysState\",\n value: function updateHotKeysState(toolKey, command) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var hotKeys = this.state.hotKeys;\n hotKeys[toolKey].command = command;\n this.setState(hotKeys, callback);\n }\n }, {\n key: \"updateErrorsState\",\n value: function updateErrorsState(toolKey, errorMessage) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n var errorMessages = this.state.errorMessages;\n errorMessages[toolKey] = errorMessage;\n this.setState({\n errorMessages: errorMessages\n }, callback);\n }\n }, {\n key: \"onInputKeyDown\",\n value: function onInputKeyDown(event, toolKey) {\n // Prevent ESC key from propagating and closing the modal\n if (event.key === 'Escape') {\n event.stopPropagation();\n }\n\n if (allowedKeys.includes(event.keyCode)) {\n this.updateInputText(toolKey, event, true);\n } else {\n this.updateInputText(toolKey, event, false);\n }\n\n event.preventDefault();\n }\n }, {\n key: \"onChange\",\n value: function onChange(event, toolKey) {\n var _this3 = this;\n\n if (event.ctrlKey || event.altKey || event.shiftKey) {\n return;\n }\n\n var hotKey = this.state.hotKeys[toolKey];\n var command = hotKey.command;\n var pressedKeys = command.split('+');\n var lastPressedKey = pressedKeys[pressedKeys.length - 1].toUpperCase(); // clear the prior errors\n\n this.setState({\n errorMessages: {}\n }, function () {\n // Check if it has a valid modifier\n var isModifier = ['CTRL', 'ALT', 'SHIFT'].includes(lastPressedKey);\n\n if (isModifier) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n /*\n * Check if it has some conflict\n */\n\n\n var conflictedCommandKey = _this3.getConflictingCommand(toolKey, command);\n\n if (conflictedCommandKey) {\n var conflictedCommand = _this3.state.hotKeys[conflictedCommandKey];\n\n _this3.updateErrorsState(toolKey, \"\\\"\".concat(conflictedCommand.label, \"\\\" is already using the \\\"\").concat(conflictedCommand.command, \"\\\" shortcut.\"));\n\n _this3.updateErrorsState(conflictedCommandKey, '');\n\n _this3.updateHotKeysState(toolKey, '');\n\n return;\n }\n /*\n * Check if is a valid combination\n */\n\n\n var modifierCommand = pressedKeys.slice(0, pressedKeys.length - 1).join('+').toUpperCase();\n var disallowedCombinations$$1 = HotKeysPreferences.disallowedCombinations[modifierCommand];\n var hasDisallowedCombinations = disallowedCombinations$$1 ? disallowedCombinations$$1.includes(lastPressedKey) : false;\n\n if (hasDisallowedCombinations) {\n _this3.updateHotKeysState(toolKey, '');\n\n _this3.updateErrorsState(toolKey, \"It's not possible to define only modifier keys (CTRL, ALT and SHIFT) as a shortcut\");\n\n return;\n }\n });\n }\n }, {\n key: \"renderRow\",\n value: function renderRow(toolKey, hotKey) {\n var _this4 = this;\n\n return React.createElement(\"tr\", {\n key: toolKey\n }, React.createElement(\"td\", {\n className: \"text-right p-r-1\"\n }, hotKey.label), React.createElement(\"td\", {\n width: \"200\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel \".concat(this.state.errorMessages[toolKey] !== undefined ? 'state-error' : '', \" \"),\n ref: function ref(input) {\n return _this4[toolKey] = input;\n },\n \"data-key\": \"defaultTool\"\n }, React.createElement(\"input\", {\n readOnly: true,\n type: \"text\",\n value: hotKey.command,\n vali: \"true\",\n className: \"form-control hotkey text-center\",\n onKeyDown: function onKeyDown(event) {\n return _this4.onInputKeyDown(event, toolKey);\n },\n onKeyUp: function onKeyUp(event) {\n return _this4.onChange(event, toolKey);\n }\n }), React.createElement(\"span\", {\n className: \"wrapperText\"\n }), React.createElement(\"span\", {\n className: \"errorMessage\"\n }, this.state.errorMessages[toolKey]))));\n }\n }, {\n key: \"renderColumn\",\n value: function renderColumn(columnIndex, hotkeysColumn) {\n var _this5 = this;\n\n return React.createElement(\"div\", {\n key: columnIndex,\n className: this.columnClass\n }, React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"text-right p-r-1\"\n }, \"Function\"), React.createElement(\"th\", {\n className: \"text-center\"\n }, \"Shortcut\"))), React.createElement(\"tbody\", null, hotkeysColumn.map(function (keyTool) {\n return _this5.renderRow(keyTool, _this5.state.hotKeys[keyTool]);\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return React.createElement(\"div\", {\n className: \"row\"\n }, Object.keys(this.columns).sort().map(function (columnIndex) {\n return _this6.renderColumn(columnIndex, _this6.columns[columnIndex]);\n }));\n }\n }]);\n\n return HotKeysPreferences;\n}(Component);\n\n_defineProperty(HotKeysPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$m = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n.presetIndex {\\n padding: 0px 10px 0px 10px;\\n}\\n\";\nstyleInject(css$m);\n\nvar WindowLevelPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(WindowLevelPreferences, _Component);\n\n function WindowLevelPreferences(props) {\n var _this;\n\n _classCallCheck(this, WindowLevelPreferences);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WindowLevelPreferences).call(this, props));\n _this.state = {\n data: _this.props.windowLevelData\n };\n return _this;\n }\n\n _createClass(WindowLevelPreferences, [{\n key: \"onChange\",\n value: function onChange(event, key, field) {\n var data = this.state.data;\n var entry = data[key];\n entry[field] = event.target.value;\n this.setState({\n data: data\n });\n\n if (this.props.onChange) {\n this.props.onChange(data);\n }\n }\n }, {\n key: \"getWLPreferencesRows\",\n value: function getWLPreferencesRows(key) {\n var _this2 = this;\n\n var entry = this.state.data[key];\n return React.createElement(\"tr\", {\n key: key\n }, React.createElement(\"td\", {\n className: \"p-r-1 text-center\"\n }, key), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.description,\n type: \"text\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'description');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.window,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'window');\n }\n }))), React.createElement(\"td\", {\n className: \"p-r-1\"\n }, React.createElement(\"label\", {\n className: \"wrapperLabel\"\n }, React.createElement(\"input\", {\n value: entry.level,\n type: \"number\",\n className: \"form-control\",\n onChange: function onChange(event) {\n _this2.onChange(event, key, 'level');\n }\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return React.createElement(\"table\", {\n className: \"full-width\"\n }, React.createElement(\"thead\", null, React.createElement(\"tr\", null, React.createElement(\"th\", {\n className: \"p-x-1 text-center presetIndex\"\n }, \"Preset\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Description\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Window\"), React.createElement(\"th\", {\n className: \"p-x-1\"\n }, \"Level\"))), React.createElement(\"tbody\", null, Object.keys(this.state.data).map(function (key) {\n return _this3.getWLPreferencesRows(key);\n })));\n }\n }]);\n\n return WindowLevelPreferences;\n}(Component);\n\n_defineProperty(WindowLevelPreferences, \"propTypes\", {\n windowLevelData: propTypes.object.isRequired,\n onChange: propTypes.func\n});\n\nvar css$n = \":root {\\n --text-secondary-color: #91b9cd;\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n}\\n.form-themed table {\\n color: var(--text-primary-color);\\n}\\n.form-themed table th,\\n.form-themed table td {\\n font-size: 15px;\\n font-weight: normal;\\n}\\n.form-themed table th {\\n line-height: 60px;\\n}\\n.form-themed table td {\\n line-height: 18px;\\n}\\n.form-themed .p-r-1 {\\n padding-right: 1rem !important;\\n}\\n.form-themed label {\\n margin-bottom: 5px;\\n}\\n.form-themed label.wrapperLabel {\\n cursor: pointer;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) {\\n cursor: pointer;\\n display: flex;\\n flex-direction: column;\\n}\\n.form-themed label.wrapperLabel:not(.checkboxLabel) .wrapperText {\\n display: block;\\n order: -1;\\n}\\n.form-themed .btn[disabled],\\n.form-themed input[type=text][disabled],\\n.form-themed input[type=password][disabled],\\n.form-themed input[type=number][disabled],\\n.form-themed .btn.disabled,\\n.form-themed input[type=text].disabled,\\n.form-themed input[type=password].disabled,\\n.form-themed input[type=number].disabled,\\n.form-themed .btn[disabled]:hover,\\n.form-themed input[type=text][disabled]:hover,\\n.form-themed input[type=password][disabled]:hover,\\n.form-themed input[type=number][disabled]:hover,\\n.form-themed .btn.disabled:hover,\\n.form-themed input[type=text].disabled:hover,\\n.form-themed input[type=password].disabled:hover,\\n.form-themed input[type=number].disabled:hover,\\n.form-themed .btn[disabled]:active,\\n.form-themed input[type=text][disabled]:active,\\n.form-themed input[type=password][disabled]:active,\\n.form-themed input[type=number][disabled]:active,\\n.form-themed .btn.disabled:active,\\n.form-themed input[type=text].disabled:active,\\n.form-themed input[type=password].disabled:active,\\n.form-themed input[type=number].disabled:active {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-gray-light);\\n color: var(--text-primary-color);\\n}\\n.form-themed .btn[disabled] + .wrapperText,\\n.form-themed input[type=text][disabled] + .wrapperText,\\n.form-themed input[type=password][disabled] + .wrapperText,\\n.form-themed input[type=number][disabled] + .wrapperText,\\n.form-themed .btn.disabled + .wrapperText,\\n.form-themed input[type=text].disabled + .wrapperText,\\n.form-themed input[type=password].disabled + .wrapperText,\\n.form-themed input[type=number].disabled + .wrapperText,\\n.form-themed .btn[disabled]:hover + .wrapperText,\\n.form-themed input[type=text][disabled]:hover + .wrapperText,\\n.form-themed input[type=password][disabled]:hover + .wrapperText,\\n.form-themed input[type=number][disabled]:hover + .wrapperText,\\n.form-themed .btn.disabled:hover + .wrapperText,\\n.form-themed input[type=text].disabled:hover + .wrapperText,\\n.form-themed input[type=password].disabled:hover + .wrapperText,\\n.form-themed input[type=number].disabled:hover + .wrapperText,\\n.form-themed .btn[disabled]:active + .wrapperText,\\n.form-themed input[type=text][disabled]:active + .wrapperText,\\n.form-themed input[type=password][disabled]:active + .wrapperText,\\n.form-themed input[type=number][disabled]:active + .wrapperText,\\n.form-themed .btn.disabled:active + .wrapperText,\\n.form-themed input[type=text].disabled:active + .wrapperText,\\n.form-themed input[type=password].disabled:active + .wrapperText,\\n.form-themed input[type=number].disabled:active + .wrapperText {\\n color: var(--text-primary-color);\\n cursor: auto;\\n}\\n.form-themed input[type=text],\\n.form-themed input[type=password],\\n.form-themed input[type=number] {\\n background-color: var(--ui-gray);\\n border-color: var(--ui-border-color);\\n color: var(--text-primary-color);\\n font-weight: normal;\\n}\\n.form-themed input[type=text]:active,\\n.form-themed input[type=password]:active,\\n.form-themed input[type=number]:active,\\n.form-themed input[type=text]:focus,\\n.form-themed input[type=password]:focus,\\n.form-themed input[type=number]:focus {\\n background-color: var(--ui-gray-dark);\\n border: 2px solid var(--active-color);\\n box-shadow: none;\\n}\\n.form-themed input[type=text]:active + .wrapperText,\\n.form-themed input[type=password]:active + .wrapperText,\\n.form-themed input[type=number]:active + .wrapperText,\\n.form-themed input[type=text]:focus + .wrapperText,\\n.form-themed input[type=password]:focus + .wrapperText,\\n.form-themed input[type=number]:focus + .wrapperText {\\n color: var(--active-color);\\n}\\n.form-themed .btn-primary {\\n background-color: var(--active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .btn-primary:hover,\\n.form-themed .btn-primary:active,\\n.form-themed .btn-primary:focus,\\n.form-themed .btn-primary:focus:active {\\n background-color: var(--ui-active-color);\\n border-collapse: var(--ui-border-color-active);\\n color: var(--ui-text-color-active);\\n}\\n.form-themed .form-control {\\n background-color: #fff;\\n border: 0;\\n font-size: 14px;\\n height: 30px;\\n line-height: 16px;\\n padding: 8px 9px 6px;\\n}\\n:root {\\n --active-color: #20a5d6;\\n}\\n.nav-tabs {\\n border-bottom: 0;\\n margin-bottom: 3px;\\n position: relative;\\n z-index: 1;\\n}\\n.nav-tabs :hover {\\n cursor: pointer;\\n}\\n.nav-tabs>li {\\n font-size: 14px;\\n font-weight: normal;\\n height: 40px;\\n line-height: 40px;\\n margin-bottom: 0;\\n}\\n.nav-tabs>li>button {\\n display: block;\\n width: 100%;\\n line-height: inherit;\\n margin: 0;\\n height: inherit;\\n padding: 0 10px 0 10px;\\n outline: none;\\n}\\n.nav-tabs>li>button:after {\\n background-color: transparent;\\n bottom: -3px;\\n content: ' ';\\n display: block;\\n height: 3px;\\n width: 100%;\\n}\\n.nav-tabs>li>button,\\n.nav-tabs>li.active>button,\\n.nav-tabs>li>button:hover,\\n.nav-tabs>li.active>button:hover,\\n.nav-tabs>li>button:active,\\n.nav-tabs>li.active>button:active,\\n.nav-tabs>li>button:focus,\\n.nav-tabs>li.active>button:focus {\\n color: var(--active-color);\\n background-color: transparent;\\n border: 0;\\n}\\n.nav-tabs>li.active>button {\\n font-weight: bold;\\n}\\n.nav-tabs>li.active>button:after {\\n background-color: var(--active-color);\\n}\\n:root {\\n --state-error: #fcc;\\n --state-error-border: #933;\\n --state-error-text: #fcc;\\n}\\n.form-themed .state-error.wrapperLabel input + .wrapperText,\\n.state-error.wrapperLabel input + .wrapperText {\\n color: var(--state-error-text);\\n}\\n.form-themed .state-error+.tooltip .tooltip-inner,\\n.state-error+.tooltip .tooltip-inner {\\n color: #fff;\\n background-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.top .tooltip-arrow,\\n.state-error+.tooltip.top .tooltip-arrow {\\n border-top-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.right .tooltip-arrow,\\n.state-error+.tooltip.right .tooltip-arrow {\\n border-right-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.bottom .tooltip-arrow,\\n.state-error+.tooltip.bottom .tooltip-arrow {\\n border-bottom-color: var(--state-error-border);\\n}\\n.form-themed .state-error+.tooltip.left .tooltip-arrow,\\n.state-error+.tooltip.left .tooltip-arrow {\\n border-left-color: var(--state-error-border);\\n}\\n.form-themed .state-error:not(.component-group).form-control,\\n.state-error:not(.component-group).form-control,\\n.form-themed .state-error:not(.component-group) .form-control,\\n.state-error:not(.component-group) .form-control {\\n background-color: var(--state-error-border);\\n border-color: var(--state-error-border);\\n}\\n.full-width {\\n width: 100%;\\n}\\n.full-height {\\n height: 100%;\\n}\\n.flex-h {\\n display: flex;\\n flex-direction: row;\\n}\\n.flex-v {\\n display: flex;\\n flex-direction: column;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.nowrap {\\n white-space: nowrap;\\n}\\n.modal-body {\\n overflow: hidden;\\n}\\n.errorMessage {\\n color: var(--state-error-text);\\n font-size: 10px;\\n text-transform: uppercase;\\n}\\n.form-content {\\n border-bottom: 3px solid var(--primary-background-color);\\n margin-bottom: 20px;\\n margin-left: -22px;\\n margin-right: -22px;\\n max-height: 70vh;\\n overflow-y: auto;\\n padding: 22px;\\n}\\n.popover {\\n width: 300px;\\n}\\n\";\nstyleInject(css$n);\n\nvar UserPreferences =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferences, _Component);\n\n function UserPreferences() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, UserPreferences);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(UserPreferences)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n tabIndex: 0\n });\n\n return _this;\n }\n\n _createClass(UserPreferences, [{\n key: \"tabClick\",\n value: function tabClick(tabIndex) {\n this.setState({\n tabIndex: tabIndex\n });\n }\n }, {\n key: \"renderHotkeysTab\",\n value: function renderHotkeysTab() {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(HotKeysPreferences, {\n hotKeysData: this.props.hotKeysData\n })));\n }\n }, {\n key: \"renderWindowLevelTab\",\n value: function renderWindowLevelTab() {\n if (this.props.windowLevelData) {\n return React.createElement(\"form\", {\n className: \"form-themed themed\"\n }, React.createElement(\"div\", {\n className: \"form-content\"\n }, React.createElement(WindowLevelPreferences, {\n windowLevelData: this.props.windowLevelData\n })));\n }\n }\n }, {\n key: \"renderTabs\",\n value: function renderTabs(tabIndex) {\n if (tabIndex === 0) {\n return this.renderHotkeysTab();\n } else {\n return this.renderWindowLevelTab();\n }\n }\n }, {\n key: \"getTabClass\",\n value: function getTabClass(tabIndex) {\n return tabIndex === this.state.tabIndex ? 'nav-link active' : 'nav-link';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return React.createElement(\"div\", null, React.createElement(\"div\", {\n className: \"dialog-separator-after\"\n }, React.createElement(\"ul\", {\n className: \"nav nav-tabs\"\n }, React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(0);\n },\n className: this.getTabClass(0)\n }, React.createElement(\"button\", null, \"Hotkeys\")), React.createElement(\"li\", {\n onClick: function onClick() {\n _this2.tabClick(1);\n },\n className: this.getTabClass(1)\n }, React.createElement(\"button\", null, \"Window Level\")))), this.renderTabs(this.state.tabIndex));\n }\n }]);\n\n return UserPreferences;\n}(Component);\n\n_defineProperty(UserPreferences, \"defaultProps\", {\n hotKeysData: {},\n windowLevelData: {}\n});\n\n_defineProperty(UserPreferences, \"propTypes\", {\n hotKeysData: propTypes.object.isRequired,\n windowLevelData: propTypes.object.isRequired\n});\n\nvar createChainableTypeChecker_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(createChainableTypeChecker_1);\n\nvar componentOrElement = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(componentOrElement);\n\nvar interopRequireDefault = createCommonjsModule(function (module) {\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n});\n\nunwrapExports(interopRequireDefault);\n\nvar ownerDocument_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(ownerDocument_1);\n\nvar activeElement_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = activeElement;\n\nvar _ownerDocument = interopRequireDefault(ownerDocument_1);\n\nfunction activeElement(doc) {\n if (doc === void 0) {\n doc = (0, _ownerDocument.default)();\n }\n\n try {\n return doc.activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(activeElement_1);\n\nvar inDOM = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(inDOM);\n\nvar contains = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(contains);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning$1 = function() {};\n\nif (__DEV__) {\n warning$1 = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nvar warning_1 = warning$1;\n\nvar deprecated_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecated;\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction deprecated(validator, reason) {\n return function validate(props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] != null) {\n var messageKey = componentName + '.' + propName;\n\n (0, _warning2.default)(warned[messageKey], 'The ' + location + ' `' + propFullNameSafe + '` of ' + ('`' + componentNameSafe + '` is deprecated. ' + reason + '.'));\n\n warned[messageKey] = true;\n }\n\n for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n args[_key - 5] = arguments[_key];\n }\n\n return validator.apply(undefined, [props, propName, componentName, location, propFullName].concat(args));\n };\n}\n\n/* eslint-disable no-underscore-dangle */\nfunction _resetWarned() {\n warned = {};\n}\n\ndeprecated._resetWarned = _resetWarned;\n/* eslint-enable no-underscore-dangle */\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(deprecated_1);\n\nvar elementType_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\n\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(createChainableTypeChecker_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];\n});\n\nunwrapExports(elementType_1);\n\nvar hasClass_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hasClass_1);\n\nvar addClass_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(addClass_1);\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nvar removeClass = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};\n\nvar _class = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _addClass = interopRequireDefault(addClass_1);\n\nexports.addClass = _addClass.default;\n\nvar _removeClass = interopRequireDefault(removeClass);\n\nexports.removeClass = _removeClass.default;\n\nvar _hasClass = interopRequireDefault(hasClass_1);\n\nexports.hasClass = _hasClass.default;\nvar _default = {\n addClass: _addClass.default,\n removeClass: _removeClass.default,\n hasClass: _hasClass.default\n};\nexports.default = _default;\n});\n\nunwrapExports(_class);\nvar _class_1 = _class.addClass;\nvar _class_2 = _class.removeClass;\nvar _class_3 = _class.hasClass;\n\nvar camelize_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelize_1);\n\nvar camelizeStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = interopRequireDefault(camelize_1);\n\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(camelizeStyle);\n\nvar hyphenate_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenate_1);\n\nvar hyphenateStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = interopRequireDefault(hyphenate_1);\n\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(hyphenateStyle);\n\nvar getComputedStyle = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(getComputedStyle);\n\nvar removeStyle_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(removeStyle_1);\n\nvar properties = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}\n});\n\nunwrapExports(properties);\nvar properties_1 = properties.animationEnd;\nvar properties_2 = properties.animationDelay;\nvar properties_3 = properties.animationTiming;\nvar properties_4 = properties.animationDuration;\nvar properties_5 = properties.animationName;\nvar properties_6 = properties.transitionEnd;\nvar properties_7 = properties.transitionDuration;\nvar properties_8 = properties.transitionDelay;\nvar properties_9 = properties.transitionTiming;\nvar properties_10 = properties.transitionProperty;\nvar properties_11 = properties.transform;\n\nvar isTransform_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isTransform_1);\n\nvar style_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = interopRequireDefault(camelizeStyle);\n\nvar _hyphenateStyle = interopRequireDefault(hyphenateStyle);\n\nvar _getComputedStyle2 = interopRequireDefault(getComputedStyle);\n\nvar _removeStyle = interopRequireDefault(removeStyle_1);\n\n\n\nvar _isTransform = interopRequireDefault(isTransform_1);\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(style_1);\n\nvar scrollbarSize_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(scrollbarSize_1);\n\nvar isWindow = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(isWindow);\n\nvar isOverflowing_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = isOverflowing;\n\n\n\nvar _isWindow2 = _interopRequireDefault(isWindow);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isBody(node) {\n return node && node.tagName.toLowerCase() === 'body';\n}\n\nfunction bodyIsOverflowing(node) {\n var doc = (0, _ownerDocument2.default)(node);\n var win = (0, _isWindow2.default)(doc);\n var fullWidth = win.innerWidth;\n\n // Support: ie8, no innerWidth\n if (!fullWidth) {\n var documentElementRect = doc.documentElement.getBoundingClientRect();\n fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n\n return doc.body.clientWidth < fullWidth;\n}\n\nfunction isOverflowing(container) {\n var win = (0, _isWindow2.default)(container);\n\n return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isOverflowing_1);\n\nvar manageAriaHidden = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.ariaHidden = ariaHidden;\nexports.hideSiblings = hideSiblings;\nexports.showSiblings = showSiblings;\n\nvar BLACKLIST = ['template', 'script', 'style'];\n\nvar isHidable = function isHidable(_ref) {\n var nodeType = _ref.nodeType,\n tagName = _ref.tagName;\n return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;\n};\n\nvar siblings = function siblings(container, mount, cb) {\n mount = [].concat(mount);\n\n [].forEach.call(container.children, function (node) {\n if (mount.indexOf(node) === -1 && isHidable(node)) {\n cb(node);\n }\n });\n};\n\nfunction ariaHidden(show, node) {\n if (!node) {\n return;\n }\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\n\nfunction hideSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(true, node);\n });\n}\n\nfunction showSiblings(container, mountNode) {\n siblings(container, mountNode, function (node) {\n return ariaHidden(false, node);\n });\n}\n});\n\nunwrapExports(manageAriaHidden);\nvar manageAriaHidden_1 = manageAriaHidden.ariaHidden;\nvar manageAriaHidden_2 = manageAriaHidden.hideSiblings;\nvar manageAriaHidden_3 = manageAriaHidden.showSiblings;\n\nvar ModalManager_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _class2 = _interopRequireDefault(_class);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findIndexOf(arr, cb) {\n var idx = -1;\n arr.some(function (d, i) {\n if (cb(d, i)) {\n idx = i;\n return true;\n }\n });\n return idx;\n}\n\nfunction findContainer(data, modal) {\n return findIndexOf(data, function (d) {\n return d.modals.indexOf(modal) !== -1;\n });\n}\n\nfunction setContainerStyle(state, container) {\n var style = { overflow: 'hidden' };\n\n // we are only interested in the actual `style` here\n // becasue we will override it\n state.style = {\n overflow: container.style.overflow,\n paddingRight: container.style.paddingRight\n };\n\n if (state.overflowing) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';\n }\n\n (0, _style2.default)(container, style);\n}\n\nfunction removeContainerStyle(_ref, container) {\n var style = _ref.style;\n\n\n Object.keys(style).forEach(function (key) {\n return container.style[key] = style[key];\n });\n}\n/**\n * Proper state managment for containers and the modals in those containers.\n *\n * @internal Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = function ModalManager() {\n var _this = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$hideSiblingNode = _ref2.hideSiblingNodes,\n hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode,\n _ref2$handleContainer = _ref2.handleContainerOverflow,\n handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;\n\n _classCallCheck(this, ModalManager);\n\n this.add = function (modal, container, className) {\n var modalIdx = _this.modals.indexOf(modal);\n var containerIdx = _this.containers.indexOf(container);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = _this.modals.length;\n _this.modals.push(modal);\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.hideSiblings)(container, modal.mountNode);\n }\n\n if (containerIdx !== -1) {\n _this.data[containerIdx].modals.push(modal);\n return modalIdx;\n }\n\n var data = {\n modals: [modal],\n //right now only the first modal of a container will have its classes applied\n classes: className ? className.split(/\\s+/) : [],\n\n overflowing: (0, _isOverflowing2.default)(container)\n };\n\n if (_this.handleContainerOverflow) {\n setContainerStyle(data, container);\n }\n\n data.classes.forEach(_class2.default.addClass.bind(null, container));\n\n _this.containers.push(container);\n _this.data.push(data);\n\n return modalIdx;\n };\n\n this.remove = function (modal) {\n var modalIdx = _this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n var containerIdx = findContainer(_this.data, modal);\n var data = _this.data[containerIdx];\n var container = _this.containers[containerIdx];\n\n data.modals.splice(data.modals.indexOf(modal), 1);\n\n _this.modals.splice(modalIdx, 1);\n\n // if that was the last modal in a container,\n // clean up the container\n if (data.modals.length === 0) {\n data.classes.forEach(_class2.default.removeClass.bind(null, container));\n\n if (_this.handleContainerOverflow) {\n removeContainerStyle(data, container);\n }\n\n if (_this.hideSiblingNodes) {\n (0, manageAriaHidden.showSiblings)(container, modal.mountNode);\n }\n _this.containers.splice(containerIdx, 1);\n _this.data.splice(containerIdx, 1);\n } else if (_this.hideSiblingNodes) {\n //otherwise make sure the next top modal is visible to a SR\n (0, manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);\n }\n };\n\n this.isTopModal = function (modal) {\n return !!_this.modals.length && _this.modals[_this.modals.length - 1] === modal;\n };\n\n this.hideSiblingNodes = hideSiblingNodes;\n this.handleContainerOverflow = handleContainerOverflow;\n this.modals = [];\n this.containers = [];\n this.data = [];\n};\n\nexports.default = ModalManager;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ModalManager_1);\n\nvar getContainer_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = getContainer;\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(getContainer_1);\n\nvar ownerDocument$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(ownerDocument$1);\n\nvar LegacyPortal = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n _this._overlayTarget = null;\n }\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children);\n\n // Save reference for future access.\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n this._unrenderOverlay();\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(LegacyPortal);\n\nvar Portal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\n\n\nvar _LegacyPortal2 = _interopRequireDefault(LegacyPortal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * The `` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `` component will be appended to the `container` specified.\n */\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.setContainer = function () {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props;\n\n _this._portalContainerNode = (0, _getContainer2.default)(props.container, (0, _ownerDocument2.default)(_this).body);\n }, _this.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this.setContainer();\n this.forceUpdate(this.props.onRendered);\n };\n\n Portal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Portal_1);\n\nvar RefHolder_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes$$1 = {\n children: _propTypes2.default.node\n};\n\n/**\n * Internal helper component to allow attaching a non-conflicting ref to a\n * child element that may not accept refs.\n */\n\nvar RefHolder = function (_React$Component) {\n _inherits(RefHolder, _React$Component);\n\n function RefHolder() {\n _classCallCheck(this, RefHolder);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n RefHolder.prototype.render = function render() {\n return this.props.children;\n };\n\n return RefHolder;\n}(_react2.default.Component);\n\nRefHolder.propTypes = propTypes$$1;\n\nexports.default = RefHolder;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(RefHolder_1);\n\nvar on_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(on_1);\n\nvar off_1 = createCommonjsModule(function (module, exports) {\n\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = interopRequireDefault(inDOM);\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n});\n\nunwrapExports(off_1);\n\nvar addEventListener = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\n\n\nvar _on2 = _interopRequireDefault(on_1);\n\n\n\nvar _off2 = _interopRequireDefault(off_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addEventListener);\n\nvar addFocusListener_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = addFocusListener;\n/**\n * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling\n * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8\n *\n * We only allow one Listener at a time to avoid stack overflows\n */\nfunction addFocusListener(handler) {\n var useFocusin = !document.addEventListener;\n var remove = void 0;\n\n if (useFocusin) {\n document.attachEvent('onfocusin', handler);\n remove = function remove() {\n return document.detachEvent('onfocusin', handler);\n };\n } else {\n document.addEventListener('focus', handler, true);\n remove = function remove() {\n return document.removeEventListener('focus', handler, true);\n };\n }\n\n return { remove: remove };\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(addFocusListener_1);\n\nvar Modal_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _activeElement2 = _interopRequireDefault(activeElement_1);\n\n\n\nvar _contains2 = _interopRequireDefault(contains);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\nvar _deprecated2 = _interopRequireDefault(deprecated_1);\n\n\n\nvar _elementType2 = _interopRequireDefault(elementType_1);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _reactDom2 = _interopRequireDefault(reactDom);\n\n\n\nvar _warning2 = _interopRequireDefault(warning_1);\n\n\n\nvar _ModalManager2 = _interopRequireDefault(ModalManager_1);\n\n\n\nvar _Portal2 = _interopRequireDefault(Portal_1);\n\n\n\nvar _RefHolder2 = _interopRequireDefault(RefHolder_1);\n\n\n\nvar _addEventListener2 = _interopRequireDefault(addEventListener);\n\n\n\nvar _addFocusListener2 = _interopRequireDefault(addFocusListener_1);\n\n\n\nvar _getContainer2 = _interopRequireDefault(getContainer_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument$1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/prop-types */\n\nvar modalManager = new _ModalManager2.default();\n\n/**\n * Love them or hate them, `` provides a solid foundation for creating dialogs, lightboxes, or whatever else.\n * The Modal component renders its `children` node in front of a backdrop component.\n *\n * The Modal offers a few helpful features over using just a `` component and some styles:\n *\n * - Manages dialog stacking when one-at-a-time just isn't enough.\n * - Creates a backdrop, for disabling interaction below the modal.\n * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.\n * - It disables scrolling of the page content while open.\n * - Adds the appropriate ARIA roles are automatically.\n * - Easily pluggable animations via a `` component.\n *\n * Note that, in the same way the backdrop element prevents users from clicking or interacting\n * with the page content underneath the Modal, Screen readers also need to be signaled to not to\n * interact with page content while the Modal is open. To do this, we use a common technique of applying\n * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for\n * a Modal to be truly modal, it should have a `container` that is _outside_ your app's\n * React hierarchy (such as the default: document.body).\n */\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n function Modal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Modal.prototype.omitProps = function omitProps(props, propTypes$$1) {\n\n var keys = Object.keys(props);\n var newProps = {};\n keys.map(function (prop) {\n if (!Object.prototype.hasOwnProperty.call(propTypes$$1, prop)) {\n newProps[prop] = props[prop];\n }\n });\n\n return newProps;\n };\n\n Modal.prototype.render = function render() {\n var _props = this.props,\n show = _props.show,\n container = _props.container,\n children = _props.children,\n Transition = _props.transition,\n backdrop = _props.backdrop,\n className = _props.className,\n style = _props.style,\n onExit = _props.onExit,\n onExiting = _props.onExiting,\n onEnter = _props.onEnter,\n onEntering = _props.onEntering,\n onEntered = _props.onEntered;\n\n\n var dialog = _react2.default.Children.only(children);\n var filteredProps = this.omitProps(this.props, Modal.propTypes);\n\n var mountModal = show || Transition && !this.state.exited;\n if (!mountModal) {\n return null;\n }\n\n var _dialog$props = dialog.props,\n role = _dialog$props.role,\n tabIndex = _dialog$props.tabIndex;\n\n\n if (role === undefined || tabIndex === undefined) {\n dialog = (0, React.cloneElement)(dialog, {\n role: role === undefined ? 'document' : role,\n tabIndex: tabIndex == null ? '-1' : tabIndex\n });\n }\n\n if (Transition) {\n dialog = _react2.default.createElement(\n Transition,\n {\n appear: true,\n unmountOnExit: true,\n 'in': show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n },\n dialog\n );\n }\n\n return _react2.default.createElement(\n _Portal2.default,\n {\n ref: this.setMountNode,\n container: container,\n onRendered: this.onPortalRendered\n },\n _react2.default.createElement(\n 'div',\n _extends({\n ref: this.setModalNodeRef,\n role: role || 'dialog'\n }, filteredProps, {\n style: style,\n className: className\n }),\n backdrop && this.renderBackdrop(),\n _react2.default.createElement(\n _RefHolder2.default,\n { ref: this.setDialogRef },\n dialog\n )\n )\n );\n };\n\n Modal.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({ exited: false });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({ exited: true });\n }\n };\n\n Modal.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {\n if (!this.props.show && nextProps.show) {\n this.checkForFocus();\n }\n };\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n if (this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var transition = this.props.transition;\n\n\n if (prevProps.show && !this.props.show && !transition) {\n // Otherwise handleHidden will call this.\n this.onHide();\n } else if (!prevProps.show && this.props.show) {\n this.onShow();\n }\n };\n\n Modal.prototype.componentWillUnmount = function componentWillUnmount() {\n var _props2 = this.props,\n show = _props2.show,\n transition = _props2.transition;\n\n\n this._isMounted = false;\n\n if (show || transition && !this.state.exited) {\n this.onHide();\n }\n };\n\n Modal.prototype.autoFocus = function autoFocus() {\n if (!this.props.autoFocus) {\n return;\n }\n\n var dialogElement = this.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n this.lastFocus = currentActiveElement;\n\n if (!dialogElement.hasAttribute('tabIndex')) {\n (0, _warning2.default)(false, 'The modal content node does not accept focus. For the benefit of ' + 'assistive technologies, the tabIndex of the node is being set ' + 'to \"-1\".');\n\n dialogElement.setAttribute('tabIndex', -1);\n }\n\n dialogElement.focus();\n }\n };\n\n Modal.prototype.restoreLastFocus = function restoreLastFocus() {\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n if (this.lastFocus && this.lastFocus.focus) {\n this.lastFocus.focus();\n this.lastFocus = null;\n }\n };\n\n Modal.prototype.getDialogElement = function getDialogElement() {\n return _reactDom2.default.findDOMNode(this.dialog);\n };\n\n Modal.prototype.isTopModal = function isTopModal() {\n return this.props.manager.isTopModal(this);\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = _extends({}, _Portal2.default.propTypes, {\n\n /**\n * Set the visibility of the Modal\n */\n show: _propTypes2.default.bool,\n\n /**\n * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.\n *\n * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the\n * page content can be placed behind a virtual backdrop as well as a visual one.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * A callback fired when the Modal is opening.\n */\n onShow: _propTypes2.default.func,\n\n /**\n * A callback fired when either the backdrop is clicked, or the escape key is pressed.\n *\n * The `onHide` callback only signals intent from the Modal,\n * you must actually set the `show` prop to `false` for the Modal to close.\n */\n onHide: _propTypes2.default.func,\n\n /**\n * Include a backdrop component.\n */\n backdrop: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.oneOf(['static'])]),\n\n /**\n * A function that returns a backdrop component. Useful for custom\n * backdrop rendering.\n *\n * ```js\n * renderBackdrop={props => }\n * ```\n */\n renderBackdrop: _propTypes2.default.func,\n\n /**\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n */\n onEscapeKeyDown: _propTypes2.default.func,\n\n /**\n * Support for this function will be deprecated. Please use `onEscapeKeyDown` instead\n * A callback fired when the escape key, if specified in `keyboard`, is pressed.\n * @deprecated\n */\n onEscapeKeyUp: (0, _deprecated2.default)(_propTypes2.default.func, 'Please use onEscapeKeyDown instead for consistency'),\n\n /**\n * A callback fired when the backdrop, if specified, is clicked.\n */\n onBackdropClick: _propTypes2.default.func,\n\n /**\n * A style object for the backdrop component.\n */\n backdropStyle: _propTypes2.default.object,\n\n /**\n * A css class or classes for the backdrop component.\n */\n backdropClassName: _propTypes2.default.string,\n\n /**\n * A css class or set of classes applied to the modal container when the modal is open,\n * and removed when it is closed.\n */\n containerClassName: _propTypes2.default.string,\n\n /**\n * Close the modal when escape key is pressed\n */\n keyboard: _propTypes2.default.bool,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the dialog component.\n */\n transition: _elementType2.default,\n\n /**\n * A `react-transition-group@2.0.0` `` component used\n * to control animations for the backdrop components.\n */\n backdropTransition: _elementType2.default,\n\n /**\n * When `true` The modal will automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes. This also\n * works correctly with any Modal children that have the `autoFocus` prop.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n autoFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will prevent focus from leaving the Modal while open.\n *\n * Generally this should never be set to `false` as it makes the Modal less\n * accessible to assistive technologies, like screen readers.\n */\n enforceFocus: _propTypes2.default.bool,\n\n /**\n * When `true` The modal will restore focus to previously focused element once\n * modal is hidden\n */\n restoreFocus: _propTypes2.default.bool,\n\n /**\n * Callback fired before the Modal transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Modal transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Modal begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Modal finishes transitioning out\n */\n onExited: _propTypes2.default.func,\n\n /**\n * A ModalManager instance used to track and manage the state of open\n * Modals. Useful when customizing how modals interact within a container\n */\n manager: _propTypes2.default.object.isRequired\n});\nModal.defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n onHide: function onHide() {},\n manager: modalManager,\n renderBackdrop: function renderBackdrop(props) {\n return _react2.default.createElement('div', props);\n }\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = { exited: !this.props.show };\n\n this.renderBackdrop = function () {\n var _props3 = _this2.props,\n backdropStyle = _props3.backdropStyle,\n backdropClassName = _props3.backdropClassName,\n renderBackdrop = _props3.renderBackdrop,\n Transition = _props3.backdropTransition;\n\n\n var backdropRef = function backdropRef(ref) {\n return _this2.backdrop = ref;\n };\n\n var backdrop = renderBackdrop({\n ref: backdropRef,\n style: backdropStyle,\n className: backdropClassName,\n onClick: _this2.handleBackdropClick\n });\n\n if (Transition) {\n backdrop = _react2.default.createElement(\n Transition,\n {\n appear: true,\n 'in': _this2.props.show\n },\n backdrop\n );\n }\n\n return backdrop;\n };\n\n this.onPortalRendered = function () {\n _this2.autoFocus();\n\n if (_this2.props.onShow) {\n _this2.props.onShow();\n }\n };\n\n this.onShow = function () {\n var doc = (0, _ownerDocument2.default)(_this2);\n var container = (0, _getContainer2.default)(_this2.props.container, doc.body);\n\n _this2.props.manager.add(_this2, container, _this2.props.containerClassName);\n\n _this2._onDocumentKeydownListener = (0, _addEventListener2.default)(doc, 'keydown', _this2.handleDocumentKeyDown);\n\n _this2._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this2.handleDocumentKeyUp);\n\n _this2._onFocusinListener = (0, _addFocusListener2.default)(_this2.enforceFocus);\n };\n\n this.onHide = function () {\n _this2.props.manager.remove(_this2);\n\n _this2._onDocumentKeydownListener.remove();\n\n _this2._onDocumentKeyupListener.remove();\n\n _this2._onFocusinListener.remove();\n\n if (_this2.props.restoreFocus) {\n _this2.restoreLastFocus();\n }\n };\n\n this.setMountNode = function (ref) {\n _this2.mountNode = ref ? ref.getMountNode() : ref;\n };\n\n this.setModalNodeRef = function (ref) {\n _this2.modalNode = ref;\n };\n\n this.setDialogRef = function (ref) {\n _this2.dialog = ref;\n };\n\n this.handleHidden = function () {\n _this2.setState({ exited: true });\n _this2.onHide();\n\n if (_this2.props.onExited) {\n var _props4;\n\n (_props4 = _this2.props).onExited.apply(_props4, arguments);\n }\n };\n\n this.handleBackdropClick = function (e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (_this2.props.onBackdropClick) {\n _this2.props.onBackdropClick(e);\n }\n\n if (_this2.props.backdrop === true) {\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyDown = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyDown) {\n _this2.props.onEscapeKeyDown(e);\n }\n\n _this2.props.onHide();\n }\n };\n\n this.handleDocumentKeyUp = function (e) {\n if (_this2.props.keyboard && e.keyCode === 27 && _this2.isTopModal()) {\n if (_this2.props.onEscapeKeyUp) {\n _this2.props.onEscapeKeyUp(e);\n }\n }\n };\n\n this.checkForFocus = function () {\n if (_inDOM2.default) {\n _this2.lastFocus = (0, _activeElement2.default)();\n }\n };\n\n this.enforceFocus = function () {\n if (!_this2.props.enforceFocus || !_this2._isMounted || !_this2.isTopModal()) {\n return;\n }\n\n var dialogElement = _this2.getDialogElement();\n var currentActiveElement = (0, _activeElement2.default)((0, _ownerDocument2.default)(_this2));\n\n if (dialogElement && !(0, _contains2.default)(dialogElement, currentActiveElement)) {\n dialogElement.focus();\n }\n };\n};\n\nModal.Manager = _ModalManager2.default;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Modal_1);\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar reactLifecyclesCompat_es = /*#__PURE__*/Object.freeze({\n polyfill: polyfill\n});\n\nvar PropTypes = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.transitionTimeout = transitionTimeout;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction transitionTimeout(transitionType) {\n var timeoutPropName = 'transition' + transitionType + 'Timeout';\n var enabledPropName = 'transition' + transitionType;\n return function (props) {\n // If the transition is enabled\n if (props[enabledPropName]) {\n // If no timeout duration is provided\n if (props[timeoutPropName] == null) {\n return new Error(timeoutPropName + ' wasn\\'t supplied to CSSTransitionGroup: ' + 'this can cause unreliable animations and won\\'t be supported in ' + 'a future version of React. See ' + 'https://fb.me/react-animation-transition-group-timeout for more ' + 'information.'); // If the duration isn't a number\n } else if (typeof props[timeoutPropName] !== 'number') {\n return new Error(timeoutPropName + ' must be a number (in milliseconds)');\n }\n }\n\n return null;\n };\n}\n\nvar timeoutsShape = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number\n}).isRequired]);\n\nexports.timeoutsShape = timeoutsShape;\n\nvar classNamesShape = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]);\n\nexports.classNamesShape = classNamesShape;\n});\n\nunwrapExports(PropTypes);\nvar PropTypes_1 = PropTypes.transitionTimeout;\nvar PropTypes_2 = PropTypes.classNamesShape;\nvar PropTypes_3 = PropTypes.timeoutsShape;\n\nvar Transition_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes$$1 = _interopRequireWildcard(propTypes);\n\nvar _react = _interopRequireDefault(React);\n\nvar _reactDom = _interopRequireDefault(reactDom);\n\n\n\n\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the components.\n * It's up to you to give meaning and effect to those states. For example we can\n * add styles to a component when it enters or exits:\n *\n * ```jsx\n * import Transition from 'react-transition-group/Transition';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {(state) => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * As noted the `Transition` component doesn't _do_ anything by itself to its child component.\n * What it does do is track transition states over time so you can update the\n * component (such as by adding styles or classes) when it changes states.\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component begins the\n * \"Enter\" stage. During this stage, the component will shift from its current transition state,\n * to `'entering'` for the duration of the transition and then to the `'entered'` stage once\n * it's complete. Let's take the following example:\n *\n * ```jsx\n * state = { in: false };\n *\n * toggleEnterState = () => {\n * this.setState({ in: true });\n * }\n *\n * render() {\n * return (\n *
\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state and\n * stay there for 500ms (the value of `timeout`) before it finally switches to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from `'exiting'` to `'exited'`.\n *\n * ## Timing\n *\n * Timing is often the trickiest part of animation, mistakes can result in slight delays\n * that are hard to pin down. A common example is when you want to add an exit transition,\n * you should set the desired final styles when the state is `'exiting'`. That's when the\n * transition to those styles will start and, if you matched the `timeout` prop with the\n * CSS Transition duration, it will end exactly when the state changes to `'exited'`.\n *\n * > **Note**: For simpler transitions the `Transition` component might be enough, but\n * > take into account that it's platform-agnostic, while the `CSSTransition` component\n * > [forces reflows](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * > in order to make more complex transitions more predictable. For example, even though\n * > classes `example-enter` and `example-enter-active` are applied immediately one after\n * > another, you can still transition from one to the other because of the forced reflow\n * > (read [this issue](https://github.com/reactjs/react-transition-group/issues/159#issuecomment-322761171)\n * > for more info). Take this into account when choosing between `Transition` and\n * > `CSSTransition`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter;\n appear = timeout.appear;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts(); // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing); // FIXME: appear timeout?\n\n\n _this2.onTransitionEnd(node, timeouts.enter, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n\n if (node) {\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n } else {\n setTimeout(this.nextCallback, 0);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes$$1.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element.\n * This function is called with the current transition status\n * ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used\n * to apply context specific props to a component.\n *\n * ```jsx\n * \n * {(status) => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes$$1.oneOfType([PropTypes$$1.func.isRequired, PropTypes$$1.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes$$1.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes$$1.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes$$1.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes$$1.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes$$1.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes$$1.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided\n *\n * You may specify a single timeout for all transitions like: `timeout={500}`,\n * or individually like:\n *\n * ```jsx\n * timeout={{\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * @type {number | { enter?: number, exit?: number }}\n */\n timeout: function timeout(props) {\n var pt = process.env.NODE_ENV !== \"production\" ? PropTypes.timeoutsShape : {}; if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes$$1.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes$$1.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes$$1.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, reactLifecyclesCompat_es.polyfill)(Transition);\n\nexports.default = _default;\n});\n\nunwrapExports(Transition_1);\nvar Transition_2 = Transition_1.EXITING;\nvar Transition_3 = Transition_1.ENTERED;\nvar Transition_4 = Transition_1.ENTERING;\nvar Transition_5 = Transition_1.EXITED;\nvar Transition_6 = Transition_1.UNMOUNTED;\n\nvar Fade_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _fadeStyles;\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _Transition2 = _interopRequireDefault(Transition_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar fadeStyles = (_fadeStyles = {}, _fadeStyles[Transition_1.ENTERING] = 'in', _fadeStyles[Transition_1.ENTERED] = 'in', _fadeStyles);\n\nvar Fade = function (_React$Component) {\n _inherits(Fade, _React$Component);\n\n function Fade(props, context) {\n _classCallCheck(this, Fade);\n\n return _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n }\n\n Fade.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['className', 'children']);\n\n return _react2.default.createElement(\n _Transition2.default,\n props,\n function (status, innerProps) {\n return _react2.default.cloneElement(children, _extends({}, innerProps, {\n className: (0, _classnames2.default)('fade', className, children.props.className, fadeStyles[status])\n }));\n }\n );\n };\n\n return Fade;\n}(_react2.default.Component);\n\nexports.default = Fade;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Fade_1);\n\nvar Body = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalBody = function (_React$Component) {\n _inherits(ModalBody, _React$Component);\n\n function ModalBody() {\n _classCallCheck(this, ModalBody);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalBody.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalBody.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalBody.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-body') }),\n children\n );\n };\n\n return ModalBody;\n}(_react2.default.Component);\n\nModalBody.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalBody;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Body);\n\nvar Dismiss_1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar chain = function chain(a, b) {\n return function () {\n a && a.apply(undefined, arguments);\n b && b.apply(undefined, arguments);\n };\n};\n\nvar Dismiss = function (_React$Component) {\n _inherits(Dismiss, _React$Component);\n\n function Dismiss() {\n _classCallCheck(this, Dismiss);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Dismiss.prototype.render = function render() {\n var _props = this.props,\n Tag = _props.component,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['component', 'children']);\n\n return _react2.default.createElement(\n Tag,\n _extends({}, props, {\n onClick: chain(props.onClick, this.context.onModalHide)\n }),\n children\n );\n };\n\n return Dismiss;\n}(_react2.default.Component);\n\nDismiss.propTypes = {\n component: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func])\n};\nDismiss.defaultProps = {\n component: 'button'\n};\nDismiss.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = Dismiss;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Dismiss_1);\n\nvar Header = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalHeader = function (_React$Component) {\n _inherits(ModalHeader, _React$Component);\n\n function ModalHeader() {\n _classCallCheck(this, ModalHeader);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalHeader.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalHeader.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n closeButton = _props.closeButton,\n children = _props.children,\n className = _props.className,\n label = _props['aria-label'],\n props = _objectWithoutProperties(_props, ['modalPrefix', 'closeButton', 'children', 'className', 'aria-label']);\n\n var prefix = modalPrefix || ModalHeader.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-header')\n }),\n closeButton && _react2.default.createElement(\n _Dismiss2.default,\n {\n className: 'close',\n 'aria-label': label\n },\n _react2.default.createElement(\n 'span',\n { 'aria-hidden': 'true' },\n '\\xD7'\n )\n ),\n children\n );\n };\n\n return ModalHeader;\n}(_react2.default.Component);\n\nModalHeader._isModalHeader = true;\nModalHeader.propTypes = {\n closeButton: _propTypes2.default.bool,\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string,\n\n 'aria-label': _propTypes2.default.string\n};\nModalHeader.defaultProps = {\n closeButton: false,\n 'aria-label': 'Close Modal'\n};\nModalHeader.contextTypes = {\n onModalHide: _propTypes2.default.func\n};\nexports.default = ModalHeader;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Header);\n\nvar Title = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalTitle = function (_React$Component) {\n _inherits(ModalTitle, _React$Component);\n\n function ModalTitle() {\n _classCallCheck(this, ModalTitle);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalTitle.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalTitle.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'className']);\n\n var prefix = modalPrefix || ModalTitle.getDefaultPrefix();\n\n return _react2.default.createElement('h4', _extends({}, props, {\n className: (0, _classnames2.default)(className, prefix + '-title')\n }));\n };\n\n return ModalTitle;\n}(_react2.default.Component);\n\nModalTitle.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\nexports.default = ModalTitle;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Title);\n\nvar Footer = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalFooter = function (_React$Component) {\n _inherits(ModalFooter, _React$Component);\n\n function ModalFooter() {\n _classCallCheck(this, ModalFooter);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n ModalFooter.getDefaultPrefix = function getDefaultPrefix() {\n return 'modal';\n };\n\n ModalFooter.prototype.render = function render() {\n var _props = this.props,\n modalPrefix = _props.modalPrefix,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['modalPrefix', 'children', 'className']);\n\n var prefix = modalPrefix || ModalFooter.getDefaultPrefix();\n\n return _react2.default.createElement(\n 'div',\n _extends({}, props, { className: (0, _classnames2.default)(className, prefix + '-footer') }),\n children\n );\n };\n\n return ModalFooter;\n}(_react2.default.Component);\n\nModalFooter.propTypes = {\n /**\n * A css class applied to the Component\n */\n modalPrefix: _propTypes2.default.string\n};\n\nexports.default = ModalFooter;\nmodule.exports = exports['default'];\n});\n\nunwrapExports(Footer);\n\nvar Modal_1$1 = createCommonjsModule(function (module, exports) {\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\n\nvar _propTypes2 = _interopRequireDefault(propTypes);\n\n\n\nvar _react2 = _interopRequireDefault(React);\n\n\n\nvar _componentOrElement2 = _interopRequireDefault(componentOrElement);\n\n\n\n\n\nvar _Modal2 = _interopRequireDefault(Modal_1);\n\n\n\nvar _isOverflowing2 = _interopRequireDefault(isOverflowing_1);\n\n\n\nvar _Fade2 = _interopRequireDefault(Fade_1);\n\n\n\nvar _Body2 = _interopRequireDefault(Body);\n\n\n\nvar _Header2 = _interopRequireDefault(Header);\n\n\n\nvar _Title2 = _interopRequireDefault(Title);\n\n\n\nvar _Footer2 = _interopRequireDefault(Footer);\n\n\n\nvar _Dismiss2 = _interopRequireDefault(Dismiss_1);\n\n\n\nvar _ownerDocument2 = _interopRequireDefault(ownerDocument_1);\n\n\n\nvar _inDOM2 = _interopRequireDefault(inDOM);\n\n\n\nvar _scrollbarSize2 = _interopRequireDefault(scrollbarSize_1);\n\n\n\nvar _style2 = _interopRequireDefault(style_1);\n\n\n\nvar _classnames2 = _interopRequireDefault(classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar baseIndex = {};\nvar PREFIX = 'modal';\n\nvar getZIndex = void 0;\n\nvar omit = function omit(obj, keys) {\n return Object.keys(obj).reduce(function (o, key) {\n if (keys.indexOf(key) === -1) o[key] = obj[key];\n return o;\n }, {});\n};\n\nfunction DialogTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.TRANSITION_DURATION }));\n}\nfunction BackdropTransition(props) {\n return _react2.default.createElement(_Fade2.default, _extends({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));\n}\n\nvar Modal = function (_React$Component) {\n _inherits(Modal, _React$Component);\n\n Modal.getDefaultPrefix = function getDefaultPrefix() {\n return PREFIX;\n };\n\n Modal.prototype.getChildContext = function getChildContext() {\n return this._context || (this._context = { onModalHide: this.props.onHide });\n };\n\n function Modal() {\n _classCallCheck(this, Modal);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this));\n\n _this.handleEntering = _this.handleEntering.bind(_this);\n _this.handleExiting = _this.handleExiting.bind(_this);\n\n _this.state = {\n classes: ''\n };\n return _this;\n }\n\n Modal.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n getZIndex = getZIndex || function () {\n var modal = document.createElement('div'),\n backdrop = document.createElement('div'),\n zIndexFactor = void 0;\n\n modal.className = 'modal hide';\n backdrop.className = 'modal-backdrop hide';\n\n document.body.appendChild(modal);\n document.body.appendChild(backdrop);\n\n baseIndex.modal = +(0, _style2.default)(modal, 'z-index');\n baseIndex.backdrop = +(0, _style2.default)(backdrop, 'z-index');\n zIndexFactor = baseIndex.modal - baseIndex.backdrop;\n\n document.body.removeChild(modal);\n document.body.removeChild(backdrop);\n\n return function (type) {\n return baseIndex[type] + zIndexFactor * (_this2.props.manager.modals.length - 1);\n };\n }();\n };\n\n Modal.prototype.handleEntering = function handleEntering() {\n this._show.apply(this, arguments);\n\n if (this.props.onEntering) {\n this.props.onEntering();\n }\n };\n\n Modal.prototype.handleExiting = function handleExiting() {\n this._removeAttentionClasses();\n if (this.props.onExiting) {\n this.props.onExiting();\n }\n };\n\n Modal.prototype.render = function render() {\n var _this3 = this;\n\n var _props = this.props,\n className = _props.className,\n children = _props.children,\n keyboard = _props.keyboard,\n transition = _props.transition,\n modalPrefix = _props.modalPrefix,\n dialogClassName = _props.dialogClassName,\n container = _props.container,\n onEnter = _props.onEnter,\n onEntered = _props.onEntered,\n onExit = _props.onExit,\n onExited = _props.onExited,\n props = _objectWithoutProperties(_props, ['className', 'children', 'keyboard', 'transition', 'modalPrefix', 'dialogClassName', 'container', 'onEnter', 'onEntered', 'onExit', 'onExited']);\n\n var _state = this.state,\n dialog = _state.dialog,\n classes = _state.classes,\n backdrop = _state.backdrop;\n\n\n delete props.manager;\n var elementProps = omit(props, Object.keys(Modal.propTypes));\n\n var prefix = modalPrefix || Modal.getDefaultPrefix();\n\n if (transition === true) transition = DialogTransition;\n\n var modal = _react2.default.createElement(\n 'div',\n _extends({}, elementProps, {\n ref: function ref(r) {\n return _this3.dialog = r;\n },\n style: dialog,\n className: (0, _classnames2.default)(className, prefix, { in: props.show && !transition }),\n onClick: this.props.backdrop ? function (e) {\n return _this3.handleBackdropClick(e);\n } : null\n }),\n _react2.default.createElement(\n 'div',\n {\n key: 'modal',\n ref: function ref(r) {\n return _this3.innerRef = r;\n },\n className: (0, _classnames2.default)(prefix + '-dialog', dialogClassName, classes, (props.small || props.sm) && prefix + '-sm', (props.large || props.lg) && prefix + '-lg')\n },\n _react2.default.createElement(\n 'div',\n { className: prefix + '-content' },\n children\n )\n )\n );\n\n return _react2.default.createElement(\n _Modal2.default,\n {\n keyboard: keyboard,\n ref: function ref(_ref) {\n _this3.modal = _ref && _ref.modal;\n _this3.backdrop = _ref && _ref.backdrop;\n },\n container: container,\n backdrop: props.backdrop,\n show: props.show,\n backdropStyle: backdrop,\n backdropClassName: prefix + '-backdrop',\n containerClassName: prefix + '-open',\n transition: transition || undefined,\n backdropTransition: transition ? BackdropTransition : undefined,\n onHide: this.props.onHide,\n onEnter: onEnter,\n onEntering: this.handleEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: this.handleExiting,\n onExited: onExited\n },\n modal\n );\n };\n\n Modal.prototype.attention = function attention() {\n var _this4 = this;\n\n var attentionClass = this.props.attentionClass;\n\n\n if (attentionClass) this.setState({ classes: '' }, function () {\n if (_this4.props.show) {\n // eslint-disable-next-line no-unused-expressions\n _this4.innerRef.offsetWidth;\n _this4.setState({\n classes: attentionClass + ' animated'\n });\n }\n });\n };\n\n Modal.prototype.handleBackdropClick = function handleBackdropClick(e) {\n if (e.target !== e.currentTarget) return;\n if (this.props.backdrop === 'static') return this.attention();\n\n this.props.onHide();\n };\n\n Modal.prototype._show = function _show() {\n if (this.props.show) this.setState(this._getStyles());\n };\n\n Modal.prototype._getStyles = function _getStyles() {\n if (!_inDOM2.default) return {};\n\n var node = (0, reactDom.findDOMNode)(this.dialog),\n doc = (0, _ownerDocument2.default)(node),\n scrollHt = node.scrollHeight,\n bodyIsOverflowing = (0, _isOverflowing2.default)(this.props.container || doc.body),\n modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;\n\n return {\n dialog: {\n zIndex: getZIndex('modal'),\n paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0,\n paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : void 0\n },\n backdrop: {\n zIndex: getZIndex('backdrop')\n }\n };\n };\n\n Modal.prototype._removeAttentionClasses = function _removeAttentionClasses() {\n this.setState({ classes: '' });\n };\n\n return Modal;\n}(_react2.default.Component);\n\nModal.propTypes = {\n show: _propTypes2.default.bool,\n\n /** sizes **/\n small: _propTypes2.default.bool,\n sm: _propTypes2.default.bool,\n large: _propTypes2.default.bool,\n lg: _propTypes2.default.bool,\n /** --- **/\n\n backdrop: _propTypes2.default.oneOf(['static', true, false]),\n keyboard: _propTypes2.default.bool,\n animate: _propTypes2.default.bool,\n transition: _propTypes2.default.any,\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n onHide: _propTypes2.default.func,\n onEnter: _propTypes2.default.func,\n onEntering: _propTypes2.default.func,\n onEntered: _propTypes2.default.func,\n onExit: _propTypes2.default.func,\n onExiting: _propTypes2.default.func,\n onExited: _propTypes2.default.func,\n\n modalPrefix: _propTypes2.default.string,\n dialogClassName: _propTypes2.default.string,\n attentionClass: _propTypes2.default.string\n};\nModal.defaultProps = {\n backdrop: true,\n keyboard: true,\n animate: true,\n transition: true,\n container: _inDOM2.default ? document.body : null,\n attentionClass: 'shake',\n manager: (_Modal2.default.getDefaultProps ? _Modal2.default.getDefaultProps() : _Modal2.default.defaultProps).manager\n};\nModal.childContextTypes = {\n onModalHide: _propTypes2.default.func\n};\n\n\nModal.injectCSSPrefix = function (prefix) {\n PREFIX = prefix;\n};\n\nfunction getDefaultPrefix() {\n return PREFIX;\n}\n\n_Body2.default.getDefaultPrefix = getDefaultPrefix;\n_Header2.default.getDefaultPrefix = getDefaultPrefix;\n_Title2.default.getDefaultPrefix = getDefaultPrefix;\n_Footer2.default.getDefaultPrefix = getDefaultPrefix;\n\nModal.Body = _Body2.default;\nModal.Header = _Header2.default;\nModal.Title = _Title2.default;\nModal.Footer = _Footer2.default;\nModal.Dismiss = _Dismiss2.default;\n\nModal.BaseModal = Modal;\n\nModal.TRANSITION_DURATION = 300;\nModal.BACKDROP_TRANSITION_DURATION = 150;\n\nexports.default = Modal;\nmodule.exports = exports['default'];\n});\n\nvar Modal$1 = unwrapExports(Modal_1$1);\n\nvar css$o = \"/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/* Licensed MIT; Copyright (c) 2011-2014 Twitter, Inc */\\n/*\\nAnimate.css - http://daneden.me/animate\\nLicensed under the ☺ license (http://licence.visualidiot.com/)\\nCopyright (c) 2012 Dan Eden*/\\n.animated {\\n -webkit-animation-duration: 1s;\\n -moz-animation-duration: 1s;\\n -o-animation-duration: 1s;\\n animation-duration: 1s;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-fill-mode: both;\\n -o-animation-fill-mode: both;\\n animation-fill-mode: both;\\n}\\n@-webkit-keyframes shake {\\n 0%,\\n 100% {\\n -webkit-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -webkit-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -webkit-transform: translateX(10px);\\n }\\n}\\n@-moz-keyframes shake {\\n 0%,\\n 100% {\\n -moz-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -moz-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -moz-transform: translateX(10px);\\n }\\n}\\n@-o-keyframes shake {\\n 0%,\\n 100% {\\n -o-transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n -o-transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n -o-transform: translateX(10px);\\n }\\n}\\n@keyframes shake {\\n 0%,\\n 100% {\\n transform: translateX(0);\\n }\\n 10%,\\n 30%,\\n 50%,\\n 70%,\\n 90% {\\n transform: translateX(-10px);\\n }\\n 20%,\\n 40%,\\n 60%,\\n 80% {\\n transform: translateX(10px);\\n }\\n}\\n.shake {\\n -webkit-animation-name: shake;\\n -moz-animation-name: shake;\\n -o-animation-name: shake;\\n animation-name: shake;\\n}\\n.modal {\\n display: block;\\n}\\n.modal-content > .close {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n}\\n@media (min-width: 768px) {\\n .modal-sm > .modal-dialog {\\n width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg > .modal-dialog {\\n width: 900px;\\n }\\n}\\n\";\nstyleInject(css$o);\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\nvar css$p = \":root {\\n --default-color: #9ccef9;\\n --active-color: #20a5d6;\\n --hover-color: #fff;\\n --ui-gray: #263340;\\n --ui-gray-dark: #16202b;\\n --ui-gray-darkest: #14202a;\\n --ui-gray-darker: #151a1f;\\n --ui-gray-light: #516873;\\n --text-primary-color: #fff;\\n --text-secondary-color: #91b9cd;\\n --ui-border-color: #44626f;\\n}\\n.modal-dialog .modal-content {\\n background-color: var(--ui-gray-darker);\\n border-color: var(--ui-border-color);\\n color: var(--text-secondary-color);\\n border: 0;\\n}\\n.modal-dialog .modal-content .modal-header,\\n.modal-dialog .modal-content .modal-footer {\\n border-color: var(--ui-border-color);\\n}\\n.modal-dialog .modal-content .dialog-separator,\\n.modal-dialog .modal-content .dialog-separator-before,\\n.modal-dialog .modal-content .dialog-separator-after {\\n position: relative;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-before:before,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n background-color: #000;\\n content: ' ';\\n display: block;\\n height: 3px;\\n left: 0;\\n position: absolute;\\n width: 100%;\\n}\\n.modal-dialog .modal-content .dialog-separator:before,\\n.modal-dialog .modal-content .dialog-separator-before:before {\\n top: -3px;\\n}\\n.modal-dialog .modal-content .dialog-separator:after,\\n.modal-dialog .modal-content .dialog-separator-after:after {\\n bottom: -3px;\\n}\\n.modal-dialog .modal-content .modal-body {\\n color: var(--text-primary-color);\\n padding: 16px 22px 0px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar {\\n width: 6px;\\n background-color: var(--ui-gray-dark);\\n}\\n.modal-dialog .modal-content .modal-body ::-webkit-scrollbar-thumb {\\n background-color: var(--ui-gray-light);\\n border-radius: 5px;\\n}\\n.modal-dialog .modal-content .modal-header {\\n border-bottom-width: 3px;\\n border-bottom-style: solid;\\n border-bottom-color: #000;\\n padding: 19px 22px 17px;\\n position: relative;\\n}\\n.modal-dialog .modal-content .modal-header h4 {\\n color: var(--text-secondary-color);\\n font-size: 20px;\\n font-weight: 500;\\n line-height: 24px;\\n padding-right: 24px;\\n}\\n.modal-dialog .modal-content .modal-footer {\\n border-top: 0;\\n padding-top: 0;\\n}\\n.modal-dialog .card-round {\\n background-color: var(--ui-gray-dark);\\n padding: 10px;\\n}\\n.modal-dialog .modal-header {\\n position: relative;\\n}\\n.button-close,\\n.modal-dialog button.close {\\n color: var(--text-secondary-color);\\n height: 25px;\\n opacity: 1;\\n overflow: hidden;\\n text-align: center;\\n text-shadow: none;\\n width: 25px;\\n font-size: 25px;\\n font-weight: lighter;\\n}\\n\";\nstyleInject(css$p);\n\nvar UserPreferencesModal =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(UserPreferencesModal, _Component);\n\n // TODO: Make this component more generic to allow things other than W/L and hotkeys...\n function UserPreferencesModal(props) {\n var _this;\n\n _classCallCheck(this, UserPreferencesModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(UserPreferencesModal).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"save\", function () {\n _this.props.onSave({\n windowLevelData: _this.state.windowLevelData,\n hotKeysData: _this.state.hotKeysData\n });\n });\n\n _this.state = {\n windowLevelData: lodash_clonedeep(props.windowLevelData),\n hotKeysData: lodash_clonedeep(props.hotKeysData)\n };\n return _this;\n }\n\n _createClass(UserPreferencesModal, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prev, next) {\n var newStateData = {};\n\n if (!lodash_isequal(prev.windowLevelData, next.windowLevelData)) {\n newStateData.windowLevelData = prev.windowLevelData;\n }\n\n if (!lodash_isequal(prev.hotKeysData, next.hotKeysData)) {\n newStateData.hotKeysData = prev.hotKeysData;\n }\n\n if (newStateData.hotKeysData || newStateData.windowLevelData) {\n this.setState(newStateData);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Modal$1, {\n show: this.props.isOpen,\n onHide: this.props.onCancel,\n \"aria-labelledby\": \"ModalHeader\",\n className: \"modal fade themed in\",\n backdrop: false,\n large: true,\n keyboard: false\n }, React.createElement(Modal$1.Header, {\n closeButton: true\n }, React.createElement(Modal$1.Title, null, \"User Preferences\")), React.createElement(Modal$1.Body, null, React.createElement(UserPreferences, {\n windowLevelData: this.state.windowLevelData,\n hotKeysData: this.state.hotKeysData\n })), React.createElement(Modal$1.Footer, null, React.createElement(\"button\", {\n className: \"btn btn-danger pull-left\",\n onClick: this.props.onResetToDefaults\n }, \"Reset to Defaults\"), React.createElement(Modal$1.Dismiss, {\n className: \"btn btn-default\"\n }, \"Cancel\"), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: this.save\n }, \"Save\")));\n }\n }]);\n\n return UserPreferencesModal;\n}(Component);\n\n_defineProperty(UserPreferencesModal, \"propTypes\", {\n isOpen: propTypes.bool.isRequired,\n onCancel: propTypes.func,\n onSave: propTypes.func,\n onResetToDefaults: propTypes.func,\n windowLevelData: propTypes.object,\n hotKeysData: propTypes.object\n});\n\n_defineProperty(UserPreferencesModal, \"defaultProps\", {\n isOpen: false\n});\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = _baseRest(function(arrays) {\n return _baseUniq(_baseFlatten(arrays, 1, isArrayLikeObject_1, true));\n});\n\nvar union_1 = union;\n\nvar EnterLeaveCounter_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar EnterLeaveCounter = /** @class */ (function () {\n function EnterLeaveCounter(isNodeInDocument) {\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n EnterLeaveCounter.prototype.enter = function (enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function (node) {\n return _this.isNodeInDocument(node) &&\n (!node.contains || node.contains(enteringNode));\n };\n this.entered = union_1(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n };\n EnterLeaveCounter.prototype.leave = function (leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without_1(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n };\n EnterLeaveCounter.prototype.reset = function () {\n this.entered = [];\n };\n return EnterLeaveCounter;\n}());\nexports.default = EnterLeaveCounter;\n});\n\nunwrapExports(EnterLeaveCounter_1);\n\nvar BrowserDetector = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nexports.isFirefox = memoize_1(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexports.isSafari = memoize_1(function () { return Boolean(window.safari); });\n});\n\nunwrapExports(BrowserDetector);\nvar BrowserDetector_1 = BrowserDetector.isFirefox;\nvar BrowserDetector_2 = BrowserDetector.isSafari;\n\nvar MonotonicInterpolant_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MonotonicInterpolant = /** @class */ (function () {\n function MonotonicInterpolant(xs, ys) {\n var length = xs.length;\n // Rearrange xs and ys so that xs is sorted\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) { return (xs[a] < xs[b] ? -1 : 1); });\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var i = 0; i < length - 1; i++) {\n dx = xs[i + 1] - xs[i];\n dy = ys[i + 1] - ys[i];\n dxs.push(dx);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n var c1s = [ms[0]];\n for (var i = 0; i < dxs.length - 1; i++) {\n var m2 = ms[i];\n var mNext = ms[i + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n }\n else {\n dx = dxs[i];\n var dxNext = dxs[i + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n var c2s = [];\n var c3s = [];\n var m;\n for (var i = 0; i < c1s.length - 1; i++) {\n m = ms[i];\n var c1 = c1s[i];\n var invDx = 1 / dxs[i];\n var common = c1 + c1s[i + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n MonotonicInterpolant.prototype.interpolate = function (x) {\n var _a = this, xs = _a.xs, ys = _a.ys, c1s = _a.c1s, c2s = _a.c2s, c3s = _a.c3s;\n // The rightmost point in the dataset should give an exact result\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n }\n else if (xHere > x) {\n high = mid - 1;\n }\n else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n };\n return MonotonicInterpolant;\n}());\nexports.default = MonotonicInterpolant;\n});\n\nunwrapExports(MonotonicInterpolant_1);\n\nvar OffsetUtils = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nvar ELEMENT_NODE = 1;\nfunction getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _a = el.getBoundingClientRect(), top = _a.top, left = _a.left;\n return { x: left, y: top };\n}\nexports.getNodeClientOffset = getNodeClientOffset;\nfunction getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY,\n };\n}\nexports.getEventClientOffset = getEventClientOffset;\nfunction isImageNode(node) {\n return (node.nodeName === 'IMG' &&\n (BrowserDetector.isFirefox() || !document.documentElement.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (BrowserDetector.isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return { dragPreviewWidth: dragPreviewWidth, dragPreviewHeight: dragPreviewHeight };\n}\nfunction getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n };\n var sourceWidth = sourceNode.offsetWidth, sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX, anchorY = anchorPoint.anchorY;\n var _a = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight), dragPreviewWidth = _a.dragPreviewWidth, dragPreviewHeight = _a.dragPreviewHeight;\n var calculateYOffset = function () {\n var interpolantY = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n ]);\n var y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (BrowserDetector.isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function () {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant_1.default([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n var offsetX = offsetPoint.offsetX, offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset(),\n };\n}\nexports.getDragPreviewOffset = getDragPreviewOffset;\n});\n\nunwrapExports(OffsetUtils);\nvar OffsetUtils_1 = OffsetUtils.getNodeClientOffset;\nvar OffsetUtils_2 = OffsetUtils.getEventClientOffset;\nvar OffsetUtils_3 = OffsetUtils.getDragPreviewOffset;\n\nvar NativeTypes = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FILE = '__NATIVE_FILE__';\nexports.URL = '__NATIVE_URL__';\nexports.TEXT = '__NATIVE_TEXT__';\n});\n\nunwrapExports(NativeTypes);\nvar NativeTypes_1 = NativeTypes.FILE;\nvar NativeTypes_2 = NativeTypes.URL;\nvar NativeTypes_3 = NativeTypes.TEXT;\n\nvar NativeDragSources = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\n\nfunction getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) { return resultSoFar || dataTransfer.getData(typeToTry); }, null);\n return result != null ? result : defaultValue;\n}\nvar nativeTypesConfig = (_a = {},\n _a[NativeTypes.FILE] = {\n exposeProperty: 'files',\n matchesTypes: ['Files'],\n getData: function (dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n },\n _a[NativeTypes.URL] = {\n exposeProperty: 'urls',\n matchesTypes: ['Url', 'text/uri-list'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n },\n _a[NativeTypes.TEXT] = {\n exposeProperty: 'text',\n matchesTypes: ['Text', 'text/plain'],\n getData: function (dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n },\n _a);\nfunction createNativeDragSource(type) {\n var _a = nativeTypesConfig[type], exposeProperty = _a.exposeProperty, matchesTypes = _a.matchesTypes, getData = _a.getData;\n return /** @class */ (function () {\n function NativeDragSource() {\n var _a;\n this.item = (_a = {},\n Object.defineProperty(_a, exposeProperty, {\n get: function () {\n // tslint:disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\" + exposeProperty + \"\\\" until the drop event.\");\n return null;\n },\n enumerable: true,\n configurable: true\n }),\n _a);\n }\n NativeDragSource.prototype.mutateItemByReadingDataTransfer = function (dataTransfer) {\n delete this.item[exposeProperty];\n this.item[exposeProperty] = getData(dataTransfer, matchesTypes);\n };\n NativeDragSource.prototype.canDrag = function () {\n return true;\n };\n NativeDragSource.prototype.beginDrag = function () {\n return this.item;\n };\n NativeDragSource.prototype.isDragging = function (monitor, handle) {\n return handle === monitor.getSourceId();\n };\n NativeDragSource.prototype.endDrag = function () {\n // empty\n };\n return NativeDragSource;\n }());\n}\nexports.createNativeDragSource = createNativeDragSource;\nfunction matchNativeItemType(dataTransfer) {\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return (Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) { return dataTransferTypes.indexOf(t) > -1; });\n })[0] || null);\n}\nexports.matchNativeItemType = matchNativeItemType;\n});\n\nunwrapExports(NativeDragSources);\nvar NativeDragSources_1 = NativeDragSources.createNativeDragSource;\nvar NativeDragSources_2 = NativeDragSources.matchNativeItemType;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nvar _isIndex = isIndex;\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject_1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike_1(object) && _isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq_1(object[index], value);\n }\n return false;\n}\n\nvar _isIterateeCall = isIterateeCall;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nvar _baseTimes = baseTimes;\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nvar stubFalse_1 = stubFalse;\n\nvar isBuffer_1 = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse_1;\n\nmodule.exports = isBuffer;\n});\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag$1 = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag$1] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike_1(value) &&\n isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\nvar _baseIsTypedArray = baseIsTypedArray;\n\nvar _nodeUtil = createCommonjsModule(function (module, exports) {\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n});\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;\n\nvar isTypedArray_1 = isTypedArray;\n\n/** Used for built-in method references. */\nvar objectProto$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$7.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray_1(value),\n isArg = !isArr && isArguments_1(value),\n isBuff = !isArr && !isArg && isBuffer_1(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray_1(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? _baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$7.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n _isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _arrayLikeKeys = arrayLikeKeys;\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$8;\n\n return value === proto;\n}\n\nvar _isPrototype = isPrototype;\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _nativeKeysIn = nativeKeysIn;\n\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$9.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject_1(object)) {\n return _nativeKeysIn(object);\n }\n var isProto = _isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$8.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nvar _baseKeysIn = baseKeysIn;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike_1(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\nvar keysIn_1 = keysIn;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$a.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = _baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && _isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn_1(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq_1(value, objectProto$a[key]) && !hasOwnProperty$9.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nvar defaults_1 = defaults;\n\nvar HTML5Backend_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\n\n\n\n\nvar HTML5Backend = /** @class */ (function () {\n function HTML5Backend(manager) {\n var _this = this;\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n return OffsetUtils.getNodeClientOffset(_this.sourceNodes.get(sourceId));\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n _this.registry.removeSource(_this.currentNativeHandle);\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return ((!!document && document.body.contains(node)) ||\n (!!_this.window && _this.window.document.body.contains(node)));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = OffsetUtils.getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n // Don't publish the source just yet (see why below)\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset,\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n var _a = _this.getCurrentSourcePreviewNodeOptions(), anchorX = _a.anchorX, anchorY = _a.anchorY, offsetX = _a.offsetX, offsetY = _a.offsetY;\n var anchorPoint = { anchorX: anchorX, anchorY: anchorY };\n var offsetPoint = { offsetX: offsetX, offsetY: offsetY };\n var dragPreviewOffset = OffsetUtils.getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer.setData('application/json', {});\n }\n catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n _this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n var captureDraggingState = _this.getCurrentSourcePreviewNodeOptions().captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () { return _this.actions.publishDragSource(); }, 0);\n }\n else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n }\n else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n }\n else if (!dataTransfer.types &&\n (!e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n }\n else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = NativeDragSources.matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!BrowserDetector.isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n else {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'none';\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n _this.currentNativeSource.mutateItemByReadingDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: OffsetUtils.getEventClientOffset(e),\n });\n _this.actions.drop({ dropEffect: _this.getCurrentDropEffect() });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' ||\n target.tagName === 'SELECT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.context = manager.getContext();\n this.enterLeaveCounter = new EnterLeaveCounter_1.default(this.isNodeInDocument);\n }\n Object.defineProperty(HTML5Backend.prototype, \"window\", {\n // public for test\n get: function () {\n if (this.context && this.context.window) {\n return this.context.window;\n }\n else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n HTML5Backend.prototype.setup = function () {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n };\n HTML5Backend.prototype.teardown = function () {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n };\n HTML5Backend.prototype.connectDragPreview = function (sourceId, node, options) {\n var _this = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this.sourcePreviewNodes.delete(sourceId);\n _this.sourcePreviewNodeOptions.delete(sourceId);\n };\n };\n HTML5Backend.prototype.connectDragSource = function (sourceId, node, options) {\n var _this = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function (e) { return _this.handleDragStart(e, sourceId); };\n var handleSelectStart = function (e) { return _this.handleSelectStart(e); };\n node.setAttribute('draggable', true);\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this.sourceNodes.delete(sourceId);\n _this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', false);\n };\n };\n HTML5Backend.prototype.connectDropTarget = function (targetId, node) {\n var _this = this;\n var handleDragEnter = function (e) { return _this.handleDragEnter(e, targetId); };\n var handleDragOver = function (e) { return _this.handleDragOver(e, targetId); };\n var handleDrop = function (e) { return _this.handleDrop(e, targetId); };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n };\n HTML5Backend.prototype.addEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.removeEventListeners = function (target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n };\n HTML5Backend.prototype.getCurrentSourceNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return defaults_1(sourceNodeOptions || {}, {\n dropEffect: this.altKeyPressed ? 'copy' : 'move',\n });\n };\n HTML5Backend.prototype.getCurrentDropEffect = function () {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n };\n HTML5Backend.prototype.getCurrentSourcePreviewNodeOptions = function () {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return defaults_1(sourcePreviewNodeOptions || {}, {\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false,\n });\n };\n HTML5Backend.prototype.isDraggingNativeItem = function () {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) { return NativeTypes[key] === itemType; });\n };\n HTML5Backend.prototype.beginDragNativeItem = function (type) {\n this.clearCurrentDragSourceNode();\n var SourceType = NativeDragSources.createNativeDragSource(type);\n this.currentNativeSource = new SourceType();\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n };\n HTML5Backend.prototype.setCurrentDragSourceNode = function (node) {\n var _this = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n var MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return (_this.window &&\n _this.window.addEventListener('mousemove', _this.endDragIfSourceWasRemovedFromDOM, true));\n }, MOUSE_MOVE_TIMEOUT);\n };\n HTML5Backend.prototype.clearCurrentDragSourceNode = function () {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n };\n HTML5Backend.prototype.handleDragStart = function (e, sourceId) {\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n };\n HTML5Backend.prototype.handleDragEnter = function (e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDragOver = function (e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n };\n HTML5Backend.prototype.handleDrop = function (e, targetId) {\n this.dropTargetIds.unshift(targetId);\n };\n return HTML5Backend;\n}());\nexports.default = HTML5Backend;\n});\n\nunwrapExports(HTML5Backend_1);\n\nvar getEmptyImage_1 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar emptyImage;\nfunction getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}\nexports.default = getEmptyImage;\n});\n\nunwrapExports(getEmptyImage_1);\n\nvar lib$2 = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n\nexports.getEmptyImage = getEmptyImage_1.default;\n\nexports.NativeTypes = NativeTypes;\nfunction createHTML5Backend(manager) {\n return new HTML5Backend_1.default(manager);\n}\nexports.default = createHTML5Backend;\n});\n\nvar HTML5Backend$1 = unwrapExports(lib$2);\nvar lib_1$1 = lib$2.getEmptyImage;\nvar lib_2$1 = lib$2.NativeTypes;\n\n// TODO: Find a way for this context to be used in the parent application as well.\n\nfunction ViewerbaseDragDropContext(DecoratedClass) {\n return lib_1(HTML5Backend$1, null, true)(DecoratedClass);\n}\n\nexport { CineDialog, ExampleDropTarget$1 as ExampleDropTarget, LayoutButton, LayoutChooser, LayoutManager, LayoutPanelDropTarget$1 as LayoutPanelDropTarget, MeasurementTable, MeasurementTableItem, PlayClipButton, RoundedButtonGroup, ScrollableArea, SelectTree, SimpleDialog, StudyBrowser, StudyList, TableList, TableListItem, ThumbnailEntry, Toolbar, ToolbarSection, UserPreferences, UserPreferencesModal, ViewerbaseDragDropContext, Dropdown };\n//# sourceMappingURL=index.es.js.map\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, withRouter } from 'react-router-dom';\nimport { Dropdown } from \"react-viewerbase\";\nimport './Header.css';\nimport list from './HeaderMenuList.json';\n//import Icons from \"../../images/icons.svg\";\n\nconst Icons = '/icons.svg';\n\nfunction Header({ home, location }) {\n const { state } = location\n\n return (\n
\n
\n {\n state && state.studyLink &&\n \n Back to Viewer\n \n }\n\n \n \n \n \n
Open Health Imaging Foundation
\n
\n\n {!home &&\n Study list\n }\n
\n\n\n
\n \n INVESTIGATIONAL USE ONLY\n \n \n
\n\n
\n )\n}\n\nHeader.propTypes = {\n home: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired\n};\n\nHeader.defaultProps = {\n home: true\n};\n\nexport default withRouter(Header)\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","import { connect } from 'react-redux';\nimport { StudyBrowser } from 'react-viewerbase';\nimport cloneDeep from 'lodash.clonedeep';\n\n// TODO\n// - Determine in which display set is active from Redux (activeViewportIndex and layout viewportData)\n// - Pass in errors and stack loading progress from Redux\nconst mapStateToProps = (state, ownProps) => {\n // If we know that the stack loading progress details have changed,\n // we can try to update the component state so that the thumbnail\n // progress bar is updated\n const stackLoadingProgressMap = state.loading.progress;\n const studiesWithLoadingData = cloneDeep(ownProps.studies);\n\n studiesWithLoadingData.forEach(study => {\n study.thumbnails.forEach(data => {\n const { displaySetInstanceUid } = data\n const stackId = `StackProgress:${displaySetInstanceUid}`;\n const stackProgressData = stackLoadingProgressMap[stackId];\n\n let stackPercentComplete = 0;\n if (stackProgressData) {\n stackPercentComplete = stackProgressData.percentComplete;\n }\n\n data.stackPercentComplete = stackPercentComplete;\n })\n });\n\n return {\n studies: studiesWithLoadingData\n };\n};\n\nconst ConnectedStudyBrowser = connect(\n mapStateToProps,\n null\n)(StudyBrowser);\n\nexport default ConnectedStudyBrowser;\n","import { connect } from 'react-redux';\nimport { LayoutManager } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\n\nconst mapStateToProps = state => {\n const viewportPluginIds = state.plugins.availablePlugins.filter(plugin => plugin.type === OHIF.plugins.PLUGIN_TYPES.VIEWPORT).map(plugin => plugin.id);\n const availablePlugins = {}\n viewportPluginIds.forEach(id => {\n const plugin = OHIF.plugins.availablePlugins.find(plugin => plugin.id === id);\n if (plugin) {\n availablePlugins[id] = plugin.component;\n }\n });\n\n // TODO Use something like state.plugins.defaultPlugin[OHIF.plugins.PLUGIN_TYPES.VIEWPORT]\n let defaultPlugin;\n if (viewportPluginIds && viewportPluginIds.length) {\n defaultPlugin = viewportPluginIds[0];\n }\n\n return {\n layout: state.viewports.layout,\n activeViewportIndex: state.viewports.activeViewportIndex,\n availablePlugins,\n defaultPlugin\n };\n};\n\nconst ConnectedLayoutManager = connect(\n mapStateToProps,\n null\n)(LayoutManager);\n\nexport default ConnectedLayoutManager;\n","import { Component } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport cornerstoneMath from \"cornerstone-math\";\nimport { OHIF } from 'ohif-core';\nimport ConnectedLayoutManager from './ConnectedLayoutManager.js';\nimport './ViewerMain.css';\n\n// Attempt to fix weird undefined dep issue\ncornerstoneTools.external.cornerstoneMath = cornerstoneMath;\n\nclass ViewerMain extends Component {\n state = {\n viewportData: [],\n };\n\n static propTypes = {\n studies: PropTypes.array.isRequired\n };\n\n getDisplaySetsWithImages(studies) {\n const displaySets = [];\n studies.forEach((study) => {\n study.displaySets.forEach(dSet => {\n if (dSet.images.length) {\n displaySets.push(dSet);\n }\n });\n });\n\n return displaySets;\n }\n\n findDisplaySet(studies, studyInstanceUid, displaySetInstanceUid) {\n const study = studies.find(study => {\n return study.studyInstanceUid === studyInstanceUid;\n });\n\n if (!study) {\n return;\n }\n\n return study.displaySets.find(displaySet => {\n return displaySet.displaySetInstanceUid === displaySetInstanceUid;\n });\n }\n\n componentDidMount() {\n // Add beforeUnload event handler to check for unsaved changes\n //window.addEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Get all the display sets for the viewer studies\n const displaySets = this.getDisplaySetsWithImages(this.props.studies);\n\n this.setState({\n viewportData: displaySets\n });\n }\n\n setViewportData = ({viewportIndex, item}) => {\n // TODO: Replace this with mapDispatchToProps call\n // if we decide to put viewport info into redux\n\n // Note: Use Slice because React does a shallow equality check. Mutating the array\n // would not trigger a re-render. We have to create a copy.\n debugger;\n console.warn(item);\n const updatedViewportData = this.state.viewportData.slice(0);\n\n const displaySet = this.findDisplaySet(this.props.studies, item.studyInstanceUid, item.displaySetInstanceUid);\n\n console.warn(displaySet);\n\n updatedViewportData[viewportIndex] = Object.assign({}, displaySet);\n\n this.setState({\n viewportData: updatedViewportData\n });\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n\n componentWillUnmount() {\n // Remove beforeUnload event handler...\n //window.removeEventListener('beforeunload', unloadHandlers.beforeUnload);\n\n // Destroy the synchronizer used to update reference lines\n OHIF.viewer.updateImageSynchronizer.destroy();\n\n // TODO: Instruct all plugins to clean up themselves\n //\n // Clear references to all stacks in the StackManager\n //StackManager.clearStacks();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.Studies collection\n //OHIF.viewer.Studies.removeAll();\n\n // @TypeSafeStudies\n // Clears OHIF.viewer.StudyMetadataList collection\n //OHIF.viewer.StudyMetadataList.removeAll();\n }\n}\n\nexport default ViewerMain;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ConnectedStudyBrowser from './ConnectedStudyBrowser.js';\nimport ViewerMain from './ViewerMain.js';\nimport './FlexboxLayout.css';\n\nclass FlexboxLayout extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n };\n\n state = {\n studiesForBrowser: []\n };\n\n componentDidMount() {\n const studiesForBrowser = this.getStudiesForBrowser();\n\n this.setState({\n studiesForBrowser\n });\n }\n\n getStudiesForBrowser = () => {\n const { studies } = this.props;\n\n // TODO[react]:\n // - Add sorting of display sets\n // - Add useMiddleSeriesInstanceAsThumbnail\n // - Add showStackLoadingProgressBar option\n return studies.map((study) => {\n const { studyInstanceUid } = study;\n\n const thumbnails = study.displaySets.map((displaySet) => {\n const { displaySetInstanceUid, seriesDescription, seriesNumber, instanceNumber, numImageFrames } = displaySet;\n const imageId = displaySet.images[0].getImageId();\n\n return {\n imageId,\n displaySetInstanceUid,\n seriesDescription,\n seriesNumber,\n instanceNumber,\n numImageFrames,\n };\n });\n\n return {\n studyInstanceUid,\n thumbnails\n };\n });\n }\n\n render() {\n let mainContentClassName = \"main-content\"\n if (this.props.leftSidebarOpen) {\n mainContentClassName += ' sidebar-left-open';\n }\n\n if (this.props.rightSidebarOpen) {\n mainContentClassName += ' sidebar-right-open';\n }\n\n // TODO[react]: Add measurementLightTable\n return (\n
\n
\n \n
\n
\n \n
\n {/*
\n {{> measurementLightTable (clone this)}}\n
*/}\n
\n );\n }\n}\n\nexport default FlexboxLayout;\n","import { connect } from 'react-redux';\nimport FlexboxLayout from './FlexboxLayout';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen,\n };\n};\n\nconst ConnectedFlexboxLayout = connect(\n mapStateToProps,\n null\n)(FlexboxLayout);\n\nexport default ConnectedFlexboxLayout;\n","import { connect } from 'react-redux';\nimport { ToolbarSection } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setToolActive } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n return {\n buttons: state.tools.buttons,\n activeCommand: activeButton && activeButton.command\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n setToolActive: tool => {\n dispatch(setToolActive(tool.command))\n }\n };\n};\n\nconst ConnectedToolbarSection = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarSection);\n\nexport default ConnectedToolbarSection;\n","import { connect } from 'react-redux';\nimport { LayoutButton } from 'react-viewerbase';\nimport OHIF from 'ohif-core'\n\nconst { setLayout } = OHIF.redux.actions;\n\nconst mapStateToProps = state => {\n return {\n currentLayout: state.viewports.layout,\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n // TODO: Change if layout switched becomes more complex\n onChange: selectedCell => {\n let viewports = [];\n const rows = selectedCell.row + 1;\n const columns = selectedCell.col + 1;\n const numViewports = rows * columns;\n for (let i = 0; i < numViewports; i++) {\n viewports.push({\n height: `${100 / rows}%`,\n width: `${100 / columns}%`\n });\n }\n const layout = {\n viewports\n };\n\n dispatch(setLayout(layout))\n }\n };\n};\n\nconst ConnectedLayoutButton = connect(\n mapStateToProps,\n mapDispatchToProps\n)(LayoutButton);\n\nexport default ConnectedLayoutButton;\n","import { connect } from 'react-redux';\nimport { CineDialog } from 'react-viewerbase';\nimport OHIF from 'ohif-core';\nimport cloneDeep from 'lodash.clonedeep';\n\nconst { setViewportSpecificData } = OHIF.redux.actions;\n\n// TODO: I'm guessing this function will be used in other connect locations\n// so we might want to put it somewhere shared\nfunction getActiveViewportSpecificData(state) {\n const { viewportSpecificData, activeViewportIndex } = state.viewports;\n return viewportSpecificData[activeViewportIndex];\n}\n\nconst mapStateToProps = state => {\n // TODO:\n // - Test if including CineDialog in the toolbarRow will prevent it\n // from hovering over the rest of the UI when visible.\n //\n // - Create custom ToolbarButton which just shows Play state\n // - Connect this ToolbarButton to Redux\n const activeViewportSpecificData = getActiveViewportSpecificData(state);\n\n let stack = {\n imageIds: [],\n currentImageIdIndex: 0\n };\n if (activeViewportSpecificData && activeViewportSpecificData.stack) {\n stack = activeViewportSpecificData.stack\n }\n\n let cine = {\n isPlaying: false,\n cineFrameRate: 24\n };\n if (activeViewportSpecificData && activeViewportSpecificData.cine) {\n cine = activeViewportSpecificData.cine\n }\n\n\n // TODO: activeViewportStackData won't currently change anything on\n // CornerstoneViewport. The updates are too frequent and it's killing\n // performance. Need to revisit how we can do this.\n return {\n activeViewportStackData: stack,\n activeViewportCineData: cine,\n activeViewportIndex: state.viewports.activeViewportIndex\n };\n};\n\nconst mapDispatchToProps = dispatch => {\n return {\n dispatchSetViewportSpecificData: (viewportIndex, data) => {\n dispatch(setViewportSpecificData(viewportIndex, data));\n },\n };\n};\n\nconst mergeProps = (propsFromState, propsFromDispatch, ownProps) => {\n const { activeViewportStackData, activeViewportCineData, activeViewportIndex } = propsFromState;\n\n return {\n cineFrameRate: activeViewportCineData.cineFrameRate,\n isPlaying: activeViewportCineData.isPlaying,\n onPlayPauseChanged: isPlaying => {\n const cine = cloneDeep(activeViewportCineData);\n cine.isPlaying = !cine.isPlaying;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onFrameRateChanged: frameRate => {\n const cine = cloneDeep(activeViewportCineData);\n cine.cineFrameRate = frameRate;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { cine });\n },\n onClickNextButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n const largestPossibleIndex = stack.imageIds.length - 1;\n stack.currentImageIdIndex = Math.min(stack.currentImageIdIndex + 1, largestPossibleIndex)\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickBackButton: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = Math.max(stack.currentImageIdIndex - 1, 0);\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToStart: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = 0;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n },\n onClickSkipToEnd: () => {\n const stack = cloneDeep(activeViewportStackData);\n stack.currentImageIdIndex = stack.imageIds.length;\n\n propsFromDispatch.dispatchSetViewportSpecificData(activeViewportIndex, { stack });\n }\n };\n};\n\nconst ConnectedCineDialog = connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps\n)(CineDialog);\n\nexport default ConnectedCineDialog;\n","import React, { Component } from \"react\";\nimport ConnectedToolbarSection from './ConnectedToolbarSection';\nimport ConnectedLayoutButton from './ConnectedLayoutButton';\nimport ConnectedCineDialog from './ConnectedCineDialog.js';\nimport PropTypes from 'prop-types';\nimport { RoundedButtonGroup } from 'react-viewerbase';\nimport './ToolbarRow.css';\n//import Icons from \"../images/icons.svg\"\n\nconst Icons = '/icons.svg';\n\nclass ToolbarRow extends Component {\n static propTypes = {\n leftSidebarOpen: PropTypes.bool.isRequired,\n rightSidebarOpen: PropTypes.bool.isRequired,\n setLeftSidebarOpen: PropTypes.func,\n setRightSidebarOpen: PropTypes.func\n };\n\n static defaultProps = {\n leftSidebarOpen: false,\n rightSidebarOpen: false\n };\n\n onLeftSidebarValueChanged = (value) => {\n this.props.setLeftSidebarOpen(!!value);\n }\n\n render() {\n const leftSidebarToggle = [{\n value: 'studies',\n svgLink: `${Icons}#icon-studies`,\n svgWidth: 15,\n svgHeight: 13,\n bottomLabel: 'Series',\n }];\n\n const leftSidebarValue = this.props.leftSidebarOpen ? leftSidebarToggle[0].value : null;\n\n return (
\n
\n \n
\n \n \n {/* TODO: Putting cine dialog here for now */}\n
\n \n
\n
\n {/* > roundedButtonGroup rightSidebarToggleButtonData */}\n
\n
\n );\n }\n}\n\nexport default ToolbarRow;\n","export const setLeftSidebarOpen = state => ({\n type: 'SET_LEFT_SIDEBAR_OPEN',\n state\n});\n\nexport const setRightSidebarOpen = state => ({\n type: 'SET_RIGHT_SIDEBAR_OPEN',\n state\n});\n\nconst actions = {\n setLeftSidebarOpen,\n setRightSidebarOpen\n};\n\nexport default actions;\n","import { connect } from 'react-redux';\nimport ToolbarRow from './ToolbarRow';\nimport { setLeftSidebarOpen, setRightSidebarOpen } from '../redux/actions.js';\n\nconst mapStateToProps = state => {\n return {\n leftSidebarOpen: state.ui.leftSidebarOpen,\n rightSidebarOpen: state.ui.rightSidebarOpen\n };\n};\n\n\nconst mapDispatchToProps = dispatch => {\n return {\n setLeftSidebarOpen: state => {\n dispatch(setLeftSidebarOpen(state))\n },\n setRightSidebarOpen: state => {\n dispatch(setRightSidebarOpen(state))\n }\n };\n};\n\nconst ConnectedToolbarRow = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ToolbarRow);\n\nexport default ConnectedToolbarRow;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nclass StudyLoadingMonitor extends Component {\n static propTypes = {\n studies: PropTypes.array.isRequired,\n setStudyLoadingProgress: PropTypes.func.isRequired,\n clearStudyLoadingProgress: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n // TODO: This is pretty ugly. The thing is that the StudyLoadingListener\n // needs to update the Redux store, but shouldn't know that it exists.\n // I am therefore passing in some functions to update the store instead,\n // but this should definitely be cleaned up somehow.\n const options = {\n _setProgressData: (progressId, progressData) => {\n this.props.setStudyLoadingProgress(progressId, progressData)\n },\n _clearProgressById: (progressId) => {\n this.props.clearStudyLoadingProgress(progressId)\n }\n }\n\n const { StudyLoadingListener } = OHIF.classes;\n this.studyLoadingListener = StudyLoadingListener.getInstance(options);\n this.studyLoadingListener.clear();\n this.studyLoadingListener.addStudies(this.props.studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Destroy stack loading listeners when we close the viewer\n this.studyLoadingListener.clear();\n }\n}\n\n\nexport default StudyLoadingMonitor;\n","import { connect } from 'react-redux';\nimport StudyLoadingMonitor from '../components/StudyLoadingMonitor.js';\nimport OHIF from 'ohif-core'\n\nconst { setStudyLoadingProgress, clearStudyLoadingProgress } = OHIF.redux.actions;\n\nconst mapDispatchToProps = dispatch => {\n return {\n setStudyLoadingProgress: (progressId, progressData) => {\n dispatch(setStudyLoadingProgress(progressId, progressData))\n },\n clearStudyLoadingProgress: progressId => {\n dispatch(clearStudyLoadingProgress(progressId))\n }\n };\n};\n\nconst ConnectedStudyLoadingMonitor = connect(\n null,\n mapDispatchToProps\n)(StudyLoadingMonitor);\n\nexport default ConnectedStudyLoadingMonitor;\n","import { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\n\nconst { StudyPrefetcher } = OHIF.classes;\n\nclass StudyPrefetcherComponent extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n componentDidMount() {\n const { studies } = this.props;\n\n this.studyPrefetcher = StudyPrefetcher.getInstance();\n this.studyPrefetcher.setStudies(studies);\n }\n\n render() {\n return null;\n }\n\n componentWillUnmount() {\n // Stop prefetching when we close the viewer\n this.studyPrefetcher.destroy();\n }\n}\n\n\nexport default StudyPrefetcherComponent;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport cornerstone from 'cornerstone-core';\nimport cornerstoneTools from 'cornerstone-tools';\nimport OHIF from 'ohif-core';\n//import { CineDialog } from 'react-viewerbase';\n\nimport Header from '../components/Header'\nimport ConnectedFlexboxLayout from './ConnectedFlexboxLayout.js';\nimport ConnectedToolbarRow from \"./ConnectedToolbarRow\";\nimport ConnectedStudyLoadingMonitor from './ConnectedStudyLoadingMonitor.js';\nimport StudyPrefetcher from '../components/StudyPrefetcher.js';\nimport './Viewer.css';\n\nconst { StackManager } = OHIF.utils;\n\n/**\n * Inits OHIF Hanging Protocol's onReady.\n * It waits for OHIF Hanging Protocol to be ready to instantiate the ProtocolEngine\n * Hanging Protocol will use OHIF LayoutManager to render viewports properly\n */\n/*const initHangingProtocol = () => {\n // When Hanging Protocol is ready\n HP.ProtocolStore.onReady(() => {\n\n // Gets all StudyMetadata objects: necessary for Hanging Protocol to access study metadata\n const studyMetadataList = OHIF.viewer.StudyMetadataList.all();\n\n // Instantiate StudyMetadataSource: necessary for Hanging Protocol to get study metadata\n const studyMetadataSource = new OHIF.studies.classes.OHIFStudyMetadataSource();\n\n // Get prior studies map\n const studyPriorsMap = OHIF.studylist.functions.getStudyPriorsMap(studyMetadataList);\n\n // Creates Protocol Engine object with required arguments\n const ProtocolEngine = new HP.ProtocolEngine(layoutManager, studyMetadataList, studyPriorsMap, studyMetadataSource);\n\n // Sets up Hanging Protocol engine\n HP.setEngine(ProtocolEngine);\n });\n};*/\n\n\nOHIF.viewer.defaultTool = {\n left: 'wwwc',\n right: 'zoom',\n middle: 'pan'\n};\n\nOHIF.viewer.refLinesEnabled = true;\n\n/*const viewportUtils = OHIF.viewerbase.viewportUtils;\n\nOHIF.viewer.functionList = {\n toggleCineDialog: viewportUtils.toggleCineDialog,\n toggleCinePlay: viewportUtils.toggleCinePlay,\n clearTools: viewportUtils.clearTools,\n resetViewport: viewportUtils.resetViewport,\n invert: viewportUtils.invert\n};*/\n\n// Create the synchronizer used to update reference lines\nOHIF.viewer.updateImageSynchronizer = new cornerstoneTools.Synchronizer('cornerstonenewimage', cornerstoneTools.updateImageSynchronizer);\n\n// Metadata configuration\nconst metadataProvider = new OHIF.cornerstone.MetadataProvider();\ncornerstone.metaData.addProvider(metadataProvider.provider.bind(metadataProvider));\n\nStackManager.setMetadataProvider(metadataProvider);\n\nclass Viewer extends Component {\n static propTypes = {\n studies: PropTypes.array,\n };\n\n render() {\n return (<>\n
\n
\n {/**/}\n
\n
\n \n \n \n \n
\n \n );\n }\n}\n\n\nexport default Viewer;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport Viewer from \"./Viewer.js\";\n\nconst { createDisplaySets } = OHIF.utils;\n\nclass ViewerRetrieveStudyData extends Component {\n static propTypes = {\n studyInstanceUids: PropTypes.array.isRequired,\n seriesInstanceUids: PropTypes.array,\n server: PropTypes.object\n };\n\n state = {\n studies: null,\n error: null\n }\n\n componentDidMount() {\n // TODO: Avoid using timepoints here\n //const params = { studyInstanceUids, seriesInstanceUids, timepointId, timepointsFilter={} };\n const { studyInstanceUids, seriesInstanceUids, server } = this.props;\n const promise = OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids)\n\n // Render the viewer when the data is ready\n promise.then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({\n studies: updatedStudies,\n });\n }).catch(error => {\n this.setState({\n error: true,\n });\n\n throw new Error(error);\n });\n\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default ViewerRetrieveStudyData;\n","import { connect } from 'react-redux';\nimport ViewerRetrieveStudyData from './ViewerRetrieveStudyData.js';\n\nconst isActive = (a) => a.active === true;\n\nconst mapStateToProps = state => {\n const activeServer = state.servers.servers.find(isActive);\n\n return {\n server: activeServer,\n };\n};\n\nconst ConnectedViewerRetrieveStudyData = connect(\n mapStateToProps,\n null\n)(ViewerRetrieveStudyData);\n\nexport default ConnectedViewerRetrieveStudyData;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ConnectedViewerRetrieveStudyData from \"../connectedComponents/ConnectedViewerRetrieveStudyData\";\n\nfunction ViewerRouting({ match }) {\n const { studyInstanceUids, seriesInstanceUids } = match.params;\n\n let studyUIDs;\n let seriesUIDs;\n\n if (studyInstanceUids && !seriesInstanceUids) {\n studyUIDs = studyInstanceUids.split(';');\n } else if (studyInstanceUids && seriesInstanceUids) {\n studyUIDs = [match.params.studyInstanceUid];\n seriesUIDs = match.params.seriesInstanceUids.split(';');\n }\n\n return (\n \n );\n}\n\nViewerRouting.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n studyInstanceUids: PropTypes.string.isRequired,\n seriesInstanceUids: PropTypes.string\n })\n })\n};\n\nexport default ViewerRouting;\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport qs from 'query-string'\nimport Viewer from \"../connectedComponents/Viewer\";\nimport OHIF from 'ohif-core';\n\nconst { createDisplaySets } = OHIF.utils;\n\nfunction parseQueryAndFetchStudies(query) {\n return new Promise((resolve, reject) => {\n const url = query.url;\n\n if (!url) {\n reject(new Error('No URL was specified. Use ?url=$yourURL'));\n }\n\n // Define a request to the server to retrieve the study data\n // as JSON, given a URL that was in the Route\n const oReq = new XMLHttpRequest();\n\n // Add event listeners for request failure\n oReq.addEventListener('error', (error) => {\n OHIF.log.warn('An error occurred while retrieving the JSON data');\n reject(error)\n });\n\n // When the JSON has been returned, parse it into a JavaScript Object\n // and render the OHIF Viewer with this data\n oReq.addEventListener('load', () => {\n // Parse the response content\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText\n if (!oReq.responseText) {\n OHIF.log.warn('Response was undefined');\n reject(new Error('Response was undefined'));\n }\n\n OHIF.log.info(JSON.stringify(oReq.responseText, null, 2));\n\n const data = JSON.parse(oReq.responseText);\n if (data.servers && query.studyInstanceUids) {\n const server = data.servers.dicomWeb[0];\n server.type = 'dicomWeb';\n\n const studyInstanceUids = query.studyInstanceUids.split(';');\n const seriesInstanceUids = [];\n\n OHIF.studies.retrieveStudiesMetadata(server, studyInstanceUids, seriesInstanceUids).then(studies => {\n resolve(studies);\n }, error => {\n reject(error);\n });\n } else {\n resolve(data.studies);\n }\n });\n\n // Open the Request to the server for the JSON data\n // In this case we have a server-side route called /api/\n // which responds to GET requests with the study data\n OHIF.log.info(`Sending Request to: ${url}`);\n oReq.open('GET', url);\n oReq.setRequestHeader('Accept', 'application/json')\n\n // Fire the request to the server\n oReq.send();\n });\n}\n\nclass StandaloneRouting extends Component {\n state = {\n studies: null,\n error: null\n }\n\n static propTypes = {\n location: PropTypes.object,\n store: PropTypes.object\n };\n\n componentDidMount() {\n const query = qs.parse(this.props.location.search);\n parseQueryAndFetchStudies(query).then(studies => {\n const updatedStudies = createDisplaySets(studies);\n\n this.setState({ studies: updatedStudies });\n }, error => {\n this.setState({ error });\n });\n }\n\n render() {\n if (this.state.error) {\n return (
Error: {JSON.stringify(this.state.error)}
);\n } else if (!this.state.studies) {\n return (
Loading...
);\n }\n\n return (\n \n );\n }\n}\n\nexport default StandaloneRouting;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ViewerRetrieveStudyData from \"../connectedComponents/ViewerRetrieveStudyData.js\";\n\nfunction IHEInvokeImageDisplay({ match }) {\n const requestType = match.params.query.requestType;\n let studyInstanceUids;\n //let patientUids;\n let displayStudyList = false;\n\n if (requestType === \"STUDY\") {\n studyInstanceUids = match.params.query.studyUID.split(';');\n } else if (requestType === \"STUDYBASE64\") {\n const uids = this.params.query.studyUID;\n const decodedData = window.atob(uids);\n studyInstanceUids = decodedData.split(';');\n } else if (requestType === \"PATIENT\") {\n //patientUidspatientUids = this.params.query.patientID.split(';');\n displayStudyList = true\n } else {\n displayStudyList = true\n }\n\n if (displayStudyList) {\n return ('')//);\n }\n\n return (\n \n );\n}\n\nIHEInvokeImageDisplay.propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n query: PropTypes.shape({\n requestType: PropTypes.string.isRequired,\n studyUID: PropTypes.string,\n patientID: PropTypes.string\n })\n })\n })\n};\n\nexport default IHEInvokeImageDisplay;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { ViewerbaseDragDropContext } from 'react-viewerbase';\nimport ViewerRouting from \"./routes/ViewerRouting.js\";\nimport StandaloneRouting from './routes/StandaloneRouting.js';\nimport IHEInvokeImageDisplay from './routes/IHEInvokeImageDisplay.js';\n//import CallbackPage from './CallbackPage.js';\n//import userManager from \"./userManager.js\";\nimport './OHIFStandaloneViewer.css';\nimport './variables.css';\nimport './theme-tide.css';\n\nconst reload = () => window.location.reload();\n\n/*function LoadingUser() {\n return (
Loading user...
);\n}*/\n\nclass App extends Component {\n static propTypes = {\n history: PropTypes.object.isRequired,\n user: PropTypes.object\n }\n\n componentDidMount() {\n this.unlisten = this.props.history.listen((location, action) => {\n if (this.props.setContext) {\n this.props.setContext(window.location.pathname);\n }\n });\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n render() {\n const user = this.props.user;\n\n /*if (!user || user.expired) {\n // TODO: redirect to OAuth page if necessary\n return \n \n {\n userManager.signinRedirect();\n }}/>\n \n ;\n }*/\n\n return (\n \n \n \n \n \n \n\n \n \n {/* {\n userManager.signinRedirect();\n }}\n />*/\n /**/}\n \n
Sorry, this page does not exist.
}\n />\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {};\n /*return {\n user: state.oidc.user,\n };*/\n};\n\nconst ConnectedApp = connect(\n mapStateToProps,\n null\n)(App);\n\nexport default ViewerbaseDragDropContext(withRouter(ConnectedApp));\n","import React, { PureComponent, Component } from 'react';\n\n/*function metaDataProvider(type, imageId) {\n const metaData = cornerstoneWADOImageLoader.wadors.metaDataManager.get(\n imageId\n );\n\n if (!metaData) {\n return;\n }\n\n if (\n metaData[type] !== undefined &&\n metaData[type].Value !== undefined &&\n metaData[type].Value.length\n ) {\n return metaData[type].Value[0];\n }\n\n if (type === 'instance') {\n return metaData;\n }\n}\n\ncornerstone.metaData.addProvider(metaDataProvider);*/\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar lodash_debounce = debounce;\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".scroll {\\n height: 100%;\\n padding: 5px;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n.scroll .scroll-holder {\\n height: calc(100% - 20px);\\n margin-top: 5px;\\n position: relative;\\n width: 12px;\\n}\\n.scroll .scroll-holder .imageSlider {\\n height: 12px;\\n left: 12px;\\n padding: 0;\\n position: absolute;\\n top: 0;\\n transform: rotate(90deg);\\n transform-origin: top left;\\n -webkit-appearance: none;\\n background-color: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider:focus {\\n outline: none;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-focus-outer {\\n border: none;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-runnable-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 5px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-track {\\n background-color: rgba(0,0,0,0);\\n border: none;\\n cursor: pointer;\\n height: 2px;\\n z-index: 6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-track {\\n animate: 0.2s;\\n background: transparent;\\n border: none;\\n border-width: 15px 0;\\n color: rgba(0,0,0,0);\\n cursor: pointer;\\n height: 12px;\\n width: 100%;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-lower {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-ms-fill-upper {\\n background: rgba(0,0,0,0);\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb {\\n -webkit-appearance: none !important;\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -webkit-grab;\\n height: 12px;\\n margin-top: -4px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-webkit-slider-thumb:active {\\n background-color: #20a5d6;\\n cursor: -webkit-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: -moz-grab;\\n height: 12px;\\n width: 39px;\\n z-index: 7;\\n}\\n.scroll .scroll-holder .imageSlider::-moz-range-thumb:active {\\n background-color: #20a5d6;\\n cursor: -moz-grabbing;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb {\\n background-color: #163239;\\n border: none;\\n border-radius: 57px;\\n cursor: ns-resize;\\n height: 12px;\\n width: 39px;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-thumb:active {\\n background-color: #20a5d6;\\n}\\n.scroll .scroll-holder .imageSlider::-ms-tooltip {\\n display: none;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .imageSlider {\\n left: 50px;\\n }\\n}\\n\";\nstyleInject(css);\n\nvar ImageScrollbar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ImageScrollbar, _PureComponent);\n\n function ImageScrollbar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ImageScrollbar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ImageScrollbar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (event) {\n var intValue = parseInt(event.target.value, 10);\n\n _this.props.onInputCallback(intValue);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n // We don't allow direct keyboard up/down input on the\n // image sliders since the natural direction is reversed (0 is at the top)\n // Store the KeyCodes in an object for readability\n var keys = {\n DOWN: 40,\n UP: 38\n }; // TODO: Enable scroll down / scroll up without depending on ohif-core\n\n if (event.which === keys.DOWN) {\n //OHIF.commands.run('scrollDown');\n event.preventDefault();\n } else if (event.which === keys.UP) {\n //OHIF.commands.run('scrollUp');\n event.preventDefault();\n }\n });\n\n return _this;\n }\n\n _createClass(ImageScrollbar, [{\n key: \"render\",\n value: function render() {\n if (this.props.max === 0) {\n return null;\n }\n\n this.style = {\n width: \"\".concat(this.props.height)\n };\n return React.createElement(\"div\", {\n className: \"scroll\"\n }, React.createElement(\"div\", {\n className: \"scroll-holder\"\n }, React.createElement(\"input\", {\n className: \"imageSlider\",\n style: this.style,\n type: \"range\",\n min: \"0\",\n max: this.props.max,\n step: \"1\",\n value: this.props.value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown\n })));\n }\n }]);\n\n return ImageScrollbar;\n}(PureComponent);\n\n_defineProperty(ImageScrollbar, \"propTypes\", {\n value: propTypes.number.isRequired,\n max: propTypes.number.isRequired,\n height: propTypes.string.isRequired,\n onInputCallback: propTypes.func.isRequired\n});\n\n/**\n * Formats a patient name for display purposes\n */\nfunction formatPN(name) {\n if (!name) {\n return;\n } // Convert the first ^ to a ', '. String.replace() only affects\n // the first appearance of the character.\n\n\n var commaBetweenFirstAndLast = name.replace('^', ', '); // Replace any remaining '^' characters with spaces\n\n var cleaned = commaBetweenFirstAndLast.replace(/\\^/g, ' '); // Trim any extraneous whitespace\n\n return cleaned.trim();\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\n(function (global, factory) {\n module.exports = factory();\n}(commonjsGlobal, (function () {\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && ('object' !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.23.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n});\n\nfunction formatDA(date) {\n var strFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'MMM D, YYYY';\n\n if (!date) {\n return;\n }\n\n var dateAsMoment = moment(date, 'YYYYMMDD');\n return dateAsMoment.format(strFormat);\n}\n\nfunction formatTM(time) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'HH:mm:ss';\n\n if (!time) {\n return;\n } // DICOM Time is stored as HHmmss.SSS, where:\n // HH 24 hour time:\n // m mm 0..59 Minutes\n // s ss 0..59 Seconds\n // S SS SSS 0..999 Fractional seconds\n //\n // See MomentJS: http://momentjs.com/docs/#/parsing/string-format/\n\n\n var dateTime = moment(time, 'HHmmss.SSS');\n return dateTime.format(format);\n}\n\nfunction formatNumberPrecision(number, precision) {\n if (number !== null) {\n return parseFloat(number).toFixed(precision);\n }\n}\n\nfunction isValidNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nvar helpers = {\n formatPN: formatPN,\n formatDA: formatDA,\n formatTM: formatTM,\n formatNumberPrecision: formatNumberPrecision,\n isValidNumber: isValidNumber\n};\n\nvar css$1 = \".imageViewerViewport.empty ~ .ViewportOverlay {\\n display: none;\\n}\\n.ViewportOverlay {\\n color: #9ccef9;\\n}\\n.ViewportOverlay .overlay-element {\\n position: absolute;\\n font-weight: 400;\\n text-shadow: 1px 1px #000;\\n pointer-events: none;\\n}\\n.ViewportOverlay .top-left {\\n top: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .top-center {\\n top: 20px;\\n padding-top: 20px;\\n width: 100%;\\n text-align: center;\\n}\\n.ViewportOverlay .top-right {\\n top: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay .bottom-left {\\n bottom: 20px;\\n left: 20px;\\n}\\n.ViewportOverlay .bottom-right {\\n bottom: 20px;\\n right: 20px;\\n text-align: right;\\n}\\n.ViewportOverlay.controlsVisible .topright,\\n.ViewportOverlay.controlsVisible .bottomright {\\n right: calc(20px + 19px);\\n}\\n.ViewportOverlay svg {\\n color: #9ccef9;\\n fill: #9ccef9;\\n stroke: #9ccef9;\\n background-color: transparent;\\n margin: 2px;\\n width: 18px;\\n height: 18px;\\n}\\n\";\nstyleInject(css$1);\n\nvar formatPN$1 = helpers.formatPN,\n formatDA$1 = helpers.formatDA,\n formatNumberPrecision$1 = helpers.formatNumberPrecision,\n formatTM$1 = helpers.formatTM,\n isValidNumber$1 = helpers.isValidNumber;\n/*function getCompression(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n if (\n instance.lossyImageCompression === '01' &&\n instance.lossyImageCompressionRatio !== ''\n ) {\n const compressionMethod = instance.lossyImageCompressionMethod || 'Lossy: ';\n const compressionRatio = formatNumberPrecision(\n instance.lossyImageCompressionRatio,\n 2\n );\n return compressionMethod + compressionRatio + ' : 1';\n }\n\n return 'Lossless / Uncompressed';\n}\n\nfunction getImageDimensions(imageId) {\n const instance = cornerstone.metaData.get('instance', imageId);\n if (!instance) {\n return '';\n }\n\n return `${instance.columns} x ${instance.rows}`;\n}*/\n\nvar ViewportOverlay =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOverlay, _PureComponent);\n\n function ViewportOverlay() {\n _classCallCheck(this, ViewportOverlay);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOverlay).apply(this, arguments));\n }\n\n _createClass(ViewportOverlay, [{\n key: \"render\",\n value: function render() {\n var zoom = this.props.viewport.scale * 100;\n var imageId = this.props.imageId; //const patientMetadata = cornerstone.metaData.get('patient', imageId);\n //const studyMetadata = cornerstone.metaData.get('study', imageId);\n //const seriesMetadata = cornerstone.metaData.get('generalSeriesModule', imageId);\n //const instanceMetadata = cornerstone.metaData.get('instance', imageId);\n\n var patientName = ''; //patientMetadata.name;\n\n var patientId = ''; //patientMetadata.id;\n\n /*const { studyDate, studyTime, studyDescription } = studyMetadata;\n const { seriesNumber, seriesDescription } = seriesMetadata;\n const { instanceNumber, frameTime, thickness, spacingBetweenSlices, sliceLocation } = instanceMetadata;*/\n //const frameRate = formatNumberPrecision(1000 / frameTime, 1);\n //const compression = getCompression(imageId);\n\n var windowWidth = this.props.viewport.voi.windowWidth || 0;\n var windowCenter = this.props.viewport.voi.windowCenter || 0;\n var wwwc = \"W: \".concat(windowWidth.toFixed(0), \" L: \").concat(windowCenter.toFixed(0));\n var imageIndex = this.props.stack.imageIds.indexOf(this.props.imageId) + 1;\n var numImages = this.props.stack.imageIds.length; //const imageDimensions = getImageDimensions(imageId);\n\n var studyDescription = '';\n var studyDate = null;\n var studyTime = null;\n var compression = null;\n var seriesNumber = null;\n var instanceNumber = null;\n var frameRate = null;\n var imageDimensions = null;\n var sliceLocation = null;\n var seriesDescription = null;\n var normal = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId)), React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Zoom: \", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\"), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, React.createElement(\"span\", null, isValidNumber$1(sliceLocation) ? \"Loc: \".concat(formatNumberPrecision$1(sliceLocation, 2), \" mm\") : ''), React.createElement(\"span\", null, ''), React.createElement(\"span\", null, '')), React.createElement(\"div\", null, seriesDescription))));\n var rightOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-right overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-right overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n var leftOnly = React.createElement(React.Fragment, null, React.createElement(\"div\", {\n className: \"top-left overlay-element\"\n }, React.createElement(\"div\", null, formatPN$1(patientName)), React.createElement(\"div\", null, patientId), React.createElement(\"div\", null, studyDescription), React.createElement(\"div\", null, formatDA$1(studyDate), \" \", formatTM$1(studyTime))), React.createElement(\"div\", {\n className: \"bottom-left overlay-element\"\n }, React.createElement(\"div\", null, \"Ser: \".concat(seriesNumber)), React.createElement(\"div\", null, numImages > 1 ? \"Img: \".concat(instanceNumber, \" \").concat(imageIndex, \"/\").concat(numImages) : ''), React.createElement(\"div\", null, \"\".concat(formatNumberPrecision$1(frameRate, 2), \" FPS\")), React.createElement(\"div\", null, imageDimensions), React.createElement(\"div\", null, seriesDescription), React.createElement(\"div\", null, \"Zoom: $\", formatNumberPrecision$1(zoom, 0), \"%\"), React.createElement(\"div\", {\n className: \"compressionIndicator\"\n }, compression), React.createElement(\"div\", null, wwwc)));\n return React.createElement(\"div\", {\n className: \"ViewportOverlay\"\n }, normal);\n }\n }]);\n\n return ViewportOverlay;\n}(PureComponent);\n\nViewportOverlay.propTypes = {\n viewport: propTypes.object.isRequired,\n imageId: propTypes.string.isRequired,\n stack: propTypes.object.isRequired\n};\n\nvar css$2 = \".imageViewerLoadingIndicator {\\n color: #91b9cd;\\n}\\n.faded {\\n opacity: 0.5;\\n}\\n.imageViewerErrorLoadingIndicator {\\n color: #e29e4a;\\n}\\n.imageViewerErrorLoadingIndicator p,\\n.imageViewerErrorLoadingIndicator h4 {\\n padding: 4px 0;\\n text-align: center;\\n word-wrap: break-word;\\n}\\n.imageViewerErrorLoadingIndicator p {\\n font-size: 11pt;\\n}\\n.loadingIndicator {\\n background-color: rgba(0,0,0,0.75);\\n font-size: 18px;\\n height: 100%;\\n overflow: hidden;\\n pointer-events: none;\\n position: absolute;\\n top: 0;\\n width: 100%;\\n z-index: 1;\\n}\\n.loadingIndicator .indicatorContents {\\n font-size: 30px;\\n font-weight: 300;\\n position: absolute;\\n text-align: center;\\n top: 50%;\\n transform: translateY(-50%);\\n width: 100%;\\n}\\n\";\nstyleInject(css$2);\n\nvar LoadingIndicator =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(LoadingIndicator, _PureComponent);\n\n function LoadingIndicator() {\n _classCallCheck(this, LoadingIndicator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(LoadingIndicator).apply(this, arguments));\n }\n\n _createClass(LoadingIndicator, [{\n key: \"render\",\n value: function render() {\n // TODO[react]: Pass this in as a prop reactively\n //const percentComplete = Session.get('CornerstoneLoadProgress' + this.viewportIndex);\n var percComplete;\n\n if (this.props.percentComplete && this.props.percentComplete !== 100) {\n percComplete = \"\".concat(this.props.percentComplete, \"%\");\n }\n\n return React.createElement(React.Fragment, null, this.props.error ? React.createElement(\"div\", {\n className: \"imageViewerErrorLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"h4\", null, \"Error Loading Image\"), React.createElement(\"p\", {\n className: \"description\"\n }, \"An error has occurred.\"), React.createElement(\"p\", {\n className: \"details\"\n }, this.props.error.message))) : React.createElement(\"div\", {\n className: \"imageViewerLoadingIndicator loadingIndicator\"\n }, React.createElement(\"div\", {\n className: \"indicatorContents\"\n }, React.createElement(\"p\", null, \"Loading... \", React.createElement(\"i\", {\n className: \"fa fa-spin fa-circle-o-notch fa-fw\"\n }), ' ', percComplete))));\n }\n }]);\n\n return LoadingIndicator;\n}(PureComponent);\n\n_defineProperty(LoadingIndicator, \"propTypes\", {\n percentComplete: propTypes.number,\n error: propTypes.object\n});\n\n_defineProperty(LoadingIndicator, \"defaultProps\", {\n percentComplete: 0,\n error: null\n});\n\nvar css$3 = \".ViewportOrientationMarkers {\\n pointer-events: none;\\n font-size: 15px;\\n color: #ccc;\\n line-height: 18px;\\n}\\n.ViewportOrientationMarkers .orientation-marker {\\n position: absolute;\\n}\\n.ViewportOrientationMarkers .top-mid {\\n top: 5px;\\n left: 50%;\\n}\\n.ViewportOrientationMarkers .left-mid {\\n top: 47%;\\n left: 5px;\\n}\\n\";\nstyleInject(css$3);\n\n/**\n * Computes the orientation labels on a Cornerstone-enabled Viewport element\n * when the viewport settings change (e.g. when a horizontal flip or a rotation occurs)\n *\n * @param imageId The Cornerstone ImageId\n * @param viewport The current viewport\n */\n\nfunction getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools) {\n var imagePlane = cornerstone.metaData.get('imagePlane', imageId);\n\n if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {\n return;\n }\n\n var rowString = cornerstoneTools.orientation.getOrientationString(imagePlane.rowCosines);\n var columnString = cornerstoneTools.orientation.getOrientationString(imagePlane.columnCosines);\n var oppositeRowString = cornerstoneTools.orientation.invertOrientationString(rowString);\n var oppositeColumnString = cornerstoneTools.orientation.invertOrientationString(columnString);\n var markers = {\n top: oppositeColumnString,\n left: oppositeRowString\n }; // If any vertical or horizontal flips are applied, change the orientation strings ahead of\n // the rotation applications\n\n if (viewport.vflip) {\n markers.top = cornerstoneTools.orientation.invertOrientationString(markers.top);\n }\n\n if (viewport.hflip) {\n markers.left = cornerstoneTools.orientation.invertOrientationString(markers.left);\n } // Swap the labels accordingly if the viewport has been rotated\n // This could be done in a more complex way for intermediate rotation values (e.g. 45 degrees)\n\n\n if (viewport.rotation === 90 || viewport.rotation === -270) {\n return {\n top: markers.left,\n left: cornerstoneTools.orientation.invertOrientationString(markers.top)\n };\n } else if (viewport.rotation === -90 || viewport.rotation === 270) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.left),\n left: markers.top\n };\n } else if (viewport.rotation === 180 || viewport.rotation === -180) {\n return {\n top: cornerstoneTools.orientation.invertOrientationString(markers.top),\n left: cornerstoneTools.orientation.invertOrientationString(markers.left)\n };\n }\n\n return markers;\n}\n\nvar ViewportOrientationMarkers =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ViewportOrientationMarkers, _PureComponent);\n\n function ViewportOrientationMarkers() {\n _classCallCheck(this, ViewportOrientationMarkers);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ViewportOrientationMarkers).apply(this, arguments));\n }\n\n _createClass(ViewportOrientationMarkers, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n imageId = _this$props.imageId,\n viewport = _this$props.viewport,\n cornerstone = _this$props.cornerstone,\n cornerstoneTools = _this$props.cornerstoneTools;\n var markers = getOrientationMarkers(imageId, viewport, cornerstone, cornerstoneTools);\n\n if (!markers) {\n return '';\n }\n\n return React.createElement(\"div\", {\n className: \"ViewportOrientationMarkers noselect\"\n }, React.createElement(\"div\", {\n className: \"top-mid orientation-marker\"\n }, markers.top), React.createElement(\"div\", {\n className: \"left-mid orientation-marker\"\n }, markers.left));\n }\n }]);\n\n return ViewportOrientationMarkers;\n}(PureComponent);\n\nViewportOrientationMarkers.propTypes = {\n imageId: propTypes.string.isRequired,\n viewport: propTypes.object.isRequired\n};\n\nvar css$4 = \".CornerstoneViewport {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n}\\n\\n.viewport-element {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n background-color: black;\\n\\n /* Prevent the blue outline in Chrome when a viewport is selected */\\n outline: 0 !important;\\n\\n /* Prevents the entire page from getting larger\\n when the magnify tool is near the sides/corners of the page */\\n overflow: hidden;\\n}\\n\\n.viewportInstructions {\\n display: block;\\n font-size: 13px;\\n /*theme('color', '$textSecondaryColor')*/\\n color: #91b9cd;\\n line-height: 18px;\\n pointer-events: none; /* Necessary for drag/drop through to cornerstone element below */\\n text-align: center;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n right: 0;\\n left: 0;\\n margin: auto;\\n height: 20px;\\n}\\n\\n/* These are some good CSS settings for a circular magnifying glass\\n Try removing the border-radius to make a square magnifying glass */\\n.magnifyTool {\\n border: 4px white solid;\\n box-shadow: 2px 2px 10px #1e1e1e;\\n border-radius: 50%;\\n display: none;\\n cursor: none;\\n}\\n\";\nstyleInject(css$4);\n\nvar EVENT_RESIZE = 'resize';\n\nfunction setToolsPassive(cornerstoneTools, tools) {\n tools.forEach(function (tool) {\n cornerstoneTools.setToolPassive(tool);\n });\n}\n\nfunction initializeTools(cornerstoneTools, tools) {\n Array.from(tools).forEach(function (tool) {\n var apiTool = cornerstoneTools[\"\".concat(tool.name, \"Tool\")];\n\n if (apiTool) {\n cornerstoneTools.addTool(apiTool, tool.configuration);\n } else {\n throw new Error(\"Tool not found: \".concat(tool.name, \"Tool\"));\n }\n });\n}\n\nvar CornerstoneViewport =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CornerstoneViewport, _Component);\n\n function CornerstoneViewport(props) {\n var _this;\n\n _classCallCheck(this, CornerstoneViewport);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CornerstoneViewport).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onContextMenu\", function (event) {\n // Preventing the default behaviour for right-click is essential to\n // allow right-click tools to work.\n event.preventDefault();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWindowResize\", function () {\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageRendered\", function () {\n var viewport = _this.cornerstone.getViewport(_this.element);\n\n _this.setState({\n viewport: viewport\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onNewImage\", function () {\n var image = _this.cornerstone.getImage(_this.element);\n\n _this.setState({\n imageId: image.imageId\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setActiveTool\", function (activeTool) {\n // TODO: allow this config as props\n var leftMouseTools = ['Bidirectional', 'Wwwc', 'Length', 'Angle', 'StackScroll'];\n setToolsPassive(_this.cornerstoneTools, leftMouseTools); // pan is the default tool for middle mouse button\n\n var isPanToolActive = activeTool === 'Pan';\n var panOptions = {\n mouseButtonMask: isPanToolActive ? [1, 4] : [4],\n isTouchActive: isPanToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Pan', panOptions); // zoom is the default tool for right mouse button\n\n\n var isZoomToolActive = activeTool === 'Zoom';\n var zoomOptions = {\n mouseButtonMask: isZoomToolActive ? [1, 2] : [2],\n isTouchActive: isZoomToolActive\n };\n\n _this.cornerstoneTools.setToolActive('Zoom', zoomOptions);\n\n _this.cornerstoneTools.setToolActive(activeTool, {\n mouseButtonMask: 1,\n isTouchActive: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onStackScroll\", function (event) {\n _this.setViewportActive();\n\n var element = event.currentTarget;\n\n var stackData = _this.cornerstoneTools.getToolState(element, 'stack');\n\n var stack = stackData.data[0];\n\n _this.hideExtraButtons();\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onImageLoaded\", function () {\n _this.setState({\n numImagesLoaded: _this.state.numImagesLoaded + 1\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"startLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n _this.loadHandlerTimeout = setTimeout(function () {\n _this.setState({\n isLoading: true\n });\n }, CornerstoneViewport.loadIndicatorDelay);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"doneLoadingHandler\", function () {\n clearTimeout(_this.loadHandlerTimeout);\n\n _this.setState({\n isLoading: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMeasurementAddedOrRemoved\", function () {\n console.log('onMeasurementAddedOrRemoved');\n /* const { toolType, measurementData } = event.detail;\n // TODO: Pass in as prop?\n const toolsOfInterest = ['Bidirectional'];\n this.hideExtraButtons();\n if (toolsOfInterest.includes(toolType)) {\n const image = cornerstone.getImage(this.element);\n const viewport = cornerstone.getViewport(this.element);\n const type = {\n cornerstonetoolsmeasurementadded: 'added',\n cornerstonetoolsmeasurementremoved: 'removed'\n };\n const action = type[event.type];\n if (action === 'added') {\n measurementData._id = guid();\n measurementData.viewport = cloneDeep(viewport);\n }\n this.props.measurementsAddedOrRemoved(\n action,\n image.imageId,\n toolType,\n measurementData\n );\n }*/\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setViewportActive\", function () {\n if (!_this.props.isActive && _this.props.setViewportActive) {\n _this.props.setViewportActive();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMouseClick\", function (event) {\n _this.setViewportActive();\n\n if (event.detail.event.which === 3) {\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: false\n }\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchPress\", function (event) {\n _this.setViewportActive();\n\n _this.setState({\n toolContextMenuData: {\n eventData: event.detail,\n isTouchEvent: true\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function () {\n _this.setViewportActive();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCloseToolContextMenu\", function () {\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"imageSliderOnInputCallback\", function (value) {\n _this.setViewportActive();\n\n var stack = _this.state.stack;\n stack.currentImageIdIndex = value;\n\n _this.setState({\n stack: stack\n });\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData({ stack });\n }*/\n // TODO: For some reason this isn't working?\n\n\n _this.scrollToIndex(_this.element, value);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hideExtraButtons\", function () {\n if (_this.state.bidirectionalAddLabelShow === true) {\n _this.setState({\n bidirectionalAddLabelShow: false\n });\n }\n\n _this.setState({\n toolContextMenuData: null\n });\n });\n\n _this.cornerstone = props.cornerstone;\n _this.cornerstoneTools = props.cornerstoneTools;\n _this.scrollToIndex = _this.cornerstoneTools.import('util/scrollToIndex'); // TODO: Allow viewport as a prop\n\n var _stack = props.viewportData.stack;\n _this.state = {\n stack: _stack,\n displaySetInstanceUid: props.viewportData.displaySetInstanceUid,\n imageId: _stack.imageIds[0],\n viewportHeight: '100%',\n isLoading: false,\n numImagesLoaded: 0,\n error: null,\n viewport: _this.cornerstone.getDefaultViewport(null, undefined)\n };\n var loadHandlerManager = _this.cornerstoneTools.loadHandlerManager;\n loadHandlerManager.setStartLoadHandler(_this.startLoadingHandler);\n loadHandlerManager.setEndLoadHandler(_this.doneLoadingHandler);\n _this.debouncedResize = lodash_debounce(function () {\n try {\n _this.cornerstone.getEnabledElement(_this.element);\n } catch (error) {\n console.error(error);\n return;\n }\n\n _this.cornerstone.resize(_this.element, true);\n\n _this.setState({\n viewportHeight: \"\".concat(_this.element.clientHeight - 20, \"px\")\n });\n }, 300);\n return _this;\n }\n\n _createClass(CornerstoneViewport, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var isLoading = this.state.isLoading || this.state.numImagesLoaded < 1;\n var displayLoadingIndicator = isLoading || this.state.error;\n var className = 'CornerstoneViewport';\n\n if (this.props.isActive) {\n className += ' active';\n }\n\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"viewport-element\",\n onContextMenu: this.onContextMenu,\n ref: function ref(input) {\n _this2.element = input;\n }\n }, displayLoadingIndicator && React.createElement(LoadingIndicator, {\n error: this.state.error\n }), React.createElement(\"canvas\", {\n className: \"cornerstone-canvas\"\n }), React.createElement(ViewportOverlay, {\n stack: this.state.stack,\n viewport: this.state.viewport,\n imageId: this.state.imageId,\n numImagesLoaded: this.state.numImagesLoaded\n }), React.createElement(ViewportOrientationMarkers, {\n imageId: this.state.imageId,\n viewport: this.state.viewport,\n cornerstone: this.props.cornerstone,\n cornerstoneTools: this.props.cornerstoneTools\n })), React.createElement(ImageScrollbar, {\n onInputCallback: this.imageSliderOnInputCallback,\n max: this.state.stack.imageIds.length - 1,\n value: this.state.stack.currentImageIdIndex,\n height: this.state.viewportHeight\n }), this.props.children);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this3 = this;\n\n var element = this.element;\n this.eventHandlerData = [{\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.IMAGE_RENDERED,\n handler: this.onImageRendered\n }, {\n eventTarget: element,\n eventType: this.cornerstone.EVENTS.NEW_IMAGE,\n handler: this.onNewImage\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.STACK_SCROLL,\n handler: this.onStackScroll\n },\n /*{\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_ADDED,\n handler: this.onMeasurementAddedOrRemoved\n },\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MEASUREMENT_REMOVED,\n handler: this.onMeasurementAddedOrRemoved\n },*/\n {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_CLICK,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.MOUSE_DOWN,\n handler: this.onMouseClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_PRESS,\n handler: this.onTouchPress\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.TOUCH_START,\n handler: this.onTouchStart\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_CLICK,\n handler: this.onDoubleClick\n }, {\n eventTarget: element,\n eventType: this.cornerstoneTools.EVENTS.DOUBLE_TAP,\n handler: this.onDoubleClick\n }, {\n eventTarget: window,\n eventType: EVENT_RESIZE,\n handler: this.onWindowResize\n }, {\n eventTarget: this.cornerstone.events,\n eventType: this.cornerstone.EVENTS.IMAGE_LOADED,\n handler: this.onImageLoaded\n }]; // Enable the DOM Element for use with Cornerstone\n\n this.cornerstone.enable(element, this.props.cornerstoneOptions); // Handle the case where the imageId isn't loaded correctly and the\n // imagePromise returns undefined\n // To test, uncomment the next line\n //let imageId = 'AfileThatDoesntWork'; // For testing only!\n\n var imageId = this.state.imageId;\n var imagePromise;\n\n try {\n imagePromise = this.cornerstone.loadAndCacheImage(imageId);\n } catch (error) {\n console.error(error);\n\n if (!imagePromise) {\n this.setState({\n error: error\n });\n return;\n }\n } // Load the first image in the stack\n\n\n imagePromise.then(function (image) {\n try {\n _this3.cornerstone.getEnabledElement(element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n } // Set Soft Tissue preset for all images by default\n\n\n var viewport = _this3.cornerstone.getDefaultViewportForImage(element, image);\n\n viewport.voi = {\n windowWidth: 400,\n windowCenter: 40\n }; // Display the first image\n\n _this3.cornerstone.displayImage(element, image, viewport); // Clear any previous tool state\n\n\n _this3.cornerstoneTools.clearToolState(_this3.element, 'stack');\n /* Add the stack tool state to the enabled element, and\n add stack state managers for the stack tool, CINE tool, and reference lines\n */\n\n\n var stack = _this3.state.stack;\n\n _this3.cornerstoneTools.addStackStateManager(element, ['stack', 'playClip', 'referenceLines']);\n\n _this3.cornerstoneTools.addToolState(element, 'stack', stack);\n\n if (_this3.props.enableStackPrefetch) {\n _this3.cornerstoneTools.stackPrefetch.enable(_this3.element);\n }\n\n var tools = [{\n name: 'Bidirectional',\n configuration: {\n getMeasurementLocationCallback: _this3.bidirectionalToolLabellingCallback,\n shadow: true,\n drawHandlesOnHover: true\n }\n }, {\n name: 'Wwwc'\n }, {\n name: 'Zoom',\n configuration: {\n minScale: 0.3,\n maxScale: 25,\n preventZoomOutsideImage: true\n }\n }, {\n name: 'Length'\n }, {\n name: 'Angle'\n }, {\n name: 'Pan'\n }, {\n name: 'StackScroll'\n }, {\n name: 'PanMultiTouch'\n }, {\n name: 'ZoomTouchPinch'\n }, {\n name: 'StackScrollMouseWheel'\n }, {\n name: 'StackScrollMultiTouch'\n }];\n initializeTools(_this3.cornerstoneTools, tools);\n\n _this3.setActiveTool(_this3.props.activeTool);\n /* For touch devices, by default we activate:\n - Pinch to zoom\n - Two-finger Pan\n - Three (or more) finger Stack Scroll\n */\n\n\n _this3.cornerstoneTools.setToolActive('PanMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('ZoomTouchPinch', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.cornerstoneTools.setToolActive('StackScrollMultiTouch', {\n mouseButtonMask: 0,\n isTouchActive: true\n }); // TODO: We should probably configure this somewhere else\n\n\n _this3.cornerstoneTools.stackPrefetch.setConfiguration({\n maxImagesToPrefetch: Infinity,\n preserveExistingPool: false,\n maxSimultaneousRequests: 6\n });\n /* For mouse devices, by default we turn on:\n - Stack scrolling by mouse wheel\n - Stack scrolling by keyboard up / down arrow keys\n - Pan with middle click\n - Zoom with right click\n */\n\n\n _this3.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n\n _this3.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.addEventListener(eventType, handler);\n });\n\n _this3.setState({\n viewportHeight: \"\".concat(_this3.element.clientHeight - 20, \"px\")\n });\n }, function (error) {\n console.error(error);\n\n _this3.setState({\n error: error\n });\n });\n }\n }, {\n key: \"onDoubleClick\",\n value: function onDoubleClick() {\n console.log('onDoubleClick');\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.eventHandlerData.forEach(function (data) {\n var eventTarget = data.eventTarget,\n eventType = data.eventType,\n handler = data.handler;\n eventTarget.removeEventListener(eventType, handler);\n });\n var element = this.element; // Remove all tools for the destroyed element\n // TODO[cornerstoneTools]: Make this happen internally\n // toolManager.removeToolsForElement(element);\n // Clear the stack prefetch data\n // TODO[cornerstoneTools]: Make this happen internally\n\n this.cornerstoneTools.clearToolState(element, 'stackPrefetch'); // Disable the viewport element with Cornerstone\n // This also triggers the removal of the element from all available\n // synchronizers, such as the one used for reference lines.\n\n this.cornerstone.disable(element); // Try to stop any currently playing clips\n // Otherwise the interval will continuously throw errors\n // TODO[cornerstoneTools]: Make this happen internally\n\n try {\n var enabledElement = this.cornerstone.getEnabledElement(element);\n\n if (enabledElement) {\n this.cornerstoneTools.stopClip(element);\n }\n } catch (error) {//console.warn(error);\n }\n\n if (this.props.clearViewportSpecificData) {\n this.props.clearViewportSpecificData();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n // TODO: Add a real object shallow comparison here?\n if (this.state.displaySetInstanceUid !== this.props.viewportData.displaySetInstanceUid) {\n var _this$props$viewportD = this.props.viewportData,\n displaySetInstanceUid = _this$props$viewportD.displaySetInstanceUid,\n studyInstanceUid = _this$props$viewportD.studyInstanceUid;\n var currentImageIdIndex = this.props.viewportData.stack.currentImageIdIndex; // Create shortcut to displaySet\n\n /*const study = OHIF.viewer.Studies.findBy({\n studyInstanceUid,\n });\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });*/\n\n var stack = this.props.viewportData.stack;\n var stackData = this.cornerstoneTools.getToolState(this.element, 'stack');\n var currentStack = stackData && stackData.data[0];\n\n if (!currentStack) {\n currentStack = {\n currentImageIdIndex: currentImageIdIndex,\n imageIds: stack.imageIds\n };\n this.cornerstoneTools.addStackStateManager(this.element, ['stack']);\n this.cornerstoneTools.addToolState(this.element, 'stack', currentStack);\n } else {\n // TODO: we should make something like setToolState by an ID\n currentStack.currentImageIdIndex = currentImageIdIndex;\n currentStack.imageIds = stack.imageIds;\n }\n\n var imageId = currentStack.imageIds[currentImageIdIndex];\n var viewportSpecificData = {\n displaySetInstanceUid: displaySetInstanceUid,\n studyInstanceUid: studyInstanceUid,\n stack: stack,\n imageId: imageId\n };\n this.setState(viewportSpecificData);\n /*\n Temporarily removed because it didn't seem to be performing well\n if (this.props.setViewportSpecificData) {\n this.props.setViewportSpecificData(viewportSpecificData);\n }*/\n\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n this.cornerstone.loadAndCacheImage(imageId).then(function (image) {\n try {\n _this4.cornerstone.getEnabledElement(_this4.element);\n } catch (error) {\n // Handle cases where the user ends the session before the image is displayed.\n console.error(error);\n return;\n }\n\n var viewport = _this4.cornerstone.getDefaultViewportForImage(_this4.element, image); // Workaround for Cornerstone issue #304\n\n\n viewport.displayedArea.brhc = {\n x: image.width,\n y: image.height\n };\n\n _this4.cornerstone.displayImage(_this4.element, image, viewport);\n\n _this4.cornerstoneTools.stackPrefetch.enable(_this4.element);\n });\n }\n\n if (this.props.activeTool !== prevProps.activeTool) {\n this.setActiveTool(this.props.activeTool); // TODO: Why do we need to do this in v3?\n\n this.cornerstoneTools.setToolActive('StackScrollMouseWheel', {\n mouseButtonMask: 0,\n isTouchActive: true\n });\n }\n\n if (this.props.layout !== prevProps.layout) {\n this.debouncedResize();\n }\n\n if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === true) {\n this.cornerstoneTools.stackPrefetch.enable(this.element);\n } else if (this.props.enableStackPrefetch !== prevProps.enableStackPrefetch && this.props.enableStackPrefetch === false) {\n this.cornerstoneTools.stackPrefetch.disable(this.element);\n }\n\n if (this.props.cineToolData.isPlaying !== prevProps.cineToolData.isPlaying) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element);\n } else {\n this.cornerstoneTools.stopClip(this.element);\n }\n }\n\n if (this.props.cineToolData.cineFrameRate !== prevProps.cineToolData.cineFrameRate) {\n if (this.props.cineToolData.isPlaying) {\n this.cornerstoneTools.playClip(this.element, this.props.cineToolData.cineFrameRate);\n } else {\n this.cornerstoneTools.stopClip(this.element, this.props.cineToolData.cineFrameRate);\n }\n }\n }\n }]);\n\n return CornerstoneViewport;\n}(Component);\n\n_defineProperty(CornerstoneViewport, \"defaultProps\", {\n activeTool: 'Wwwc',\n viewportData: {\n stack: {\n imageIds: [],\n currentImageIdIndex: 0\n }\n },\n isActive: false,\n cornerstoneOptions: {},\n enableStackPrefetch: true,\n cineToolData: {\n isPlaying: false,\n cineFrameRate: 24\n }\n});\n\n_defineProperty(CornerstoneViewport, \"propTypes\", {\n cornerstone: propTypes.object.isRequired,\n cornerstoneTools: propTypes.object.isRequired,\n children: propTypes.node,\n activeTool: propTypes.string,\n viewportData: propTypes.object.isRequired,\n measurementsAddedOrRemoved: propTypes.func,\n measurementsChanged: propTypes.func,\n isActive: propTypes.bool.isRequired,\n cornerstoneOptions: propTypes.object,\n setViewportActive: propTypes.func,\n setViewportSpecificData: propTypes.func,\n clearViewportSpecificData: propTypes.func,\n layout: propTypes.object,\n cineToolData: propTypes.object\n});\n\n_defineProperty(CornerstoneViewport, \"loadIndicatorDelay\", 45);\n\nexport default CornerstoneViewport;\n//# sourceMappingURL=index.es.js.map\n","import { connect } from 'react-redux';\nimport CornerstoneViewport from 'react-cornerstone-viewport';\nimport OHIF from 'ohif-core'\nimport cornerstone from \"cornerstone-core\";\nimport cornerstoneTools from \"cornerstone-tools\";\n\nconst { setViewportActive, setViewportSpecificData, clearViewportSpecificData } = OHIF.redux.actions;\n\nconst mapStateToProps = (state, ownProps) => {\n const activeButton = state.tools.buttons.find(tool => tool.active === true);\n\n // If this is the active viewport, enable prefetching.\n const { viewportIndex } = ownProps;//.viewportData;\n const isActive = viewportIndex === state.viewports.activeViewportIndex;\n const viewportSpecificData = state.viewports.viewportSpecificData[viewportIndex] || {};\n\n return {\n layout: state.viewports.layout,\n isActive,\n activeTool: activeButton && activeButton.command,\n enableStackPrefetch: isActive,\n //stack: viewportSpecificData.stack,\n cineToolData: viewportSpecificData.cine,\n cornerstone,\n cornerstoneTools\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n const { viewportIndex } = ownProps;\n\n return {\n setViewportActive: () => {\n dispatch(setViewportActive(viewportIndex))\n },\n\n setViewportSpecificData: (data) => {\n dispatch(setViewportSpecificData(viewportIndex, data))\n },\n\n clearViewportSpecificData: () => {\n dispatch(clearViewportSpecificData(viewportIndex));\n }\n };\n};\n\nconst ConnectedCornerstoneViewport = connect(\n mapStateToProps,\n mapDispatchToProps\n)(CornerstoneViewport);\n\nexport default ConnectedCornerstoneViewport;\n","import React from 'react';\nimport PropTypes from \"prop-types\";\n\nfunction OHIFComponentPlugin(props) {\n return ({props.children});\n}\n\nOHIFComponentPlugin.propTypes = {\n id: PropTypes.string.isRequired,\n init: PropTypes.func.isRequired,\n destroy: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default OHIFComponentPlugin;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport OHIF from 'ohif-core';\nimport ConnectedCornerstoneViewport from './ConnectedCornerstoneViewport';\nimport OHIFComponentPlugin from './OHIFComponentPlugin.js';\n\nconst { StackManager } = OHIF.utils;\n\nclass OHIFCornerstoneViewportPlugin extends Component {\n static propTypes = {\n studies: PropTypes.object,\n displaySet: PropTypes.object,\n viewportIndex: PropTypes.number,\n };\n\n static id = 'CornerstoneViewportPlugin';\n\n static init() {\n console.log('CornerstoneViewportPlugin init()');\n }\n\n static destroy() {\n console.log('CornerstoneViewportPlugin destroy()');\n StackManager.clearStacks();\n }\n\n static getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid) {\n // Create shortcut to displaySet\n const study = studies.find(study => study.studyInstanceUid === studyInstanceUid);\n\n const displaySet = study.displaySets.find((set) => {\n return set.displaySetInstanceUid === displaySetInstanceUid;\n });\n\n // Get stack from Stack Manager\n return StackManager.findOrCreateStack(study, displaySet);\n }\n\n static getPluginViewportData = (studies, studyInstanceUid, displaySetInstanceUid) => {\n const currentStack = OHIFCornerstoneViewportPlugin.getCornerstoneStack(studies, studyInstanceUid, displaySetInstanceUid);\n\n // Clone the stack here so we don't mutate it later\n const stack = Object.assign({}, currentStack);\n stack.currentImageIdIndex = 0;\n\n return stack;\n }\n\n render() {\n const { viewportIndex } = this.props;\n const { studies, displaySet } = this.props.viewportData;\n const { studyInstanceUid, displaySetInstanceUid } = displaySet;\n const stack = OHIFCornerstoneViewportPlugin.getPluginViewportData(studies, studyInstanceUid, displaySetInstanceUid);\n const viewportData = {\n studyInstanceUid,\n displaySetInstanceUid,\n stack\n };\n\n const { id, init, destroy } = OHIFCornerstoneViewportPlugin;\n const pluginProps = { id, init, destroy };\n\n return (\n \n \n \n );\n }\n}\n\n\nexport default OHIFCornerstoneViewportPlugin;\n","import React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { createStore, combineReducers } from 'redux';\nimport PropTypes from 'prop-types';\nimport OHIF from 'ohif-core';\nimport './config';\nimport ui from './redux/ui.js'\nimport OHIFStandaloneViewer from './OHIFStandaloneViewer';\nimport OHIFCornerstoneViewportPlugin from './connectedComponents/OHIFCornerstoneViewportPlugin/OHIFCornerstoneViewportPlugin.js';\n//import { loadUser, reducer as oidcReducer, OidcProvider} from 'redux-oidc';\n//import userManager from './userManager.js';\n//import Icons from \"./images/icons.svg\"\n\nconst Icons = 'icons.svg';\n\nconst reducers = OHIF.redux.reducers;\nreducers.ui = ui;\n//reducers.oidc = oidcReducer;\n\nconst combined = combineReducers(reducers)\n\nconst store = createStore(combined);\n//loadUser(store, userManager);\n\nconst defaultButtons = [\n {\n command: 'StackScroll',\n type: 'tool',\n text: 'Stack Scroll',\n svgUrl: `${Icons}#icon-tools-stack-scroll`,\n active: false\n },\n {\n command: 'Zoom',\n type: 'tool',\n text: 'Zoom',\n svgUrl: `${Icons}#icon-tools-zoom`,\n active: false\n },\n {\n command: 'Wwwc',\n type: 'tool',\n text: 'Levels',\n svgUrl: `${Icons}#icon-tools-levels`,\n active: true\n },\n {\n command: 'Pan',\n type: 'tool',\n text: 'Pan',\n svgUrl: `${Icons}#icon-tools-pan`,\n active: false\n },\n {\n command: 'Length',\n type: 'tool',\n text: 'Length',\n svgUrl: `${Icons}#icon-tools-measure-temp`,\n active: false\n },\n /*{\n command: 'Annotate',\n type: 'tool',\n text: 'Annotate',\n svgUrl: `${Icons}#icon-tools-measure-non-target`,\n active: false\n },*/\n {\n command: 'Angle',\n type: 'tool',\n text: 'Angle',\n iconClasses: 'fa fa-angle-left',\n active: false\n },\n {\n command: 'Bidirectional',\n type: 'tool',\n text: 'Bidirectional',\n svgUrl: `${Icons}#icon-tools-measure-target`,\n active: false\n },\n {\n command: 'reset',\n type: 'command',\n text: 'Reset',\n svgUrl: `${Icons}#icon-tools-reset`,\n active: false\n },\n];\n\nconst buttonsAction = OHIF.redux.actions.setAvailableButtons(defaultButtons);\n\nstore.dispatch(buttonsAction);\n\nconst pluginAction = OHIF.redux.actions.addPlugin({\n id: 'cornerstone',\n type: 'viewport',\n component: OHIFCornerstoneViewportPlugin\n});\n\nstore.dispatch(pluginAction);\n\nconst servers = {\n dicomWeb: [\n {\n \"name\": \"DCM4CHEE\",\n //\"wadoUriRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoUriRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/wado\",\n //\"qidoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n //\"wadoRoot\": \"https://dcm4che.ohif.club/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoUriRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/wado\",\n \"qidoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"wadoRoot\": \"https://cancer.crowds-cure.org/dcm4chee-arc/aets/DCM4CHEE/rs\",\n \"qidoSupportsIncludeField\": true,\n \"imageRendering\": \"wadors\",\n \"thumbnailRendering\": \"wadors\",\n \"requestOptions\": {\n \"requestFromBrowser\": true,\n \"logRequests\": true,\n \"logResponses\": false,\n \"logTiming\": true,\n //\"auth\": \"admin:admin\"\n //\"auth\": \"cloud:healthcare\"\n }\n }\n ]\n};\n\nOHIF.utils.addServers(servers, store);\n\n// TODO[react] Use a provider when the whole tree is React\nwindow.store = store;\n\nclass App extends Component {\n static propTypes = {\n routerBasename: PropTypes.string\n }\n\n render() {\n return (\n \n {/**/}\n \n \n \n {/**/}\n \n );\n }\n}\n\nexport default App;\n"],"names":["_typeof","printWarning","ReactPropTypesSecret","require$$0","assign","checkPropTypes","require$$1","__DEV__","warning","_extends","invariant","HashChangeEvent","_classCallCheck","_possibleConstructorReturn","_inherits","React","PropTypes","createHistory","pathToRegexp","_objectWithoutProperties","patternCache","cacheLimit","cacheCount","addLeadingSlash","stripBasename","defineProperty","getOwnPropertySymbols","getPrototypeOf","hoistStatics","Component","_assertThisInitialized","REACT_STATICS","KNOWN_STATICS","ReactIs","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","isValidElementType","PureComponent","ponyfill","$$observable","isPlainObject","defaultSelectorFactory","cornerstone","window","cornerstoneTools","cornerstoneWADOImageLoader","cornerstoneMath","external","this","define","info","homepage","Hammer","init","dicomParser","OHIF","ROOT_URL","location","pathname","config","maxWebWorkers","Math","max","navigator","hardwareConcurrency","startWebWorkersOnDemand","webWorkerPath","taskConfiguration","decodeTask","loadCodecsOnStartup","initializeCodecsOnStartup","codecsPath","usePDFJS","strict","webWorkerManager","initialize","user","getAccessToken","state","store","getState","oidc","access_token","configure","beforeSend","xhr","headers","DICOMWeb","getAuthorizationHeader","Authorization","setRequestHeader","fontFamily","textStyle","setFont","toolStyle","setToolWidth","toolColors","setToolColor","setActiveColor","touchProximity","defaultState","leftSidebarOpen","rightSidebarOpen","ui","action","type","Object","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","objectAssign","styleInject","Icons","Header","home","studyLink","list","propTypes","bool","isRequired","object","defaultProps","withRouter","global","mapStateToProps","ownProps","stackLoadingProgressMap","loading","progress","studiesWithLoadingData","cloneDeep","studies","forEach","study","thumbnails","data","displaySetInstanceUid","stackId","stackProgressData","stackPercentComplete","percentComplete","ConnectedStudyBrowser","connect","StudyBrowser","viewportPluginIds","plugins","availablePlugins","filter","plugin","PLUGIN_TYPES","VIEWPORT","map","id","find","component","defaultPlugin","length","layout","viewports","activeViewportIndex","ConnectedLayoutManager","LayoutManager","ViewerMain","viewportData","viewportIndex","item","console","warn","updatedViewportData","slice","displaySet","findDisplaySet","props","studyInstanceUid","setState","displaySets","dSet","images","push","getDisplaySetsWithImages","setViewportData","viewer","updateImageSynchronizer","destroy","array","FlexboxLayout","studiesForBrowser","seriesDescription","seriesNumber","instanceNumber","numImageFrames","imageId","getImageId","getStudiesForBrowser","mainContentClassName","ConnectedFlexboxLayout","setToolActive","redux","actions","activeButton","tools","buttons","tool","active","activeCommand","command","mapDispatchToProps","dispatch","ConnectedToolbarSection","ToolbarSection","setLayout","currentLayout","onChange","selectedCell","rows","row","columns","col","numViewports","i","height","width","ConnectedLayoutButton","LayoutButton","setViewportSpecificData","getActiveViewportSpecificData","viewportSpecificData","activeViewportSpecificData","stack","imageIds","currentImageIdIndex","cine","isPlaying","cineFrameRate","activeViewportStackData","activeViewportCineData","dispatchSetViewportSpecificData","mergeProps","propsFromState","propsFromDispatch","onPlayPauseChanged","onFrameRateChanged","frameRate","onClickNextButton","largestPossibleIndex","min","onClickBackButton","onClickSkipToStart","onClickSkipToEnd","ConnectedCineDialog","CineDialog","ToolbarRow","value","setLeftSidebarOpen","leftSidebarToggle","svgLink","svgWidth","svgHeight","bottomLabel","leftSidebarValue","padding","onLeftSidebarValueChanged","marginLeft","display","func","setRightSidebarOpen","ConnectedToolbarRow","StudyLoadingMonitor","options","_setProgressData","progressId","progressData","setStudyLoadingProgress","_clearProgressById","clearStudyLoadingProgress","StudyLoadingListener","classes","studyLoadingListener","getInstance","clear","addStudies","ConnectedStudyLoadingMonitor","StudyPrefetcher","StudyPrefetcherComponent","studyPrefetcher","setStudies","StackManager","utils","defaultTool","left","right","middle","refLinesEnabled","Synchronizer","metadataProvider","MetadataProvider","metaData","addProvider","provider","bind","setMetadataProvider","Viewer","createDisplaySets","ViewerRetrieveStudyData","error","studyInstanceUids","seriesInstanceUids","server","promise","retrieveStudiesMetadata","then","updatedStudies","catch","Error","JSON","stringify","isActive","a","activeServer","servers","ConnectedViewerRetrieveStudyData","ViewerRouting","match","params","studyUIDs","seriesUIDs","split","shape","string","parseQueryAndFetchStudies","query","Promise","resolve","reject","url","oReq","XMLHttpRequest","addEventListener","log","responseText","parse","dicomWeb","open","send","StandaloneRouting","qs","search","IHEInvokeImageDisplay","requestType","displayStudyList","studyUID","uids","decodedData","atob","patientID","reload","App","unlisten","history","listen","setContext","ConnectedApp","ViewerbaseDragDropContext","setViewportActive","clearViewportSpecificData","activeTool","enableStackPrefetch","cineToolData","ConnectedCornerstoneViewport","CornerstoneViewport","OHIFComponentPlugin","children","node","OHIFCornerstoneViewportPlugin","getPluginViewportData","pluginProps","clearStacks","set","findOrCreateStack","number","currentStack","getCornerstoneStack","reducers","combined","combineReducers","createStore","defaultButtons","text","svgUrl","iconClasses","buttonsAction","setAvailableButtons","pluginAction","addPlugin","addServers","routerBasename"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,C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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,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,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC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,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,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C,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAA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AE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,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AAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KA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,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,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AAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACjwJ;IACD,GAAG,EAAE;MACH,IAAI,EAAE,KAAK;MACX,SAAS,EAAE,GAAG;MACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAC9jK;IACD,YAAY,EAAE;MACZ,IAAI,EAAE,gBAAgB;MACtB,SAAS,EAAE,GAAG;MACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACh3J;IACD,SAAS,EAAE;MACT,IAAI,EAAE,aAAa;MACnB,SAAS,EAAE,GAAG;MACd,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KACh+J;IACD,IAAI,EAAE;MACJ,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC7B;KACF;IACD,GAAG,EAAE;MACH,IAAI,EAAE,KAAK;MACX,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC3E;KACF;IACD,GAAG,EAAE;MACH,IAAI,EAAE,KAAK;MACX,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnJ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;OAC/J;KACF;IACD,GAAG,EAAE;MACH,IAAI,EAAE,KAAK;MACX,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC/C;KACF;IACD,IAAI,EAAE;MACJ,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC7B;KACF;IACD,MAAM,EAAE;MACN,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC7B;KACF;IACD,MAAM,EAAE;MACN,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;OACrC;KACF;IACD,MAAM,EAAE;MACN,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC7B;KACF;IACD,MAAM,EAAE;MACN,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;OACjC;KACF;IACD,IAAI,EAAE;MACJ,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC7D;KACF;IACD,MAAM,EAAE;MACN,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;OACvC;KACF;IACD,QAAQ,EAAE;MACR,IAAI,EAAE,UAAU;MAChB,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,CAAC;MACR,aAAa,EAAE;QACb,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjZ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IA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CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC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AC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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AAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,C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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,cAAc,GAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,cAAc,GAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,iCAAiC,CAAC,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAM,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,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,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC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AAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,qCAAqC,CAAC,EAAE,CAAC,sCAAsC,CAAC,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC,uCAAuC,CAAC,EAAE,CAAC,2CAA2C,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,CAAC,0BAA0B,CAAC,oCAAoC,CAAC,CAAC,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,sCAAsC,CAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,qCAAqC,CAAC,EAAE,CAAC,iCAAiC,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,+DAA+D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,EAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,uEAAuE,CAAC,EAAE,EAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,uEAAuE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,EAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,EAAE,EAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAE,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,aAAa,GAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,EAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,+DAA+D,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,AAAU,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,CAAC,gCAAgC,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,EAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAM,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,gCAAgC,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,kCAAkC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,2CAA2C,CAAC,EAAE,CAAC,8CAA8C,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,8BAA8B,CAAC,EAAE,CAAC,oCAAoC,CAAC,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,AAAa,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,OAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,mBAAmB,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,gDAAgD,EAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,mBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;ECDn36M;;;;;EAKA,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE;;EAGnD,IAAI,eAAe,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EAC7D,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;EAEjD,IAAI,aAAa,GAAG,UAAU,CAAC;;EAE/B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EACvB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACnB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;;;;;;;;;EASnB,SAAS,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;MAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;GACnD;;;;;;;;;;;EAWD,SAAS,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE;MACtC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;UACpB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;UAChC,OAAO,IAAI,CAAC;OACf;MACD,OAAO,KAAK,CAAC;GAChB;;;;;;;;EAQD,SAAS,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;MAClC,IAAI,CAAC,CAAC;;MAEN,IAAI,CAAC,GAAG,EAAE;UACN,OAAO;OACV;;MAED,IAAI,GAAG,CAAC,OAAO,EAAE;UACb,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;OAClC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;UACjC,CAAC,GAAG,CAAC,CAAC;UACN,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;cACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;cACvC,CAAC,EAAE,CAAC;WACP;OACJ,MAAM;UACH,KAAK,CAAC,IAAI,GAAG,EAAE;cACX,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;WACnE;OACJ;GACJ;;;;;;;;;EASD,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;MACtC,IAAI,kBAAkB,GAAG,qBAAqB,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;MAClF,OAAO,WAAW;UACd,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;UACrC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;eAC5D,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;eAC1B,OAAO,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,GAAG,qBAAqB,CAAC;;UAErF,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;UACxE,IAAI,GAAG,EAAE;cACL,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;WACvD;UACD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;OACxC,CAAC;GACL;;;;;;;;;EASD,IAAI,MAAM,CAAC;EACX,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;MACrC,MAAM,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE;UAC7B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;cACzC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;WACrE;;UAED,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;UAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;cACnD,IAAI,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;cAC9B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE;kBACzC,KAAK,IAAI,OAAO,IAAI,MAAM,EAAE;sBACxB,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;0BAChC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;uBACrC;mBACJ;eACJ;WACJ;UACD,OAAO,MAAM,CAAC;OACjB,CAAC;GACL,MAAM;MACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;GAC1B;;;;;;;;;;EAUD,IAAI,MAAM,GAAG,SAAS,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;MACrD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;MACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;UACpB,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE;cAClD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;WAChC;UACD,CAAC,EAAE,CAAC;OACP;MACD,OAAO,IAAI,CAAC;GACf,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;;;;;;;;;EAS9B,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;MAC5C,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;GAClC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;;;;;;;;EAQ7B,SAAS,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;MACtC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS;UACtB,MAAM,CAAC;;MAEX,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;MAChD,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;MAC3B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;;MAEtB,IAAI,UAAU,EAAE;UACZ,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;OAC9B;GACJ;;;;;;;;EAQD,SAAS,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;MACzB,OAAO,SAAS,OAAO,GAAG;UACtB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;OACvC,CAAC;GACL;;;;;;;;;EASD,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;MACzB,IAAI,OAAO,GAAG,IAAI,aAAa,EAAE;UAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;OACnE;MACD,OAAO,GAAG,CAAC;GACd;;;;;;;;EAQD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;MAC7B,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC;GAC7C;;;;;;;;EAQD,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;MAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE;UACjC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;OACjD,CAAC,CAAC;GACN;;;;;;;;EAQD,SAAS,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;MAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE;UACjC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;OACpD,CAAC,CAAC;GACN;;;;;;;;;EASD,SAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;MAC7B,OAAO,IAAI,EAAE;UACT,IAAI,IAAI,IAAI,MAAM,EAAE;cAChB,OAAO,IAAI,CAAC;WACf;UACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;OAC1B;MACD,OAAO,KAAK,CAAC;GAChB;;;;;;;;EAQD,SAAS,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;MACtB,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;GACjC;;;;;;;EAOD,SAAS,QAAQ,CAAC,GAAG,EAAE;MACnB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;GACnC;;;;;;;;;EASD,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;MACnC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE;UAC3B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;OAC5B,MAAM;UACH,IAAI,CAAC,GAAG,CAAC,CAAC;UACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;cACnB,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;kBAC7E,OAAO,CAAC,CAAC;eACZ;cACD,CAAC,EAAE,CAAC;WACP;UACD,OAAO,CAAC,CAAC,CAAC;OACb;GACJ;;;;;;;EAOD,SAAS,OAAO,CAAC,GAAG,EAAE;MAClB,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;GAC7C;;;;;;;;;EASD,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;MACjC,IAAI,OAAO,GAAG,EAAE,CAAC;MACjB,IAAI,MAAM,GAAG,EAAE,CAAC;MAChB,IAAI,CAAC,GAAG,CAAC,CAAC;;MAEV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;UACnB,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;UACrC,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;cAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;WACxB;UACD,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;UAChB,CAAC,EAAE,CAAC;OACP;;MAED,IAAI,IAAI,EAAE;UACN,IAAI,CAAC,GAAG,EAAE;cACN,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAC5B,MAAM;cACH,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;kBAClD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;eAC1B,CAAC,CAAC;WACN;OACJ;;MAED,OAAO,OAAO,CAAC;GAClB;;;;;;;;EAQD,SAAS,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE;MAC7B,IAAI,MAAM,EAAE,IAAI,CAAC;MACjB,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;MAE9D,IAAI,CAAC,GAAG,CAAC,CAAC;MACV,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE;UAC/B,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;UAC5B,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;;UAEhD,IAAI,IAAI,IAAI,GAAG,EAAE;cACb,OAAO,IAAI,CAAC;WACf;UACD,CAAC,EAAE,CAAC;OACP;MACD,OAAO,SAAS,CAAC;GACpB;;;;;;EAMD,IAAI,SAAS,GAAG,CAAC,CAAC;EAClB,SAAS,QAAQ,GAAG;MAChB,OAAO,SAAS,EAAE,CAAC;GACtB;;;;;;;EAOD,SAAS,mBAAmB,CAAC,OAAO,EAAE;MAClC,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC;MAC3C,QAAQ,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,IAAI,MAAM,EAAE;GAC1D;;EAED,IAAI,YAAY,GAAG,uCAAuC,CAAC;;EAE3D,IAAI,aAAa,IAAI,cAAc,IAAI,MAAM,CAAC,CAAC;EAC/C,IAAI,sBAAsB,GAAG,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,SAAS,CAAC;EAC5E,IAAI,kBAAkB,GAAG,aAAa,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;;EAEjF,IAAI,gBAAgB,GAAG,OAAO,CAAC;EAC/B,IAAI,cAAc,GAAG,KAAK,CAAC;EAC3B,IAAI,gBAAgB,GAAG,OAAO,CAAC;EAC/B,IAAI,iBAAiB,GAAG,QAAQ,CAAC;;EAEjC,IAAI,gBAAgB,GAAG,EAAE,CAAC;;EAE1B,IAAI,WAAW,GAAG,CAAC,CAAC;EACpB,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,IAAI,SAAS,GAAG,CAAC,CAAC;EAClB,IAAI,YAAY,GAAG,CAAC,CAAC;;EAErB,IAAI,cAAc,GAAG,CAAC,CAAC;EACvB,IAAI,cAAc,GAAG,CAAC,CAAC;EACvB,IAAI,eAAe,GAAG,CAAC,CAAC;EACxB,IAAI,YAAY,GAAG,CAAC,CAAC;EACrB,IAAI,cAAc,GAAG,EAAE,CAAC;;EAExB,IAAI,oBAAoB,GAAG,cAAc,GAAG,eAAe,CAAC;EAC5D,IAAI,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAC;EACvD,IAAI,aAAa,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;;EAE9D,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC1B,IAAI,eAAe,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;;;;;;;;EAS7C,SAAS,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE;MAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;MAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;MACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;MACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;MAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;;;;MAI1C,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE,EAAE;UAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;cAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;WACpB;OACJ,CAAC;;MAEF,IAAI,CAAC,IAAI,EAAE,CAAC;;GAEf;;EAED,KAAK,CAAC,SAAS,GAAG;;;;;MAKd,OAAO,EAAE,WAAW,GAAG;;;;;MAKvB,IAAI,EAAE,WAAW;UACb,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;UACzE,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;UAChF,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;OACnG;;;;;MAKD,OAAO,EAAE,WAAW;UAChB,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;UAC5E,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;UACnF,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;OACtG;GACJ,CAAC;;;;;;;;EAQF,SAAS,mBAAmB,CAAC,OAAO,EAAE;MAClC,IAAI,IAAI,CAAC;MACT,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;;MAE5C,IAAI,UAAU,EAAE;UACZ,IAAI,GAAG,UAAU,CAAC;OACrB,MAAM,IAAI,sBAAsB,EAAE;UAC/B,IAAI,GAAG,iBAAiB,CAAC;OAC5B,MAAM,IAAI,kBAAkB,EAAE;UAC3B,IAAI,GAAG,UAAU,CAAC;OACrB,MAAM,IAAI,CAAC,aAAa,EAAE;UACvB,IAAI,GAAG,UAAU,CAAC;OACrB,MAAM;UACH,IAAI,GAAG,eAAe,CAAC;OAC1B;MACD,OAAO,KAAK,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;GAC5C;;;;;;;;EAQD,SAAS,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;MAC7C,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;MACxC,IAAI,kBAAkB,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;MACtD,IAAI,OAAO,IAAI,SAAS,GAAG,WAAW,KAAK,WAAW,GAAG,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC;MACpF,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,WAAW,GAAG,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC;;MAEnG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;MAC1B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;;MAE1B,IAAI,OAAO,EAAE;UACT,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;OACxB;;;;MAID,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;;;MAG5B,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;;MAGjC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;;MAEpC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;MACzB,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;GACrC;;;;;;;EAOD,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;MACtC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;MAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;MAC9B,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;;;MAGrC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;UACrB,OAAO,CAAC,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;OACpD;;;MAGD,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;UAC9C,OAAO,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;OACvD,MAAM,IAAI,cAAc,KAAK,CAAC,EAAE;UAC7B,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;OACjC;;MAED,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;MACpC,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;MAC1C,IAAI,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;;MAE5E,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;MAChD,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;MACxB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;;MAEzD,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;MAC7C,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;;MAEnD,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;MAC/B,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;;MAEjE,IAAI,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;MAC/E,KAAK,CAAC,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC;MAC3C,KAAK,CAAC,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC;MAC3C,KAAK,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;;MAElH,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;MAC7E,KAAK,CAAC,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;;MAEnF,KAAK,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;UACpF,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;;MAE5F,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;;MAGzC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;MAC7B,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;UAC1C,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;OAClC;MACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;GACzB;;EAED,SAAS,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;MACpC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;MAC1B,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;MACvC,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;MACxC,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;;MAExC,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;UACtE,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG;cAC5B,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;cACxB,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;WAC3B,CAAC;;UAEF,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG;cAC3B,CAAC,EAAE,MAAM,CAAC,CAAC;cACX,CAAC,EAAE,MAAM,CAAC,CAAC;WACd,CAAC;OACL;;MAED,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;MACnD,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;GACtD;;;;;;;EAOD,SAAS,wBAAwB,CAAC,OAAO,EAAE,KAAK,EAAE;MAC9C,IAAI,IAAI,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK;UACpC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;UAC5C,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;;MAE9C,IAAI,KAAK,CAAC,SAAS,IAAI,YAAY,KAAK,SAAS,GAAG,gBAAgB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;UAClG,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;UACxC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;UAExC,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;UAC/C,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAC7C,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;UAEzC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;OAChC,MAAM;;UAEH,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;UACzB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;UAC3B,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;UAC3B,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;OAC9B;;MAED,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;MAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;MAC5B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;MAC5B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;GAC/B;;;;;;;EAOD,SAAS,oBAAoB,CAAC,KAAK,EAAE;;;MAGjC,IAAI,QAAQ,GAAG,EAAE,CAAC;MAClB,IAAI,CAAC,GAAG,CAAC,CAAC;MACV,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;UAC9B,QAAQ,CAAC,CAAC,CAAC,GAAG;cACV,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;cACzC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;WAC5C,CAAC;UACF,CAAC,EAAE,CAAC;OACP;;MAED,OAAO;UACH,SAAS,EAAE,GAAG,EAAE;UAChB,QAAQ,EAAE,QAAQ;UAClB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;UAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;UACpB,MAAM,EAAE,KAAK,CAAC,MAAM;OACvB,CAAC;GACL;;;;;;;EAOD,SAAS,SAAS,CAAC,QAAQ,EAAE;MACzB,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;;;MAGrC,IAAI,cAAc,KAAK,CAAC,EAAE;UACtB,OAAO;cACH,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;cAC7B,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;WAChC,CAAC;OACL;;MAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;MACxB,OAAO,CAAC,GAAG,cAAc,EAAE;UACvB,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;UACzB,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;UACzB,CAAC,EAAE,CAAC;OACP;;MAED,OAAO;UACH,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC;UAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC;OAC/B,CAAC;GACL;;;;;;;;;EASD,SAAS,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE;MAClC,OAAO;UACH,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC;UACrB,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC;OACxB,CAAC;GACL;;;;;;;;EAQD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;MACxB,IAAI,CAAC,KAAK,CAAC,EAAE;UACT,OAAO,cAAc,CAAC;OACzB;;MAED,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;UAClB,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,eAAe,CAAC;OACnD;MACD,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,cAAc,CAAC;GAChD;;;;;;;;;EASD,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;MAChC,IAAI,CAAC,KAAK,EAAE;UACR,KAAK,GAAG,QAAQ,CAAC;OACpB;MACD,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UAC/B,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;MAEpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;GACvC;;;;;;;;;EASD,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;MAC7B,IAAI,CAAC,KAAK,EAAE;UACR,KAAK,GAAG,QAAQ,CAAC;OACpB;MACD,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UAC/B,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;GAC3C;;;;;;;;EAQD,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE;MAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;GACpG;;;;;;;;;EASD,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;MAC1B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;GAC1G;;EAED,IAAI,eAAe,GAAG;MAClB,SAAS,EAAE,WAAW;MACtB,SAAS,EAAE,UAAU;MACrB,OAAO,EAAE,SAAS;GACrB,CAAC;;EAEF,IAAI,oBAAoB,GAAG,WAAW,CAAC;EACvC,IAAI,mBAAmB,GAAG,mBAAmB,CAAC;;;;;;;EAO9C,SAAS,UAAU,GAAG;MAClB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;MACjC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC;;MAEjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;MAErB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GAChC;;EAED,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE;;;;;MAKvB,OAAO,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;UAC5B,IAAI,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;;UAGzC,IAAI,SAAS,GAAG,WAAW,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;cAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;WACvB;;UAED,IAAI,SAAS,GAAG,UAAU,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE;cAC1C,SAAS,GAAG,SAAS,CAAC;WACzB;;;UAGD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;cACf,OAAO;WACV;;UAED,IAAI,SAAS,GAAG,SAAS,EAAE;cACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;WACxB;;UAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;cACnC,QAAQ,EAAE,CAAC,EAAE,CAAC;cACd,eAAe,EAAE,CAAC,EAAE,CAAC;cACrB,WAAW,EAAE,gBAAgB;cAC7B,QAAQ,EAAE,EAAE;WACf,CAAC,CAAC;OACN;GACJ,CAAC,CAAC;;EAEH,IAAI,iBAAiB,GAAG;MACpB,WAAW,EAAE,WAAW;MACxB,WAAW,EAAE,UAAU;MACvB,SAAS,EAAE,SAAS;MACpB,aAAa,EAAE,YAAY;MAC3B,UAAU,EAAE,YAAY;GAC3B,CAAC;;;EAGF,IAAI,sBAAsB,GAAG;MACzB,CAAC,EAAE,gBAAgB;MACnB,CAAC,EAAE,cAAc;MACjB,CAAC,EAAE,gBAAgB;MACnB,CAAC,EAAE,iBAAiB;GACvB,CAAC;;EAEF,IAAI,sBAAsB,GAAG,aAAa,CAAC;EAC3C,IAAI,qBAAqB,GAAG,qCAAqC,CAAC;;;EAGlE,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;MAC/C,sBAAsB,GAAG,eAAe,CAAC;MACzC,qBAAqB,GAAG,2CAA2C,CAAC;GACvE;;;;;;;EAOD,SAAS,iBAAiB,GAAG;MACzB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;MACnC,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC;;MAEnC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;MAE7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;GAC1D;;EAED,OAAO,CAAC,iBAAiB,EAAE,KAAK,EAAE;;;;;MAK9B,OAAO,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;UAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;UACvB,IAAI,aAAa,GAAG,KAAK,CAAC;;UAE1B,IAAI,mBAAmB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;UAClE,IAAI,SAAS,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;UACvD,IAAI,WAAW,GAAG,sBAAsB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC;;UAE3E,IAAI,OAAO,IAAI,WAAW,IAAI,gBAAgB,CAAC,CAAC;;;UAGhD,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;;;UAG3D,IAAI,SAAS,GAAG,WAAW,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,EAAE;cACzD,IAAI,UAAU,GAAG,CAAC,EAAE;kBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;kBACf,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;eACjC;WACJ,MAAM,IAAI,SAAS,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE;cAC/C,aAAa,GAAG,IAAI,CAAC;WACxB;;;UAGD,IAAI,UAAU,GAAG,CAAC,EAAE;cAChB,OAAO;WACV;;;UAGD,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;;UAEvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;cACnC,QAAQ,EAAE,KAAK;cACf,eAAe,EAAE,CAAC,EAAE,CAAC;cACrB,WAAW,EAAE,WAAW;cACxB,QAAQ,EAAE,EAAE;WACf,CAAC,CAAC;;UAEH,IAAI,aAAa,EAAE;;cAEf,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;WAC/B;OACJ;GACJ,CAAC,CAAC;;EAEH,IAAI,sBAAsB,GAAG;MACzB,UAAU,EAAE,WAAW;MACvB,SAAS,EAAE,UAAU;MACrB,QAAQ,EAAE,SAAS;MACnB,WAAW,EAAE,YAAY;GAC5B,CAAC;;EAEF,IAAI,0BAA0B,GAAG,YAAY,CAAC;EAC9C,IAAI,0BAA0B,GAAG,2CAA2C,CAAC;;;;;;;EAO7E,SAAS,gBAAgB,GAAG;MACxB,IAAI,CAAC,QAAQ,GAAG,0BAA0B,CAAC;MAC3C,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC;MACxC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;MAErB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GAChC;;EAED,OAAO,CAAC,gBAAgB,EAAE,KAAK,EAAE;MAC7B,OAAO,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;UAC5B,IAAI,IAAI,GAAG,sBAAsB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;;UAG3C,IAAI,IAAI,KAAK,WAAW,EAAE;cACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;WACvB;;UAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;cACf,OAAO;WACV;;UAED,IAAI,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;;;UAG1D,IAAI,IAAI,IAAI,SAAS,GAAG,YAAY,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;cAClF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;WACxB;;UAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;cAC9B,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;cACpB,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;cAC3B,WAAW,EAAE,gBAAgB;cAC7B,QAAQ,EAAE,EAAE;WACf,CAAC,CAAC;OACN;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE;MACtC,IAAI,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;MAC9B,IAAI,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;;MAEzC,IAAI,IAAI,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE;UACnC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;OAC9D;;MAED,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;GACzB;;EAED,IAAI,eAAe,GAAG;MAClB,UAAU,EAAE,WAAW;MACvB,SAAS,EAAE,UAAU;MACrB,QAAQ,EAAE,SAAS;MACnB,WAAW,EAAE,YAAY;GAC5B,CAAC;;EAEF,IAAI,mBAAmB,GAAG,2CAA2C,CAAC;;;;;;;EAOtE,SAAS,UAAU,GAAG;MAClB,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC;MACpC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;MAEpB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GAChC;;EAED,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE;MACvB,OAAO,EAAE,SAAS,UAAU,CAAC,EAAE,EAAE;UAC7B,IAAI,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;UACpC,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;UAC9C,IAAI,CAAC,OAAO,EAAE;cACV,OAAO;WACV;;UAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;cAC9B,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;cACpB,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;cAC3B,WAAW,EAAE,gBAAgB;cAC7B,QAAQ,EAAE,EAAE;WACf,CAAC,CAAC;OACN;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;MAC1B,IAAI,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;MACrC,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;;MAG/B,IAAI,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;UAC9D,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;UAC3C,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;OACnC;;MAED,IAAI,CAAC;UACD,aAAa;UACb,cAAc,GAAG,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC;UAC3C,oBAAoB,GAAG,EAAE;UACzB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;;MAGzB,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,KAAK,EAAE;UAC9C,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;OAC1C,CAAC,CAAC;;;MAGH,IAAI,IAAI,KAAK,WAAW,EAAE;UACtB,CAAC,GAAG,CAAC,CAAC;UACN,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE;cAC7B,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;cAC9C,CAAC,EAAE,CAAC;WACP;OACJ;;;MAGD,CAAC,GAAG,CAAC,CAAC;MACN,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE;UAC9B,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;cACzC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;WAChD;;;UAGD,IAAI,IAAI,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE;cACnC,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;WAClD;UACD,CAAC,EAAE,CAAC;OACP;;MAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;UAC9B,OAAO;OACV;;MAED,OAAO;;UAEH,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC;UAC3E,oBAAoB;OACvB,CAAC;GACL;;;;;;;;;;;;EAYD,IAAI,aAAa,GAAG,IAAI,CAAC;EACzB,IAAI,cAAc,GAAG,EAAE,CAAC;;EAExB,SAAS,eAAe,GAAG;MACvB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;MAE7B,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;MACzC,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;MACnD,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;MAEnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;MACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;GACzB;;EAED,OAAO,CAAC,eAAe,EAAE,KAAK,EAAE;;;;;;;MAO5B,OAAO,EAAE,SAAS,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;UACzD,IAAI,OAAO,IAAI,SAAS,CAAC,WAAW,IAAI,gBAAgB,CAAC;cACrD,OAAO,IAAI,SAAS,CAAC,WAAW,IAAI,gBAAgB,CAAC,CAAC;;UAE1D,IAAI,OAAO,IAAI,SAAS,CAAC,kBAAkB,IAAI,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;cAC1F,OAAO;WACV;;;UAGD,IAAI,OAAO,EAAE;cACT,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;WACnD,MAAM,IAAI,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;cAC1D,OAAO;WACV;;UAED,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;OACjD;;;;;MAKD,OAAO,EAAE,SAAS,OAAO,GAAG;UACxB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;UACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;OACxB;GACJ,CAAC,CAAC;;EAEH,SAAS,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE;MACzC,IAAI,SAAS,GAAG,WAAW,EAAE;UACzB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;UAC5D,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;OACtC,MAAM,IAAI,SAAS,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE;UAC/C,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;OACtC;GACJ;;EAED,SAAS,YAAY,CAAC,SAAS,EAAE;MAC7B,IAAI,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;;MAEzC,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE;UACxC,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;UACrD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;UACjC,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;UAC3B,IAAI,eAAe,GAAG,WAAW;cAC7B,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;cAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;kBACR,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;eACpB;WACJ,CAAC;UACF,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;OAC9C;GACJ;;EAED,SAAS,gBAAgB,CAAC,SAAS,EAAE;MACjC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;MACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;UAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;UAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACnD,IAAI,EAAE,IAAI,cAAc,IAAI,EAAE,IAAI,cAAc,EAAE;cAC9C,OAAO,IAAI,CAAC;WACf;OACJ;MACD,OAAO,KAAK,CAAC;GAChB;;EAED,IAAI,qBAAqB,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;EACxE,IAAI,mBAAmB,GAAG,qBAAqB,KAAK,SAAS,CAAC;;;EAG9D,IAAI,oBAAoB,GAAG,SAAS,CAAC;EACrC,IAAI,iBAAiB,GAAG,MAAM,CAAC;EAC/B,IAAI,yBAAyB,GAAG,cAAc,CAAC;EAC/C,IAAI,iBAAiB,GAAG,MAAM,CAAC;EAC/B,IAAI,kBAAkB,GAAG,OAAO,CAAC;EACjC,IAAI,kBAAkB,GAAG,OAAO,CAAC;EACjC,IAAI,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;;;;;;;;;EAS7C,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;MACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;MACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;GACnB;;EAED,WAAW,CAAC,SAAS,GAAG;;;;;MAKpB,GAAG,EAAE,SAAS,KAAK,EAAE;;UAEjB,IAAI,KAAK,IAAI,oBAAoB,EAAE;cAC/B,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;WAC1B;;UAED,IAAI,mBAAmB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;cAC9E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;WAC7D;UACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;OAC7C;;;;;MAKD,MAAM,EAAE,WAAW;UACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;OAC9C;;;;;;MAMD,OAAO,EAAE,WAAW;UAChB,IAAI,OAAO,GAAG,EAAE,CAAC;UACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE;cAChD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE;kBACnD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;eACzD;WACJ,CAAC,CAAC;UACH,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;OAC/C;;;;;;MAMD,eAAe,EAAE,SAAS,KAAK,EAAE;UAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;UAC9B,IAAI,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC;;;UAGtC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;cAChC,QAAQ,CAAC,cAAc,EAAE,CAAC;cAC1B,OAAO;WACV;;UAED,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;UAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;UACxF,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;UAC1F,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;;UAE1F,IAAI,OAAO,EAAE;;;cAGT,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;cAC/C,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;cACvC,IAAI,cAAc,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;;cAE3C,IAAI,YAAY,IAAI,aAAa,IAAI,cAAc,EAAE;kBACjD,OAAO;eACV;WACJ;;UAED,IAAI,OAAO,IAAI,OAAO,EAAE;;cAEpB,OAAO;WACV;;UAED,IAAI,OAAO;eACN,OAAO,IAAI,SAAS,GAAG,oBAAoB,CAAC;eAC5C,OAAO,IAAI,SAAS,GAAG,kBAAkB,CAAC,EAAE;cAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;WACpC;OACJ;;;;;;MAMD,UAAU,EAAE,SAAS,QAAQ,EAAE;UAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;UACtC,QAAQ,CAAC,cAAc,EAAE,CAAC;OAC7B;GACJ,CAAC;;;;;;;EAOF,SAAS,iBAAiB,CAAC,OAAO,EAAE;;MAEhC,IAAI,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE;UACnC,OAAO,iBAAiB,CAAC;OAC5B;;MAED,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;MACjD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;;;;;;MAMjD,IAAI,OAAO,IAAI,OAAO,EAAE;UACpB,OAAO,iBAAiB,CAAC;OAC5B;;;MAGD,IAAI,OAAO,IAAI,OAAO,EAAE;UACpB,OAAO,OAAO,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;OAC5D;;;MAGD,IAAI,KAAK,CAAC,OAAO,EAAE,yBAAyB,CAAC,EAAE;UAC3C,OAAO,yBAAyB,CAAC;OACpC;;MAED,OAAO,iBAAiB,CAAC;GAC5B;;EAED,SAAS,mBAAmB,GAAG;MAC3B,IAAI,CAAC,mBAAmB,EAAE;UACtB,OAAO,KAAK,CAAC;OAChB;MACD,IAAI,QAAQ,GAAG,EAAE,CAAC;MAClB,IAAI,WAAW,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;MACpD,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;;;;UAIpF,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;OACjF,CAAC,CAAC;MACH,OAAO,QAAQ,CAAC;GACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BD,IAAI,cAAc,GAAG,CAAC,CAAC;EACvB,IAAI,WAAW,GAAG,CAAC,CAAC;EACpB,IAAI,aAAa,GAAG,CAAC,CAAC;EACtB,IAAI,WAAW,GAAG,CAAC,CAAC;EACpB,IAAI,gBAAgB,GAAG,WAAW,CAAC;EACnC,IAAI,eAAe,GAAG,EAAE,CAAC;EACzB,IAAI,YAAY,GAAG,EAAE,CAAC;;;;;;;;EAQtB,SAAS,UAAU,CAAC,OAAO,EAAE;MACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;;MAExD,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;;MAErB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;;MAGpB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;MAE7D,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;;MAE5B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;MACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;GACzB;;EAED,UAAU,CAAC,SAAS,GAAG;;;;;MAKnB,QAAQ,EAAE,EAAE;;;;;;;MAOZ,GAAG,EAAE,SAAS,OAAO,EAAE;UACnB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;;UAG9B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;UAClD,OAAO,IAAI,CAAC;OACf;;;;;;;MAOD,aAAa,EAAE,SAAS,eAAe,EAAE;UACrC,IAAI,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;cACxD,OAAO,IAAI,CAAC;WACf;;UAED,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;UACrC,eAAe,GAAG,4BAA4B,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;UACtE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;cACnC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC;cACnD,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;WACvC;UACD,OAAO,IAAI,CAAC;OACf;;;;;;;MAOD,iBAAiB,EAAE,SAAS,eAAe,EAAE;UACzC,IAAI,cAAc,CAAC,eAAe,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE;cAC5D,OAAO,IAAI,CAAC;WACf;;UAED,eAAe,GAAG,4BAA4B,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;UACtE,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;UAC7C,OAAO,IAAI,CAAC;OACf;;;;;;;MAOD,cAAc,EAAE,SAAS,eAAe,EAAE;UACtC,IAAI,cAAc,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE;cACzD,OAAO,IAAI,CAAC;WACf;;UAED,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;UACnC,eAAe,GAAG,4BAA4B,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;UACtE,IAAI,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;cAC9C,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;cAClC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;WACxC;UACD,OAAO,IAAI,CAAC;OACf;;;;;;;MAOD,kBAAkB,EAAE,SAAS,eAAe,EAAE;UAC1C,IAAI,cAAc,CAAC,eAAe,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE;cAC7D,OAAO,IAAI,CAAC;WACf;;UAED,eAAe,GAAG,4BAA4B,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;UACtE,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;UACvD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;cACZ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;WACrC;UACD,OAAO,IAAI,CAAC;OACf;;;;;;MAMD,kBAAkB,EAAE,WAAW;UAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;OACtC;;;;;;;MAOD,gBAAgB,EAAE,SAAS,eAAe,EAAE;UACxC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;OAClD;;;;;;;MAOD,IAAI,EAAE,SAAS,KAAK,EAAE;UAClB,IAAI,IAAI,GAAG,IAAI,CAAC;UAChB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;UAEvB,SAAS,IAAI,CAAC,KAAK,EAAE;cACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;WACnC;;;UAGD,IAAI,KAAK,GAAG,WAAW,EAAE;cACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;WAC9C;;UAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;UAEzB,IAAI,KAAK,CAAC,eAAe,EAAE;cACvB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;WAC/B;;;UAGD,IAAI,KAAK,IAAI,WAAW,EAAE;cACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;WAC9C;OACJ;;;;;;;;MAQD,OAAO,EAAE,SAAS,KAAK,EAAE;UACrB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;cAChB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;WAC3B;;UAED,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;OAC7B;;;;;;MAMD,OAAO,EAAE,WAAW;UAChB,IAAI,CAAC,GAAG,CAAC,CAAC;UACV,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;cAChC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,YAAY,GAAG,cAAc,CAAC,CAAC,EAAE;kBAChE,OAAO,KAAK,CAAC;eAChB;cACD,CAAC,EAAE,CAAC;WACP;UACD,OAAO,IAAI,CAAC;OACf;;;;;;MAMD,SAAS,EAAE,SAAS,SAAS,EAAE;;;UAG3B,IAAI,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;;;UAG3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE;cACxD,IAAI,CAAC,KAAK,EAAE,CAAC;cACb,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;cAC1B,OAAO;WACV;;;UAGD,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,GAAG,eAAe,GAAG,YAAY,CAAC,EAAE;cAClE,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;WAC/B;;UAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;;;;UAI1C,IAAI,IAAI,CAAC,KAAK,IAAI,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC,EAAE;cAC5E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;WAChC;OACJ;;;;;;;;;MASD,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG;;;;;;;MAOhC,cAAc,EAAE,WAAW,GAAG;;;;;;;MAO9B,KAAK,EAAE,WAAW,GAAG;GACxB,CAAC;;;;;;;EAOF,SAAS,QAAQ,CAAC,KAAK,EAAE;MACrB,IAAI,KAAK,GAAG,eAAe,EAAE;UACzB,OAAO,QAAQ,CAAC;OACnB,MAAM,IAAI,KAAK,GAAG,WAAW,EAAE;UAC5B,OAAO,KAAK,CAAC;OAChB,MAAM,IAAI,KAAK,GAAG,aAAa,EAAE;UAC9B,OAAO,MAAM,CAAC;OACjB,MAAM,IAAI,KAAK,GAAG,WAAW,EAAE;UAC5B,OAAO,OAAO,CAAC;OAClB;MACD,OAAO,EAAE,CAAC;GACb;;;;;;;EAOD,SAAS,YAAY,CAAC,SAAS,EAAE;MAC7B,IAAI,SAAS,IAAI,cAAc,EAAE;UAC7B,OAAO,MAAM,CAAC;OACjB,MAAM,IAAI,SAAS,IAAI,YAAY,EAAE;UAClC,OAAO,IAAI,CAAC;OACf,MAAM,IAAI,SAAS,IAAI,cAAc,EAAE;UACpC,OAAO,MAAM,CAAC;OACjB,MAAM,IAAI,SAAS,IAAI,eAAe,EAAE;UACrC,OAAO,OAAO,CAAC;OAClB;MACD,OAAO,EAAE,CAAC;GACb;;;;;;;;EAQD,SAAS,4BAA4B,CAAC,eAAe,EAAE,UAAU,EAAE;MAC/D,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;MACjC,IAAI,OAAO,EAAE;UACT,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;OACvC;MACD,OAAO,eAAe,CAAC;GAC1B;;;;;;;EAOD,SAAS,cAAc,GAAG;MACtB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GACrC;;EAED,OAAO,CAAC,cAAc,EAAE,UAAU,EAAE;;;;;MAKhC,QAAQ,EAAE;;;;;UAKN,QAAQ,EAAE,CAAC;OACd;;;;;;;;MAQD,QAAQ,EAAE,SAAS,KAAK,EAAE;UACtB,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;UAC3C,OAAO,cAAc,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC;OAC3E;;;;;;;;MAQD,OAAO,EAAE,SAAS,KAAK,EAAE;UACrB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;UACvB,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;;UAEhC,IAAI,YAAY,GAAG,KAAK,IAAI,WAAW,GAAG,aAAa,CAAC,CAAC;UACzD,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;;UAGnC,IAAI,YAAY,KAAK,SAAS,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,EAAE;cACxD,OAAO,KAAK,GAAG,eAAe,CAAC;WAClC,MAAM,IAAI,YAAY,IAAI,OAAO,EAAE;cAChC,IAAI,SAAS,GAAG,SAAS,EAAE;kBACvB,OAAO,KAAK,GAAG,WAAW,CAAC;eAC9B,MAAM,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC,EAAE;kBAC/B,OAAO,WAAW,CAAC;eACtB;cACD,OAAO,KAAK,GAAG,aAAa,CAAC;WAChC;UACD,OAAO,YAAY,CAAC;OACvB;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,aAAa,GAAG;MACrB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;MAEtC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;MACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;GAClB;;EAED,OAAO,CAAC,aAAa,EAAE,cAAc,EAAE;;;;;MAKnC,QAAQ,EAAE;UACN,KAAK,EAAE,KAAK;UACZ,SAAS,EAAE,EAAE;UACb,QAAQ,EAAE,CAAC;UACX,SAAS,EAAE,aAAa;OAC3B;;MAED,cAAc,EAAE,WAAW;UACvB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;UACvC,IAAI,OAAO,GAAG,EAAE,CAAC;UACjB,IAAI,SAAS,GAAG,oBAAoB,EAAE;cAClC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;WACpC;UACD,IAAI,SAAS,GAAG,kBAAkB,EAAE;cAChC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;WACpC;UACD,OAAO,OAAO,CAAC;OAClB;;MAED,aAAa,EAAE,SAAS,KAAK,EAAE;UAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;UAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC;UACpB,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;UAC9B,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;UAChC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;UACrB,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;;;UAGrB,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE;cAClC,IAAI,OAAO,CAAC,SAAS,GAAG,oBAAoB,EAAE;kBAC1C,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,cAAc,GAAG,eAAe,CAAC;kBACpF,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;kBACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;eACrC,MAAM;kBACH,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,YAAY,GAAG,cAAc,CAAC;kBACjF,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;kBACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;eACrC;WACJ;UACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;UAC5B,OAAO,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;OACpF;;MAED,QAAQ,EAAE,SAAS,KAAK,EAAE;UACtB,OAAO,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;eACrD,IAAI,CAAC,KAAK,GAAG,WAAW,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAChG;;MAED,IAAI,EAAE,SAAS,KAAK,EAAE;;UAElB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;UACvB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;;UAEvB,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;UAE9C,IAAI,SAAS,EAAE;cACX,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;WAC1D;UACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;OACtC;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,eAAe,GAAG;MACvB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GACzC;;EAED,OAAO,CAAC,eAAe,EAAE,cAAc,EAAE;;;;;MAKrC,QAAQ,EAAE;UACN,KAAK,EAAE,OAAO;UACd,SAAS,EAAE,CAAC;UACZ,QAAQ,EAAE,CAAC;OACd;;MAED,cAAc,EAAE,WAAW;UACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;OAC9B;;MAED,QAAQ,EAAE,SAAS,KAAK,EAAE;UACtB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;eACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;OACxF;;MAED,IAAI,EAAE,SAAS,KAAK,EAAE;UAClB,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;cACnB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;cAC3C,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;WACtD;UACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;OACtC;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,eAAe,GAAG;MACvB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;MAElC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;GACtB;;EAED,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE;;;;;MAKjC,QAAQ,EAAE;UACN,KAAK,EAAE,OAAO;UACd,QAAQ,EAAE,CAAC;UACX,IAAI,EAAE,GAAG;UACT,SAAS,EAAE,CAAC;OACf;;MAED,cAAc,EAAE,WAAW;UACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;OAC9B;;MAED,OAAO,EAAE,SAAS,KAAK,EAAE;UACrB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;UAC3B,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC;UAC/D,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;UACvD,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;;UAE/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;;;UAIpB,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;cAClG,IAAI,CAAC,KAAK,EAAE,CAAC;WAChB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,WAAW,EAAE;cACtC,IAAI,CAAC,KAAK,EAAE,CAAC;cACb,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,WAAW;kBACvC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC;kBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;eAClB,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;WAC1B,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,SAAS,EAAE;cACpC,OAAO,gBAAgB,CAAC;WAC3B;UACD,OAAO,YAAY,CAAC;OACvB;;MAED,KAAK,EAAE,WAAW;UACd,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;OAC7B;;MAED,IAAI,EAAE,SAAS,KAAK,EAAE;UAClB,IAAI,IAAI,CAAC,KAAK,KAAK,gBAAgB,EAAE;cACjC,OAAO;WACV;;UAED,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;cACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;WACvD,MAAM;cACH,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;cAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;WACtD;OACJ;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,gBAAgB,GAAG;MACxB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GACzC;;EAED,OAAO,CAAC,gBAAgB,EAAE,cAAc,EAAE;;;;;MAKtC,QAAQ,EAAE;UACN,KAAK,EAAE,QAAQ;UACf,SAAS,EAAE,CAAC;UACZ,QAAQ,EAAE,CAAC;OACd;;MAED,cAAc,EAAE,WAAW;UACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;OAC9B;;MAED,QAAQ,EAAE,SAAS,KAAK,EAAE;UACtB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;eACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC;OACvF;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,eAAe,GAAG;MACvB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GACzC;;EAED,OAAO,CAAC,eAAe,EAAE,cAAc,EAAE;;;;;MAKrC,QAAQ,EAAE;UACN,KAAK,EAAE,OAAO;UACd,SAAS,EAAE,EAAE;UACb,QAAQ,EAAE,GAAG;UACb,SAAS,EAAE,oBAAoB,GAAG,kBAAkB;UACpD,QAAQ,EAAE,CAAC;OACd;;MAED,cAAc,EAAE,WAAW;UACvB,OAAO,aAAa,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC5D;;MAED,QAAQ,EAAE,SAAS,KAAK,EAAE;UACtB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;UACvC,IAAI,QAAQ,CAAC;;UAEb,IAAI,SAAS,IAAI,oBAAoB,GAAG,kBAAkB,CAAC,EAAE;cACzD,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;WACpC,MAAM,IAAI,SAAS,GAAG,oBAAoB,EAAE;cACzC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC;WACrC,MAAM,IAAI,SAAS,GAAG,kBAAkB,EAAE;cACvC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC;WACrC;;UAED,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;cACzC,SAAS,GAAG,KAAK,CAAC,eAAe;cACjC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;cACvC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;cAC1C,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;OAC5E;;MAED,IAAI,EAAE,SAAS,KAAK,EAAE;UAClB,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;UACpD,IAAI,SAAS,EAAE;cACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;WAC5D;;UAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;OAChD;GACJ,CAAC,CAAC;;;;;;;;;;;;EAYH,SAAS,aAAa,GAAG;MACrB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;;;;MAIlC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;MACnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;MAErB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;GAClB;;EAED,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE;;;;;MAK/B,QAAQ,EAAE;UACN,KAAK,EAAE,KAAK;UACZ,QAAQ,EAAE,CAAC;UACX,IAAI,EAAE,CAAC;UACP,QAAQ,EAAE,GAAG;UACb,IAAI,EAAE,GAAG;UACT,SAAS,EAAE,CAAC;UACZ,YAAY,EAAE,EAAE;OACnB;;MAED,cAAc,EAAE,WAAW;UACvB,OAAO,CAAC,yBAAyB,CAAC,CAAC;OACtC;;MAED,OAAO,EAAE,SAAS,KAAK,EAAE;UACrB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;UAE3B,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC;UAC/D,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;UACvD,IAAI,cAAc,GAAG,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;;UAEpD,IAAI,CAAC,KAAK,EAAE,CAAC;;UAEb,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,MAAM,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;cACvD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;WAC7B;;;;UAID,IAAI,aAAa,IAAI,cAAc,IAAI,aAAa,EAAE;cAClD,IAAI,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE;kBAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;eAC7B;;cAED,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;cAC1F,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;;cAEpG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;cAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;;cAE5B,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE;kBAClC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;eAClB,MAAM;kBACH,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;eACnB;;cAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;;;cAIpB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;cACzC,IAAI,QAAQ,KAAK,CAAC,EAAE;;;kBAGhB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;sBAC5B,OAAO,gBAAgB,CAAC;mBAC3B,MAAM;sBACH,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,WAAW;0BACvC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC;0BAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;uBAClB,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;sBAC3B,OAAO,WAAW,CAAC;mBACtB;eACJ;WACJ;UACD,OAAO,YAAY,CAAC;OACvB;;MAED,WAAW,EAAE,WAAW;UACpB,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,WAAW;cACvC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;WAC7B,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;UAChC,OAAO,YAAY,CAAC;OACvB;;MAED,KAAK,EAAE,WAAW;UACd,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;OAC7B;;MAED,IAAI,EAAE,WAAW;UACb,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,EAAE;cAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;cAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;WACtD;OACJ;GACJ,CAAC,CAAC;;;;;;;;EAQH,SAAS,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;MAC9B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;MACxB,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;MAC/E,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;GACxC;;;;;EAKD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;;;;;;EAMzB,MAAM,CAAC,QAAQ,GAAG;;;;;;;MAOd,SAAS,EAAE,KAAK;;;;;;;;MAQhB,WAAW,EAAE,oBAAoB;;;;;;MAMjC,MAAM,EAAE,IAAI;;;;;;;;;MASZ,WAAW,EAAE,IAAI;;;;;;;MAOjB,UAAU,EAAE,IAAI;;;;;;;MAOhB,MAAM,EAAE;;UAEJ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;UACnC,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;UAC9C,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;UACpD,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;UAC7D,CAAC,aAAa,CAAC;UACf,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;UACvD,CAAC,eAAe,CAAC;OACpB;;;;;;;MAOD,QAAQ,EAAE;;;;;;UAMN,UAAU,EAAE,MAAM;;;;;;;UAOlB,WAAW,EAAE,MAAM;;;;;;;;;UASnB,YAAY,EAAE,MAAM;;;;;;;UAOpB,cAAc,EAAE,MAAM;;;;;;;UAOtB,QAAQ,EAAE,MAAM;;;;;;;;UAQhB,iBAAiB,EAAE,eAAe;OACrC;GACJ,CAAC;;EAEF,IAAI,IAAI,GAAG,CAAC,CAAC;EACb,IAAI,WAAW,GAAG,CAAC,CAAC;;;;;;;;EAQpB,SAAS,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;MAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;;MAE1D,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC;;MAE/D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;MACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;MAClB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;MACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;;MAEtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;MACvB,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;MACvC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;MAEnE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;MAE3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE;UAC1C,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAClD,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;UAC7C,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;OACjD,EAAE,IAAI,CAAC,CAAC;GACZ;;EAED,OAAO,CAAC,SAAS,GAAG;;;;;;MAMhB,GAAG,EAAE,SAAS,OAAO,EAAE;UACnB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;;UAG9B,IAAI,OAAO,CAAC,WAAW,EAAE;cACrB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;WAC7B;UACD,IAAI,OAAO,CAAC,WAAW,EAAE;;cAErB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;cACrB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;cACxC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;WACrB;UACD,OAAO,IAAI,CAAC;OACf;;;;;;;;MAQD,IAAI,EAAE,SAAS,KAAK,EAAE;UAClB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC;OACrD;;;;;;;;MAQD,SAAS,EAAE,SAAS,SAAS,EAAE;UAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;UAC3B,IAAI,OAAO,CAAC,OAAO,EAAE;cACjB,OAAO;WACV;;;UAGD,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;;UAE5C,IAAI,UAAU,CAAC;UACf,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;;;;;UAKnC,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;;;;UAI1C,IAAI,CAAC,aAAa,KAAK,aAAa,IAAI,aAAa,CAAC,KAAK,GAAG,gBAAgB,CAAC,EAAE;cAC7E,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;WAChD;;UAED,IAAI,CAAC,GAAG,CAAC,CAAC;UACV,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;cAC3B,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;;;;;;;;cAQ5B,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW;sBAC3B,CAAC,aAAa,IAAI,UAAU,IAAI,aAAa;sBAC7C,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,EAAE;kBACjD,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;eACnC,MAAM;kBACH,UAAU,CAAC,KAAK,EAAE,CAAC;eACtB;;;;cAID,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC,KAAK,IAAI,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC,EAAE;kBAClF,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,UAAU,CAAC;eACtD;cACD,CAAC,EAAE,CAAC;WACP;OACJ;;;;;;;MAOD,GAAG,EAAE,SAAS,UAAU,EAAE;UACtB,IAAI,UAAU,YAAY,UAAU,EAAE;cAClC,OAAO,UAAU,CAAC;WACrB;;UAED,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;UACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;cACzC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,EAAE;kBAC5C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;eACzB;WACJ;UACD,OAAO,IAAI,CAAC;OACf;;;;;;;;MAQD,GAAG,EAAE,SAAS,UAAU,EAAE;UACtB,IAAI,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;cACzC,OAAO,IAAI,CAAC;WACf;;;UAGD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;UAClD,IAAI,QAAQ,EAAE;cACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;WACzB;;UAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;UAClC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;;UAE1B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;UAC1B,OAAO,UAAU,CAAC;OACrB;;;;;;;MAOD,MAAM,EAAE,SAAS,UAAU,EAAE;UACzB,IAAI,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;cAC5C,OAAO,IAAI,CAAC;WACf;;UAED,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;;UAGlC,IAAI,UAAU,EAAE;cACZ,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;cACnC,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;;cAE7C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;kBACd,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;kBAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;eAC7B;WACJ;;UAED,OAAO,IAAI,CAAC;OACf;;;;;;;;MAQD,EAAE,EAAE,SAAS,MAAM,EAAE,OAAO,EAAE;UAC1B,IAAI,MAAM,KAAK,SAAS,EAAE;cACtB,OAAO;WACV;UACD,IAAI,OAAO,KAAK,SAAS,EAAE;cACvB,OAAO;WACV;;UAED,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;UAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE;cACnC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;cACxC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;WACjC,CAAC,CAAC;UACH,OAAO,IAAI,CAAC;OACf;;;;;;;;MAQD,GAAG,EAAE,SAAS,MAAM,EAAE,OAAO,EAAE;UAC3B,IAAI,MAAM,KAAK,SAAS,EAAE;cACtB,OAAO;WACV;;UAED,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;UAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE;cACnC,IAAI,CAAC,OAAO,EAAE;kBACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;eAC1B,MAAM;kBACH,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;eACnF;WACJ,CAAC,CAAC;UACH,OAAO,IAAI,CAAC;OACf;;;;;;;MAOD,IAAI,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE;;UAExB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;cACxB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;WAChC;;;UAGD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;UACpE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;cAC/B,OAAO;WACV;;UAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;UAClB,IAAI,CAAC,cAAc,GAAG,WAAW;cAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;WAClC,CAAC;;UAEF,IAAI,CAAC,GAAG,CAAC,CAAC;UACV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;cACxB,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;cAClB,CAAC,EAAE,CAAC;WACP;OACJ;;;;;;MAMD,OAAO,EAAE,WAAW;UAChB,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;UAE5C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;UACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;UAClB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;UACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;OACvB;GACJ,CAAC;;;;;;;EAOF,SAAS,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE;MAClC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;MAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;UAChB,OAAO;OACV;MACD,IAAI,IAAI,CAAC;MACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE;UACjD,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;UACrC,IAAI,GAAG,EAAE;cACL,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;cAChD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;WAC/B,MAAM;cACH,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;WACzD;OACJ,CAAC,CAAC;MACH,IAAI,CAAC,GAAG,EAAE;UACN,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;OAC5B;GACJ;;;;;;;EAOD,SAAS,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;MAClC,IAAI,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;MACjD,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC1C,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;MAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;GAC3C;;EAED,MAAM,CAAC,MAAM,EAAE;MACX,WAAW,EAAE,WAAW;MACxB,UAAU,EAAE,UAAU;MACtB,SAAS,EAAE,SAAS;MACpB,YAAY,EAAE,YAAY;;MAE1B,cAAc,EAAE,cAAc;MAC9B,WAAW,EAAE,WAAW;MACxB,aAAa,EAAE,aAAa;MAC5B,WAAW,EAAE,WAAW;MACxB,gBAAgB,EAAE,gBAAgB;MAClC,eAAe,EAAE,eAAe;MAChC,YAAY,EAAE,YAAY;;MAE1B,cAAc,EAAE,cAAc;MAC9B,cAAc,EAAE,cAAc;MAC9B,eAAe,EAAE,eAAe;MAChC,YAAY,EAAE,YAAY;MAC1B,cAAc,EAAE,cAAc;MAC9B,oBAAoB,EAAE,oBAAoB;MAC1C,kBAAkB,EAAE,kBAAkB;MACtC,aAAa,EAAE,aAAa;;MAE5B,OAAO,EAAE,OAAO;MAChB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,WAAW;;MAExB,UAAU,EAAE,UAAU;MACtB,UAAU,EAAE,UAAU;MACtB,iBAAiB,EAAE,iBAAiB;MACpC,eAAe,EAAE,eAAe;MAChC,gBAAgB,EAAE,gBAAgB;;MAElC,UAAU,EAAE,UAAU;MACtB,cAAc,EAAE,cAAc;MAC9B,GAAG,EAAE,aAAa;MAClB,GAAG,EAAE,aAAa;MAClB,KAAK,EAAE,eAAe;MACtB,KAAK,EAAE,eAAe;MACtB,MAAM,EAAE,gBAAgB;MACxB,KAAK,EAAE,eAAe;;MAEtB,EAAE,EAAE,iBAAiB;MACrB,GAAG,EAAE,oBAAoB;MACzB,IAAI,EAAE,IAAI;MACV,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,MAAM;MACd,MAAM,EAAE,MAAM;MACd,OAAO,EAAE,OAAO;MAChB,MAAM,EAAE,MAAM;MACd,QAAQ,EAAE,QAAQ;GACrB,CAAC,CAAC;;;;EAIH,IAAI,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;EACtG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;;EAE3B,IAAI,OAAOC,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;MAC5CA,SAAM,CAAC,WAAW;UACd,OAAO,MAAM,CAAC;OACjB,CAAC,CAAC;GACN,MAAM,IAAI,AAAgC,MAAM,CAAC,OAAO,EAAE;MACvD,cAAc,GAAG,MAAM,CAAC;GAC3B,MAAM;MACH,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;GAC/B;;GAEA,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;;;;;ECvkF/BN,MAAM,CAACO,IAAP,GAAc;EACV;EACF;EACEC,EAAAA,QAAQ,EAARA;EAHU,CAAd;;EAOAR,MAAM,CAACD,WAAP,GAAqBA,aAArB;EACAC,MAAM,CAACC,gBAAP,GAA0BA,kBAA1B;EACAD,MAAM,CAACE,0BAAP,GAAoCA,4BAApC;AAEAD,oBAAgB,CAACG,QAAjB,CAA0BL,WAA1B,GAAwCA,aAAxC;AACAE,oBAAgB,CAACG,QAAjB,CAA0BK,MAA1B,GAAmCA,MAAnC;AACAR,oBAAgB,CAACG,QAAjB,CAA0BD,eAA1B,GAA4CA,iBAA5C;AACAF,oBAAgB,CAACS,IAAjB;AAEAR,8BAA0B,CAACE,QAA3B,CAAoCL,WAApC,GAAkDA,aAAlD;AACAG,8BAA0B,CAACE,QAA3B,CAAoCO,WAApC,GAAkDA,WAAlD;AAEAC,QAAI,CAACR,QAAL,CAAcL,WAAd,GAA4BA,aAA5B;AACAa,QAAI,CAACR,QAAL,CAAcH,gBAAd,GAAiCA,kBAAjC;AACAW,QAAI,CAACR,QAAL,CAAcD,eAAd,GAAgCA,iBAAhC;AACAS,QAAI,CAACR,QAAL,CAAcF,0BAAd,GAA2CA,4BAA3C;;EAGA,IAAIW,QAAQ,GAAGb,MAAM,CAACc,QAAP,CAAgBC,QAA/B;EAEA,IAAMC,MAAM,GAAG;EACXC,EAAAA,aAAa,EAAEC,IAAI,CAACC,GAAL,CAASC,SAAS,CAACC,mBAAV,GAAgC,CAAzC,EAA4C,CAA5C,CADJ;EAEXC,EAAAA,uBAAuB,EAAE,IAFd;EAGXC,EAAAA,aAAa,EAAEV,QAAQ,GAAG,6CAHf;EAIXW,EAAAA,iBAAiB,EAAE;EACfC,IAAAA,UAAU,EAAE;EACRC,MAAAA,mBAAmB,EAAE,IADb;EAERC,MAAAA,yBAAyB,EAAE,KAFnB;EAGRC,MAAAA,UAAU,EAAEf,QAAQ,GAAG,0CAHf;EAIRgB,MAAAA,QAAQ,EAAE,KAJF;EAKRC,MAAAA,MAAM,EAAE;EALA;EADG;EAJR,CAAf;AAeA5B,8BAA0B,CAAC6B,gBAA3B,CAA4CC,UAA5C,CAAuDhB,MAAvD;;AAGAJ,QAAI,CAACqB,IAAL,CAAUC,cAAV,GAA2B,YAAM;EAC7B;EACA,MAAMC,KAAK,GAAGnC,MAAM,CAACoC,KAAP,CAAaC,QAAb,EAAd;;EACA,MAAI,CAACF,KAAK,CAACG,IAAP,IAAe,CAACH,KAAK,CAACG,IAAN,CAAWL,IAA/B,EAAqC;EACjC;EACH;;EAED,SAAOE,KAAK,CAACG,IAAN,CAAWL,IAAX,CAAgBM,YAAvB;EACH,CARD;;AAUArC,8BAA0B,CAACsC,SAA3B,CAAqC;EACjCC,EAAAA,UAAU,EAAE,oBAASC,GAAT,EAAc;EACtB,QAAMC,OAAO,GAAG/B,MAAI,CAACgC,QAAL,CAAcC,sBAAd,EAAhB;;EAEA,QAAIF,OAAO,CAACG,aAAZ,EAA2B;EACvBJ,MAAAA,GAAG,CAACK,gBAAJ,CAAqB,eAArB,EAAsCJ,OAAO,CAACG,aAA9C;EACH;EACJ;EAPgC,CAArC;EAWA;;EACA,IAAME,UAAU,GACZ,0HADJ;AAEA/C,oBAAgB,CAACgD,SAAjB,CAA2BC,OAA3B,gBAA2CF,UAA3C;;AAGA/C,oBAAgB,CAACkD,SAAjB,CAA2BC,YAA3B,CAAwC,CAAxC;;AAEAnD,oBAAgB,CAACoD,UAAjB,CAA4BC,YAA5B,CAAyC,kBAAzC;;AAGArD,oBAAgB,CAACoD,UAAjB,CAA4BE,cAA5B,CAA2C,gBAA3C;AAEAtD,oBAAgB,CAACmC,KAAjB,CAAuBD,KAAvB,CAA6BqB,cAA7B,GAA8C,EAA9C;;EC1FA,IAAMC,cAAY,GAAG;EACjBC,EAAAA,eAAe,EAAE,IADA;EAEjBC,EAAAA,gBAAgB,EAAE;EAFD,CAArB;;EAKA,IAAMC,IAAE,GAAG,SAALA,EAAK,GAAkC;EAAA,MAAjCzB,KAAiC,uEAAzBsB,cAAyB;EAAA,MAAXI,MAAW;;EACzC,UAAQA,MAAM,CAACC,IAAf;EACI,SAAK,uBAAL;EACI,aAAOC,MAAM,CAACxG,MAAP,CAAc,EAAd,EAAkB4E,KAAlB,EAAyB;EAAEuB,QAAAA,eAAe,EAAEG,MAAM,CAAC1B;EAA1B,OAAzB,CAAP;;EACJ,SAAK,wBAAL;EACI,aAAO4B,MAAM,CAACxG,MAAP,CAAc,EAAd,EAAkB4E,KAAlB,EAAyB;EAAEwB,QAAAA,gBAAgB,EAAEE,MAAM,CAAC1B;EAA3B,OAAzB,CAAP;;EACJ;EACI,aAAOA,KAAP;EANR;EAQH,CATD;;07HCLA;;;;wCAQA,IAAItD,uBAAqB,CAAG,MAAM,CAAC,qBAAnC,CACA,IAAImF,gBAAc,CAAG,MAAM,CAAC,SAAP,CAAiB,cAAtC,CACA,IAAIC,kBAAgB,CAAG,MAAM,CAAC,SAAP,CAAiB,oBAAxC,CAEA,SAASC,UAAT,CAAkB,GAAlB,CAAuB,CACtB,GAAI,GAAG,GAAK,IAAR,EAAgB,GAAG,GAAK,SAA5B,CAAuC,CACtC,UAAU,SAAJ,CAAc,uDAAd,CAAN,CACA,CAED,OAAO,MAAM,CAAC,GAAD,CAAb,CACA,CAED,SAASC,iBAAT,EAA2B,CAC1B,GAAI,CACH,GAAI,CAAC,MAAM,CAAC,MAAZ,CAAoB,CACnB,YAAA,CACA;;EAKD,IAAI,KAAK,CAAG,IAAI,MAAJ,CAAW,KAAX,CAAZ,CAA8B;EAC9B,KAAK,CAAC,CAAD,CAAL,CAAW,IAAX,CACA,GAAI,MAAM,CAAC,mBAAP,CAA2B,KAA3B,EAAkC,CAAlC,IAAyC,GAA7C,CAAkD,CACjD,YAAA,CACA;EAGD,IAAI,KAAK,CAAG,EAAZ,CACA,IAAK,IAAI,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,EAApB,CAAwB,CAAC,EAAzB,CAA6B,CAC5B,KAAK,CAAC,IAAM,MAAM,CAAC,YAAP,CAAoB,CAApB,CAAP,CAAL,CAAsC,CAAtC,CACA,CACD,IAAI,MAAM,CAAG,MAAM,CAAC,mBAAP,CAA2B,KAA3B,EAAkC,GAAlC,CAAsC,SAAU,CAAV,CAAa,CAC/D,OAAO,KAAK,CAAC,CAAD,CAAZ,CACA,CAFY,CAAb,CAGA,GAAI,MAAM,CAAC,IAAP,CAAY,EAAZ,IAAoB,YAAxB,CAAsC,CACrC,YAAA,CACA;EAGD,IAAI,KAAK,CAAG,EAAZ,CACA,uBAAuB,KAAvB,CAA6B,EAA7B,EAAiC,OAAjC,CAAyC,SAAU,MAAV,CAAkB,CAC1D,KAAK,CAAC,MAAD,CAAL,CAAgB,MAAhB,CACA,CAFD,EAGA,GAAI,MAAM,CAAC,IAAP,CAAY,MAAM,CAAC,MAAP,CAAc,EAAd,CAAkB,KAAlB,CAAZ,EAAsC,IAAtC,CAA2C,EAA3C,IACF,sBADF,CAC0B,CACzB,YAAA,CACA,CAED,WAAA,CACA,CAAC,MAAO,GAAP,CAAY;EAEb,YAAA,CACA,CACD,CAED,IAAAC,cAAc,CAAGD,iBAAe,GAAK,MAAM,CAAC,MAAZ,CAAqB,SAAU,MAAV,CAAkB,MAAlB,CAA0B,CAC9E,IAAI,IAAJ,CACA,IAAI,EAAE,CAAGD,UAAQ,CAAC,MAAD,CAAjB,CACA,IAAI,OAAJ,CAEA,IAAK,IAAI,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,SAAS,CAAC,MAA9B,CAAsC,CAAC,EAAvC,CAA2C,CAC1C,IAAI,CAAG,MAAM,CAAC,SAAS,CAAC,CAAD,CAAV,CAAb,CAEA,IAAK,IAAI,GAAT,IAAgB,IAAhB,CAAsB,CACrB,GAAIF,gBAAc,CAAC,IAAf,CAAoB,IAApB,CAA0B,GAA1B,CAAJ,CAAoC,CACnC,EAAE,CAAC,GAAD,CAAF,CAAU,IAAI,CAAC,GAAD,CAAd,CACA,CACD,CAED,GAAInF,uBAAJ,CAA2B,CAC1B,OAAO,CAAGA,uBAAqB,CAAC,IAAD,CAA/B,CACA,IAAK,IAAI,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,OAAO,CAAC,MAA5B,CAAoC,CAAC,EAArC,CAAyC,CACxC,GAAIoF,kBAAgB,CAAC,IAAjB,CAAsB,IAAtB,CAA4B,OAAO,CAAC,CAAD,CAAnC,CAAJ,CAA6C,CAC5C,EAAE,CAAC,OAAO,CAAC,CAAD,CAAR,CAAF,CAAiB,IAAI,CAAC,OAAO,CAAC,CAAD,CAAR,CAArB,CACA,CACD,CACD,CACD,CAED,OAAO,EAAP,CACA,CAzBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EChEA,SAASI,aAAW,CAAC,GAAG,EAAE,GAAG,EAAE;EAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;EACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;;EAE9B,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;;EAE1D,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;;EAE1B,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;EAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;EACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAChD,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC9B,KAAK;EACL,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC5B,GAAG;;EAEH,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;EACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;EACnC,GAAG,MAAM;EACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;EACpD,GAAG;EACH,CAAC;;;;;;;;;;;;;;;;;;;ECjBD,IAAMC,KAAK,GAAG,YAAd;;EAEA,SAASC,QAAT,OAAoC;EAAA,MAAlBC,IAAkB,QAAlBA,IAAkB;EAAA,MAAZ1D,QAAY,QAAZA,QAAY;EAAA,MAC1BqB,KAD0B,GAChBrB,QADgB,CAC1BqB,KAD0B;EAGlC,SACEjE;EAAK,IAAA,SAAS,yBAAkBsG,IAAI,GAAG,YAAH,GAAkB,EAAxC;EAAd,KACEtG;EAAK,IAAA,SAAS,EAAC;EAAf,KAEIiE,KAAK,IAAIA,KAAK,CAACsC,SAAf,IACAvG,6BAAC,IAAD;EAAM,IAAA,EAAE,EAAEiE,KAAK,CAACsC,SAAhB;EAA2B,IAAA,SAAS,EAAC;EAArC,sBAHJ,EAQEvG;EAAG,IAAA,MAAM,EAAC,QAAV;EAAmB,IAAA,GAAG,EAAC,qBAAvB;EAA6C,IAAA,SAAS,EAAC,cAAvD;EAAsE,IAAA,IAAI,EAAC;EAA3E,KACEA;EAAK,IAAA,SAAS,EAAC;EAAf,KACEA;EAAK,IAAA,SAAS,YAAKoG,KAAL;EAAd,IADF,CADF,EAIEpG;EAAK,IAAA,SAAS,EAAC;EAAf,sCAJF,CARF,EAeG,CAACsG,IAAD,IACCtG,6BAAC,IAAD;EAAM,IAAA,SAAS,EAAC,wCAAhB;EAAyD,IAAA,EAAE,EAAE;EAC3D6C,MAAAA,QAAQ,EAAE,GADiD;EAE3DoB,MAAAA,KAAK,EAAE;EAAEsC,QAAAA,SAAS,EAAE3D,QAAQ,CAACC;EAAtB;EAFoD;EAA7D,kBAhBJ,CADF,EAyBE7C;EAAK,IAAA,SAAS,EAAC;EAAf,KACEA;EAAM,IAAA,SAAS,EAAC;EAAhB,gCADF,EAIEA,6BAAC,QAAD;EACE,IAAA,KAAK,EAAC,SADR;EAEE,IAAA,IAAI,EAAEwG,IAFR;EAGE,IAAA,KAAK,EAAC;EAHR,IAJF,CAzBF,CADF;EAuCD;;AAEDH,UAAM,CAACI,SAAP,GAAmB;EACfH,EAAAA,IAAI,EAAErG,SAAS,CAACyG,IAAV,CAAeC,UADN;EAEf/D,EAAAA,QAAQ,EAAE3C,SAAS,CAAC2G,MAAV,CAAiBD;EAFZ,CAAnB;AAKAN,UAAM,CAACQ,YAAP,GAAsB;EAClBP,EAAAA,IAAI,EAAE;EADY,CAAtB;AAIA,iBAAeQ,UAAU,CAACT,QAAD,CAAzB;;;EC/DA;;;;;;;;;;EAUA,IAAI,gBAAgB,GAAG,GAAG,CAAC;;;EAG3B,IAAI,cAAc,GAAG,2BAA2B,CAAC;;;EAGjD,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;;;EAGxC,IAAI,OAAO,GAAG,oBAAoB;MAC9B,QAAQ,GAAG,gBAAgB;MAC3B,OAAO,GAAG,kBAAkB;MAC5B,OAAO,GAAG,eAAe;MACzB,QAAQ,GAAG,gBAAgB;MAC3B,OAAO,GAAG,mBAAmB;MAC7B,MAAM,GAAG,4BAA4B;MACrC,MAAM,GAAG,cAAc;MACvB,SAAS,GAAG,iBAAiB;MAC7B,SAAS,GAAG,iBAAiB;MAC7B,UAAU,GAAG,kBAAkB;MAC/B,SAAS,GAAG,iBAAiB;MAC7B,MAAM,GAAG,cAAc;MACvB,SAAS,GAAG,iBAAiB;MAC7B,SAAS,GAAG,iBAAiB;MAC7B,UAAU,GAAG,kBAAkB,CAAC;;EAEpC,IAAI,cAAc,GAAG,sBAAsB;MACvC,WAAW,GAAG,mBAAmB;MACjC,UAAU,GAAG,uBAAuB;MACpC,UAAU,GAAG,uBAAuB;MACpC,OAAO,GAAG,oBAAoB;MAC9B,QAAQ,GAAG,qBAAqB;MAChC,QAAQ,GAAG,qBAAqB;MAChC,QAAQ,GAAG,qBAAqB;MAChC,eAAe,GAAG,4BAA4B;MAC9C,SAAS,GAAG,sBAAsB;MAClC,SAAS,GAAG,sBAAsB,CAAC;;;;;;EAMvC,IAAI,YAAY,GAAG,qBAAqB,CAAC;;;EAGzC,IAAI,OAAO,GAAG,MAAM,CAAC;;;EAGrB,IAAI,YAAY,GAAG,6BAA6B,CAAC;;;EAGjD,IAAI,QAAQ,GAAG,kBAAkB,CAAC;;;EAGlC,IAAI,aAAa,GAAG,EAAE,CAAC;EACvB,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;EAChD,aAAa,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC;EAC1D,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;EAC/C,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC;EACrD,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;EAChD,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;EAC/C,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;EACnD,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;EAChD,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;EACnD,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC;EACxD,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;EAC3D,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;EAChD,aAAa,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;;;EAGlC,IAAI,UAAU,GAAG,OAAOU,cAAM,IAAI,QAAQ,IAAIA,cAAM,IAAIA,cAAM,CAAC,MAAM,KAAK,MAAM,IAAIA,cAAM,CAAC;;;EAG3F,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;;;EAGjF,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;;;EAG/D,IAAI,WAAW,GAAG,AAA8B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;;;EAGxF,IAAI,UAAU,GAAG,WAAW,IAAI,QAAa,IAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;;;EAGlG,IAAI,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,WAAW,CAAC;;;;;;;;;;EAUrE,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;;IAE9B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC;GACZ;;;;;;;;;;EAUD,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;;IAE/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;GACZ;;;;;;;;;;;EAWD,SAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;;IAEtC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE;QAClD,MAAM;OACP;KACF;IACD,OAAO,KAAK,CAAC;GACd;;;;;;;;;;EAUD,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,MAAM,CAAC,MAAM;QACtB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;IAE1B,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KACvC;IACD,OAAO,KAAK,CAAC;GACd;;;;;;;;;;;;;;EAcD,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;IAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;;IAEtC,IAAI,SAAS,IAAI,MAAM,EAAE;MACvB,WAAW,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;KAC9B;IACD,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACjE;IACD,OAAO,WAAW,CAAC;GACpB;;;;;;;;;;;EAWD,SAAS,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEtB,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE;MAClB,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;KACjC;IACD,OAAO,MAAM,CAAC;GACf;;;;;;;;;;EAUD,SAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAC7B,OAAO,MAAM,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;GACjD;;;;;;;;;EASD,SAAS,YAAY,CAAC,KAAK,EAAE;;;IAG3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,QAAQ,IAAI,UAAU,EAAE;MACxD,IAAI;QACF,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;OACzB,CAAC,OAAO,CAAC,EAAE,EAAE;KACf;IACD,OAAO,MAAM,CAAC;GACf;;;;;;;;;EASD,SAAS,UAAU,CAAC,GAAG,EAAE;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;IAE7B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;MAC/B,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;GACf;;;;;;;;;;EAUD,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;IAChC,OAAO,SAAS,GAAG,EAAE;MACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7B,CAAC;GACH;;;;;;;;;EASD,SAAS,UAAU,CAAC,GAAG,EAAE;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;IAE7B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;MAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;KACzB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;GACf;;;EAGD,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS;MAC5B,SAAS,GAAG,QAAQ,CAAC,SAAS;MAC9B,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;;;EAGnC,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;;;EAG5C,IAAI,UAAU,IAAI,WAAW;IAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACzF,OAAO,GAAG,IAAI,gBAAgB,GAAG,GAAG,IAAI,EAAE,CAAC;GAC5C,EAAE,CAAC,CAAC;;;EAGL,IAAI,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;;;EAGtC,IAAI,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;;;;;;;EAOhD,IAAI,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;;;EAG1C,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG;IACzB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;KAC9D,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC,GAAG,GAAG;GAClF,CAAC;;;EAGF,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;MAChD,MAAM,GAAG,IAAI,CAAC,MAAM;MACpB,UAAU,GAAG,IAAI,CAAC,UAAU;MAC5B,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;MACrD,YAAY,GAAG,MAAM,CAAC,MAAM;MAC5B,oBAAoB,GAAG,WAAW,CAAC,oBAAoB;MACvD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;;;EAG/B,IAAI,gBAAgB,GAAG,MAAM,CAAC,qBAAqB;MAC/C,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS;MACrD,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;;EAG9C,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;MACtC,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;MAC5B,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;MACpC,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;MAC5B,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;MACpC,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;;;EAG/C,IAAI,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC;MACvC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;MAC7B,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;MACrC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;MAC7B,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;;;EAG1C,IAAI,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS;MACnD,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;;;;;;;;;EASlE,SAAS,IAAI,CAAC,OAAO,EAAE;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;MAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9B;GACF;;;;;;;;;EASD,SAAS,SAAS,GAAG;IACnB,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;GACxD;;;;;;;;;;;;EAYD,SAAS,UAAU,CAAC,GAAG,EAAE;IACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;GACnD;;;;;;;;;;;EAWD,SAAS,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzB,IAAI,YAAY,EAAE;MAChB,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;MACvB,OAAO,MAAM,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;KACvD;IACD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;GAC/D;;;;;;;;;;;EAWD,SAAS,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzB,OAAO,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;GAChF;;;;;;;;;;;;EAYD,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;IAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3E,OAAO,IAAI,CAAC;GACb;;;EAGD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;EACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;EACtC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;EAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;EAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;;;;;;;;;EAS7B,SAAS,SAAS,CAAC,OAAO,EAAE;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;MAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9B;GACF;;;;;;;;;EASD,SAAS,cAAc,GAAG;IACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;GACpB;;;;;;;;;;;EAWD,SAAS,eAAe,CAAC,GAAG,EAAE;IAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;QACpB,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;IAEpC,IAAI,KAAK,GAAG,CAAC,EAAE;MACb,OAAO,KAAK,CAAC;KACd;IACD,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,SAAS,EAAE;MACtB,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;KAC7B;IACD,OAAO,IAAI,CAAC;GACb;;;;;;;;;;;EAWD,SAAS,YAAY,CAAC,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;QACpB,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;IAEpC,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;GAC/C;;;;;;;;;;;EAWD,SAAS,YAAY,CAAC,GAAG,EAAE;IACzB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;GAC9C;;;;;;;;;;;;EAYD,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;IAChC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;QACpB,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;IAEpC,IAAI,KAAK,GAAG,CAAC,EAAE;MACb,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM;MACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;KACxB;IACD,OAAO,IAAI,CAAC;GACb;;;EAGD,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;EAC3C,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;EAChD,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;EACvC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;EACvC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;;;;;;;;;EASvC,SAAS,QAAQ,CAAC,OAAO,EAAE;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;MAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9B;GACF;;;;;;;;;EASD,SAAS,aAAa,GAAG;IACvB,IAAI,CAAC,QAAQ,GAAG;MACd,MAAM,EAAE,IAAI,IAAI;MAChB,KAAK,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC;MAC7B,QAAQ,EAAE,IAAI,IAAI;KACnB,CAAC;GACH;;;;;;;;;;;EAWD,SAAS,cAAc,CAAC,GAAG,EAAE;IAC3B,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;GAC7C;;;;;;;;;;;EAWD,SAAS,WAAW,CAAC,GAAG,EAAE;IACxB,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GACvC;;;;;;;;;;;EAWD,SAAS,WAAW,CAAC,GAAG,EAAE;IACxB,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GACvC;;;;;;;;;;;;EAYD,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;IAC/B,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;GACb;;;EAGD,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;EACzC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;EAC9C,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;EACrC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;EACrC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;;;;;;;;;EASrC,SAAS,KAAK,CAAC,OAAO,EAAE;IACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;GACxC;;;;;;;;;EASD,SAAS,UAAU,GAAG;IACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC;GAC/B;;;;;;;;;;;EAWD,SAAS,WAAW,CAAC,GAAG,EAAE;IACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;GACrC;;;;;;;;;;;EAWD,SAAS,QAAQ,CAAC,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAC/B;;;;;;;;;;;EAWD,SAAS,QAAQ,CAAC,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAC/B;;;;;;;;;;;;EAYD,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;IAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC1B,IAAI,KAAK,YAAY,SAAS,EAAE;MAC9B,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;MAC3B,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,EAAE;QACjD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;OACb;MACD,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC7C;IACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;GACb;;;EAGD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;EACnC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;EACxC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;EAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;EAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;;;;;;;;;;EAU/B,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;;;IAGvC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;QAC9C,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;QAC/B,EAAE,CAAC;;IAEP,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM;QACtB,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;;IAE3B,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;MACrB,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;UAC7C,EAAE,WAAW,KAAK,GAAG,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;QAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAClB;KACF;IACD,OAAO,MAAM,CAAC;GACf;;;;;;;;;;;;EAYD,SAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;IACvC,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SACzD,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE;MAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACrB;GACF;;;;;;;;;;EAUD,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;IAChC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,OAAO,MAAM,EAAE,EAAE;MACf,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAC7B,OAAO,MAAM,CAAC;OACf;KACF;IACD,OAAO,CAAC,CAAC,CAAC;GACX;;;;;;;;;;;EAWD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;IAClC,OAAO,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;GAC3D;;;;;;;;;;;;;;;;EAgBD,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;IACxE,IAAI,MAAM,CAAC;IACX,IAAI,UAAU,EAAE;MACd,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;KAC7E;IACD,IAAI,MAAM,KAAK,SAAS,EAAE;MACxB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;MACpB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,KAAK,EAAE;MACT,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;MAC/B,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;OACjC;KACF,MAAM;MACL,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;UACnB,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;;MAE7C,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;OACnC;MACD,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE;QAC7D,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;UACvB,OAAO,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;SAC5B;QACD,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;UACX,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;SACtD;OACF,MAAM;QACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;UACvB,OAAO,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;SAC5B;QACD,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;OACxD;KACF;;IAED,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IAC7B,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,OAAO,EAAE;MACX,OAAO,OAAO,CAAC;KAChB;IACD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;IAEzB,IAAI,CAAC,KAAK,EAAE;MACV,IAAI,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KACtD;IACD,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,EAAE;MAChD,IAAI,KAAK,EAAE;QACT,GAAG,GAAG,QAAQ,CAAC;QACf,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;OACvB;;MAED,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAC9F,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;GACf;;;;;;;;;;EAUD,SAAS,UAAU,CAAC,KAAK,EAAE;IACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;GACnD;;;;;;;;;;;;;EAaD,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;IACrD,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;GAC1E;;;;;;;;;EASD,SAAS,UAAU,CAAC,KAAK,EAAE;IACzB,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;GACnC;;;;;;;;;;EAUD,SAAS,YAAY,CAAC,KAAK,EAAE;IAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;MACvC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,YAAY,CAAC;IACrF,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;GACtC;;;;;;;;;EASD,SAAS,QAAQ,CAAC,MAAM,EAAE;IACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;MACxB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;KAC3B;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;MAC9B,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,EAAE;QAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAClB;KACF;IACD,OAAO,MAAM,CAAC;GACf;;;;;;;;;;EAUD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;IACnC,IAAI,MAAM,EAAE;MACV,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;KACvB;IACD,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC;GACf;;;;;;;;;EASD,SAAS,gBAAgB,CAAC,WAAW,EAAE;IACrC,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC;GACf;;;;;;;;;;EAUD,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;IACvC,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1E,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;GACnF;;;;;;;;;;;EAWD,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IACxC,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACxE,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;GAC7D;;;;;;;;;EASD,SAAS,WAAW,CAAC,MAAM,EAAE;IAC3B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,OAAO,MAAM,CAAC;GACf;;;;;;;;;;;EAWD,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IACxC,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACxE,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;GAC7D;;;;;;;;;EASD,SAAS,WAAW,CAAC,MAAM,EAAE;IAC3B,OAAO,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;GAChE;;;;;;;;;;EAUD,SAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE;IAC3C,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC9E,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;GACrF;;;;;;;;;;EAUD,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;IAE3B,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9B;IACD,OAAO,KAAK,CAAC;GACd;;;;;;;;;;;;EAYD,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;IACrD,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;;IAExB,IAAI,KAAK,GAAG,CAAC,CAAC;QACV,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;IAE1B,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;;MAEvB,IAAI,QAAQ,GAAG,UAAU;UACrB,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;UACzD,SAAS,CAAC;;MAEd,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;KAC3E;IACD,OAAO,MAAM,CAAC;GACf;;;;;;;;;;EAUD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;IACnC,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;GACvD;;;;;;;;;EASD,SAAS,UAAU,CAAC,MAAM,EAAE;IAC1B,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;GACjD;;;;;;;;;;EAUD,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;IAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IACxB,OAAO,SAAS,CAAC,GAAG,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC;GACd;;;;;;;;;;EAUD,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;IAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;GAChD;;;;;;;;;EASD,IAAI,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;;;;;;;;;EASlF,IAAI,MAAM,GAAG,UAAU,CAAC;;;;EAIxB,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW;OACnE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;OACjC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC;OACnD,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;OACjC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE;IAClD,MAAM,GAAG,SAAS,KAAK,EAAE;MACvB,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;UACnC,IAAI,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS;UAC1D,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;;MAEnD,IAAI,UAAU,EAAE;QACd,QAAQ,UAAU;UAChB,KAAK,kBAAkB,EAAE,OAAO,WAAW,CAAC;UAC5C,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;UAClC,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;UAC1C,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;UAClC,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;SAC3C;OACF;MACD,OAAO,MAAM,CAAC;KACf,CAAC;GACH;;;;;;;;;EASD,SAAS,cAAc,CAAC,KAAK,EAAE;IAC7B,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;QACrB,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;;IAGvC,IAAI,MAAM,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;MAChF,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MAC3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;KAC5B;IACD,OAAO,MAAM,CAAC;GACf;;;;;;;;;EASD,SAAS,eAAe,CAAC,MAAM,EAAE;IAC/B,OAAO,CAAC,OAAO,MAAM,CAAC,WAAW,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACnE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,EAAE,CAAC;GACR;;;;;;;;;;;;;;;EAeD,SAAS,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;IACtD,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9B,QAAQ,GAAG;MACT,KAAK,cAAc;QACjB,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;;MAElC,KAAK,OAAO,CAAC;MACb,KAAK,OAAO;QACV,OAAO,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;;MAE3B,KAAK,WAAW;QACd,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;MAEvC,KAAK,UAAU,CAAC,CAAC,KAAK,UAAU,CAAC;MACjC,KAAK,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC;MAC3C,KAAK,QAAQ,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,KAAK,SAAS;QACjE,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;MAEzC,KAAK,MAAM;QACT,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;;MAE7C,KAAK,SAAS,CAAC;MACf,KAAK,SAAS;QACZ,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;;MAE1B,KAAK,SAAS;QACZ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;;MAE7B,KAAK,MAAM;QACT,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;;MAE7C,KAAK,SAAS;QACZ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;KAC9B;GACF;;;;;;;;;;EAUD,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;IAC9B,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,gBAAgB,GAAG,MAAM,CAAC;IACpD,OAAO,CAAC,CAAC,MAAM;OACZ,OAAO,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACjD,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC;GACpD;;;;;;;;;EASD,SAAS,SAAS,CAAC,KAAK,EAAE;IACxB,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;IACxB,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS;SAChF,KAAK,KAAK,WAAW;SACrB,KAAK,KAAK,IAAI,CAAC,CAAC;GACtB;;;;;;;;;EASD,SAAS,QAAQ,CAAC,IAAI,EAAE;IACtB,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC;GAC7C;;;;;;;;;EASD,SAAS,WAAW,CAAC,KAAK,EAAE;IAC1B,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW;QACjC,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;;IAEzE,OAAO,KAAK,KAAK,KAAK,CAAC;GACxB;;;;;;;;;EASD,SAAS,QAAQ,CAAC,IAAI,EAAE;IACtB,IAAI,IAAI,IAAI,IAAI,EAAE;MAChB,IAAI;QACF,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAChC,CAAC,OAAO,CAAC,EAAE,EAAE;MACd,IAAI;QACF,QAAQ,IAAI,GAAG,EAAE,EAAE;OACpB,CAAC,OAAO,CAAC,EAAE,EAAE;KACf;IACD,OAAO,EAAE,CAAC;GACX;;;;;;;;;;;;;;;;;;;;EAoBD,SAAS,SAAS,CAAC,KAAK,EAAE;IACxB,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;GACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCD,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;IACxB,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;GAChE;;;;;;;;;;;;;;;;;;;;EAoBD,SAAS,WAAW,CAAC,KAAK,EAAE;;IAE1B,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;OACpE,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC;GAC1F;;;;;;;;;;;;;;;;;;;;;;;;;EAyBD,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B5B,SAAS,WAAW,CAAC,KAAK,EAAE;IAC1B,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;GACtE;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BD,SAAS,iBAAiB,CAAC,KAAK,EAAE;IAChC,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;GAClD;;;;;;;;;;;;;;;;;;;EAmBD,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;;;;;;;;;;;;;;;;;;;EAmB3C,SAAS,UAAU,CAAC,KAAK,EAAE;;;IAGzB,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5D,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;GACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BD,SAAS,QAAQ,CAAC,KAAK,EAAE;IACvB,OAAO,OAAO,KAAK,IAAI,QAAQ;MAC7B,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;GAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BD,SAAS,QAAQ,CAAC,KAAK,EAAE;IACvB,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;IACxB,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;GAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BD,SAAS,YAAY,CAAC,KAAK,EAAE;IAC3B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;GAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BD,SAAS,IAAI,CAAC,MAAM,EAAE;IACpB,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;GACvE;;;;;;;;;;;;;;;;;;;;EAoBD,SAAS,SAAS,GAAG;IACnB,OAAO,EAAE,CAAC;GACX;;;;;;;;;;;;;;;EAeD,SAAS,SAAS,GAAG;IACnB,OAAO,KAAK,CAAC;GACd;;EAED,cAAc,GAAG,SAAS,CAAC;;;EC9sD3B;EACA;;EACA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAC/C,KAAD,EAAQgD,QAAR,EAAqB;EACzC;EACA;EACA;EACA,MAAMC,uBAAuB,GAAGjD,KAAK,CAACkD,OAAN,CAAcC,QAA9C;EACA,MAAMC,sBAAsB,GAAGC,kBAAS,CAACL,QAAQ,CAACM,OAAV,CAAxC;EAEAF,EAAAA,sBAAsB,CAACG,OAAvB,CAA+B,UAAAC,KAAK,EAAI;EACpCA,IAAAA,KAAK,CAACC,UAAN,CAAiBF,OAAjB,CAAyB,UAAAG,IAAI,EAAI;EAAA,UACrBC,qBADqB,GACKD,IADL,CACrBC,qBADqB;EAE7B,UAAMC,OAAO,2BAAoBD,qBAApB,CAAb;EACA,UAAME,iBAAiB,GAAGZ,uBAAuB,CAACW,OAAD,CAAjD;EAEA,UAAIE,oBAAoB,GAAG,CAA3B;;EACA,UAAID,iBAAJ,EAAuB;EACnBC,QAAAA,oBAAoB,GAAGD,iBAAiB,CAACE,eAAzC;EACH;;EAEDL,MAAAA,IAAI,CAACI,oBAAL,GAA4BA,oBAA5B;EACH,KAXD;EAYH,GAbD;EAeA,SAAO;EACHR,IAAAA,OAAO,EAAEF;EADN,GAAP;EAGH,CAzBD;;EA2BA,IAAMY,qBAAqB,GAAGC,OAAO,CACjClB,eADiC,EAEjC,IAFiC,CAAP,CAG5BmB,YAH4B,CAA9B;;EC9BA,IAAMnB,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B,MAAMmE,iBAAiB,GAAGnE,KAAK,CAACoE,OAAN,CAAcC,gBAAd,CAA+BC,MAA/B,CAAsC,UAAAC,MAAM;EAAA,WAAIA,MAAM,CAAC5C,IAAP,KAAgBlD,MAAI,CAAC2F,OAAL,CAAaI,YAAb,CAA0BC,QAA9C;EAAA,GAA5C,EAAoGC,GAApG,CAAwG,UAAAH,MAAM;EAAA,WAAIA,MAAM,CAACI,EAAX;EAAA,GAA9G,CAA1B;EACA,MAAMN,gBAAgB,GAAG,EAAzB;EACAF,EAAAA,iBAAiB,CAACZ,OAAlB,CAA0B,UAAAoB,EAAE,EAAI;EAC5B,QAAMJ,MAAM,GAAG9F,MAAI,CAAC2F,OAAL,CAAaC,gBAAb,CAA8BO,IAA9B,CAAmC,UAAAL,MAAM;EAAA,aAAIA,MAAM,CAACI,EAAP,KAAcA,EAAlB;EAAA,KAAzC,CAAf;;EACA,QAAIJ,MAAJ,EAAY;EACVF,MAAAA,gBAAgB,CAACM,EAAD,CAAhB,GAAuBJ,MAAM,CAACM,SAA9B;EACD;EACJ,GALD,EAH6B;;EAW7B,MAAIC,aAAJ;;EACA,MAAIX,iBAAiB,IAAIA,iBAAiB,CAACY,MAA3C,EAAmD;EAC/CD,IAAAA,aAAa,GAAGX,iBAAiB,CAAC,CAAD,CAAjC;EACH;;EAED,SAAO;EACHa,IAAAA,MAAM,EAAEhF,KAAK,CAACiF,SAAN,CAAgBD,MADrB;EAEHE,IAAAA,mBAAmB,EAAElF,KAAK,CAACiF,SAAN,CAAgBC,mBAFlC;EAGHb,IAAAA,gBAAgB,EAAhBA,gBAHG;EAIHS,IAAAA,aAAa,EAAbA;EAJG,GAAP;EAMH,CAtBD;;EAwBA,IAAMK,sBAAsB,GAAGlB,OAAO,CAClClB,iBADkC,EAElC,IAFkC,CAAP,CAG7BqC,aAH6B,CAA/B;;;;;ACjBAtH,oBAAgB,CAACG,QAAjB,CAA0BD,eAA1B,GAA4CA,iBAA5C;;MAEMqH;;;;;;;;;;;;;;;;;;mFACI;EACNC,MAAAA,YAAY,EAAE;EADR;;6FA+CU,gBAA2B;EAAA,UAAzBC,aAAyB,QAAzBA,aAAyB;EAAA,UAAVC,IAAU,QAAVA,IAAU;EAC3C;EACA;EAEA;EACA;EACA;EACAC,MAAAA,OAAO,CAACC,IAAR,CAAaF,IAAb;;EACA,UAAMG,mBAAmB,GAAG,MAAK3F,KAAL,CAAWsF,YAAX,CAAwBM,KAAxB,CAA8B,CAA9B,CAA5B;;EAEA,UAAMC,UAAU,GAAG,MAAKC,cAAL,CAAoB,MAAKC,KAAL,CAAWzC,OAA/B,EAAwCkC,IAAI,CAACQ,gBAA7C,EAA+DR,IAAI,CAAC7B,qBAApE,CAAnB;;EAEA8B,MAAAA,OAAO,CAACC,IAAR,CAAaG,UAAb;EAEAF,MAAAA,mBAAmB,CAACJ,aAAD,CAAnB,GAAqC3D,MAAM,CAACxG,MAAP,CAAc,EAAd,EAAkByK,UAAlB,CAArC;;EAEA,YAAKI,QAAL,CAAc;EACZX,QAAAA,YAAY,EAAEK;EADF,OAAd;EAGD;;;;;;;+CA1DwBrC,YAAS;EAChC,UAAM4C,WAAW,GAAG,EAApB;EACA5C,MAAAA,UAAO,CAACC,OAAR,CAAgB,UAACC,KAAD,EAAW;EACzBA,QAAAA,KAAK,CAAC0C,WAAN,CAAkB3C,OAAlB,CAA0B,UAAA4C,IAAI,EAAI;EAChC,cAAIA,IAAI,CAACC,MAAL,CAAYrB,MAAhB,EAAwB;EACtBmB,YAAAA,WAAW,CAACG,IAAZ,CAAiBF,IAAjB;EACD;EACF,SAJD;EAKD,OAND;EAQA,aAAOD,WAAP;EACD;;;qCAEc5C,YAAS0C,kBAAkBrC,uBAAuB;EAC/D,UAAMH,KAAK,GAAGF,UAAO,CAACsB,IAAR,CAAa,UAAApB,KAAK,EAAI;EAClC,eAAOA,KAAK,CAACwC,gBAAN,KAA2BA,gBAAlC;EACD,OAFa,CAAd;;EAIA,UAAI,CAACxC,KAAL,EAAY;EACV;EACD;;EAED,aAAOA,KAAK,CAAC0C,WAAN,CAAkBtB,IAAlB,CAAuB,UAAAiB,UAAU,EAAI;EAC1C,eAAOA,UAAU,CAAClC,qBAAX,KAAqCA,qBAA5C;EACD,OAFM,CAAP;EAGD;;;0CAEmB;EAClB;EACA;EAEA;EACA,UAAMuC,WAAW,GAAG,KAAKI,wBAAL,CAA8B,KAAKP,KAAL,CAAWzC,OAAzC,CAApB;EAEA,WAAK2C,QAAL,CAAc;EACZX,QAAAA,YAAY,EAAEY;EADF,OAAd;EAGD;;;+BAuBQ;EACP,aACEnK;EAAK,QAAA,SAAS,EAAC;EAAf,SACEA,6BAAC,sBAAD;EACE,QAAA,OAAO,EAAE,KAAKgK,KAAL,CAAWzC,OADtB;EAEE,QAAA,YAAY,EAAE,KAAKtD,KAAL,CAAWsF,YAF3B;EAGE,QAAA,eAAe,EAAE,KAAKiB;EAHxB,QADF,CADF;EASD;;;6CAEsB;EACrB;EACA;EAEA;EACA9H,MAAAA,MAAI,CAAC+H,MAAL,CAAYC,uBAAZ,CAAoCC,OAApC,GALqB;EAQrB;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACD;;;;IApGsB7J;;iBAAnBwI,yBAKe;EACjB/B,EAAAA,OAAO,EAAEtH,SAAS,CAAC2K,KAAV,CAAgBjE;EADR;;;;;MCZfkE;;;;;;;;;;;;;;;;;;mFAOM;EACJC,MAAAA,iBAAiB,EAAE;EADf;;kGAYe,YAAM;EAAA,UACjBvD,OADiB,GACL,MAAKyC,KADA,CACjBzC,OADiB;EAIzB;EACA;EACA;;EACA,aAAOA,OAAO,CAACoB,GAAR,CAAY,UAAClB,KAAD,EAAW;EAAA,YAClBwC,gBADkB,GACGxC,KADH,CAClBwC,gBADkB;EAG1B,YAAMvC,UAAU,GAAGD,KAAK,CAAC0C,WAAN,CAAkBxB,GAAlB,CAAsB,UAACmB,UAAD,EAAgB;EAAA,cAC7ClC,qBAD6C,GAC8CkC,UAD9C,CAC7ClC,qBAD6C;EAAA,cACtBmD,iBADsB,GAC8CjB,UAD9C,CACtBiB,iBADsB;EAAA,cACHC,YADG,GAC8ClB,UAD9C,CACHkB,YADG;EAAA,cACWC,cADX,GAC8CnB,UAD9C,CACWmB,cADX;EAAA,cAC2BC,cAD3B,GAC8CpB,UAD9C,CAC2BoB,cAD3B;EAErD,cAAMC,OAAO,GAAGrB,UAAU,CAACO,MAAX,CAAkB,CAAlB,EAAqBe,UAArB,EAAhB;EAEA,iBAAO;EACHD,YAAAA,OAAO,EAAPA,OADG;EAEHvD,YAAAA,qBAAqB,EAArBA,qBAFG;EAGHmD,YAAAA,iBAAiB,EAAjBA,iBAHG;EAIHC,YAAAA,YAAY,EAAZA,YAJG;EAKHC,YAAAA,cAAc,EAAdA,cALG;EAMHC,YAAAA,cAAc,EAAdA;EANG,WAAP;EAQH,SAZkB,CAAnB;EAcA,eAAO;EACHjB,UAAAA,gBAAgB,EAAhBA,gBADG;EAEHvC,UAAAA,UAAU,EAAVA;EAFG,SAAP;EAIH,OArBM,CAAP;EAsBH;;;;;;;0CArCmB;EAChB,UAAMoD,iBAAiB,GAAG,KAAKO,oBAAL,EAA1B;EAEA,WAAKnB,QAAL,CAAc;EACVY,QAAAA,iBAAiB,EAAjBA;EADU,OAAd;EAGH;;;+BAiCQ;EACL,UAAIQ,oBAAoB,GAAG,cAA3B;;EACA,UAAI,KAAKtB,KAAL,CAAWxE,eAAf,EAAgC;EAC5B8F,QAAAA,oBAAoB,IAAI,oBAAxB;EACH;;EAED,UAAI,KAAKtB,KAAL,CAAWvE,gBAAf,EAAiC;EAC7B6F,QAAAA,oBAAoB,IAAI,qBAAxB;EACH,OARI;;;EAWL,aACItL;EAAK,QAAA,SAAS,EAAC;EAAf,SACIA;EAAK,QAAA,SAAS,EAAE,KAAKgK,KAAL,CAAWxE,eAAX,GAA6B,wCAA7B,GAAwE;EAAxF,SACIxF,6BAAC,qBAAD;EAAuB,QAAA,OAAO,EAAE,KAAKiE,KAAL,CAAW6G;EAA3C,QADJ,CADJ,EAII9K;EAAK,QAAA,SAAS,EAAEsL;EAAhB,SACItL,6BAAC,UAAD;EAAY,QAAA,OAAO,EAAE,KAAKgK,KAAL,CAAWzC;EAAhC,QADJ,CAJJ,CADJ;EAaH;;;;IA1EuBzG;;iBAAtB+J,4BACiB;EACftD,EAAAA,OAAO,EAAEtH,SAAS,CAAC2K,KAAV,CAAgBjE,UADV;EAEfnB,EAAAA,eAAe,EAAEvF,SAAS,CAACyG,IAAV,CAAeC,UAFjB;EAGflB,EAAAA,gBAAgB,EAAExF,SAAS,CAACyG,IAAV,CAAeC;EAHlB;;ECJvB,IAAMK,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B,SAAO;EACHuB,IAAAA,eAAe,EAAEvB,KAAK,CAACyB,EAAN,CAASF,eADvB;EAEHC,IAAAA,gBAAgB,EAAExB,KAAK,CAACyB,EAAN,CAASD;EAFxB,GAAP;EAIH,CALD;;EAOA,IAAM8F,sBAAsB,GAAGrD,OAAO,CAClClB,iBADkC,EAElC,IAFkC,CAAP,CAG7B6D,aAH6B,CAA/B;;MCNQW,iBAAkB9I,MAAI,CAAC+I,KAAL,CAAWC,QAA7BF;;EAER,IAAMxE,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B,MAAM0H,YAAY,GAAG1H,KAAK,CAAC2H,KAAN,CAAYC,OAAZ,CAAoBhD,IAApB,CAAyB,UAAAiD,IAAI;EAAA,WAAIA,IAAI,CAACC,MAAL,KAAgB,IAApB;EAAA,GAA7B,CAArB;EAEA,SAAO;EACHF,IAAAA,OAAO,EAAE5H,KAAK,CAAC2H,KAAN,CAAYC,OADlB;EAEHG,IAAAA,aAAa,EAAEL,YAAY,IAAIA,YAAY,CAACM;EAFzC,GAAP;EAIH,CAPD;;EASA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ,EAAI;EACnC,SAAO;EACHX,IAAAA,aAAa,EAAE,uBAAAM,IAAI,EAAI;EACnBK,MAAAA,QAAQ,CAACX,cAAa,CAACM,IAAI,CAACG,OAAN,CAAd,CAAR;EACH;EAHE,GAAP;EAKH,CAND;;EAQA,IAAMG,uBAAuB,GAAGlE,OAAO,CACnClB,iBADmC,EAEnCkF,kBAFmC,CAAP,CAG9BG,cAH8B,CAAhC;;MCnBQC,cAAc5J,MAAI,CAAC+I,KAAL,CAAWC,QAAzBY;;EAER,IAAMtF,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B,SAAO;EACHsI,IAAAA,aAAa,EAAEtI,KAAK,CAACiF,SAAN,CAAgBD;EAD5B,GAAP;EAGH,CAJD;;EAMA,IAAMiD,oBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ,EAAI;EACnC,SAAO;EACH;EACAK,IAAAA,QAAQ,EAAE,kBAAAC,YAAY,EAAI;EACtB,UAAIvD,SAAS,GAAG,EAAhB;EACA,UAAMwD,IAAI,GAAGD,YAAY,CAACE,GAAb,GAAmB,CAAhC;EACA,UAAMC,OAAO,GAAGH,YAAY,CAACI,GAAb,GAAmB,CAAnC;EACA,UAAMC,YAAY,GAAGJ,IAAI,GAAGE,OAA5B;;EACA,WAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,YAApB,EAAkCC,CAAC,EAAnC,EAAuC;EACnC7D,QAAAA,SAAS,CAACoB,IAAV,CAAe;EACX0C,UAAAA,MAAM,YAAK,MAAMN,IAAX,MADK;EAEXO,UAAAA,KAAK,YAAK,MAAML,OAAX;EAFM,SAAf;EAIH;;EACD,UAAM3D,MAAM,GAAG;EACXC,QAAAA,SAAS,EAATA;EADW,OAAf;EAIAiD,MAAAA,QAAQ,CAACG,WAAS,CAACrD,MAAD,CAAV,CAAR;EACH;EAlBE,GAAP;EAoBH,CArBD;;EAuBA,IAAMiE,qBAAqB,GAAGhF,OAAO,CACjClB,iBADiC,EAEjCkF,oBAFiC,CAAP,CAG5BiB,YAH4B,CAA9B;;MC9BQC,4BAA4B1K,MAAI,CAAC+I,KAAL,CAAWC,QAAvC0B;EAGR;;EACA,SAASC,6BAAT,CAAuCpJ,KAAvC,EAA8C;EAAA,yBACYA,KAAK,CAACiF,SADlB;EAAA,MAClCoE,oBADkC,oBAClCA,oBADkC;EAAA,MACZnE,mBADY,oBACZA,mBADY;EAE1C,SAAOmE,oBAAoB,CAACnE,mBAAD,CAA3B;EACH;;EAED,IAAMnC,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA,MAAMsJ,0BAA0B,GAAGF,6BAA6B,CAACpJ,KAAD,CAAhE;EAEA,MAAIuJ,KAAK,GAAG;EACRC,IAAAA,QAAQ,EAAE,EADF;EAERC,IAAAA,mBAAmB,EAAE;EAFb,GAAZ;;EAIA,MAAIH,0BAA0B,IAAIA,0BAA0B,CAACC,KAA7D,EAAoE;EAChEA,IAAAA,KAAK,GAAGD,0BAA0B,CAACC,KAAnC;EACH;;EAED,MAAIG,IAAI,GAAG;EACPC,IAAAA,SAAS,EAAE,KADJ;EAEPC,IAAAA,aAAa,EAAE;EAFR,GAAX;;EAIA,MAAIN,0BAA0B,IAAIA,0BAA0B,CAACI,IAA7D,EAAmE;EAC/DA,IAAAA,IAAI,GAAGJ,0BAA0B,CAACI,IAAlC;EACH,GAvB4B;EA2B7B;EACA;;;EACA,SAAO;EACHG,IAAAA,uBAAuB,EAAEN,KADtB;EAEHO,IAAAA,sBAAsB,EAAEJ,IAFrB;EAGHxE,IAAAA,mBAAmB,EAAElF,KAAK,CAACiF,SAAN,CAAgBC;EAHlC,GAAP;EAKH,CAlCD;;EAoCA,IAAM+C,oBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ,EAAI;EACnC,SAAO;EACH6B,IAAAA,+BAA+B,EAAE,yCAACxE,aAAD,EAAgB7B,IAAhB,EAAyB;EACtDwE,MAAAA,QAAQ,CAACiB,yBAAuB,CAAC5D,aAAD,EAAgB7B,IAAhB,CAAxB,CAAR;EACH;EAHE,GAAP;EAKH,CAND;;EAQA,IAAMsG,UAAU,GAAG,SAAbA,UAAa,CAACC,cAAD,EAAiBC,iBAAjB,EAAoClH,QAApC,EAAiD;EAAA,MACxD6G,uBADwD,GACiBI,cADjB,CACxDJ,uBADwD;EAAA,MAC/BC,sBAD+B,GACiBG,cADjB,CAC/BH,sBAD+B;EAAA,MACP5E,mBADO,GACiB+E,cADjB,CACP/E,mBADO;EAGhE,SAAO;EACH0E,IAAAA,aAAa,EAAEE,sBAAsB,CAACF,aADnC;EAEHD,IAAAA,SAAS,EAAEG,sBAAsB,CAACH,SAF/B;EAGHQ,IAAAA,kBAAkB,EAAE,4BAAAR,SAAS,EAAI;EAC7B,UAAMD,IAAI,GAAGrG,kBAAS,CAACyG,sBAAD,CAAtB;EACAJ,MAAAA,IAAI,CAACC,SAAL,GAAiB,CAACD,IAAI,CAACC,SAAvB;EAEAO,MAAAA,iBAAiB,CAACH,+BAAlB,CAAkD7E,mBAAlD,EAAuE;EAAEwE,QAAAA,IAAI,EAAJA;EAAF,OAAvE;EACH,KARE;EASHU,IAAAA,kBAAkB,EAAE,4BAAAC,SAAS,EAAI;EAC7B,UAAMX,IAAI,GAAGrG,kBAAS,CAACyG,sBAAD,CAAtB;EACAJ,MAAAA,IAAI,CAACE,aAAL,GAAqBS,SAArB;EAEAH,MAAAA,iBAAiB,CAACH,+BAAlB,CAAkD7E,mBAAlD,EAAuE;EAAEwE,QAAAA,IAAI,EAAJA;EAAF,OAAvE;EACH,KAdE;EAeHY,IAAAA,iBAAiB,EAAE,6BAAM;EACrB,UAAMf,KAAK,GAAGlG,kBAAS,CAACwG,uBAAD,CAAvB;EACA,UAAMU,oBAAoB,GAAGhB,KAAK,CAACC,QAAN,CAAezE,MAAf,GAAwB,CAArD;EACAwE,MAAAA,KAAK,CAACE,mBAAN,GAA4B1K,IAAI,CAACyL,GAAL,CAASjB,KAAK,CAACE,mBAAN,GAA4B,CAArC,EAAwCc,oBAAxC,CAA5B;EAEAL,MAAAA,iBAAiB,CAACH,+BAAlB,CAAkD7E,mBAAlD,EAAuE;EAAEqE,QAAAA,KAAK,EAALA;EAAF,OAAvE;EACH,KArBE;EAsBHkB,IAAAA,iBAAiB,EAAE,6BAAM;EACrB,UAAMlB,KAAK,GAAGlG,kBAAS,CAACwG,uBAAD,CAAvB;EACAN,MAAAA,KAAK,CAACE,mBAAN,GAA4B1K,IAAI,CAACC,GAAL,CAASuK,KAAK,CAACE,mBAAN,GAA4B,CAArC,EAAwC,CAAxC,CAA5B;EAEAS,MAAAA,iBAAiB,CAACH,+BAAlB,CAAkD7E,mBAAlD,EAAuE;EAAEqE,QAAAA,KAAK,EAALA;EAAF,OAAvE;EACH,KA3BE;EA4BHmB,IAAAA,kBAAkB,EAAE,8BAAM;EACtB,UAAMnB,KAAK,GAAGlG,kBAAS,CAACwG,uBAAD,CAAvB;EACAN,MAAAA,KAAK,CAACE,mBAAN,GAA4B,CAA5B;EAEAS,MAAAA,iBAAiB,CAACH,+BAAlB,CAAkD7E,mBAAlD,EAAuE;EAAEqE,QAAAA,KAAK,EAALA;EAAF,OAAvE;EACH,KAjCE;EAkCHoB,IAAAA,gBAAgB,EAAE,4BAAM;EACpB,UAAMpB,KAAK,GAAGlG,kBAAS,CAACwG,uBAAD,CAAvB;EACAN,MAAAA,KAAK,CAACE,mBAAN,GAA4BF,KAAK,CAACC,QAAN,CAAezE,MAA3C;EAEAmF,MAAAA,iBAAiB,CAACH,+BAAlB,CAAkD7E,mBAAlD,EAAuE;EAAEqE,QAAAA,KAAK,EAALA;EAAF,OAAvE;EACH;EAvCE,GAAP;EAyCH,CA5CD;;EA8CA,IAAMqB,mBAAmB,GAAG3G,OAAO,CAC/BlB,iBAD+B,EAE/BkF,oBAF+B,EAG/B+B,UAH+B,CAAP,CAI1Ba,UAJ0B,CAA5B;;;;;EC/FA,IAAM1I,OAAK,GAAG,YAAd;;MAEM2I;;;;;;;;;;;;;;;;;;uGAa0B,UAACC,KAAD,EAAW;EACnC,YAAKhF,KAAL,CAAWiF,kBAAX,CAA8B,CAAC,CAACD,KAAhC;EACH;;;;;;;+BAEQ;EACL,UAAME,iBAAiB,GAAG,CAAC;EACvBF,QAAAA,KAAK,EAAE,SADgB;EAEvBG,QAAAA,OAAO,YAAK/I,OAAL,kBAFgB;EAGvBgJ,QAAAA,QAAQ,EAAE,EAHa;EAIvBC,QAAAA,SAAS,EAAE,EAJY;EAKvBC,QAAAA,WAAW,EAAE;EALU,OAAD,CAA1B;EAQA,UAAMC,gBAAgB,GAAG,KAAKvF,KAAL,CAAWxE,eAAX,GAA6B0J,iBAAiB,CAAC,CAAD,CAAjB,CAAqBF,KAAlD,GAA0D,IAAnF;EAEA,aAAQhP;EAAK,QAAA,SAAS,EAAC;EAAf,SACJA;EAAK,QAAA,SAAS,EAAC,uBAAf;EAAuC,QAAA,KAAK,EAAE;EAAEwP,UAAAA,OAAO,EAAE;EAAX;EAA9C,SACIxP,6BAAC,kBAAD;EAAoB,QAAA,OAAO,EAAEkP,iBAA7B;EAAgD,QAAA,KAAK,EAAEK,gBAAvD;EAAyE,QAAA,cAAc,EAAE,KAAKE;EAA9F,QADJ,CADI,EAIJzP,6BAAC,uBAAD,OAJI,EAKJA,6BAAC,qBAAD,OALI,EAOJA;EAAK,QAAA,KAAK,EAAE;EAAE0P,UAAAA,UAAU,EAAE,OAAd;EAAuBC,UAAAA,OAAO,EAAE;EAAhC;EAAZ,SACI3P,6BAAC,mBAAD,OADJ,CAPI,EAUJA;EAAK,QAAA,SAAS,EAAC;EAAf,QAVI,CAAR;EAeH;;;;IA3CoBc;;iBAAnBiO,yBACiB;EACfvJ,EAAAA,eAAe,EAAEvF,SAAS,CAACyG,IAAV,CAAeC,UADjB;EAEflB,EAAAA,gBAAgB,EAAExF,SAAS,CAACyG,IAAV,CAAeC,UAFlB;EAGfsI,EAAAA,kBAAkB,EAAEhP,SAAS,CAAC2P,IAHf;EAIfC,EAAAA,mBAAmB,EAAE5P,SAAS,CAAC2P;EAJhB;;iBADjBb,4BAQoB;EAClBvJ,EAAAA,eAAe,EAAE,KADC;EAElBC,EAAAA,gBAAgB,EAAE;EAFA;;ECnBnB,IAAMwJ,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAhL,KAAK;EAAA,SAAK;EACxC2B,IAAAA,IAAI,EAAE,uBADkC;EAExC3B,IAAAA,KAAK,EAALA;EAFwC,GAAL;EAAA,CAAhC;AAKP,EAAO,IAAM4L,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAA5L,KAAK;EAAA,SAAK;EACzC2B,IAAAA,IAAI,EAAE,wBADmC;EAEzC3B,IAAAA,KAAK,EAALA;EAFyC,GAAL;EAAA,CAAjC;;ECDP,IAAM+C,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B,SAAO;EACHuB,IAAAA,eAAe,EAAEvB,KAAK,CAACyB,EAAN,CAASF,eADvB;EAEHC,IAAAA,gBAAgB,EAAExB,KAAK,CAACyB,EAAN,CAASD;EAFxB,GAAP;EAIH,CALD;;EAQA,IAAMyG,oBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ,EAAI;EACnC,SAAO;EACH8C,IAAAA,kBAAkB,EAAE,+BAAAhL,KAAK,EAAI;EACzBkI,MAAAA,QAAQ,CAAC8C,kBAAkB,CAAChL,KAAD,CAAnB,CAAR;EACH,KAHE;EAIH4L,IAAAA,mBAAmB,EAAE,gCAAA5L,KAAK,EAAI;EAC1BkI,MAAAA,QAAQ,CAAC0D,mBAAmB,CAAC5L,KAAD,CAApB,CAAR;EACH;EANE,GAAP;EAQH,CATD;;EAWA,IAAM6L,mBAAmB,GAAG5H,OAAO,CAC/BlB,iBAD+B,EAE/BkF,oBAF+B,CAAP,CAG1B6C,UAH0B,CAA5B;;MCnBMgB;;;;;;;;;;;;;0CAOkB;EAAA;;EAChB;EACA;EACA;EACA;EACA,UAAMC,OAAO,GAAG;EACZC,QAAAA,gBAAgB,EAAE,0BAACC,UAAD,EAAaC,YAAb,EAA8B;EAC5C,UAAA,KAAI,CAACnG,KAAL,CAAWoG,uBAAX,CAAmCF,UAAnC,EAA+CC,YAA/C;EACH,SAHW;EAIZE,QAAAA,kBAAkB,EAAE,4BAACH,UAAD,EAAgB;EAChC,UAAA,KAAI,CAAClG,KAAL,CAAWsG,yBAAX,CAAqCJ,UAArC;EACH;EANW,OAAhB;EALgB,UAcRK,oBAdQ,GAciB7N,MAAI,CAAC8N,OAdtB,CAcRD,oBAdQ;EAehB,WAAKE,oBAAL,GAA4BF,oBAAoB,CAACG,WAArB,CAAiCV,OAAjC,CAA5B;EACA,WAAKS,oBAAL,CAA0BE,KAA1B;EACA,WAAKF,oBAAL,CAA0BG,UAA1B,CAAqC,KAAK5G,KAAL,CAAWzC,OAAhD;EACH;;;+BAEQ;EACL,aAAO,IAAP;EACH;;;6CAEsB;EACnB;EACA,WAAKkJ,oBAAL,CAA0BE,KAA1B;EACH;;;;IAlC6B7P;;iBAA5BiP,kCACiB;EACfxI,EAAAA,OAAO,EAAEtH,SAAS,CAAC2K,KAAV,CAAgBjE,UADV;EAEfyJ,EAAAA,uBAAuB,EAAEnQ,SAAS,CAAC2P,IAAV,CAAejJ,UAFzB;EAGf2J,EAAAA,yBAAyB,EAAErQ,SAAS,CAAC2P,IAAV,CAAejJ;EAH3B;;4BCDwCjE,MAAI,CAAC+I,KAAL,CAAWC;MAAlE0E,+CAAAA;MAAyBE,iDAAAA;;EAEjC,IAAMpE,oBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ,EAAI;EACnC,SAAO;EACHiE,IAAAA,uBAAuB,EAAE,iCAACF,UAAD,EAAaC,YAAb,EAA8B;EACnDhE,MAAAA,QAAQ,CAACiE,wBAAuB,CAACF,UAAD,EAAaC,YAAb,CAAxB,CAAR;EACH,KAHE;EAIHG,IAAAA,yBAAyB,EAAE,mCAAAJ,UAAU,EAAI;EACrC/D,MAAAA,QAAQ,CAACmE,0BAAyB,CAACJ,UAAD,CAA1B,CAAR;EACH;EANE,GAAP;EAQH,CATD;;EAWA,IAAMW,4BAA4B,GAAG3I,OAAO,CACxC,IADwC,EAExCgE,oBAFwC,CAAP,CAGnC6D,mBAHmC,CAArC;;MCbQe,oBAAoBpO,MAAI,CAAC8N,QAAzBM;;MAEFC;;;;;;;;;;;;;0CAKkB;EAAA,UACRxJ,UADQ,GACI,KAAKyC,KADT,CACRzC,OADQ;EAGhB,WAAKyJ,eAAL,GAAuBF,iBAAe,CAACJ,WAAhB,EAAvB;EACA,WAAKM,eAAL,CAAqBC,UAArB,CAAgC1J,UAAhC;EACH;;;+BAEQ;EACL,aAAO,IAAP;EACH;;;6CAEsB;EACnB;EACA,WAAKyJ,eAAL,CAAqBrG,OAArB;EACH;;;;IAnBkC7J;;iBAAjCiQ,uCACiB;EACfxJ,EAAAA,OAAO,EAAEtH,SAAS,CAAC2K;EADJ;;;;;MCOfsG,iBAAiBxO,MAAI,CAACyO,MAAtBD;EAER;;;;;;EAKA;;;;;;;;;;;;;;;;;;;;;AAsBAxO,QAAI,CAAC+H,MAAL,CAAY2G,WAAZ,GAA0B;EACtBC,EAAAA,IAAI,EAAE,MADgB;EAEtBC,EAAAA,KAAK,EAAE,MAFe;EAGtBC,EAAAA,MAAM,EAAE;EAHc,CAA1B;AAMA7O,QAAI,CAAC+H,MAAL,CAAY+G,eAAZ,GAA8B,IAA9B;EAEA;;;;;;;;;EAUA;;AACA9O,QAAI,CAAC+H,MAAL,CAAYC,uBAAZ,GAAsC,IAAI3I,kBAAgB,CAAC0P,YAArB,CAAkC,qBAAlC,EAAyD1P,kBAAgB,CAAC2I,uBAA1E,CAAtC;;EAGA,IAAMgH,gBAAgB,GAAG,IAAIhP,MAAI,CAACb,WAAL,CAAiB8P,gBAArB,EAAzB;AACA9P,eAAW,CAAC+P,QAAZ,CAAqBC,WAArB,CAAiCH,gBAAgB,CAACI,QAAjB,CAA0BC,IAA1B,CAA+BL,gBAA/B,CAAjC;AAEAR,gBAAY,CAACc,mBAAb,CAAiCN,gBAAjC;;MAEMO;;;;;;;;;;;;;+BAKO;EACL,aAAQjS,4DACJA,6BAACqG,QAAD;EAAQ,QAAA,IAAI,EAAE;EAAd,QADI,EAEJrG;EAAK,QAAA,SAAS,EAAC;EAAf,QAFI,EAKJA;EAAK,QAAA,EAAE,EAAC,QAAR;EAAiB,QAAA,SAAS,EAAC;EAA3B,SACIA,6BAAC,mBAAD,OADJ,EAEIA,6BAAC,4BAAD;EAA8B,QAAA,OAAO,EAAE,KAAKgK,KAAL,CAAWzC;EAAlD,QAFJ,EAGIvH,6BAAC8Q,wBAAD;EAAiB,QAAA,OAAO,EAAE,KAAK9G,KAAL,CAAWzC;EAArC,QAHJ,EAIIvH,6BAAC,sBAAD;EAAwB,QAAA,OAAO,EAAE,KAAKgK,KAAL,CAAWzC;EAA5C,QAJJ,CALI,CAAR;EAaH;;;;IAnBgBzG;;iBAAfmR,qBACiB;EACf1K,EAAAA,OAAO,EAAEtH,SAAS,CAAC2K;EADJ;;MClEfsH,sBAAsBxP,MAAI,CAACyO,MAA3Be;;MAEFC;;;;;;;;;;;;;;;;;;mFAOM;EACJ5K,MAAAA,OAAO,EAAE,IADL;EAEJ6K,MAAAA,KAAK,EAAE;EAFH;;;;;;;0CAKY;EAAA;;EAChB;EACA;EAFgB,wBAG0C,KAAKpI,KAH/C;EAAA,UAGRqI,iBAHQ,eAGRA,iBAHQ;EAAA,UAGWC,kBAHX,eAGWA,kBAHX;EAAA,UAG+BC,MAH/B,eAG+BA,MAH/B;EAIhB,UAAMC,OAAO,GAAG9P,MAAI,CAAC6E,OAAL,CAAakL,uBAAb,CAAqCF,MAArC,EAA6CF,iBAA7C,EAAgEC,kBAAhE,CAAhB,CAJgB;;EAOhBE,MAAAA,OAAO,CAACE,IAAR,CAAa,UAAAnL,UAAO,EAAI;EACpB,YAAMoL,cAAc,GAAGT,mBAAiB,CAAC3K,UAAD,CAAxC;;EAEA,QAAA,MAAI,CAAC2C,QAAL,CAAc;EACV3C,UAAAA,OAAO,EAAEoL;EADC,SAAd;EAGH,OAND,EAMGC,KANH,CAMS,UAAAR,KAAK,EAAI;EACd,QAAA,MAAI,CAAClI,QAAL,CAAc;EACVkI,UAAAA,KAAK,EAAE;EADG,SAAd;;EAIA,cAAM,IAAIS,KAAJ,CAAUT,KAAV,CAAN;EACH,OAZD;EAcH;;;+BAEQ;EACL,UAAI,KAAKnO,KAAL,CAAWmO,KAAf,EAAsB;EAClB,eAAQpS,qDAAa8S,IAAI,CAACC,SAAL,CAAe,KAAK9O,KAAL,CAAWmO,KAA1B,CAAb,CAAR;EACH,OAFD,MAEO,IAAI,CAAC,KAAKnO,KAAL,CAAWsD,OAAhB,EAAyB;EAC5B,eAAQvH,uDAAR;EACH;;EAED,aACIA,6BAAC,MAAD;EAAQ,QAAA,OAAO,EAAE,KAAKiE,KAAL,CAAWsD;EAA5B,QADJ;EAGH;;;;IA7CiCzG;;iBAAhCqR,sCACiB;EACfE,EAAAA,iBAAiB,EAAEpS,SAAS,CAAC2K,KAAV,CAAgBjE,UADpB;EAEf2L,EAAAA,kBAAkB,EAAErS,SAAS,CAAC2K,KAFf;EAGf2H,EAAAA,MAAM,EAAEtS,SAAS,CAAC2G;EAHH;;ECLvB,IAAMoM,QAAQ,GAAG,SAAXA,QAAW,CAACC,CAAD;EAAA,SAAOA,CAAC,CAAClH,MAAF,KAAa,IAApB;EAAA,CAAjB;;EAEA,IAAM/E,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC7B,MAAMiP,YAAY,GAAGjP,KAAK,CAACkP,OAAN,CAAcA,OAAd,CAAsBtK,IAAtB,CAA2BmK,QAA3B,CAArB;EAEA,SAAO;EACHT,IAAAA,MAAM,EAAEW;EADL,GAAP;EAGH,CAND;;EAQA,IAAME,gCAAgC,GAAGlL,OAAO,CAC5ClB,iBAD4C,EAE5C,IAF4C,CAAP,CAGvCmL,uBAHuC,CAAzC;;ECTA,SAASkB,aAAT,OAAkC;EAAA,MAATC,KAAS,QAATA,KAAS;EAAA,sBACoBA,KAAK,CAACC,MAD1B;EAAA,MACtBlB,iBADsB,iBACtBA,iBADsB;EAAA,MACHC,kBADG,iBACHA,kBADG;EAG9B,MAAIkB,SAAJ;EACA,MAAIC,UAAJ;;EAEA,MAAIpB,iBAAiB,IAAI,CAACC,kBAA1B,EAA8C;EAC1CkB,IAAAA,SAAS,GAAGnB,iBAAiB,CAACqB,KAAlB,CAAwB,GAAxB,CAAZ;EACH,GAFD,MAEO,IAAIrB,iBAAiB,IAAIC,kBAAzB,EAA6C;EAChDkB,IAAAA,SAAS,GAAG,CAACF,KAAK,CAACC,MAAN,CAAatJ,gBAAd,CAAZ;EACAwJ,IAAAA,UAAU,GAAGH,KAAK,CAACC,MAAN,CAAajB,kBAAb,CAAgCoB,KAAhC,CAAsC,GAAtC,CAAb;EACH;;EAED,SACI1T,6BAAC,gCAAD;EAAkC,IAAA,iBAAiB,EAAEwT,SAArD;EAAgE,IAAA,kBAAkB,EAAEC;EAApF,IADJ;EAGH;;EAEDJ,aAAa,CAAC5M,SAAd,GAA0B;EACtB6M,EAAAA,KAAK,EAAErT,SAAS,CAAC0T,KAAV,CAAgB;EACnBJ,IAAAA,MAAM,EAAEtT,SAAS,CAAC0T,KAAV,CAAgB;EACpBtB,MAAAA,iBAAiB,EAAEpS,SAAS,CAAC2T,MAAV,CAAiBjN,UADhB;EAEpB2L,MAAAA,kBAAkB,EAAErS,SAAS,CAAC2T;EAFV,KAAhB;EADW,GAAhB;EADe,CAA1B;;ECrBA,mBAAc,GAAG,UAAU,GAAG,EAAE;GAC/B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;IAC/D,OAAO,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC,CAAC;GACH,CAAC;;ECDF,SAAS,qBAAqB,CAAC,IAAI,EAAE;GACpC,QAAQ,IAAI,CAAC,WAAW;IACvB,KAAK,OAAO;KACX,OAAO,UAAU,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;MACnC,OAAO,KAAK,KAAK,IAAI,GAAG;OACvB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;OACjB,GAAG;OACH,KAAK;OACL,GAAG;OACH,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;OACZ,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;OACjB,GAAG;OACH,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;OACnB,IAAI;OACJ,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;OACnB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;MACX,CAAC;;IAEH,KAAK,SAAS;KACb,OAAO,UAAU,GAAG,EAAE,KAAK,EAAE;MAC5B,OAAO,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG;OAC3C,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;OACjB,KAAK;OACL,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;OACnB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;MACX,CAAC;;IAEH;KACC,OAAO,UAAU,GAAG,EAAE,KAAK,EAAE;MAC5B,OAAO,KAAK,KAAK,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG;OAC3C,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;OACjB,GAAG;OACH,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;OACnB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;MACX,CAAC;IACH;GACD;;EAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;GACnC,IAAI,MAAM,CAAC;;GAEX,QAAQ,IAAI,CAAC,WAAW;IACvB,KAAK,OAAO;KACX,OAAO,UAAU,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;MACzC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;MAEhC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;MAElC,IAAI,CAAC,MAAM,EAAE;OACZ,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;OACzB,OAAO;OACP;;MAED,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;OACnC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;OACtB;;MAED,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;MACpC,CAAC;;IAEH,KAAK,SAAS;KACb,OAAO,UAAU,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;MACzC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC7B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;;MAE/B,IAAI,CAAC,MAAM,EAAE;OACZ,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;OACzB,OAAO;OACP,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;OAC1C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;OAC3B,OAAO;OACP;;MAED,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;MACtD,CAAC;;IAEH;KACC,OAAO,UAAU,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;MACzC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;OACnC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;OACzB,OAAO;OACP;;MAED,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;MACtD,CAAC;IACH;GACD;;EAED,SAAS,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;GAC5B,IAAI,IAAI,CAAC,MAAM,EAAE;IAChB,OAAO,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACxE;;GAED,OAAO,KAAK,CAAC;GACb;;EAED,SAAS,UAAU,CAAC,KAAK,EAAE;GAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACzB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACrC,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;KAC1D,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC7B,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE;KACrB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;KAClB,CAAC,CAAC;IACH;;GAED,OAAO,KAAK,CAAC;GACb;;EAED,WAAe,GAAG,UAAU,GAAG,EAAE;GAChC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;GAC/B,CAAC;;EAEF,WAAa,GAAG,UAAU,GAAG,EAAE,IAAI,EAAE;GACpC,IAAI,GAAG,YAAY,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;;GAEjD,IAAI,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;;;;GAI3C,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;GAE9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC5B,OAAO,GAAG,CAAC;IACX;;GAED,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;;GAE1C,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,GAAG,CAAC;IACX;;GAED,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;IACvC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;IAGjD,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;;;;IAIzD,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;;IAEzD,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC;;GAEH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,MAAM,EAAE,GAAG,EAAE;IAC5D,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;KAEnE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;KAC9B,MAAM;KACN,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAClB;;IAED,OAAO,MAAM,CAAC;IACd,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;GACxB,CAAC;;EAEF,aAAiB,GAAG,UAAU,GAAG,EAAE,IAAI,EAAE;GACxC,IAAI,QAAQ,GAAG;IACd,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,MAAM;IACnB,CAAC;;GAEF,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;GAEpC,IAAI,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;;GAE5C,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE;IACvD,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;;IAEnB,IAAI,GAAG,KAAK,SAAS,EAAE;KACtB,OAAO,EAAE,CAAC;KACV;;IAED,IAAI,GAAG,KAAK,IAAI,EAAE;KACjB,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACzB;;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;KACvB,IAAI,MAAM,GAAG,EAAE,CAAC;;KAEhB,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;MACnC,IAAI,IAAI,KAAK,SAAS,EAAE;OACvB,OAAO;OACP;;MAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;MACjD,CAAC,CAAC;;KAEH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxB;;IAED,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;IACtB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;GAClB,CAAC;;;;;;;;MCtMM1B,sBAAsBxP,MAAI,CAACyO,MAA3Be;;EAER,SAAS2B,yBAAT,CAAmCC,KAAnC,EAA0C;EACtC,SAAO,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;EACpC,QAAMC,GAAG,GAAGJ,KAAK,CAACI,GAAlB;;EAEA,QAAI,CAACA,GAAL,EAAU;EACND,MAAAA,MAAM,CAAC,IAAIpB,KAAJ,CAAU,yCAAV,CAAD,CAAN;EACH,KALmC;EAQpC;;;EACA,QAAMsB,IAAI,GAAG,IAAIC,cAAJ,EAAb,CAToC;;EAYpCD,IAAAA,IAAI,CAACE,gBAAL,CAAsB,OAAtB,EAA+B,UAACjC,KAAD,EAAW;EACtC1P,MAAAA,MAAI,CAAC4R,GAAL,CAAS3K,IAAT,CAAc,kDAAd;EACAsK,MAAAA,MAAM,CAAC7B,KAAD,CAAN;EACH,KAHD,EAZoC;EAkBpC;;EACA+B,IAAAA,IAAI,CAACE,gBAAL,CAAsB,MAAtB,EAA8B,YAAM;EAChC;EACA;EACA,UAAI,CAACF,IAAI,CAACI,YAAV,EAAwB;EACpB7R,QAAAA,MAAI,CAAC4R,GAAL,CAAS3K,IAAT,CAAc,wBAAd;EACAsK,QAAAA,MAAM,CAAC,IAAIpB,KAAJ,CAAU,wBAAV,CAAD,CAAN;EACH;;EAEDnQ,MAAAA,MAAI,CAAC4R,GAAL,CAASjS,IAAT,CAAcyQ,IAAI,CAACC,SAAL,CAAeoB,IAAI,CAACI,YAApB,EAAkC,IAAlC,EAAwC,CAAxC,CAAd;EAEA,UAAM5M,IAAI,GAAGmL,IAAI,CAAC0B,KAAL,CAAWL,IAAI,CAACI,YAAhB,CAAb;;EACA,UAAI5M,IAAI,CAACwL,OAAL,IAAgBW,KAAK,CAACzB,iBAA1B,EAA6C;EACzC,YAAME,MAAM,GAAG5K,IAAI,CAACwL,OAAL,CAAasB,QAAb,CAAsB,CAAtB,CAAf;EACAlC,QAAAA,MAAM,CAAC3M,IAAP,GAAc,UAAd;EAEA,YAAMyM,iBAAiB,GAAGyB,KAAK,CAACzB,iBAAN,CAAwBqB,KAAxB,CAA8B,GAA9B,CAA1B;EACA,YAAMpB,kBAAkB,GAAG,EAA3B;EAEA5P,QAAAA,MAAI,CAAC6E,OAAL,CAAakL,uBAAb,CAAqCF,MAArC,EAA6CF,iBAA7C,EAAgEC,kBAAhE,EAAoFI,IAApF,CAAyF,UAAAnL,UAAO,EAAI;EAChGyM,UAAAA,OAAO,CAACzM,UAAD,CAAP;EACH,SAFD,EAEG,UAAA6K,KAAK,EAAI;EACR6B,UAAAA,MAAM,CAAC7B,KAAD,CAAN;EACH,SAJD;EAKH,OAZD,MAYO;EACH4B,QAAAA,OAAO,CAACrM,IAAI,CAACJ,OAAN,CAAP;EACH;EACJ,KA1BD,EAnBoC;EAgDpC;EACA;;EACA7E,IAAAA,MAAI,CAAC4R,GAAL,CAASjS,IAAT,+BAAqC6R,GAArC;EACAC,IAAAA,IAAI,CAACO,IAAL,CAAU,KAAV,EAAiBR,GAAjB;EACAC,IAAAA,IAAI,CAACtP,gBAAL,CAAsB,QAAtB,EAAgC,kBAAhC,EApDoC;;EAuDpCsP,IAAAA,IAAI,CAACQ,IAAL;EACH,GAxDM,CAAP;EAyDH;;MAEKC;;;;;;;;;;;;;;;;;;mFACM;EACJrN,MAAAA,OAAO,EAAE,IADL;EAEJ6K,MAAAA,KAAK,EAAE;EAFH;;;;;;;0CAUY;EAAA;;EAChB,UAAM0B,KAAK,GAAGe,WAAE,CAACL,KAAH,CAAS,KAAKxK,KAAL,CAAWpH,QAAX,CAAoBkS,MAA7B,CAAd;EACAjB,MAAAA,yBAAyB,CAACC,KAAD,CAAzB,CAAiCpB,IAAjC,CAAsC,UAAAnL,UAAO,EAAI;EAC7C,YAAMoL,cAAc,GAAGT,mBAAiB,CAAC3K,UAAD,CAAxC;;EAEA,QAAA,MAAI,CAAC2C,QAAL,CAAc;EAAE3C,UAAAA,OAAO,EAAEoL;EAAX,SAAd;EACH,OAJD,EAIG,UAAAP,KAAK,EAAI;EACR,QAAA,MAAI,CAAClI,QAAL,CAAc;EAAEkI,UAAAA,KAAK,EAALA;EAAF,SAAd;EACH,OAND;EAOH;;;+BAEQ;EACL,UAAI,KAAKnO,KAAL,CAAWmO,KAAf,EAAsB;EAClB,eAAQpS,qDAAa8S,IAAI,CAACC,SAAL,CAAe,KAAK9O,KAAL,CAAWmO,KAA1B,CAAb,CAAR;EACH,OAFD,MAEO,IAAI,CAAC,KAAKnO,KAAL,CAAWsD,OAAhB,EAAyB;EAC5B,eAAQvH,uDAAR;EACH;;EAED,aACIA,6BAAC,MAAD;EAAQ,QAAA,OAAO,EAAE,KAAKiE,KAAL,CAAWsD;EAA5B,QADJ;EAGH;;;;IAhC2BzG;;iBAA1B8T,gCAMiB;EACfhS,EAAAA,QAAQ,EAAE3C,SAAS,CAAC2G,MADL;EAEf1C,EAAAA,KAAK,EAAEjE,SAAS,CAAC2G;EAFF;;ECtEvB,SAASmO,qBAAT,OAA0C;EAAA,MAATzB,KAAS,QAATA,KAAS;EACtC,MAAM0B,WAAW,GAAG1B,KAAK,CAACC,MAAN,CAAaO,KAAb,CAAmBkB,WAAvC;EACA,MAAI3C,iBAAJ,CAFsC;;EAItC,MAAI4C,gBAAgB,GAAG,KAAvB;;EAEA,MAAID,WAAW,KAAK,OAApB,EAA6B;EACzB3C,IAAAA,iBAAiB,GAAGiB,KAAK,CAACC,MAAN,CAAaO,KAAb,CAAmBoB,QAAnB,CAA4BxB,KAA5B,CAAkC,GAAlC,CAApB;EACH,GAFD,MAEO,IAAIsB,WAAW,KAAK,aAApB,EAAmC;EACtC,QAAMG,IAAI,GAAG,KAAK5B,MAAL,CAAYO,KAAZ,CAAkBoB,QAA/B;EACA,QAAME,WAAW,GAAGtT,MAAM,CAACuT,IAAP,CAAYF,IAAZ,CAApB;EACA9C,IAAAA,iBAAiB,GAAG+C,WAAW,CAAC1B,KAAZ,CAAkB,GAAlB,CAApB;EACH,GAJM,MAIA,IAAIsB,WAAW,KAAK,SAApB,EAA+B;EAClC;EACAC,IAAAA,gBAAgB,GAAG,IAAnB;EACH,GAHM,MAGA;EACHA,IAAAA,gBAAgB,GAAG,IAAnB;EACH;;EAED,MAAIA,gBAAJ,EAAsB;EAClB,WAAQ,EAAR,CADkB;EAErB;;EAED,SACIjV,6BAAC,uBAAD;EAAyB,IAAA,iBAAiB,EAAEqS;EAA5C,IADJ;EAGH;;EAED0C,qBAAqB,CAACtO,SAAtB,GAAkC;EAC9B6M,EAAAA,KAAK,EAAErT,SAAS,CAAC0T,KAAV,CAAgB;EACnBJ,IAAAA,MAAM,EAAEtT,SAAS,CAAC0T,KAAV,CAAgB;EACpBG,MAAAA,KAAK,EAAE7T,SAAS,CAAC0T,KAAV,CAAgB;EACnBqB,QAAAA,WAAW,EAAE/U,SAAS,CAAC2T,MAAV,CAAiBjN,UADX;EAEnBuO,QAAAA,QAAQ,EAAEjV,SAAS,CAAC2T,MAFD;EAGnB0B,QAAAA,SAAS,EAAErV,SAAS,CAAC2T;EAHF,OAAhB;EADa,KAAhB;EADW,GAAhB;EADuB,CAAlC;;;;;;;;;;;ECjBA,IAAM2B,MAAM,GAAG,SAATA,MAAS;EAAA,SAAMzT,MAAM,CAACc,QAAP,CAAgB2S,MAAhB,EAAN;EAAA,CAAf;EAEA;;;;;MAIMC;;;;;;;;;;;;;0CAMkB;EAAA;;EAChB,WAAKC,QAAL,GAAgB,KAAKzL,KAAL,CAAW0L,OAAX,CAAmBC,MAAnB,CAA0B,UAAC/S,QAAD,EAAW+C,MAAX,EAAsB;EAC5D,YAAI,KAAI,CAACqE,KAAL,CAAW4L,UAAf,EAA2B;EACvB,UAAA,KAAI,CAAC5L,KAAL,CAAW4L,UAAX,CAAsB9T,MAAM,CAACc,QAAP,CAAgBC,QAAtC;EACH;EACJ,OAJe,CAAhB;EAKH;;;6CAEsB;EACnB,WAAK4S,QAAL;EACH;;;+BAEQ;EACL,UAAM1R,IAAI,GAAG,KAAKiG,KAAL,CAAWjG,IAAxB;EAEA;;;;;;;;;;;EAWA,aACI/D,6BAAC,MAAD,QACIA,6BAAC,KAAD;EACE,QAAA,KAAK,MADP;EAEE,QAAA,IAAI,EAAC,GAFP;EAGE,QAAA,SAAS,EAAE4U;EAHb,QADJ,EAMI5U,6BAAC,KAAD;EACI,QAAA,KAAK,MADT;EAEI,QAAA,IAAI,EAAC,SAFT;EAGI,QAAA,SAAS,EAAE4U;EAHf,QANJ,EAWI5U,6BAAC,KAAD;EACI,QAAA,IAAI,EAAC,4BADT;EAEI,QAAA,SAAS,EAAEqT;EAFf,QAXJ,EAeIrT,6BAAC,KAAD;EACI,QAAA,IAAI,EAAC,qDADT;EAEI,QAAA,SAAS,EAAEqT;EAFf,QAfJ,EAmBIrT,6BAAC,KAAD;EACI,QAAA,IAAI,EAAC,wBADT;EAEI,QAAA,SAAS,EAAE+U;EAFf,QAnBJ,EAwBI/U,6BAAC,KAAD;EAAO,QAAA,IAAI,EAAC,sBAAZ;EAAmC,QAAA,OAAO,EAAEuV;EAA5C,QAxBJ,EAyBIvV,6BAAC,KAAD;EAAO,QAAA,IAAI,EAAC,uBAAZ;EAAoC,QAAA,OAAO,EAAEuV;EAA7C,QAzBJ,EA+BIvV,6BAAC,KAAD;EAAO,QAAA,MAAM,EAAE;EAAA,iBACXA,+EADW;EAAA;EAAf,QA/BJ,CADJ;EAqCH;;;;IArEac;;iBAAZ0U,kBACiB;EACfE,EAAAA,OAAO,EAAEzV,SAAS,CAAC2G,MAAV,CAAiBD,UADX;EAEf5C,EAAAA,IAAI,EAAE9D,SAAS,CAAC2G;EAFD;;EAuEvB,IAAMI,iBAAe,GAAG,SAAlBA,eAAkB,CAAA/C,KAAK,EAAI;EAC/B,SAAO,EAAP;EACE;;;EAGH,CALD;;EAOA,IAAM4R,YAAY,GAAG3N,OAAO,CACxBlB,iBADwB,EAExB,IAFwB,CAAP,CAGnBwO,GAHmB,CAArB;AAKA,6BAAeM,yBAAyB,CAAChP,UAAU,CAAC+O,YAAD,CAAX,CAAxC;;ECzGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} \ No newline at end of file diff --git a/Packages-react/ohif-viewer/package.json b/Packages-react/ohif-viewer/package.json index 335ef7c86..1be6552b3 100644 --- a/Packages-react/ohif-viewer/package.json +++ b/Packages-react/ohif-viewer/package.json @@ -1,6 +1,6 @@ { "name": "ohif-viewer", - "version": "0.0.3", + "version": "0.0.4", "description": "OHIF Viewer", "author": "OHIF Contributors", "license": "MIT", diff --git a/Packages-react/ohif-viewer/src/config.js b/Packages-react/ohif-viewer/src/config.js index c751c203d..365a5a1b7 100644 --- a/Packages-react/ohif-viewer/src/config.js +++ b/Packages-react/ohif-viewer/src/config.js @@ -36,13 +36,6 @@ OHIF.external.cornerstoneWADOImageLoader = cornerstoneWADOImageLoader; // TODO: Is there a better way to guess ROOT_URL? let ROOT_URL = window.location.pathname; -// If the page we are on is not a subset of the expected homepage -// provided in the package.json file, we might be doing local development. -// In this case, set the base URL to the current location's origin. -if (homepage.includes(window.location.origin) === false) { - ROOT_URL = window.location.origin; -} - const config = { maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1), startWebWorkersOnDemand: true,